Как мне перезагрузить только мой плагин и обновить значения в игре

#java #plugins #minecraft

#java #Плагины #Minecraft

Вопрос:

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: пожалуйста, наберитесь терпения, так как я новый молодой разработчик, и я видел, как люди расстраиваются / злятся, если кто-то не знает, как правильно отформатировать вопрос.

Итак, у меня есть эта команда, которая должна в основном перезапустить ТОЛЬКО мой плагин и config.yml:

     public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    if (command.getName().equalsIgnoreCase("hellopluginreload") || command.getName().equalsIgnoreCase("hpr"))

    this.getPluginLoader().disablePlugin(this);
    this.getPluginLoader().enablePlugin(this);
    sender.sendMessage(ChatColor.translateAlternateColorCodes('amp;', "amp;7[amp;dHiamp;bMessageamp;7]  amp;aSuccessfully amp;cReloaded amp;dHiamp;bMessage"));
    return true;
 

без необходимости перезагрузки всего сервера, потому что, конечно, это неудобно для других пользователей плагина. У меня есть класс launchpad (playerMoveListener):

 
import me.yarkosharko.helloplugin.Commands.bounceCommand;
import me.yarkosharko.helloplugin.HelloPlugin;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;

public class playerMoveListener implements Listener {

        HelloPlugin plugin;

    public playerMoveListener(HelloPlugin plugin) {
        this.plugin = plugin;


        }

    @EventHandler
        public void onPlayerWalk(PlayerMoveEvent me){
        if (plugin.getConfig().getBoolean("enabled")) {
            Player p = me.getPlayer();
            Location underBlock = p.getLocation();
            underBlock.setY(underBlock.getY() -1);
            if (p.getLocation().getBlock().getType().equals(Material.valueOf(plugin.getConfig().getString("top-block"))) amp;amp; underBlock.getBlock().getType().equals(Material.valueOf(plugin.getConfig().getString("bottom-block")))){
                p.setVelocity(p.getLocation().getDirection().multiply(2).setY(1));

            }
        }
    }
}
 

это заставляет людей подниматься, когда они касаются определенного блока. Проблема в том, что когда я помещаю новый блок в config.yml и запускаю команду /hellopluginreload, он обновляет config.yml, но в игре недавно добавленный блок никогда не работает как панель запуска, и работает только старый блок.
Просто чтобы уточнить, да, я использую правильные имена блоков, так как при перезапуске моего сервера это работает
Опять же, как мне перезагрузить только мой плагин и обновить значения в игре (желательно с помощью команды /hellopluginreload), без использования /reload или /stop ect .
Спасибо!

Ответ №1:

Вы могли бы использовать зависимость, например https://github.com/Simplix-Softworks/SimplixStorage для файлов.

С помощью этого вы можете поместить Config c = new Config("config.yml", plugin.getDataFolder().getAbsolutePath()); под HelloPlugin plugin; и c.forceReload() в первую строку функции onPlayerWalk.

Надеюсь, это поможет!