diff --git a/pom.xml b/pom.xml index a156236..49b4615 100644 --- a/pom.xml +++ b/pom.xml @@ -9,8 +9,8 @@ 1.0-SNAPSHOT - 17 - 17 + 21 + 21 UTF-8 @@ -47,7 +47,7 @@ org.spigotmc spigot-api - 1.20.2-R0.1-SNAPSHOT + 1.20.5-R0.1-SNAPSHOT provided diff --git a/src/main/java/pk/ajneb97/MainCommand.java b/src/main/java/pk/ajneb97/MainCommand.java index f3db11e..6128772 100644 --- a/src/main/java/pk/ajneb97/MainCommand.java +++ b/src/main/java/pk/ajneb97/MainCommand.java @@ -301,7 +301,7 @@ public class MainCommand implements CommandExecutor, TabCompleter { } public void create(Player player,String[] args,FileConfiguration messagesConfig,MessagesManager msgManager){ - // /kit create (optional) + // /kit create (optional) if(!PlayerUtils.isPlayerKitsAdmin(player)){ msgManager.sendMessage(player,messagesConfig.getString("noPermissions"),true); return; @@ -313,8 +313,13 @@ public class MainCommand implements CommandExecutor, TabCompleter { } boolean saveOriginalItems = false; - if(args.length >= 3 && args[2].equalsIgnoreCase("original")){ - saveOriginalItems = true; + if(args.length >= 3){ + if(args[2].equalsIgnoreCase("original")){ + saveOriginalItems = true; + }else if(!args[2].equalsIgnoreCase("configurable")){ + msgManager.sendMessage(player,messagesConfig.getString("commandCreateError"),true); + return; + } } plugin.getKitsManager().createKit(args[1],player,saveOriginalItems); @@ -416,10 +421,13 @@ public class MainCommand implements CommandExecutor, TabCompleter { } }else if(args.length == 3 && PlayerUtils.isPlayerKitsAdmin(sender)){ if(args[0].equalsIgnoreCase("create")){ - if(args[2].isEmpty() || "original".startsWith(args[2].toLowerCase())) { - completions.add("original"); - return completions; + commands.add("original");commands.add("configurable"); + for(String c : commands) { + if(args[2].isEmpty() || c.startsWith(args[2].toLowerCase())) { + completions.add(c); + } } + return completions; } } } diff --git a/src/main/java/pk/ajneb97/PlayerKits2.java b/src/main/java/pk/ajneb97/PlayerKits2.java index 16a83f3..dda92e5 100644 --- a/src/main/java/pk/ajneb97/PlayerKits2.java +++ b/src/main/java/pk/ajneb97/PlayerKits2.java @@ -54,7 +54,7 @@ public class PlayerKits2 extends JavaPlugin { this.inventoryEditManager = new InventoryEditManager(this); this.kitsManager = new KitsManager(this); this.dependencyManager = new DependencyManager(this); - this.nmsManager = new NMSManager(); + this.nmsManager = new NMSManager(this); this.playerDataManager = new PlayerDataManager(this); this.configsManager = new ConfigsManager(this); diff --git a/src/main/java/pk/ajneb97/database/MySQLConnection.java b/src/main/java/pk/ajneb97/database/MySQLConnection.java index 78d3054..8d72781 100644 --- a/src/main/java/pk/ajneb97/database/MySQLConnection.java +++ b/src/main/java/pk/ajneb97/database/MySQLConnection.java @@ -215,6 +215,7 @@ public class MySQLConnection { statement.setString(1, player.getName()); statement.setString(2, player.getUuid()); + statement.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } diff --git a/src/main/java/pk/ajneb97/managers/InventoryManager.java b/src/main/java/pk/ajneb97/managers/InventoryManager.java index 8317719..08cc205 100644 --- a/src/main/java/pk/ajneb97/managers/InventoryManager.java +++ b/src/main/java/pk/ajneb97/managers/InventoryManager.java @@ -100,11 +100,9 @@ public class InventoryManager { for(ItemKitInventory itemInventory : items){ for(int slot : itemInventory.getSlots()){ String type = itemInventory.getType(); - if(type != null){ - if(type.startsWith("kit: ")){ - setKit(type.replace("kit: ",""),inventoryPlayer.getPlayer(),inv,slot,kitsManager - ,playerDataManager,kitItemManager,msgManager); - } + if(type != null && type.startsWith("kit: ")){ + setKit(type.replace("kit: ",""),inventoryPlayer.getPlayer(),inv,slot,kitsManager + ,playerDataManager,kitItemManager,msgManager); continue; } @@ -112,6 +110,9 @@ public class InventoryManager { if(inventoryPlayer.getInventoryName().equals("buy_requirements_inventory")){ inventoryRequirementsManager.configureRequirementsItem(item,inventoryPlayer.getKitName(),inventoryPlayer.getPlayer()); + if(type != null){ + item = ItemUtils.setTagStringItem(plugin,item, "playerkits_buy", type); + } } String openInventory = itemInventory.getOpenInventory(); @@ -204,7 +205,7 @@ public class InventoryManager { if(buyTag == null){ return; } - if(buyTag.equals("yes")){ + if(buyTag.equals("yes") || buyTag.equals("buy_yes")){ inventoryRequirementsManager.requirementsInventoryBuy(inventoryPlayer); }else{ inventoryRequirementsManager.requirementsInventoryCancel(inventoryPlayer); diff --git a/src/main/java/pk/ajneb97/managers/KitItemManager.java b/src/main/java/pk/ajneb97/managers/KitItemManager.java index 077f438..99c7c2d 100644 --- a/src/main/java/pk/ajneb97/managers/KitItemManager.java +++ b/src/main/java/pk/ajneb97/managers/KitItemManager.java @@ -1,7 +1,6 @@ package pk.ajneb97.managers; import com.destroystokyo.paper.Namespaced; -import org.bukkit.Bukkit; import org.bukkit.Color; import org.bukkit.NamespacedKey; import org.bukkit.configuration.file.FileConfiguration; @@ -17,6 +16,7 @@ import pk.ajneb97.model.internal.KitVariable; import pk.ajneb97.model.item.*; import pk.ajneb97.utils.ItemUtils; import pk.ajneb97.utils.OtherUtils; +import pk.ajneb97.utils.ServerVersion; import java.util.*; @@ -108,11 +108,15 @@ public class KitItemManager { } } - List nbtList = ItemUtils.getNBT(plugin,item); - if(!nbtList.isEmpty()) { - kitItem.setNbt(nbtList); + ServerVersion serverVersion = PlayerKits2.serverVersion; + if(!serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_20_R4)){ + List nbtList = ItemUtils.getNBT(plugin,item); + if(!nbtList.isEmpty()) { + kitItem.setNbt(nbtList); + } } + kitItem.setAttributes(ItemUtils.getAttributes(plugin,item)); kitItem.setSkullData(ItemUtils.getSkullData(item)); kitItem.setPotionData(ItemUtils.getPotionData(item)); @@ -242,8 +246,11 @@ public class KitItemManager { List attributes = kitItem.getAttributes(); item = ItemUtils.setAttributes(plugin,item, attributes); - List nbtList = kitItem.getNbt(); - item = ItemUtils.setNBT(plugin,item, nbtList); + ServerVersion serverVersion = PlayerKits2.serverVersion; + if(!serverVersion.serverVersionGreaterEqualThan(serverVersion,ServerVersion.v1_20_R4)){ + List nbtList = kitItem.getNbt(); + item = ItemUtils.setNBT(plugin,item, nbtList); + } return item; } diff --git a/src/main/java/pk/ajneb97/utils/ServerVersion.java b/src/main/java/pk/ajneb97/utils/ServerVersion.java index 7582e6a..c0b11a3 100644 --- a/src/main/java/pk/ajneb97/utils/ServerVersion.java +++ b/src/main/java/pk/ajneb97/utils/ServerVersion.java @@ -24,7 +24,8 @@ public enum ServerVersion { v1_19_R3, v1_20_R1, v1_20_R2, - v1_20_R3; + v1_20_R3, + v1_20_R4; public boolean serverVersionGreaterEqualThan(ServerVersion version1,ServerVersion version2){ return version1.ordinal() >= version2.ordinal(); diff --git a/src/main/java/pk/ajneb97/versions/NMSManager.java b/src/main/java/pk/ajneb97/versions/NMSManager.java index f1d8030..45370d8 100644 --- a/src/main/java/pk/ajneb97/versions/NMSManager.java +++ b/src/main/java/pk/ajneb97/versions/NMSManager.java @@ -1,13 +1,12 @@ package pk.ajneb97.versions; -import com.google.gson.Gson; -import com.google.gson.JsonArray; -import org.bukkit.Bukkit; +import org.bukkit.NamespacedKey; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.persistence.PersistentDataContainer; +import org.bukkit.persistence.PersistentDataType; import pk.ajneb97.PlayerKits2; import pk.ajneb97.utils.ServerVersion; - -import java.io.StringReader; import java.lang.reflect.InvocationTargetException; import java.util.*; @@ -16,11 +15,17 @@ public class NMSManager { private Version version; private ServerVersion serverVersion; + private PlayerKits2 plugin; - public NMSManager(){ + public NMSManager(PlayerKits2 plugin){ + this.plugin = plugin; this.version = new Version(); this.serverVersion = PlayerKits2.serverVersion; + if(serverVersionGreaterEqualThan(ServerVersion.v1_20_R4)){ + return; + } + try { //Classes version.addClass("CraftItemStack",Class.forName("org.bukkit.craftbukkit."+serverVersion+".inventory.CraftItemStack")); @@ -134,17 +139,21 @@ public class NMSManager { version.addMethod("hasKeyOfType",version.getClassRef("NBTTagCompound").getMethod("b",String.class,int.class)); version.addMethod("parse",version.getClassRef("MojangsonParser").getMethod("a",String.class)); } - - - - - } catch (ClassNotFoundException | NoSuchMethodException e) { e.printStackTrace(); } } public ItemStack setTagStringItem(ItemStack item, String key, String value) { + if(serverVersionGreaterEqualThan(ServerVersion.v1_20_R4)){ + ItemMeta meta = item.getItemMeta(); + NamespacedKey namespacedKey = new NamespacedKey(plugin, key); + PersistentDataContainer p = meta.getPersistentDataContainer(); + p.set(namespacedKey, PersistentDataType.STRING,value); + item.setItemMeta(meta); + return item; + } + try { Object newItem = version.getMethodRef("asNMSCopy").invoke(null,item); //ItemStackNMS Object compound = getNBTCompound(newItem); @@ -158,6 +167,16 @@ public class NMSManager { } public String getTagStringItem(ItemStack item,String key) { + if(serverVersionGreaterEqualThan(ServerVersion.v1_20_R4)){ + ItemMeta meta = item.getItemMeta(); + NamespacedKey namespacedKey = new NamespacedKey(plugin, key); + PersistentDataContainer p = meta.getPersistentDataContainer(); + if(p.has(namespacedKey)){ + return p.get(namespacedKey,PersistentDataType.STRING); + } + return null; + } + try { Object newItem = version.getMethodRef("asNMSCopy").invoke(null,item); //ItemStackNMS Object compound = getNBTCompound(newItem); @@ -171,6 +190,18 @@ public class NMSManager { } public ItemStack removeTagItem(ItemStack item, String key) { + if(serverVersionGreaterEqualThan(ServerVersion.v1_20_R4)){ + ItemMeta meta = item.getItemMeta(); + NamespacedKey namespacedKey = new NamespacedKey(plugin, key); + + PersistentDataContainer p = meta.getPersistentDataContainer(); + if(p.has(namespacedKey)){ + p.remove(namespacedKey); + } + item.setItemMeta(meta); + return item; + } + try { Object newItem = version.getMethodRef("asNMSCopy").invoke(null,item); //ItemStackNMS Object compound = getNBTCompound(newItem); diff --git a/src/main/resources/inventory.yml b/src/main/resources/inventory.yml index 3f81510..b120e92 100644 --- a/src/main/resources/inventory.yml +++ b/src/main/resources/inventory.yml @@ -50,11 +50,9 @@ inventories: item: id: "RED_STAINED_GLASS_PANE" name: "&cGo Back" - nbt: - - "playerkits_buy|no" + type: buy_no 16: item: id: "GREEN_STAINED_GLASS_PANE" name: "&aBuy" - nbt: - - "playerkits_buy|yes" + type: buy_yes diff --git a/src/main/resources/messages.yml b/src/main/resources/messages.yml index 233f79d..2b2fc2e 100644 --- a/src/main/resources/messages.yml +++ b/src/main/resources/messages.yml @@ -7,7 +7,7 @@ commandGiveError: "&cYou need to use: &7/kit give " commandGiveError2: "&cThere was an error giving the kit: &7%error%" commandGiveCorrect: "&aKit &7%kit% &agiven to &e%player%&a!" commandClaimError: "&cYou need to use: &7/kit claim " -commandCreateError: "&cYou need to use: &7/kit create (optional)original" +commandCreateError: "&cYou need to use: &7/kit create (optional)original/configurable" commandDeleteError: "&cYou need to use: &7/kit delete " commandResetError: "&cYou need to use: &7/kit reset " commandEditError: "&cYou need to use: &7/kit edit " diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index efe622b..28de669 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ main: pk.ajneb97.PlayerKits2 -version: 1.10.1 +version: 1.11.1 name: PlayerKits2 api-version: 1.13 softdepend: [Vault,PlaceholderAPI]