diff --git a/pom.xml b/pom.xml
index e565b81..a156236 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,8 +9,8 @@
1.0-SNAPSHOT
- 8
- 8
+ 17
+ 17
UTF-8
@@ -31,9 +31,19 @@
minecraft-repo
https://libraries.minecraft.net/
+
+ papermc
+ https://repo.papermc.io/repository/maven-public/
+
+
+ io.papermc.paper
+ paper-api
+ 1.20.4-R0.1-SNAPSHOT
+ provided
+
org.spigotmc
spigot-api
@@ -74,6 +84,7 @@
1.8
1.8
+ 8
diff --git a/src/main/java/pk/ajneb97/configs/PlayersConfigManager.java b/src/main/java/pk/ajneb97/configs/PlayersConfigManager.java
index 924b6b7..fc67ace 100644
--- a/src/main/java/pk/ajneb97/configs/PlayersConfigManager.java
+++ b/src/main/java/pk/ajneb97/configs/PlayersConfigManager.java
@@ -1,6 +1,5 @@
package pk.ajneb97.configs;
-import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import pk.ajneb97.PlayerKits2;
import pk.ajneb97.model.PlayerData;
diff --git a/src/main/java/pk/ajneb97/managers/DependencyManager.java b/src/main/java/pk/ajneb97/managers/DependencyManager.java
index 1b0a1cd..e11a95b 100644
--- a/src/main/java/pk/ajneb97/managers/DependencyManager.java
+++ b/src/main/java/pk/ajneb97/managers/DependencyManager.java
@@ -11,6 +11,7 @@ public class DependencyManager {
private boolean isPlaceholderAPI;
private Economy vaultEconomy;
+ private boolean isPaper;
public DependencyManager(PlayerKits2 plugin){
this.plugin = plugin;
@@ -24,6 +25,12 @@ public class DependencyManager {
vaultEconomy = rsp.getProvider();
}
}
+ try{
+ Class.forName("com.destroystokyo.paper.ParticleBuilder");
+ isPaper = true;
+ }catch(Exception e){
+
+ }
}
public boolean isPlaceholderAPI() {
@@ -33,4 +40,8 @@ public class DependencyManager {
public Economy getVaultEconomy() {
return vaultEconomy;
}
+
+ public boolean isPaper() {
+ return isPaper;
+ }
}
diff --git a/src/main/java/pk/ajneb97/managers/KitItemManager.java b/src/main/java/pk/ajneb97/managers/KitItemManager.java
index 23402fa..3f84c57 100644
--- a/src/main/java/pk/ajneb97/managers/KitItemManager.java
+++ b/src/main/java/pk/ajneb97/managers/KitItemManager.java
@@ -1,6 +1,9 @@
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;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
@@ -82,6 +85,23 @@ public class KitItemManager {
kitItem.setBookEnchants(enchantsList);
}
}
+
+ if(plugin.getDependencyManager().isPaper()){
+ List canDestroy = new ArrayList<>();
+ for(Namespaced n : meta.getDestroyableKeys()){
+ canDestroy.add(n.getNamespace()+":"+n.getKey());
+ }
+ if(!canDestroy.isEmpty()){
+ kitItem.setCanDestroy(canDestroy);
+ }
+ List canPlace = new ArrayList<>();
+ for(Namespaced n : meta.getPlaceableKeys()){
+ canPlace.add(n.getNamespace()+":"+n.getKey());
+ }
+ if(!canPlace.isEmpty()){
+ kitItem.setCanPlace(canPlace);
+ }
+ }
}
List nbtList = ItemUtils.getNBT(plugin,item);
@@ -147,6 +167,28 @@ public class KitItemManager {
meta.addItemFlags(ItemFlag.valueOf(flags.get(i)));
}
}
+
+ if(plugin.getDependencyManager().isPaper()){
+ List canDestroy = kitItem.getCanDestroy();
+ if(canDestroy != null && !canDestroy.isEmpty()){
+ Collection destroyableKeys = new ArrayList<>();
+ for(String line : canDestroy){
+ String[] sep = line.split(":");
+ destroyableKeys.add(new NamespacedKey(sep[0],sep[1]));
+ }
+ meta.setDestroyableKeys(destroyableKeys);
+ }
+ List canPlace = kitItem.getCanPlace();
+ if(canPlace != null && !canPlace.isEmpty()){
+ Collection placeableKeys = new ArrayList<>();
+ for(String line : canPlace){
+ String[] sep = line.split(":");
+ placeableKeys.add(new NamespacedKey(sep[0],sep[1]));
+ }
+ meta.setPlaceableKeys(placeableKeys);
+ }
+ }
+
item.setItemMeta(meta);
//OTHER META
@@ -229,6 +271,12 @@ public class KitItemManager {
if(item.getBookEnchants() != null && !item.getBookEnchants().isEmpty()) {
config.set(path+".book_enchants", item.getBookEnchants());
}
+ if(item.getCanPlace() != null && !item.getCanPlace().isEmpty()) {
+ config.set(path+".can_place", item.getCanPlace());
+ }
+ if(item.getCanDestroy() != null && !item.getCanDestroy().isEmpty()) {
+ config.set(path+".can_destroy", item.getCanDestroy());
+ }
KitItemSkullData skullData = item.getSkullData();
if(skullData != null) {
@@ -304,6 +352,8 @@ public class KitItemManager {
List bookEnchants = config.contains(path+".book_enchants") ? config.getStringList(path+".book_enchants") : null;
List nbtList = config.contains(path+".nbt") ? config.getStringList(path+".nbt") : null;
List attributes = config.contains(path+".attributes") ? config.getStringList(path+".attributes") : null;
+ List canPlace = config.contains(path+".can_place") ? config.getStringList(path+".can_place") : null;
+ List canDestroy = config.contains(path+".can_destroy") ? config.getStringList(path+".can_destroy") : null;
boolean offhand = config.contains(path+".offhand") ? config.getBoolean(path+".offhand") : false;
int previewSlot = config.contains(path+".preview_slot") ? config.getInt(path+".preview_slot") : -1;
@@ -416,6 +466,8 @@ public class KitItemManager {
kitItem.setBookEnchants(bookEnchants);
kitItem.setNbt(nbtList);
kitItem.setAttributes(attributes);
+ kitItem.setCanPlace(canPlace);
+ kitItem.setCanDestroy(canDestroy);
kitItem.setSkullData(skullData);
kitItem.setPotionData(potionData);
kitItem.setFireworkData(fireworkData);
diff --git a/src/main/java/pk/ajneb97/model/item/KitItem.java b/src/main/java/pk/ajneb97/model/item/KitItem.java
index 862c170..d24eb4c 100644
--- a/src/main/java/pk/ajneb97/model/item/KitItem.java
+++ b/src/main/java/pk/ajneb97/model/item/KitItem.java
@@ -20,6 +20,10 @@ public class KitItem{
//;;;;
private List attributes;
+ //For Paper only
+ private List canDestroy;
+ private List canPlace;
+
private KitItemSkullData skullData;
private KitItemPotionData potionData;
private KitItemFireworkData fireworkData;
@@ -151,6 +155,22 @@ public class KitItem{
this.attributes = attributes;
}
+ public List getCanDestroy() {
+ return canDestroy;
+ }
+
+ public void setCanDestroy(List canDestroy) {
+ this.canDestroy = canDestroy;
+ }
+
+ public List getCanPlace() {
+ return canPlace;
+ }
+
+ public void setCanPlace(List canPlace) {
+ this.canPlace = canPlace;
+ }
+
public KitItemFireworkData getFireworkData() {
return fireworkData;
}
@@ -224,6 +244,8 @@ public class KitItem{
kitItem.setColor(color);
kitItem.setNbt(nbt != null ? new ArrayList<>(nbt) : null);
kitItem.setAttributes(attributes != null ? new ArrayList<>(attributes) : null);
+ kitItem.setCanDestroy(canDestroy != null ? new ArrayList<>(canDestroy) : null);
+ kitItem.setCanDestroy(canPlace != null ? new ArrayList<>(canPlace) : null);
kitItem.setSkullData(skullData != null ? skullData.clone() : null);
kitItem.setPotionData(potionData != null ? potionData.clone() : null);
diff --git a/src/main/java/pk/ajneb97/utils/ItemUtils.java b/src/main/java/pk/ajneb97/utils/ItemUtils.java
index 6479c56..77d6981 100644
--- a/src/main/java/pk/ajneb97/utils/ItemUtils.java
+++ b/src/main/java/pk/ajneb97/utils/ItemUtils.java
@@ -34,7 +34,6 @@ import org.bukkit.profile.PlayerProfile;
import org.bukkit.profile.PlayerTextures;
import pk.ajneb97.PlayerKits2;
import pk.ajneb97.model.item.*;
-import sun.misc.BASE64Decoder;
public class ItemUtils {
diff --git a/src/main/java/pk/ajneb97/versions/NMSManager.java b/src/main/java/pk/ajneb97/versions/NMSManager.java
index 7b5f0c9..f1d8030 100644
--- a/src/main/java/pk/ajneb97/versions/NMSManager.java
+++ b/src/main/java/pk/ajneb97/versions/NMSManager.java
@@ -194,11 +194,11 @@ public class NMSManager {
"ench", "HideFlags", "display", "SkullOwner", "AttributeModifiers", "Enchantments",
"Damage", "CustomModelData", "Potion", "StoredEnchantments", "CustomPotionColor",
"CustomPotionEffects", "Fireworks", "Explosion", "pages", "title", "author", "resolved",
- "generation", "Trim", "custom_potion_effects"
+ "generation", "Trim", "custom_potion_effects", "CanPlaceOn", "CanDestroy"
));
for(String t : tags) {
if(!notTags.contains(t)) {
- if(t.equals("BlockEntityTag") && !item.getType().name().contains("SHULKER")){
+ if(t.equals("BlockEntityTag") && !item.getType().name().contains("SHULKER") && !item.getType().name().contains("CHEST")){
continue;
}
if((boolean)version.getMethodRef("hasKeyOfType").invoke(compound,t,1)) {
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 3f4f461..877894f 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,5 +1,5 @@
main: pk.ajneb97.PlayerKits2
-version: 1.9.1
+version: 1.9.2
name: PlayerKits2
api-version: 1.13
softdepend: [Vault,PlaceholderAPI]