Войти или зарегистрироваться

Помогите Команды плагина

Код:
public void onEnable()
    {
        getLogger().info("Rpg shield plugin was enabled!");
        Bukkit.getPluginManager().registerEvents(this, this);
       
    }
    public void onDisable()
    {
        getLogger().info("Rpg shield plugin was disabled!");
    }
   
    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
        //ВОТ ОН!
    }
 
Но... Ведь только синтаксис выучить... Недостаточно... Хотя, похоже, достаточно.
Дальше при достаточном знании английского и умеении пользоваться JavaDocs почти всё возможно
 
Den_Abr, может перед onCommand нужно метку поставить или что?
 
Den_Abr, может перед onCommand нужно метку поставить или что?
Можешь поставить @Override, но по хорошему при компиляции java сама догадается.
Советую примерно так реализовывать

Код:
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        Player p = null;
        if (sender instanceof Player) {
            p = (Player) sender;
        }
        if (p == null) {
            return true;
        }
        String cmdname = command.getName();
        if ("custom".equals(cmdname.toLowerCase())){
            if (customCommand(p, args)) {
                return true;
            }
        }
        return true;
    }
При этом не забывайте в onEnable() не забывайте объявить команду - this.getCommand("custom").setExecutor(this);
Ну или делайте как посоветовал Den_Abr только вместо this ставьте реализующий класс.
 
this.getCommand("custom").setExecutor(this);
Сколько кода видел, заметил особенность - если расположить метод onCommand() в главном классе, то экзекутор не нужен в onEnable

UPD: А всё потому что JavaPlugin реализует CommandExecutor
 
Почему это нужно регистрировать как экзекутор? Пфф.
 
Сколько кода видел, заметил особенность - если расположить метод onCommand() в главном классе, то экзекутор не нужен в onEnable

UPD: А всё потому что JavaPlugin реализует CommandExecutor
Почему это нужно регистрировать как экзекутор? Пфф.
Вы чего? Это выставление обработчика команды, без него вашему onCommand просто ничего не передастся. И именно потому что "JavaPlugin реализует CommandExecutor" мы можем писать this.
 
Вы чего? Это выставление обработчика команды, без него вашему onCommand просто ничего не передастся. И именно потому что "JavaPlugin реализует CommandExecutor" мы можем писать this.
Я всегда боялся экзекуторов и располагаю команды в главном классе) Все норм :) Они не могут ошибаться!
 
Ко всему вышесказанному дам 1 простой совет.
Как я убедился на личном опыте - plugin.yml и команды это вещи плохо совместимые.
Поэтому всегда делаю так:
1) В plugin.yml только регистрируем команды в стиле
commands:
example1:
example2:
example3:

2) onCommand всегда на return true;

3) Проверку всех Permissions, вывод всех сообщений и ошибок осуществляем на прямую через плагин.
 
Кароче что-то у меня ни хера не получается, кто-то может написать плагин, который просто будет работать при команде itgive и кинуть мне исходники, заранее спасибо.
 
Код:
17:43:25 [SEVERE] Could not load 'plugins\RPGItems.jar' in folder 'plugins'
org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml
        at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPlug
inLoader.java:257)
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
.java:132)
        at org.bukkit.craftbukkit.v1_6_R3.CraftServer.loadPlugins(CraftServer.ja
va:241)
        at org.bukkit.craftbukkit.v1_6_R3.CraftServer.reload(CraftServer.java:61
3)
        at org.bukkit.Bukkit.reload(Bukkit.java:277)
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:
23)
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:19
2)
        at org.bukkit.craftbukkit.v1_6_R3.CraftServer.dispatchCommand(CraftServe
r.java:528)
        at org.bukkit.craftbukkit.v1_6_R3.CraftServer.dispatchServerCommand(Craf
tServer.java:515)
        at net.minecraft.server.v1_6_R3.DedicatedServer.as(DedicatedServer.java:
263)
        at net.minecraft.server.v1_6_R3.DedicatedServer.t(DedicatedServer.java:2
28)
        at net.minecraft.server.v1_6_R3.MinecraftServer.s(MinecraftServer.java:4
88)
        at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java
:421)
        at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:5
83)
Caused by: while scanning for the next token
found character         '\t' that cannot start any token
 in "<reader>", line 6, column 10:
      itgive:
             ^

        at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.ja
va:358)
        at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:17
9)
        at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingValue.produce(P
arserImpl.java:591)
        at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:161)
        at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:146)
        at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:133)
        at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java
:237)
        at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
        at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java
:237)
        at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
        at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:12
3)
        at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:106)

        at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseCons
tructor.java:121)
        at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:480)
        at org.yaml.snakeyaml.Yaml.load(Yaml.java:411)
        at org.bukkit.plugin.PluginDescriptionFile.<init>(PluginDescriptionFile.
java:188)
        at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPlug
inLoader.java:252)
        ... 13 more
Мудрил мудрил я, и получилась такая ошибка, ругается на "ничто", после itgive:
 
Код:
17:43:25 [SEVERE] Could not load 'plugins\RPGItems.jar' in folder 'plugins'
org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml
        at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPlug
inLoader.java:257)
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
.java:132)
        at org.bukkit.craftbukkit.v1_6_R3.CraftServer.loadPlugins(CraftServer.ja
va:241)
        at org.bukkit.craftbukkit.v1_6_R3.CraftServer.reload(CraftServer.java:61
3)
        at org.bukkit.Bukkit.reload(Bukkit.java:277)
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:
23)
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:19
2)
        at org.bukkit.craftbukkit.v1_6_R3.CraftServer.dispatchCommand(CraftServe
r.java:528)
        at org.bukkit.craftbukkit.v1_6_R3.CraftServer.dispatchServerCommand(Craf
tServer.java:515)
        at net.minecraft.server.v1_6_R3.DedicatedServer.as(DedicatedServer.java:
263)
        at net.minecraft.server.v1_6_R3.DedicatedServer.t(DedicatedServer.java:2
28)
        at net.minecraft.server.v1_6_R3.MinecraftServer.s(MinecraftServer.java:4
88)
        at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java
:421)
        at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:5
83)
Caused by: while scanning for the next token
found character         '\t' that cannot start any token
in "<reader>", line 6, column 10:
      itgive:
             ^

        at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.ja
va:358)
        at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:17
9)
        at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingValue.produce(P
arserImpl.java:591)
        at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:161)
        at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:146)
        at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:133)
        at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java
:237)
        at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
        at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java
:237)
        at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
        at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:12
3)
        at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:106)

        at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseCons
tructor.java:121)
        at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:480)
        at org.yaml.snakeyaml.Yaml.load(Yaml.java:411)
        at org.bukkit.plugin.PluginDescriptionFile.<init>(PluginDescriptionFile.
java:188)
        at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPlug
inLoader.java:252)
        ... 13 more
Мудрил мудрил я, и получилась такая ошибка, ругается на "ничто", после itgive:
А потом догадываешься прочитать весь стак и увидеть, что в конфиге у тебя неверно расставлены отступы, а именно, через tab их делать нельзя, ручками жать пробел надо.
 
А потом догадываешься прочитать весь стак и увидеть, что в конфиге у тебя неверно расставлены отступы, а именно, через tab их делать нельзя, ручками жать пробел надо.
А сколько пробелов нужно, у меня вроде по 2 стоит.
 
Назад
Верх