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]