Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Не видит команду

Тема в разделе "Разработка плагинов для новичков", создана пользователем Fager, 24 янв 2016.

  1. Автор темы
    Fager

    Fager Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    Fager
    Я делаю простейший код для создания свой команды. Вроде как сделал все правильно а оно все равно не работает, делал уже по разным туториалам. По какой-то причине моя команда не проходит проверку и в итоге возвращает false
    Код:
    public class FirstPlugin extends JavaPlugin implements Listener
    {
        public boolean checkSender(CommandSender sender){
            if (sender instanceof Player) {
                return false;
            }
            return true;
        }
    
        public boolean onCommand(CommandSender commandSender, Command cmd, String label, String[] args){
            Player p = (Player) commandSender;
            if(getName().equalsIgnoreCase("heal")) {
                if (checkSender(commandSender)) {
                    p.setFoodLevel(100);
                    return true;
                }
            }
            return false;
        }
        public void onEnable(){
           getLogger().info("Plugin Crasher Enable");
            getServer().getPluginManager().registerEvents(this, this);
        }
        public void onDisable(){
            getLogger().info("Plugin Crasher Enable");
            getServer().getPluginManager().registerEvents(this, this);
        }
        }
    Файл plugin.yml
    Код:
    name: Plugins
    main: ru.Fager.FirstPlugin
    version: 0.9.9
    author: Fager
    commands:
    heal:
    description: Пример команды
    permission: <plugin name>
    usage: /<command>
    
     
  2. Хостинг MineCraft
    <
  3. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Както так.
     
  4. Автор темы
    Fager

    Fager Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    Fager
    Не работает код
     
  5. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Мож ошибка есть какаята?
     
  6. Автор темы
    Fager

    Fager Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    Fager
    Понятно что есть. Оно требует Listener
     
  7. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Main.java

    Код:
    package asd.asd;
    
    import org.bukkit.plugin.Plugin;
    import org.bukkit.event.Listener;
    
    import java.util.logging.Logger;
    
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class AntiFall extends JavaPlugin
    {
        Logger logger;
        static AntiFall plugin;
      
        public Main() {
            this.logger = Logger.getLogger("Minecraft");
        }
      
        public void onEnable() {
            this.logger.info("[asdas] Enabled!");
    
          
            Heal t = new Heal();
            getCommand("heal").setExecutor(t);
        }
      
        public void onDisable() {
            this.logger.info("[asdasd] Disabled!");
            this.saveConfig();
        }
    }
    Heal.java

    Код:
    
    package asd.asd;
    
    import java.util.HashMap;
    import java.util.logging.Logger;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.scheduler.BukkitRunnable;
    
    public class Heal implements CommandExecutor
    {
        Main plugin;
        Logger log;
        int s;
        public Heal() {
            this.s = 15;
            this.plugin = Main.plugin;
            this.log = Bukkit.getLogger();
        }
       
        public boolean onCommand(final CommandSender sender, final Command cmd, final String commandLabel, final String[] args) {
            final Player player = (Player)sender;
         if (cmd.getName().equalsIgnoreCase("heal")) {
                    if (args.length == 0) {
                        player.setFoodLevel(20);
                        player.setHealth(20);
            }
      return true;
    }
    }
    }
    
    Ну а попробуй так.
     
  8. alekseichik

    alekseichik Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    maxicraft2020
    да скинь ты логи уже... , мы тебе экстрасенсы чтоли???
     
  9. Автор темы
    Fager

    Fager Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    Fager
    Чет все равно никак, ты сам то тестировал?[DOUBLEPOST=1453656230,1453656018][/DOUBLEPOST]
    Смысл из логов тебе будет?
     
  10. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    У меня всё работает.
     
  11. Ission

    Ission Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    lokivava
    1. public boolean checkSender(CommandSender sender){
    2. if (sender instanceof Player) {//Если игрок, то возвращает false
    3. return false;
    4. }
    5. return true;
    6. }

    7. public boolean onCommand(CommandSender commandSender, Command cmd, String label, String[] args){
    8. Player p = (Player) commandSender;//Команда по умолчанию выполняется от имени игрока
    9. if(getName().equalsIgnoreCase("heal")) {//А это что за странная проверка на название плагина, зачем она нужна???
    10. if (checkSender(commandSender)) {//зачем делать проверку, если мы уже присвоили значение игроку, да к тому же если это игрок, то проверка выдаст false
    11. p.setFoodLevel(100);
    12. return true;
    13. }
    14. }
    15. return false;
    16. }

    Код:
    public boolean onCommand(CommandSender cs, Command cmd, String label, String[] args)
    {
        if(!(cs instanceof Player))
            return false;
        ((Player)cs).setFoodLevel(100);
        return true;
    }
     
  12. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Насколько можно судить из первых постов ТС-а (хотя может быть это из-за неверного использования тегов кода), то у него нет двух-пробельных отступов в plugin.yml.
    Сравните:
    Код:
    name: Plugins
    main: ru.Fager.FirstPlugin
    version: 0.9.9
    author: Fager
    commands:
      heal:
        description: Пример команды
        permission: <plugin name>
        usage: /<command>
     
  13. MrTrojan

    MrTrojan Активный участник Пользователь

    Баллы:
    98
    Skype:
    mrtrojan.ru
    Имя в Minecraft:
    MrTrojan
    Зачем если ты всё равно ивенты не обрабатываешь?
    Без комментариев... Зачем при выключении плагина регистрировать класс, для обработки ивентов? :eek:
     
  14. Автор темы
    Fager

    Fager Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    Fager
    Я еще начинающий в Bukkit поэтому не все знаю
     

Поделиться этой страницей