почему onCommand никогда не используется в плагине - PullRequest
0 голосов
/ 15 февраля 2019

Я создаю простой плагин для Minecraft, где он переключает команду и получает у целевого игрока уникальный UUID.Однако метод public boolean onCommand утверждает, что он никогда не используется.

mainclass (Freeze.java)

 @Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){

    Player player = (Player) sender;
        if(!Freeze.toggleList.contains(player.getUniqueId())){
            player.sendMessage(ChatColor.GREEN + "sinut on jäädytetty tutkinnan ajaksi");
            Freeze.toggleList.add(player.getUniqueId());
        return true;
        } else if (Freeze.toggleList.contains(player.getUniqueId())){
            player.sendMessage(ChatColor.RED +"Et ole enään jäädytetty");
            Freeze.toggleList.remove(player.getUniqueId());
        return true;
        }
        return true;
    }
}

У меня есть определенный класс для того, что делает команда

(Toggle.java)

public class Toggle implements Listener {
@EventHandler
public void onPlayerMove(PlayerMoveEvent evt) {
    Player player = evt.getPlayer();
    if (Freeze.toggleList.contains(player.getUniqueId())){
        Location back = new Location(evt.getFrom().getWorld(), evt.getFrom().getX(), evt.getFrom().getY(), evt.getFrom().getZ());
        evt.getPlayer().teleport(back);
    }
}

}

Также в моем plugin.yml у меня есть команда для него:

    commands:
  freeze:
    usage: /<command>
    description: Freezez player.

Также @Override не работает, потому что «метод не переопределяет метод из суперкласса».

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Ваша среда IDE сообщает, что ваш метод никогда не используется, потому что он не переопределяет метод onCommand в JavaPlugin (поэтому вы получаете сообщение об ошибке «Метод не переопределяет метод из своего суперкласса»).

Это может иметь несколько причин.Убедитесь, что

  • Ваш основной класс расширяет класс JavaPlugin в org.bukkit.plugin.java
  • Вы импортировали правильный класс Command.Вам нужно импортировать org.bukkit.command.Command, а не org.bukkit.material.Command
0 голосов
/ 18 февраля 2019

Вы забыли зарегистрировать свою команду.Это должно быть сделано, чтобы bukkit знал, какой метод объекта onCommand вызывать при выполнении команды.Для этого используйте command.setExecutor (CommandExecutor)

javaplugin.getCommand("freeze").setExecutor(yourCommandExecutor);
...