From 3d0e54f9f98096053110b671936dc698e2b63267 Mon Sep 17 00:00:00 2001 From: Tim Brust Date: Mon, 15 Jul 2024 23:45:35 +0200 Subject: [PATCH] feat: adds method to read other plugins NBT data (support for MineableSpawners added) --- .../silkspawners/compat/api/NMSProvider.java | 4 ++ .../java/de/dustplanet/util/SilkUtil.java | 46 +++++++++++-------- .../compat/v1_11_R1/NMSHandler.java | 16 +++++++ .../compat/v1_12_R1/NMSHandler.java | 16 +++++++ .../compat/v1_13_R2/NMSHandler.java | 18 +++++++- .../compat/v1_14_R1/NMSHandler.java | 20 +++++++- .../compat/v1_15_R1/NMSHandler.java | 20 +++++++- .../compat/v1_16_R1/NMSHandler.java | 20 +++++++- .../compat/v1_16_R2/NMSHandler.java | 20 +++++++- .../compat/v1_16_R3/NMSHandler.java | 20 +++++++- .../compat/v1_17_R1/NMSHandler.java | 20 +++++++- .../compat/v1_18_R1/NMSHandler.java | 20 +++++++- .../compat/v1_18_R2/NMSHandler.java | 20 +++++++- .../compat/v1_19_R1/NMSHandler.java | 20 +++++++- .../compat/v1_19_R2/NMSHandler.java | 20 +++++++- .../compat/v1_19_R3/NMSHandler.java | 20 +++++++- .../compat/v1_20_R1/NMSHandler.java | 16 +++++++ .../compat/v1_20_R2/NMSHandler.java | 16 +++++++ .../compat/v1_20_R3/NMSHandler.java | 16 +++++++ .../compat/v1_20_R4/NMSHandler.java | 17 +++++++ .../compat/v1_21_R1/NMSHandler.java | 17 +++++++ .../compat/v1_8_R3/NMSHandler.java | 16 +++++++ 22 files changed, 375 insertions(+), 43 deletions(-) diff --git a/modules/API/src/main/java/de/dustplanet/silkspawners/compat/api/NMSProvider.java b/modules/API/src/main/java/de/dustplanet/silkspawners/compat/api/NMSProvider.java index 5c67d87c..8ab57e65 100644 --- a/modules/API/src/main/java/de/dustplanet/silkspawners/compat/api/NMSProvider.java +++ b/modules/API/src/main/java/de/dustplanet/silkspawners/compat/api/NMSProvider.java @@ -45,6 +45,10 @@ default SortedMap legacyRawEntityMap() { String getVanillaNBTEntityID(ItemStack item); + default String getOtherPluginsNBTEntityID(@SuppressWarnings("unused") final ItemStack item) { + return null; + } + Block getSpawnerFacing(Player player, int distance); default Collection getOnlinePlayers() { diff --git a/modules/SilkSpawners/src/main/java/de/dustplanet/util/SilkUtil.java b/modules/SilkSpawners/src/main/java/de/dustplanet/util/SilkUtil.java index d816ea15..69a23574 100644 --- a/modules/SilkSpawners/src/main/java/de/dustplanet/util/SilkUtil.java +++ b/modules/SilkSpawners/src/main/java/de/dustplanet/util/SilkUtil.java @@ -170,14 +170,15 @@ private boolean setupNMSProvider() { // Rare cases might trigger API usage before SilkSpawners if (version == null) { final String packageName = Bukkit.getServer().getClass().getPackage().getName(); - String nmsVersion = packageName.substring(packageName.lastIndexOf('.') + 1); + final String nmsVersion = packageName.substring(packageName.lastIndexOf('.') + 1); if (nmsVersion.equals("craftbukkit")) { try { - String minecraftVersion = (String) Server.class.getDeclaredMethod("getMinecraftVersion").invoke(Bukkit.getServer()); - Semver semver = new Semver(minecraftVersion); + final String minecraftVersion = (String) Server.class.getDeclaredMethod("getMinecraftVersion") + .invoke(Bukkit.getServer()); + final Semver semver = new Semver(minecraftVersion); if (semver.isGreaterThanOrEqualTo("1.20.5")) { @SuppressWarnings("deprecation") - int protocolVersion = (Integer) UnsafeValues.class.getDeclaredMethod("getProtocolVersion") + final int protocolVersion = (Integer) UnsafeValues.class.getDeclaredMethod("getProtocolVersion") .invoke(Bukkit.getUnsafe()); version = SilkSpawners.PROTOCOL_VERSION_PACKAGE_MAP.get(protocolVersion); } @@ -344,7 +345,7 @@ public boolean isVanillaBossBar() { * * @deprecated Use {@link SilkUtil#newEggItem(String, int, String)} instead. * @param entityID which mob should be spawned - * @param amount the amount of spawn eggs + * @param amount the amount of spawn eggs * @return the ItemStack */ @Deprecated @@ -355,8 +356,8 @@ public ItemStack newEggItem(final String entityID, final int amount) { /** * Returns a new ItemStack of a spawn egg with the specified amount and mob. * - * @param entityID which mob should be spawned - * @param amount the amount of spawn eggs + * @param entityID which mob should be spawned + * @param amount the amount of spawn eggs * @param displayName the display name of the egg in case of unknown entities * @return the ItemStack */ @@ -368,10 +369,10 @@ public ItemStack newEggItem(final String entityID, final int amount, final Strin /** * This method will make a new MobSpawner with a custom entityID, name and amount. * - * @param entityID the mob + * @param entityID the mob * @param customName if the MobSpawner should be named different - * @param amount the wanted amount - * @param forceLore whether the lore tag should be forces + * @param amount the wanted amount + * @param forceLore whether the lore tag should be forces * @return the ItemStack with the configured options */ public ItemStack newSpawnerItem(final String entityID, final String customName, final int amount, final boolean forceLore) { @@ -458,6 +459,11 @@ public String getStoredSpawnerItemEntityID(final ItemStack item) { if (StringUtils.isNotBlank(entityID)) { return entityID.replace("minecraft:", ""); } + entityID = nmsProvider.getOtherPluginsNBTEntityID(item); + plugin.getLogger().log(Level.FINE, "EntityID from item stack (other plugin tags) is {0}", entityID); + if (StringUtils.isNotBlank(entityID)) { + return entityID.replace("minecraft:", ""); + } } if (item.hasItemMeta()) { final String metaEntityID = searchItemMeta(item.getItemMeta()); @@ -533,7 +539,7 @@ public String getSpawnerEntityID(final Block block) { /** * Set the specified MonterSpawner to another entity ID. * - * @param block MonsterSpawner + * @param block MonsterSpawner * @param entity the wanted entity */ public void setSpawnerEntityID(final Block block, final String entity) { @@ -567,9 +573,9 @@ public void setSpawnerEntityID(final Block block, final String entity) { /** * Set a spawner (if allowed) to a new mob. * - * @param block the MonsterSpawner - * @param entityID the new entity ID - * @param player the player + * @param block the MonsterSpawner + * @param entityID the new entity ID + * @param player the player * @param messageDenied the message which is shown, when the player can't build here see {@link #canBuildHere(Player, Location)} * @return whether the operation was successful or not */ @@ -587,8 +593,8 @@ public boolean setSpawnerType(final Block block, final String entityID, final Pl /** * Sets a spawner item or egg to a new ID. * - * @param item ItemStack (Egg or Spawner) - * @param entityID wanted entity ID + * @param item ItemStack (Egg or Spawner) + * @param entityID wanted entity ID * @param customName if a custom name should be used (null for none) * @return the updated ItemStack */ @@ -734,7 +740,7 @@ public List scanEntityMap() { /** * Notify a player about the spawner. * - * @param player the player + * @param player the player * @param spawnerName the creature name */ @SuppressWarnings("deprecation") @@ -938,7 +944,7 @@ private void getMimic() { /** * Checks if a player can build here (WorldGuard). * - * @param player the player + * @param player the player * @param location the location to check * @return the result, true or false */ @@ -980,9 +986,9 @@ public boolean isLegacySpawnEggs() { /** * Helper methods to check if a player has any of the aliases permissions for a given mobID. * - * @param permissible - the permissible to check the permission for + * @param permissible - the permissible to check the permission for * @param basePermission - the basis permission without the specific mob - * @param entityID - the internal mob ID (not display name) + * @param entityID - the internal mob ID (not display name) * @return the permission check result, true if the player has got the permission, false otherwise */ public boolean hasPermission(final Permissible permissible, final String basePermission, final String entityID) { diff --git a/modules/v1_11_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_11_R1/NMSHandler.java b/modules/v1_11_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_11_R1/NMSHandler.java index 3325fbb2..827f0c4f 100755 --- a/modules/v1_11_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_11_R1/NMSHandler.java +++ b/modules/v1_11_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_11_R1/NMSHandler.java @@ -300,6 +300,22 @@ public String getVanillaNBTEntityID(final ItemStack item) { } } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.server.v1_11_R1.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final NBTTagCompound tag = itemStack.getTag(); + + if (tag == null) { + return null; + } + if (tag.hasKey("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + /** * Return the spawner block the player is looking at, or null if isn't. * diff --git a/modules/v1_12_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_12_R1/NMSHandler.java b/modules/v1_12_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_12_R1/NMSHandler.java index 350cc0a3..6e29e69d 100755 --- a/modules/v1_12_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_12_R1/NMSHandler.java +++ b/modules/v1_12_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_12_R1/NMSHandler.java @@ -304,6 +304,22 @@ public String getVanillaNBTEntityID(final ItemStack item) { } } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.server.v1_12_R1.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final NBTTagCompound tag = itemStack.getTag(); + + if (tag == null) { + return null; + } + if (tag.hasKey("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + /** * Return the spawner block the player is looking at, or null if isn't. * diff --git a/modules/v1_13_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_13_R2/NMSHandler.java b/modules/v1_13_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_13_R2/NMSHandler.java index 5192f534..be68e4e3 100644 --- a/modules/v1_13_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_13_R2/NMSHandler.java +++ b/modules/v1_13_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_13_R2/NMSHandler.java @@ -274,10 +274,26 @@ public String getVanillaNBTEntityID(final ItemStack item) { } } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.server.v1_13_R2.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final NBTTagCompound tag = itemStack.getTag(); + + if (tag == null) { + return null; + } + if (tag.hasKey("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + /** * Return the spawner block the player is looking at, or null if isn't. * - * @param player the player + * @param player the player * @param distance the reach distance * @return the found block or null */ diff --git a/modules/v1_14_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_14_R1/NMSHandler.java b/modules/v1_14_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_14_R1/NMSHandler.java index 1e02f626..af32e4f2 100644 --- a/modules/v1_14_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_14_R1/NMSHandler.java +++ b/modules/v1_14_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_14_R1/NMSHandler.java @@ -124,7 +124,7 @@ public List rawEntityMap() { final List entities = new ArrayList<>(); try { final IRegistry> entityTypeRegistry = IRegistry.ENTITY_TYPE; - for (EntityTypes next : entityTypeRegistry) { + for (final EntityTypes next : entityTypeRegistry) { entities.add(EntityTypes.getName(next).getKey()); } } catch (SecurityException | IllegalArgumentException e) { @@ -271,10 +271,26 @@ public String getVanillaNBTEntityID(final ItemStack item) { } } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.server.v1_14_R1.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final NBTTagCompound tag = itemStack.getTag(); + + if (tag == null) { + return null; + } + if (tag.hasKey("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + /** * Return the spawner block the player is looking at, or null if isn't. * - * @param player the player + * @param player the player * @param distance the reach distance * @return the found block or null */ diff --git a/modules/v1_15_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_15_R1/NMSHandler.java b/modules/v1_15_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_15_R1/NMSHandler.java index 3e84cd52..04fc271d 100644 --- a/modules/v1_15_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_15_R1/NMSHandler.java +++ b/modules/v1_15_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_15_R1/NMSHandler.java @@ -139,7 +139,7 @@ public List rawEntityMap() { final List entities = new ArrayList<>(); try { final IRegistry> entityTypeRegistry = IRegistry.ENTITY_TYPE; - for (EntityTypes next : entityTypeRegistry) { + for (final EntityTypes next : entityTypeRegistry) { entities.add(EntityTypes.getName(next).getKey()); } } catch (SecurityException | IllegalArgumentException e) { @@ -287,10 +287,26 @@ public String getVanillaNBTEntityID(final ItemStack item) { } } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.server.v1_15_R1.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final NBTTagCompound tag = itemStack.getTag(); + + if (tag == null) { + return null; + } + if (tag.hasKey("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + /** * Return the spawner block the player is looking at, or null if isn't. * - * @param player the player + * @param player the player * @param distance the reach distance * @return the found block or null */ diff --git a/modules/v1_16_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_16_R1/NMSHandler.java b/modules/v1_16_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_16_R1/NMSHandler.java index ec0b2f13..00489fe1 100644 --- a/modules/v1_16_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_16_R1/NMSHandler.java +++ b/modules/v1_16_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_16_R1/NMSHandler.java @@ -138,7 +138,7 @@ public List rawEntityMap() { final List entities = new ArrayList<>(); try { final IRegistry> entityTypeRegistry = IRegistry.ENTITY_TYPE; - for (EntityTypes next : entityTypeRegistry) { + for (final EntityTypes next : entityTypeRegistry) { entities.add(EntityTypes.getName(next).getKey()); } } catch (SecurityException | IllegalArgumentException e) { @@ -286,10 +286,26 @@ public String getVanillaNBTEntityID(final ItemStack item) { } } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.server.v1_16_R1.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final NBTTagCompound tag = itemStack.getTag(); + + if (tag == null) { + return null; + } + if (tag.hasKey("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + /** * Return the spawner block the player is looking at, or null if isn't. * - * @param player the player + * @param player the player * @param distance the reach distance * @return the found block or null */ diff --git a/modules/v1_16_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_16_R2/NMSHandler.java b/modules/v1_16_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_16_R2/NMSHandler.java index 21c34f1a..94af526c 100644 --- a/modules/v1_16_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_16_R2/NMSHandler.java +++ b/modules/v1_16_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_16_R2/NMSHandler.java @@ -138,7 +138,7 @@ public List rawEntityMap() { final List entities = new ArrayList<>(); try { final IRegistry> entityTypeRegistry = IRegistry.ENTITY_TYPE; - for (EntityTypes next : entityTypeRegistry) { + for (final EntityTypes next : entityTypeRegistry) { entities.add(EntityTypes.getName(next).getKey()); } } catch (SecurityException | IllegalArgumentException e) { @@ -286,10 +286,26 @@ public String getVanillaNBTEntityID(final ItemStack item) { } } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.server.v1_16_R2.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final NBTTagCompound tag = itemStack.getTag(); + + if (tag == null) { + return null; + } + if (tag.hasKey("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + /** * Return the spawner block the player is looking at, or null if isn't. * - * @param player the player + * @param player the player * @param distance the reach distance * @return the found block or null */ diff --git a/modules/v1_16_R3/src/main/java/de/dustplanet/silkspawners/compat/v1_16_R3/NMSHandler.java b/modules/v1_16_R3/src/main/java/de/dustplanet/silkspawners/compat/v1_16_R3/NMSHandler.java index e6e848bf..938ca789 100644 --- a/modules/v1_16_R3/src/main/java/de/dustplanet/silkspawners/compat/v1_16_R3/NMSHandler.java +++ b/modules/v1_16_R3/src/main/java/de/dustplanet/silkspawners/compat/v1_16_R3/NMSHandler.java @@ -138,7 +138,7 @@ public List rawEntityMap() { final List entities = new ArrayList<>(); try { final IRegistry> entityTypeRegistry = IRegistry.ENTITY_TYPE; - for (EntityTypes next : entityTypeRegistry) { + for (final EntityTypes next : entityTypeRegistry) { entities.add(EntityTypes.getName(next).getKey()); } } catch (SecurityException | IllegalArgumentException e) { @@ -286,10 +286,26 @@ public String getVanillaNBTEntityID(final ItemStack item) { } } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.server.v1_16_R3.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final NBTTagCompound tag = itemStack.getTag(); + + if (tag == null) { + return null; + } + if (tag.hasKey("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + /** * Return the spawner block the player is looking at, or null if isn't. * - * @param player the player + * @param player the player * @param distance the reach distance * @return the found block or null */ diff --git a/modules/v1_17_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_17_R1/NMSHandler.java b/modules/v1_17_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_17_R1/NMSHandler.java index 60e8df7a..79c78127 100644 --- a/modules/v1_17_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_17_R1/NMSHandler.java +++ b/modules/v1_17_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_17_R1/NMSHandler.java @@ -141,7 +141,7 @@ public List rawEntityMap() { final List entities = new ArrayList<>(); try { final Registry> entityTypeRegistry = Registry.ENTITY_TYPE; - for (EntityType next : entityTypeRegistry) { + for (final EntityType next : entityTypeRegistry) { entities.add(EntityType.getKey(next).getPath()); } } catch (SecurityException | IllegalArgumentException e) { @@ -301,10 +301,26 @@ public String getVanillaNBTEntityID(final ItemStack item) { } } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.world.item.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final CompoundTag tag = itemStack.getTag(); + + if (tag == null) { + return null; + } + if (tag.contains("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + /** * Return the spawner block the player is looking at, or null if isn't. * - * @param player the player + * @param player the player * @param distance the reach distance * @return the found block or null */ diff --git a/modules/v1_18_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_18_R1/NMSHandler.java b/modules/v1_18_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_18_R1/NMSHandler.java index f7f2e204..266161e3 100644 --- a/modules/v1_18_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_18_R1/NMSHandler.java +++ b/modules/v1_18_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_18_R1/NMSHandler.java @@ -141,7 +141,7 @@ public List rawEntityMap() { final List entities = new ArrayList<>(); try { final Registry> entityTypeRegistry = Registry.ENTITY_TYPE; - for (EntityType next : entityTypeRegistry) { + for (final EntityType next : entityTypeRegistry) { entities.add(EntityType.getKey(next).getPath()); } } catch (SecurityException | IllegalArgumentException e) { @@ -309,10 +309,26 @@ public String getVanillaNBTEntityID(final ItemStack item) { } } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.world.item.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final CompoundTag tag = itemStack.getTag(); + + if (tag == null) { + return null; + } + if (tag.contains("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + /** * Return the spawner block the player is looking at, or null if isn't. * - * @param player the player + * @param player the player * @param distance the reach distance * @return the found block or null */ diff --git a/modules/v1_18_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_18_R2/NMSHandler.java b/modules/v1_18_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_18_R2/NMSHandler.java index bc6ab901..fc1fee67 100644 --- a/modules/v1_18_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_18_R2/NMSHandler.java +++ b/modules/v1_18_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_18_R2/NMSHandler.java @@ -141,7 +141,7 @@ public List rawEntityMap() { final List entities = new ArrayList<>(); try { final Registry> entityTypeRegistry = Registry.ENTITY_TYPE; - for (EntityType next : entityTypeRegistry) { + for (final EntityType next : entityTypeRegistry) { entities.add(EntityType.getKey(next).getPath()); } } catch (SecurityException | IllegalArgumentException e) { @@ -309,10 +309,26 @@ public String getVanillaNBTEntityID(final ItemStack item) { } } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.world.item.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final CompoundTag tag = itemStack.getTag(); + + if (tag == null) { + return null; + } + if (tag.contains("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + /** * Return the spawner block the player is looking at, or null if isn't. * - * @param player the player + * @param player the player * @param distance the reach distance * @return the found block or null */ diff --git a/modules/v1_19_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_19_R1/NMSHandler.java b/modules/v1_19_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_19_R1/NMSHandler.java index b1b74742..b0e478d1 100644 --- a/modules/v1_19_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_19_R1/NMSHandler.java +++ b/modules/v1_19_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_19_R1/NMSHandler.java @@ -141,7 +141,7 @@ public List rawEntityMap() { final List entities = new ArrayList<>(); try { final Registry> entityTypeRegistry = Registry.ENTITY_TYPE; - for (EntityType next : entityTypeRegistry) { + for (final EntityType next : entityTypeRegistry) { entities.add(EntityType.getKey(next).getPath()); } } catch (SecurityException | IllegalArgumentException e) { @@ -309,10 +309,26 @@ public String getVanillaNBTEntityID(final ItemStack item) { } } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.world.item.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final CompoundTag tag = itemStack.getTag(); + + if (tag == null) { + return null; + } + if (tag.contains("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + /** * Return the spawner block the player is looking at, or null if isn't. * - * @param player the player + * @param player the player * @param distance the reach distance * @return the found block or null */ diff --git a/modules/v1_19_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_19_R2/NMSHandler.java b/modules/v1_19_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_19_R2/NMSHandler.java index 3a031d47..fbd075b0 100644 --- a/modules/v1_19_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_19_R2/NMSHandler.java +++ b/modules/v1_19_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_19_R2/NMSHandler.java @@ -142,7 +142,7 @@ public List rawEntityMap() { final List entities = new ArrayList<>(); try { final Registry> entityTypeRegistry = BuiltInRegistries.ENTITY_TYPE; - for (EntityType next : entityTypeRegistry) { + for (final EntityType next : entityTypeRegistry) { entities.add(EntityType.getKey(next).getPath()); } } catch (SecurityException | IllegalArgumentException e) { @@ -313,10 +313,26 @@ public String getVanillaNBTEntityID(final ItemStack item) { } } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.world.item.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final CompoundTag tag = itemStack.getTag(); + + if (tag == null) { + return null; + } + if (tag.contains("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + /** * Return the spawner block the player is looking at, or null if isn't. * - * @param player the player + * @param player the player * @param distance the reach distance * @return the found block or null */ diff --git a/modules/v1_19_R3/src/main/java/de/dustplanet/silkspawners/compat/v1_19_R3/NMSHandler.java b/modules/v1_19_R3/src/main/java/de/dustplanet/silkspawners/compat/v1_19_R3/NMSHandler.java index 7afbb9bb..9f1162a4 100644 --- a/modules/v1_19_R3/src/main/java/de/dustplanet/silkspawners/compat/v1_19_R3/NMSHandler.java +++ b/modules/v1_19_R3/src/main/java/de/dustplanet/silkspawners/compat/v1_19_R3/NMSHandler.java @@ -142,7 +142,7 @@ public List rawEntityMap() { final List entities = new ArrayList<>(); try { final Registry> entityTypeRegistry = BuiltInRegistries.ENTITY_TYPE; - for (EntityType next : entityTypeRegistry) { + for (final EntityType next : entityTypeRegistry) { entities.add(EntityType.getKey(next).getPath()); } } catch (SecurityException | IllegalArgumentException e) { @@ -313,10 +313,26 @@ public String getVanillaNBTEntityID(final ItemStack item) { } } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.world.item.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final CompoundTag tag = itemStack.getTag(); + + if (tag == null) { + return null; + } + if (tag.contains("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + /** * Return the spawner block the player is looking at, or null if isn't. * - * @param player the player + * @param player the player * @param distance the reach distance * @return the found block or null */ diff --git a/modules/v1_20_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_20_R1/NMSHandler.java b/modules/v1_20_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_20_R1/NMSHandler.java index 91510240..70eb5ca4 100644 --- a/modules/v1_20_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_20_R1/NMSHandler.java +++ b/modules/v1_20_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_20_R1/NMSHandler.java @@ -312,6 +312,22 @@ public String getVanillaNBTEntityID(final ItemStack item) { } } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.world.item.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final CompoundTag tag = itemStack.getTag(); + + if (tag == null) { + return null; + } + if (tag.contains("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + /** * Return the spawner block the player is looking at, or null if isn't. * diff --git a/modules/v1_20_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_20_R2/NMSHandler.java b/modules/v1_20_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_20_R2/NMSHandler.java index e8891a95..41f4b87e 100644 --- a/modules/v1_20_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_20_R2/NMSHandler.java +++ b/modules/v1_20_R2/src/main/java/de/dustplanet/silkspawners/compat/v1_20_R2/NMSHandler.java @@ -313,6 +313,22 @@ public String getVanillaNBTEntityID(final ItemStack item) { } } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.world.item.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final CompoundTag tag = itemStack.getTag(); + + if (tag == null) { + return null; + } + if (tag.contains("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + /** * Return the spawner block the player is looking at, or null if isn't. * diff --git a/modules/v1_20_R3/src/main/java/de/dustplanet/silkspawners/compat/v1_20_R3/NMSHandler.java b/modules/v1_20_R3/src/main/java/de/dustplanet/silkspawners/compat/v1_20_R3/NMSHandler.java index 6898d002..12c3d2c0 100644 --- a/modules/v1_20_R3/src/main/java/de/dustplanet/silkspawners/compat/v1_20_R3/NMSHandler.java +++ b/modules/v1_20_R3/src/main/java/de/dustplanet/silkspawners/compat/v1_20_R3/NMSHandler.java @@ -313,6 +313,22 @@ public String getVanillaNBTEntityID(final ItemStack item) { } } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.world.item.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final CompoundTag tag = itemStack.getTag(); + + if (tag == null) { + return null; + } + if (tag.contains("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + /** * Return the spawner block the player is looking at, or null if isn't. * diff --git a/modules/v1_20_R4/src/main/java/de/dustplanet/silkspawners/compat/v1_20_R4/NMSHandler.java b/modules/v1_20_R4/src/main/java/de/dustplanet/silkspawners/compat/v1_20_R4/NMSHandler.java index f74fd002..9289040a 100644 --- a/modules/v1_20_R4/src/main/java/de/dustplanet/silkspawners/compat/v1_20_R4/NMSHandler.java +++ b/modules/v1_20_R4/src/main/java/de/dustplanet/silkspawners/compat/v1_20_R4/NMSHandler.java @@ -393,6 +393,23 @@ public String getVanillaEggNBTEntityID(final ItemStack item) { return null; } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.world.item.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final CustomData blockEntityData = itemStack.getOrDefault(DataComponents.ENTITY_DATA, CustomData.EMPTY); + final CompoundTag tag = blockEntityData.copyTag(); + + if (tag == null) { + return null; + } + if (tag.contains("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + @Override public void displayBossBar(final String title, final String colorName, final String styleName, final Player player, final Plugin plugin, final int period) { diff --git a/modules/v1_21_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_21_R1/NMSHandler.java b/modules/v1_21_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_21_R1/NMSHandler.java index b51c91ab..69a85c00 100644 --- a/modules/v1_21_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_21_R1/NMSHandler.java +++ b/modules/v1_21_R1/src/main/java/de/dustplanet/silkspawners/compat/v1_21_R1/NMSHandler.java @@ -315,6 +315,23 @@ public String getVanillaNBTEntityID(final ItemStack item) { } } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.world.item.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final CustomData blockEntityData = itemStack.getOrDefault(DataComponents.ENTITY_DATA, CustomData.EMPTY); + final CompoundTag tag = blockEntityData.copyTag(); + + if (tag == null) { + return null; + } + if (tag.contains("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + /** * Return the spawner block the player is looking at, or null if isn't. * diff --git a/modules/v1_8_R3/src/main/java/de/dustplanet/silkspawners/compat/v1_8_R3/NMSHandler.java b/modules/v1_8_R3/src/main/java/de/dustplanet/silkspawners/compat/v1_8_R3/NMSHandler.java index e69bfdcb..fd80edb8 100755 --- a/modules/v1_8_R3/src/main/java/de/dustplanet/silkspawners/compat/v1_8_R3/NMSHandler.java +++ b/modules/v1_8_R3/src/main/java/de/dustplanet/silkspawners/compat/v1_8_R3/NMSHandler.java @@ -225,6 +225,22 @@ public String getVanillaNBTEntityID(final ItemStack item) { return tag.getCompound("BlockEntityTag").getString("EntityId"); } + @Override + public String getOtherPluginsNBTEntityID(final ItemStack item) { + net.minecraft.server.v1_8_R3.ItemStack itemStack = null; + final CraftItemStack craftStack = CraftItemStack.asCraftCopy(item); + itemStack = CraftItemStack.asNMSCopy(craftStack); + final NBTTagCompound tag = itemStack.getTag(); + + if (tag == null) { + return null; + } + if (tag.hasKey("ms_mob")) { + return tag.getString("ms_mob"); + } + return null; + } + /** * Return the spawner block the player is looking at, or null if isn't. *