add gui item config migrate

This commit is contained in:
Xanadu13
2024-03-18 16:29:50 +08:00
parent 7109fa57cc
commit b541d05230
@@ -1,5 +1,6 @@
package pers.xanadu.enderdragon.config; package pers.xanadu.enderdragon.config;
import org.bukkit.Bukkit;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
@@ -130,12 +131,82 @@ public class FileUpdater {
// Lang.warn("Attention: Please confirm the accuracy before using new config!"); // Lang.warn("Attention: Please confirm the accuracy before using new config!");
} }
public static void migrate(){ public static void migrate(){
File folder = new File(plugin.getDataFolder(),"reward"); boolean b1 = handleRewards();
if (folder.exists()){ boolean b2 = handleGuiItems();
if (b1 || b2) Lang.info("New reward configuration files are generated in plugins/EnderDragon/migrate.");
else Lang.warn("No files need to be migrated!");
}
private static boolean handleGuiItems(){
File folder = new File(plugin.getDataFolder(),"gui");
if (!folder.exists()) return false;
File[] files = folder.listFiles(f -> f.getName().endsWith(".yml")); File[] files = folder.listFiles(f -> f.getName().endsWith(".yml"));
if (files == null || files.length == 0) { if (files == null || files.length == 0) {
Lang.warn("No files need to be migrated!"); return false;
return; }
for (File file : files){
Config.copyFile(file,"new/gui/"+file.getName(),true);
File gen_file = new File(plugin.getDataFolder(),"new/gui/"+file.getName());
YamlConfiguration cfg = YamlConfiguration.loadConfiguration(gen_file);
cfg.getKeys(false).forEach(key->{
ConfigurationSection gui = cfg.getConfigurationSection(key);
if (gui == null) return;
ConfigurationSection Items = gui.getConfigurationSection("Items");
if (Items == null) return;
Items.getKeys(false).forEach(ch -> {
ConfigurationSection slot = Items.getConfigurationSection(ch);
if (slot == null) return;
if (!slot.contains("data")) return;
ItemStack itemStack = readItemStack(slot,"data");
ItemManager.save2section_simple(itemStack,slot,"data");
if (!slot.contains("data_disable")) return;
itemStack = readItemStack(slot,"data_disable");
ItemManager.save2section_simple(itemStack,slot,"data_disable");
});
Items.getKeys(false).forEach(ch -> {
ConfigurationSection slot = Items.getConfigurationSection(ch);
if (slot == null) return;
if (slot.contains("data_type")){
slot.set("data_type","simple");
}
else if (slot.contains("data") || slot.contains("data_disable")) {
slot.set("data_type","simple");
}
});
});
try{
cfg.save(gen_file);
}catch (IOException e){
e.printStackTrace();
}
}
return true;
}
private static ItemStack readItemStack(ConfigurationSection section,final String path){
ItemStack itemStack;
final String type = section.getString("data_type","");
switch (type){
case "nbt":
itemStack = ItemManager.readFromNBT(section,path);
ItemManager.getLegacy().compareAndSet(false,true);
break;
case "advanced":
itemStack = ItemManager.readFromAdvData(section,path);
ItemManager.getLegacy().compareAndSet(false,true);
break;
case "simple":
itemStack = ItemManager.readFromSimple(section,path);
break;
default:
itemStack = ItemManager.readFromBukkit(section,path);
}
return itemStack;
}
private static boolean handleRewards(){
File folder = new File(plugin.getDataFolder(),"reward");
if (!folder.exists()) return false;
File[] files = folder.listFiles(f -> f.getName().endsWith(".yml"));
if (files == null || files.length == 0) {
return false;
} }
for (File file : files){ for (File file : files){
FileConfiguration config = YamlConfiguration.loadConfiguration(file); FileConfiguration config = YamlConfiguration.loadConfiguration(file);
@@ -164,11 +235,9 @@ public class FileUpdater {
e.printStackTrace(); e.printStackTrace();
} }
} }
Lang.info("New reward config files are generated in plugins/EnderDragon/migrate."); return true;
} }
else Lang.warn("No files need to be migrated!"); private static String saveReward(Reward reward){
}
public static String saveReward(Reward reward){
Chance chance = reward.getChance(); Chance chance = reward.getChance();
ItemStack item = reward.getItem(); ItemStack item = reward.getItem();
double value = chance.getValue(); double value = chance.getValue();