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.