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]