From 23384a49df83ef528f60e1cd90ca70e272937aad Mon Sep 17 00:00:00 2001 From: Ajneb97 Date: Fri, 6 Oct 2023 19:57:10 -0300 Subject: [PATCH] 1.7.1 --- src/main/java/pk/ajneb97/MainCommand.java | 15 +- src/main/java/pk/ajneb97/PlayerKits2.java | 6 + .../pk/ajneb97/managers/KitItemManager.java | 131 +++++++++++++++++- .../java/pk/ajneb97/managers/KitsManager.java | 3 +- .../pk/ajneb97/managers/MigrationManager.java | 123 ++++++++++++++++ src/main/resources/plugin.yml | 2 +- 6 files changed, 273 insertions(+), 7 deletions(-) create mode 100644 src/main/java/pk/ajneb97/managers/MigrationManager.java diff --git a/src/main/java/pk/ajneb97/MainCommand.java b/src/main/java/pk/ajneb97/MainCommand.java index 6d44fee..ddc129f 100644 --- a/src/main/java/pk/ajneb97/MainCommand.java +++ b/src/main/java/pk/ajneb97/MainCommand.java @@ -39,6 +39,8 @@ public class MainCommand implements CommandExecutor, TabCompleter { delete(sender,args,messagesConfig,msgManager); }else if(args[0].equalsIgnoreCase("reset")) { reset(sender,args,messagesConfig,msgManager); + }else if(args[0].equalsIgnoreCase("migrate")) { + migrate(sender,args,messagesConfig,msgManager); }else{ help(sender,msgManager,messagesConfig); } @@ -69,6 +71,8 @@ public class MainCommand implements CommandExecutor, TabCompleter { edit(player,args,messagesConfig,msgManager); }else if(args[0].equalsIgnoreCase("verify")){ verify(player,messagesConfig,msgManager); + }else if(args[0].equalsIgnoreCase("migrate")) { + migrate(sender,args,messagesConfig,msgManager); } else{ // /kit (short command) @@ -113,6 +117,15 @@ public class MainCommand implements CommandExecutor, TabCompleter { sender.sendMessage(MessagesManager.getColoredMessage("&7[ [ &8[&bPlayerKits&a²&8] &7] ]")); } + public void migrate(CommandSender sender,String[] args,FileConfiguration messagesConfig,MessagesManager msgManager){ + if(!PlayerUtils.isPlayerKitsAdmin(sender)){ + msgManager.sendMessage(sender,messagesConfig.getString("noPermissions"),true); + return; + } + + plugin.getMigrationManager().migrateKits(sender); + } + public void verify(Player player,FileConfiguration messagesConfig,MessagesManager msgManager){ if(!PlayerUtils.isPlayerKitsAdmin(player)){ msgManager.sendMessage(player,messagesConfig.getString("noPermissions"),true); @@ -328,7 +341,7 @@ public class MainCommand implements CommandExecutor, TabCompleter { if(PlayerUtils.isPlayerKitsAdmin(sender)){ commands.add("give");commands.add("delete");commands.add("create"); commands.add("reload");commands.add("reset");commands.add("edit"); - commands.add("verify"); + commands.add("verify");commands.add("migrate"); } for(String c : commands) { if(args[0].isEmpty() || c.startsWith(args[0].toLowerCase())) { diff --git a/src/main/java/pk/ajneb97/PlayerKits2.java b/src/main/java/pk/ajneb97/PlayerKits2.java index 72a76ae..16a83f3 100644 --- a/src/main/java/pk/ajneb97/PlayerKits2.java +++ b/src/main/java/pk/ajneb97/PlayerKits2.java @@ -37,6 +37,7 @@ public class PlayerKits2 extends JavaPlugin { private NMSManager nmsManager; private UpdateCheckerManager updateCheckerManager; private VerifyManager verifyManager; + private MigrationManager migrationManager; private InventoryUpdateTaskManager inventoryUpdateTaskManager; private PlayerDataSaveTask playerDataSaveTask; @@ -59,6 +60,8 @@ public class PlayerKits2 extends JavaPlugin { this.configsManager = new ConfigsManager(this); this.configsManager.configure(); + this.migrationManager = new MigrationManager(this); + this.inventoryUpdateTaskManager = new InventoryUpdateTaskManager(this); this.inventoryUpdateTaskManager.start(); @@ -170,6 +173,9 @@ public class PlayerKits2 extends JavaPlugin { return verifyManager; } + public MigrationManager getMigrationManager() { + return migrationManager; + } public void updateMessage(UpdateCheckerResult result){ if(!result.isError()){ diff --git a/src/main/java/pk/ajneb97/managers/KitItemManager.java b/src/main/java/pk/ajneb97/managers/KitItemManager.java index a950edd..23402fa 100644 --- a/src/main/java/pk/ajneb97/managers/KitItemManager.java +++ b/src/main/java/pk/ajneb97/managers/KitItemManager.java @@ -15,10 +15,7 @@ import pk.ajneb97.model.item.*; import pk.ajneb97.utils.ItemUtils; import pk.ajneb97.utils.OtherUtils; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; public class KitItemManager { @@ -432,7 +429,133 @@ public class KitItemManager { return kitItem; } + public KitItem getKitItemFromV1Config(FileConfiguration config, String path){ + String id = config.getString(path+".id"); + String name = config.contains(path+".name") ? config.getString(path+".name") : null; + List lore = config.contains(path+".lore") ? config.getStringList(path+".lore") : null; + int amount = config.contains(path+".amount") ? Integer.parseInt(config.getString(path+".amount")) : 1; + short durability = config.contains(path+".durability") ? Short.parseShort(config.getString(path+".durability")) : 0; + int customModelData = config.contains(path+".custom_model_data") ? Integer.parseInt(config.getString(path+".custom_model_data")) : 0; + int color = config.contains(path+".color") ? Integer.parseInt(config.getString(path+".color")) : 0; + List enchants = config.contains(path+".enchants") ? config.getStringList(path+".enchants") : null; + List flags = config.contains(path+".hide-flags") ? config.getStringList(path+".hide-flags") : null; + List bookEnchants = config.contains(path+".book-enchants") ? config.getStringList(path+".book-enchants") : null; + KitItemPotionData potionData = null; + if(config.contains(path+".potion-type")) { + List potionEffects = null; + boolean extended = false; + boolean upgraded = false; + String potionType = null; + int potionColor = 0; + if(config.contains(path+".potion-effects")) { + potionEffects = config.getStringList(path+".potion-effects"); + } + if(config.contains(path+".potion-extended")) { + extended = Boolean.parseBoolean(config.getString(path+".potion-extended")); + } + if(config.contains(path+".potion-upgraded")) { + upgraded = Boolean.parseBoolean(config.getString(path+".potion-upgraded")); + } + potionType = config.getString(path+".potion-type"); + if(config.contains(path+".potion-color")) { + potionColor = config.getInt(path+".potion-color"); + } + + potionData = new KitItemPotionData(upgraded,extended,potionType,potionColor,potionEffects); + } + KitItemBookData bookData = null; + if(config.contains(path+".book-title")) { + List pages = config.getStringList(path+".book-pages"); + String author = null; + String generation = null; + String title = null; + if(config.contains(path+".book-author")) { + author = config.getString(path+".book-author"); + } + if(config.contains(path+".book-generation")) { + generation = config.getString(path+".book-generation"); + } + title = config.getString(path+".book-title"); + + bookData = new KitItemBookData(pages,author,generation,title); + } + KitItemFireworkData fireworkData = null; + if(config.contains(path+".firework-effects")) { + List rocketEffects = null; + int power = 0; + rocketEffects = config.getStringList(path+".firework-effects"); + if(config.contains(path+".firework-power")) { + power = Integer.parseInt(config.getString(path+".firework-power")); + } + + fireworkData = new KitItemFireworkData(rocketEffects,null,power); + } + KitItemBannerData bannerData = null; + if(config.contains(path+".banner-pattern")) { + List patterns = null; + String baseColor = null; + String[] pattern = config.getString(path+".banner-pattern").split(";"); + patterns = new ArrayList<>(); + for(String p : pattern){ + String[] pSep = p.split(":"); + patterns.add(pSep[0]+";"+pSep[1]); + } + if(config.contains(path+".banner-color")) { + baseColor = config.getString(path+".banner-color"); + } + + bannerData = new KitItemBannerData(patterns,baseColor); + } + KitItemSkullData skullData = null; + if(config.contains(path+".skull-texture")) { + String skullTexture = null; + String skullId = null; + skullTexture = config.getString(path+".skull-texture"); + skullId = UUID.randomUUID().toString(); + skullData = new KitItemSkullData(null,skullTexture,skullId); + } + + List nbtList = new ArrayList<>(); + if(config.contains(path+".nbt")){ + nbtList = config.getStringList(path+".nbt"); + for(int i=0;i attributes = new ArrayList<>(); + if(config.contains(path+".attributes")){ + for(String attributeName : config.getConfigurationSection(path+".attributes").getKeys(false)){ + String attribute = config.getString(path+".attributes."+attributeName+".modifiers"); + attributes.add(attribute); + } + } + + boolean offhand = config.contains(path+".offhand") ? config.getBoolean(path+".offhand") : false; + + KitItem kitItem = new KitItem(id); + kitItem.setName(name); + kitItem.setLore(lore); + kitItem.setAmount(amount); + kitItem.setDurability(durability); + kitItem.setCustomModelData(customModelData); + kitItem.setColor(color); + kitItem.setEnchants(enchants); + kitItem.setFlags(flags); + kitItem.setBookEnchants(bookEnchants); + kitItem.setNbt(nbtList); + kitItem.setAttributes(attributes); + kitItem.setSkullData(skullData); + kitItem.setPotionData(potionData); + kitItem.setFireworkData(fireworkData); + kitItem.setBannerData(bannerData); + kitItem.setBookData(bookData); + + kitItem.setOffhand(offhand); + + return kitItem; + } public void replaceVariables(ItemStack item, ArrayList variables){ if(item.hasItemMeta()){ diff --git a/src/main/java/pk/ajneb97/managers/KitsManager.java b/src/main/java/pk/ajneb97/managers/KitsManager.java index 0bc34eb..ebed9a3 100644 --- a/src/main/java/pk/ajneb97/managers/KitsManager.java +++ b/src/main/java/pk/ajneb97/managers/KitsManager.java @@ -190,7 +190,8 @@ public class KitsManager { //Requirements - Buy KitRequirements kitRequirements = kit.getRequirements(); - if(!giveKitInstructions.isIgnoreRequirements() && kitRequirements != null){ + if(!giveKitInstructions.isIgnoreRequirements() && kitRequirements != null && + (kitRequirements.getPrice() != 0 || !kitRequirements.getExtraRequirements().isEmpty())){ if(!(kitRequirements.isOneTimeRequirements() && playerDataManager.isKitBought(player,kit.getName()))){ if(!giveKitInstructions.isRequirementsSatisfied()){ //Player must buy it first diff --git a/src/main/java/pk/ajneb97/managers/MigrationManager.java b/src/main/java/pk/ajneb97/managers/MigrationManager.java new file mode 100644 index 0000000..64d4d6b --- /dev/null +++ b/src/main/java/pk/ajneb97/managers/MigrationManager.java @@ -0,0 +1,123 @@ +package pk.ajneb97.managers; + +import org.bukkit.command.CommandSender; +import org.bukkit.configuration.file.YamlConfiguration; +import pk.ajneb97.PlayerKits2; +import pk.ajneb97.configs.KitsConfigManager; +import pk.ajneb97.model.Kit; +import pk.ajneb97.model.KitAction; +import pk.ajneb97.model.KitRequirements; +import pk.ajneb97.model.item.KitItem; +import pk.ajneb97.model.item.KitItemSkullData; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +public class MigrationManager { + + private PlayerKits2 plugin; + public MigrationManager(PlayerKits2 plugin){ + this.plugin = 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.getColoredMessage(" &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 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 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.getColoredMessage(" &aKit &7"+kitName+" &amigrated.")); + }catch(Exception e){ + sender.sendMessage(PlayerKits2.prefix+MessagesManager.getColoredMessage(" &cError while trying to migrate kit &7"+kitName+"&c, check console.")); + e.printStackTrace(); + } + + } + }else{ + sender.sendMessage(PlayerKits2.prefix+MessagesManager.getColoredMessage(" &cNo kits found.")); + return; + } + + plugin.getConfigsManager().reload(); + sender.sendMessage(PlayerKits2.prefix+MessagesManager.getColoredMessage(" &aMigration completed.")); + } + + 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 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[0],fullSkull[1]); + } + + kitItem.setName(name); + kitItem.setLore(lore); + kitItem.setCustomModelData(customModelData); + kitItem.setSkullData(skullData); + return kitItem; + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index a483513..31913b2 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ main: pk.ajneb97.PlayerKits2 -version: 1.6.1 +version: 1.7.1 name: PlayerKits2 api-version: 1.13 softdepend: [Vault,PlaceholderAPI]