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

Помогите Проблема с написанием плагина.

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

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

    ScReamer18 Участник

    Баллы:
    31
    Доброго времени суток, решил создать простенький плагин, который при вводе команды выводит список операторов онлайн, но столкнулся с одной проблемой - проверка на онлайн и оператора происходит только у отправляющего, то есть если отправляющий - оператор, то ему отправится сообщение с его же именем, вне зависимости от того, сколько операторов находится на сервере. Не подскажете, как это пофиксить? P.S. Понял, что в проблема в строчке
    Код:
    Player player = (Player) sender;
    , но не понимаю, как можно сделать по-другому. Сам код:
    Код:
    package ru;
    
    import java.util.ArrayList;
    import org.bukkit.ChatColor;
    import org.bukkit.Sound;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin implements Listener{
        ArrayList<String> names = new ArrayList<String>();
        String allops = new String();
        public void onEnable(){
            getLogger().info("Plugin was enabled");
            getServer().getPluginManager().registerEvents(this, this);
        }
        public void onDisable(){
            getLogger().info("Plugin was disabled");
        }
        @EventHandler
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
            Player player = (Player) sender;
            if (player.getPlayer().isOp() == true && player.getPlayer().isOnline() == true){
                names.add(player.getName());
            }else{
                names.remove(player.getName());
            }
            if (cmd.getName().equalsIgnoreCase("admins")){
            for(int i = 0; i < names.size(); i++){
                allops = names.get(i) + " ";
                sender.sendMessage(ChatColor.YELLOW + "Администраторы онлайн: " + ChatColor.RED + allops);
                names.clear();
                }
            }if (names.isEmpty() == true){
                sender.sendMessage(ChatColor.YELLOW + "Нет администраторов онлайн");
            }return true;
        }
    }
     
  2. Хостинг MineCraft
    <
  3. saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    Ужас, Вы подоху java не учили.
    Вот так это делается.
    Код:
    package ru;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin {
    
       @Override
       public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
         if((sender instanceof Player) && !((Player)sender).isOp()){
           sender.sendMessage(ChatColor.RED + "Ошибка доступа.");
           return true;
         }
    
         int opsCount = 0;
         StringBuilder message = new StringBuilder();
         message.append(ChatColor.YELLOW).append("Администраторы онлайн: ").append(ChatColor.RED);
         for(Player player : Bukkit.getOnlinePlayers()){
           if(player.isOp()){
             message.append(player.getName()).append(", ");
             opsCount++;
           }
         }
         message.delete(message.length() - 2, message.length()); // Удаляем последнюю запятую с пробелом
    
         if(opsCount > 0){
           sender.sendMessage(message.toString());
         } else {
           sender.sendMessage(ChatColor.YELLOW + "Нет администраторов онлайн");
         }
         return true;
       }
    
    }
     
  4. Автор темы
    ScReamer18

    ScReamer18 Участник

    Баллы:
    31
    Java учил, но, к сожалению, пока плохо понимаю, как реализовать это всё, например, в тех же плагинах. Очень мало опыта. P.S. Спасибо за код, буду учиться.
     

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