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

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

Discussion in 'Разработка плагинов для новичков' started by Fager, Jan 24, 2016.

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

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

    Trophy Points:
    61
    Имя в Minecraft:
    Fager
    Я делаю простейший код для создания свой команды. Вроде как сделал все правильно а оно все равно не работает, делал уже по разным туториалам. По какой-то причине моя команда не проходит проверку и в итоге возвращает false
    Code:
    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
    Code:
    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 Старожил Пользователь

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

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

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

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

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

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

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

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

    Trophy Points:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Main.java

    Code:
    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

    Code:
    
    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 Активный участник Пользователь

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

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

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

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

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

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

    Trophy Points:
    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. }

    Code:
    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 Старожил Пользователь

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

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

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

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

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

Share This Page