почему мой конфигурационный файл не изменяет motd моих серверов?

#java #bukkit

Вопрос:

Так как в названии говорится, что мне нужен мой конфигурационный файл для изменения моих серверов motd, я чувствую, что все сделал правильно, но, очевидно, что-то не так, поэтому позвольте мне показать вам, с чем я работаю

я.заваж.мотд.Главная

 package me.zavage.motd;

import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {
    
    @Override
    public void onEnable() {
        saveDefaultConfig();
    }

}

 

я.заваж.мотд.слушатели.ПингЛистенер

 package me.zavage.motd.listeners;

import java.io.File;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.server.ServerListPingEvent;
import me.zavage.motd.Main;
import me.zavage.motd.utils.Utils;

public class PingListener implements Listener {
    
    private Main plugin;
    
    @EventHandler
    public void onPing(ServerListPingEvent e) {
        
        e.setMaxPlayers(plugin.getConfig().getInt("maxplayers"));
        e.setMotd(Utils.chat(plugin.getConfig().getString("motd"   "n"   (Utils.chat(plugin.getConfig().getString("motd_line_2"))))));
        try {
            e.setServerIcon(Bukkit.loadServerIcon(new File(plugin.getConfig().getString("server_icon_path"))));
        } catch (Exception e1) {
            e1.printStackTrace();
        }
    }

}
 

Тогда у нас есть файл config.yml

 #can only be a NUMBER with NO DECIMALS!
maxplayers: ''

motd: ''

#next line on motd
motd_line_2:

#create a folder inside the first page of your server files, call it "icon" and drop you server icon in there
#server icon MUST be 64 x 64 pixels
#                                                              #NameOfIcon#
#path example "C:UsersuserDesktopminecraft test servericonicon.png
server_icon_path: ''
 

Ответ №1:

Если код, который вы показываете, соответствует всему, что вы используете, возникает несколько проблем.

  • Вы не регистрируете слушателя
 package me.zavage.motd;

import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {
    
    @Override
    public void onEnable() {
        saveDefaultConfig();

        getServer().getPluginManager().registerEvents(new PingListener(this), this);
    }
}
 
  • Вы не устанавливаете переменную плагина в прослушивателе, и у вас нет конструктора
 public class PingListener implements Listener {
    
    private Main plugin;
    
    public PingListener(Main plugin) {
       this.plugin = plugin;
    }
}
 
  • Наконец, вы ищете motdn motd_line_2 сообщение. Вы должны использовать это в своем ServerListPingEvent слушателе :
 e.setMaxPlayers(plugin.getConfig().getInt("maxplayers"));
e.setMotd(Utils.chat(plugin.getConfig().getString("motd")   "n"   plugin.getConfig().getString("motd_line_2")));
try {
   e.setServerIcon(Bukkit.loadServerIcon(new File(plugin.getConfig().getString("server_icon_path"))));
} catch (Exception exc) {
   exc.printStackTrace();
}
 

Комментарии:

1. ооо, я вижу лмао, большое тебе спасибо!