#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.
Надеюсь, это поможет!