Diskuze: plugin
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Richard Závodný:5.7.2016 14:42
Neměl by ten soubor plugin.yml mít nazev balíčku stejný jako samotný kód?
name: commands
main: pl.patrikneumann.cz.main
version: 1.1.0
author: EUcreepemineCZ
website: 'http://www.patrikneumann.cz/'
permissions:
    commands.CMD.*:
        description: "Vsechny Prava."
        children:
            commands.CMD.web: true
            commands.CMD.ts: true
            commands.CMD.vip: true
            commands.CMD.vipp: true
            commands.CMD.evip: true
            commands.CMD.vipf: true
            commands.CMD.vippf: true
            commands.CMD.evipf: true
            commands.CMD.email: true
    commands.CMD.web:
      description: Web
      default: true
    commands.CMD.ts:
      description: TS3
      default: true
    commands.CMD.vip:
      description: info o VIP
      default: true
    commands.CMD.vipp:
      description: info o VIP+
      default: true
    commands.CMD.evip:
      description: info o E-VIP
      default: true
    commands.CMD.vipf:
          description: info o VIP navzdy
          default: true
        commands.CMD.vippf:
          description: info o VIP+ navzdy
          default: true
        commands.CMD.evipf:
          description: info o E-VIP navzdy
          default: true
    commands.CMD.email:
      description: Email serveru
      default: true
commands:
    web:
      description: Web
      permission: commands.CMD.web
    ts:
      description: TS3
      permission: commands.CMD.ts
    vip:
      description: info o VIP
      permission: commands.CMD.vip
    vip+:
      description: info o VIP+
      permission: commands.CMD.vipp
    evip:
      description: info o E-VIP
      permission: commands.CMD.evip
    vipf:
      description: info o VIP navzdy
      permission: commands.CMD.vipf
    vippf:
      description: info o VIP+ navzdy
      permission: commands.CMD.vippf
    evipf:
      description: info o E-VIP navzdy
      permission: commands.CMD.evipf
    email:
      description: Email serveru
      permission: commands.CMD.email
					Patrik Neumann:5.7.2016 14:46
nwm, pokud tam nebyly ty vipf,vippf a evipf, tak to fungovalo, název plugin.yml se používá i u essentials
Josef Kuchař - Pepa489:5.7.2016 17:08
Vidím tu pay2win, to je na minecraft serverech zakázáno používat kvůli mojangu (mrkwosoftu)
Tak zaprvé, mohl by jsi nám zvýraznit, které části přidáš, což způsobuje nenačtení pluginu? Zadruhé, když se plugin nenačte, tak to napíše chybovou hlášku do konzole. Jaká byla? Zařetí, sakra, chlape, nauč se používat switch....
switch(cmd.getName().toLowerCase()){
        case "web":
                .....
                break;
        case "ts":
                .....
                break;
        ........
}
A zbytek kódu taky vypadá příšerně, ani se nedivím že se v tom
neorientuju 
+20 Zkušeností
+2,50 Kč
						Hartrik:6.7.2016 0:21
Switch ten problém nevyřeší, jen posune. Chtělo by to naučit se používat enum nebo obecně polymorfismus.
Patrik Neumann:6.7.2016 2:33
přidávám tyto řádky:
Main.java:
if (cmd.getName().equalsIgnoreCase("vipf")) {
    if (sender.hasPermission("commands.CMD.vipf")) {
            sender.sendMessage(prefixer + ChatColor.BLUE + vipy);
    } else {
            sender.sendMessage(prefixer + ChatColor.RED + "Již vlastníte VIP");
    }
}
if (cmd.getName().equalsIgnoreCase("vippf")) {
    if (sender.hasPermission("commands.CMD.vippf")) {
            sender.sendMessage(prefixer + ChatColor.BLUE + vippy);
    } else {
            sender.sendMessage(prefixer + ChatColor.RED + "Již vlastníte VIP+");
    }
}
if (cmd.getName().equalsIgnoreCase("evipf")) {
    if (sender.hasPermission("commands.CMD.evipf")) {
            sender.sendMessage(prefixer + ChatColor.BLUE + evipy);
    } else {
            sender.sendMessage(prefixer + ChatColor.RED + "Již vlastníte E-VIP");
    }
}
plugin.yml:
children:
commands.CMD.vipf: true
commands.CMD.vippf: true
commands.CMD.evipf: true
pod children
commands.CMD.vipf:
      description: info o VIP navzdy
      default: true
    commands.CMD.vippf:
      description: info o VIP+ navzdy
      default: true
    commands.CMD.evipf:
      description: info o E-VIP navzdy
      default: true
commands
vipf:
  description: info o VIP navzdy
  permission: commands.CMD.vipf
vippf:
  description: info o VIP+ navzdy
  permission: commands.CMD.vippf
evipf:
  description: info o E-VIP navzdy
  permission: commands.CMD.evipf
					pocitac770:6.7.2016 9:04
Takhle, třeba kdybych to měl vyřešit co nejjednodušeji já, tak bych to
udělal vytvořením abstraktní třídy BaseInfoCommand, která by dědila z
Command, v té by se nastavila základní funkčnost práv (často mají hodně
společné práva a název), a možná další věci, které jsou "společné",
v potomcích by se nastavily konkrétní fráze, co nejdou odvodit + by se
předal předkovi ten název commandu.
To s tím switchem bylo pouze ohledně přehlednosti, často totiž lidé rádi
takhle vytvářejí pluginy bez základních znalostí OOP, s tím, že Javu
znají minimálně, ale alespoň switch by měl znát každý nevímco.
Patriku, až se dostanu k PC, tak to sám zkusím zkopilovat, a podívat se,
co na tom nefunguje (pořád jsem ještě nedostal tu chybovou hlášku z
konzole 
Patrik Neumann:6.7.2016 12:06
omlouvám se, ale chybovou hlášku jsem nedal, protože mám konzoli zaspamovanou nějakým pluginem, ale nevím, kterým, prostě to vypisuje furt dokola toto:
>[2K [12:05:21 WARN]: Exception in thread "pool-3-thread-446"
>[2K [12:05:21 WARN]: org.apache.commons.lang.UnhandledException: Plugin GUIShop v2.1 generated an exception while executing task 59
at org.bukkit.craftbukkit.v1_9_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:56)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoSuchMethodError: org.bukkit.Server.getOnlinePlayers()[Lorg/bukkit/entity/Player;
at us.alreadycoded.shop.Metrics.postPlugin(Metrics.java:336)
at us.alreadycoded.shop.Metrics.access$4(Metrics.java:329)
at us.alreadycoded.shop.Metrics$1.run(Metrics.java:224)
at org.bukkit.craftbukkit.v1_9_R1.scheduler.CraftTask.run(CraftTask.java:53)
at org.bukkit.craftbukkit.v1_9_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:53)
... 3 more
					Patrik Neumann:6.7.2016 12:10
zde je ta chyba: >[2K [12:08:46 ERROR]: Could not load
'plugins/commands.jar' in folder 'plugins'
org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml
Patrik Neumann:6.7.2016 12:13
celá chyba: >[2K [12:08:46 ERROR]: Could not load
'plugins/commands.jar' in folder 'plugins'
org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml
at
org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPluginLoader.java:162)
~[server.jar:git-Bukkit-b103841]
at
org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:133)
[server.jar:git-Bukkit-b103841]
at
org.bukkit.craftbukkit.v1_9_R1.CraftServer.loadPlugins(CraftServer.java:293)
[server.jar:git-Bukkit-b103841]
at org.bukkit.craftbukkit.v1_9_R1.CraftServer.(CraftServer.java:255)
[server.jar:git-Bukkit-b103841]
at net.minecraft.server.v1_9_R1.PlayerList.(PlayerList.java:69)
[server.jar:git-Bukkit-b103841]
at net.minecraft.server.v1_9_R1.DedicatedPlayerList.(SourceFile:14)
[server.jar:git-Bukkit-b103841]
at
net.minecraft.server.v1_9_R1.DedicatedServer.init(DedicatedServer.java:182)
[server.jar:git-Bukkit-b103841]
at
net.minecraft.server.v1_9_R1.MinecraftServer.run(MinecraftServer.java:506)
[server.jar:git-Bukkit-b103841]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_91]
Caused by: org.yaml.snakeyaml.scanner.ScannerException: while scanning for
the next token
found character '\t(TAB)' that cannot start any token. (Do not use \t(TAB) for
indentation)
in 'reader', line 35, column 4:
description: info o VIP navzdy
Patrik Neumann:6.7.2016 13:21
už funguje, ten debil eclipse tam nezobrazil tabulátory v plugin.yml
Zobrazeno 13 zpráv z 13.
				
