PlayerKitsF/src/main/java/pk/ajneb97/managers/MigrationManager.java
2025-11-03 16:57:39 -03:00

178 lines
8.4 KiB
Java

package pk.ajneb97.managers;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.scheduler.BukkitRunnable;
import pk.ajneb97.PlayerKits2;
import pk.ajneb97.configs.KitsConfigManager;
import pk.ajneb97.configs.PlayersConfigManager;
import pk.ajneb97.model.*;
import pk.ajneb97.model.item.KitItem;
import pk.ajneb97.model.item.KitItemSkullData;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class MigrationManager {
private PlayerKits2 plugin;
public MigrationManager(PlayerKits2 plugin){
this.plugin = plugin;
}
public void migrate(CommandSender sender){
new BukkitRunnable(){
@Override
public void run() {
migrateKits(sender);
migratePlayers(sender);
sender.sendMessage(PlayerKits2.prefix+MessagesManager.getLegacyColoredMessage(" &aMigration completed."));
}
}.runTaskAsynchronously(plugin);
}
public void migrateKits(CommandSender sender){
File bStatsFolder = new File(plugin.getDataFolder().getParentFile(), "PlayerKits");
File configFile = new File(bStatsFolder, "kits.yml");
if(!configFile.exists()){
sender.sendMessage(PlayerKits2.prefix+MessagesManager.getLegacyColoredMessage(" &cPlayerKits1 kits.yml file not found."));
return;
}
KitItemManager kitItemManager = plugin.getKitItemManager();
YamlConfiguration config = YamlConfiguration.loadConfiguration(configFile);
Kit defaultValues = plugin.getConfigsManager().getMainConfigManager().getNewKitDefault();
KitsConfigManager kitsConfigManager = plugin.getConfigsManager().getKitsConfigManager();
if(config.contains("Kits")){
for(String kitName : config.getConfigurationSection("Kits").getKeys(false)){
try{
String path = "Kits."+kitName;
Kit kit = new Kit(kitName);
boolean oneTime = config.contains(path+".one_time") ? config.getBoolean(path+".one_time") : false;
int cooldown = config.contains(path+".cooldown") ? config.getInt(path+".cooldown") : 0;
boolean permissionRequired = config.contains(path+".permission");
boolean autoArmor = config.contains(path+".auto_armor") ? config.getBoolean(path+".auto_armor") : false;
ArrayList<KitAction> claimActions = new ArrayList<>();
if(config.contains(path+".Commands")){
for(String command : config.getStringList(path+".Commands")){
claimActions.add(new KitAction("console_command: "+command,null,false,false));
}
}
ArrayList<KitItem> items = new ArrayList<>();
if(config.contains(path+".Items")){
for(String key : config.getConfigurationSection(path+".Items").getKeys(false)){
String pathItem = path+".Items."+key;
KitItem kitItem = kitItemManager.getKitItemFromV1Config(config,pathItem);
items.add(kitItem);
}
}
KitRequirements kitRequirements = null;
if(config.contains(path+".price")){
kitRequirements = new KitRequirements();
kitRequirements.setPrice(config.getInt(path+".price"));
boolean oneTimeBuy = config.contains(path+".one_time_buy") ? config.getBoolean(path+".one_time_buy") : false;
kitRequirements.setOneTimeRequirements(oneTimeBuy);
}
kit.setDisplayItemDefault(getDisplayItem(config,path));
if(config.contains(path+".noPermissionsItem")){
kit.setDisplayItemNoPermission(getDisplayItem(config,path+".noPermissionsItem"));
}
kit.setDisplayItemCooldown(defaultValues.getDisplayItemCooldown());
kit.setDisplayItemOneTime(defaultValues.getDisplayItemOneTime());
kit.setCooldown(cooldown);
kit.setAutoArmor(autoArmor);
kit.setOneTime(oneTime);
kit.setPermissionRequired(permissionRequired);
kit.setItems(items);
kit.setClaimActions(claimActions);
kit.setErrorActions(new ArrayList<>());
kit.setRequirements(kitRequirements);
kitsConfigManager.saveConfig(kit);
sender.sendMessage(PlayerKits2.prefix+MessagesManager.getLegacyColoredMessage(" &aKit &7"+kitName+" &amigrated."));
}catch(Exception e){
sender.sendMessage(PlayerKits2.prefix+MessagesManager.getLegacyColoredMessage(" &cError while trying to migrate kit &7"+kitName+"&c, check console."));
e.printStackTrace();
}
}
}else{
sender.sendMessage(PlayerKits2.prefix+MessagesManager.getLegacyColoredMessage(" &cNo kits found."));
return;
}
kitsConfigManager.loadConfigs();
plugin.getVerifyManager().verify();
}
public void migratePlayers(CommandSender sender){
File bStatsFolder = new File(plugin.getDataFolder().getParentFile(), "PlayerKits");
File configFile = new File(bStatsFolder, "players.yml");
if(!configFile.exists()){
sender.sendMessage(PlayerKits2.prefix+MessagesManager.getLegacyColoredMessage(" &cPlayerKits1 players.yml file not found."));
return;
}
YamlConfiguration config = YamlConfiguration.loadConfiguration(configFile);
PlayersConfigManager playersConfigManager = plugin.getConfigsManager().getPlayersConfigManager();
if(config.contains("Players")) {
for (String uuid : config.getConfigurationSection("Players").getKeys(false)) {
try {
String path = "Players."+uuid;
String name = config.getString(path+".name");
PlayerData playerData = new PlayerData(UUID.fromString(uuid),name);
for(String kitName : config.getConfigurationSection(path).getKeys(false)){
if(kitName.equals("name")){
continue;
}
PlayerDataKit playerDataKit = new PlayerDataKit(kitName);
playerDataKit.setBought(config.getBoolean(path+"."+kitName+".buyed"));
playerDataKit.setCooldown(config.getLong(path+"."+kitName+".cooldown"));
playerDataKit.setOneTime(config.getBoolean(path+"."+kitName+".one_time"));
playerData.addKit(playerDataKit);
}
playersConfigManager.saveConfig(playerData);
sender.sendMessage(PlayerKits2.prefix+MessagesManager.getLegacyColoredMessage(" &aPlayer &7"+name+" &amigrated."));
} catch (Exception e) {
sender.sendMessage(PlayerKits2.prefix + MessagesManager.getLegacyColoredMessage(" &cError while trying to migrate player data with uuid &7" + uuid + "&c, check console."));
e.printStackTrace();
}
}
}
playersConfigManager.configure();
}
public KitItem getDisplayItem(YamlConfiguration config,String path){
KitItem kitItem = new KitItem(config.getString(path+".display_item"));
String name = config.contains(path+".display_name") ? config.getString(path+".display_name") : null;
List<String> lore = config.contains(path+".display_lore") ? config.getStringList(path+".display_lore") : null;
int customModelData = config.contains(path+".display_item_custom_model_data") ? config.getInt(path+".display_item_custom_model_data") : 0;
KitItemSkullData skullData = null;
if(config.contains(path+".display_item_skulldata")) {
String[] fullSkull = config.getString(path+".display_item_skulldata").split(";");
skullData = new KitItemSkullData(null,fullSkull[1],fullSkull[0]);
}
kitItem.setName(name);
kitItem.setLore(lore);
kitItem.setCustomModelData(customModelData);
kitItem.setSkullData(skullData);
return kitItem;
}
}