LanAnY
本帖最后由 GhostSkyV9 于 2021-5-8 03:13 编辑




我使用BukkitAPI自带的JavaPlugin#reloadConfig方法重载不了config文件的内容,然后自己又写了一个reloadConfig还是不行,具体原因不知道咋回事,以前用BukkitAPI自带的reloadConfig都能正常加载到config文件的内容,难道这次是因为版本太高的缘故?

API版本:1.15.2
测试环境:1.16.5

2021.12 数据,可能有更多内容public class CommandHandle implements CommandExecutor {
    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  Player player = (Player) sender;
  if (player.isOp() && args.length == 1 && args[0].equalsIgnoreCase("reload")) {
   ConfigManage.reloadConfig();
   player.sendMessage("Config重载完成!");
  } else if (player.isOp() && args.length == 1 && args[0].equalsIgnoreCase("get")) {
   player.getInventory().addItem(ItemProtec.onItem());
   player.sendMessage("你获得了一个保护装置");
  }
  return false;
    }
}
public class ConfigManage {   
    private static DeathDropExp deathDropExp = DeathDropExp.getInstance();
    private static FileConfiguration configuration = deathDropExp.getConfig();
    private static int loseExp;
    private static String itemName;
    private static String itemData;
    private static List<String> lore;

    static {
  loseExp = configuration.getInt("settings.exp-lose-percentage");
  itemName = configuration.getString("settings.item-name");
  itemData = configuration.getString("settings.item-data");
  lore = configuration.getStringList("settings.item-lore");
    }


    public static int getLoseExp() {
  return loseExp;
    }


    public static String getItemName() {
  return itemName;
    }


    public static String getItemData() {
  return itemData;
    }


    public static List<String> getLore() {
  return lore;
    }


    public static void reloadConfig() {
  File file = new File(deathDropExp.getDataFolder(), "config.yml");
  if (!file.exists()) {
   deathDropExp.saveDefaultConfig();
  }
  loseExp = configuration.getInt("settings.exp-lose-percentage");
  itemName = configuration.getString("settings.item-name");
  itemData = configuration.getString("settings.item-data");
  lore = configuration.getStringList("settings.item-lore");
    }
}


我使用BukkitAPI自带的JavaPlugin#reloadConfig方法重载不了config文件的内容,然后自己又写了一个reloadConfig还是不行,具体原因不知道咋回事,以前用BukkitAPI自带的reloadConfig都能正常加载到config文件的内容,难道这次是因为版本太高的缘故?


API版本:1.15.2
测试环境:1.16.5

a8105
if (!file.exists()) {
            deathDropExp.saveDefaultConfig();
}
????
不是saveDefaultConfig()而是reloadConfig()

LanAnY
a8105 发表于 2021-5-8 03:51
if (!file.exists()) {
            deathDropExp.saveDefaultConfig();
}

还是不行呀,它这个数据重载了以后还是跟重载前一样的数据,没有变

you_huang
我来刷个任务回复主题的那个

Kotori0629
没见过这么奇怪的写法。。 把getString()方法写到重载里..
尝试删除你的reloadConfig()静态方法 , 使用Bukkit的reloadConfig()方法

南柯郡守

  1.     public static void reloadConfig() {
  2.         File file = new File(deathDropExp.getDataFolder(), "config.yml");
  3.         if (!file.exists()) {
  4.             deathDropExp.saveDefaultConfig();
  5.         }
  6.         loseExp = configuration.getInt("settings.exp-lose-percentage");
  7.         itemName = configuration.getString("settings.item-name");
  8.         itemData = configuration.getString("settings.item-data");
  9.         lore = configuration.getStringList("settings.item-lore");
  10.     }
复制代码


不知道你自己有没有注意到 你这个方法里面你只是重新保存了默认的配置文件
并没有更新你的configuration

lliiooll
本帖最后由 lliiooll 于 2021-5-9 13:23 编辑

你应该先保存,后载入的

  1. public static void reloadConfig() {
  2.         File file = new File(deathDropExp.getDataFolder(), "config.yml");
  3.         if (!file.exists()) {
  4.             deathDropExp.saveDefaultConfig();
  5.         }
  6.         deathDropExp.reloadConfig();
  7.         loseExp = configuration.getInt("settings.exp-lose-percentage");
  8.         itemName = configuration.getString("settings.item-name");
  9.         itemData = configuration.getString("settings.item-data");
  10.         lore = configuration.getStringList("settings.item-lore");
  11.     }
复制代码




第一页 上一页 下一页 最后一页