1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите BungeeCord GetServer возвращает null

Тема в разделе "Помощь", создана пользователем JustMelon_, 9 янв 2023.

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

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

    Баллы:
    66
    Имя в Minecraft:
    JustMelon_
    Доброе утро, форумчане. Я написал код по оф. вики BungeeCord Messaging Channel. Я хотел получить название сервера, но мне всегда возвращается null. Помогите, пожалуйста.
     
  2. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Последнее редактирование: 9 янв 2023
  3. Автор темы
    JustMelon_

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

    Баллы:
    66
    Имя в Minecraft:
    JustMelon_
    Извините, что ошибся разделом, запомню на будущее.

    Код:
    public final class Manager extends JavaPlugin implements PluginMessageListener {
        private static Manager instance;
        public static TagManager tagManager = new TagManager();
    
        public String server_name;
    
        public static Plugin getInstance() {
            return instance;
        }
    
        @Override
        public void onEnable() {
            instance = this;
            this.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
            this.getServer().getMessenger().registerIncomingPluginChannel(this, "BungeeCord", this);
    
            this.getCommand("connect").setExecutor(new ConnectCommand());
    
            // Plugin startup logic
            getServer().getConsoleSender().sendMessage(ChatColor.GREEN + "[PANDAWORLD] Launched successfully!");
            getServer().getPluginManager().registerEvents(new EventsClass(), this);
            getServer().getPluginManager().registerEvents(new ItemJoin(), this);
            getServer().getPluginManager().registerEvents(new ChatEvent(), this);
            getServer().getPluginManager().registerEvents(new Scoreboard(), this);
            getServer().getPluginManager().registerEvents(new TagManager(), this);
    
            //  TAB
            if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") == null) {
                Bukkit.getLogger().warning("PAPI is required to work.");
                Bukkit.getPluginManager().disablePlugin(this);
                return;
            }
    
            TabManager tab = new TabManager();
            tab.addHeaderLine("");
            tab.addHeaderLine("&a&lPANDAWORLD");
            tab.addHeaderLine("&fЛучший сервер по мини-играм");
            tab.addHeaderLine("");
    
            tab.addFooterLine("");
            tab.addFooterLine("&fВы находитесь на сервере &a" + server_name);
            tab.addFooterLine("");
    
            Bukkit.getScheduler().runTaskTimerAsynchronously(this, () -> {
                for (Player player : Bukkit.getOnlinePlayers()) {
                    tab.update(player);
                    ByteArrayDataOutput out = ByteStreams.newDataOutput();
                    out.writeUTF("GetServer");
                    player.sendPluginMessage(this, "BungeeCord", out.toByteArray());
                }
            }, 0L, 20L);
        }
    
        @Override
        public void onDisable() {
            getServer().getConsoleSender().sendMessage(ChatColor.RED + "[PANDAWORLD] Disabled!");
    
            this.getServer().getMessenger().unregisterOutgoingPluginChannel(this);
            this.getServer().getMessenger().unregisterIncomingPluginChannel(this);
        }
    
        @Override
        public void onPluginMessageReceived(String channel, Player player, byte[] message) {
            if (!channel.equals("BungeeCord")) {
                return;
            }
            ByteArrayDataInput in = ByteStreams.newDataInput(message);
            String subchannel = in.readUTF();
            if (subchannel.equals("GetServer")) {
                server_name = in.readUTF();
            }
        }
    }
     
  4. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Скорее всего, до назначения значения переменной дело просто не доходит, поэтому она постоянно и null. А вот почему так происходит - сходу сказать сложно. Вроде регистрация есть, сообщения тоже отправляются.

    Добавь отладку, чтобы полнять, выполняется ли метод onPluginMessageReceived()

    Например так:
    this.getLogger().info("Получили PluginMessage в канале " + channel)
     
  5. Автор темы
    JustMelon_

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

    Баллы:
    66
    Имя в Minecraft:
    JustMelon_
    Я использую ботфильтр от славы, может в этом проблема?
     
  6. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Проблема наверняка в твоём коде, а не в банже. Сделай, что я предложил
     

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