From 488490de181766d988ac82fd71cd01ba98c9c5f5 Mon Sep 17 00:00:00 2001 From: Christian Koop Date: Fri, 6 Sep 2024 10:48:43 +0200 Subject: [PATCH] feat: re-implement `ItemUtils#applyRandomEnchants` in NMS submodules With this the implementation is more stable between version and easier to maintain. --- .../craftaro/core/lootables/loot/Loot.java | 20 ++++++++---------- .../craftaro/core/nms/NmsImplementations.java | 3 +++ .../com/craftaro/core/nms/item/NmsItem.java | 7 +++++++ .../nms/v1_10_R1/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_10_R1/item/NmsItemImpl.java | 17 +++++++++++++++ .../nms/v1_11_R1/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_11_R1/item/NmsItemImpl.java | 17 +++++++++++++++ .../nms/v1_12_R1/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_12_R1/item/NmsItemImpl.java | 17 +++++++++++++++ .../nms/v1_13_R1/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_13_R1/item/NmsItemImpl.java | 17 +++++++++++++++ .../nms/v1_13_R2/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_13_R2/item/NmsItemImpl.java | 17 +++++++++++++++ .../nms/v1_14_R1/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_14_R1/item/NmsItemImpl.java | 17 +++++++++++++++ .../nms/v1_15_R1/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_15_R1/item/NmsItemImpl.java | 17 +++++++++++++++ .../nms/v1_16_R1/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_16_R1/item/NmsItemImpl.java | 17 +++++++++++++++ .../nms/v1_16_R2/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_16_R2/item/NmsItemImpl.java | 17 +++++++++++++++ .../nms/v1_16_R3/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_16_R3/item/NmsItemImpl.java | 17 +++++++++++++++ .../nms/v1_17_R1/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_17_R1/item/NmsItemImpl.java | 17 +++++++++++++++ .../nms/v1_18_R1/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_18_R1/item/NmsItemImpl.java | 17 +++++++++++++++ .../nms/v1_18_R2/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_18_R2/item/NmsItemImpl.java | 17 +++++++++++++++ .../nms/v1_19_0/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_19_0/item/NmsItemImpl.java | 18 ++++++++++++++++ .../nms/v1_19_R1/NmsImplementationsImpl.java | 10 +++++++++ .../core/nms/v1_19_R1/item/NmsItemImpl.java | 18 ++++++++++++++++ .../nms/v1_19_R2/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_19_R2/item/NmsItemImpl.java | 18 ++++++++++++++++ .../nms/v1_19_R3/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_19_R3/item/NmsItemImpl.java | 18 ++++++++++++++++ .../nms/v1_20_R1/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_20_R1/item/NmsItemImpl.java | 18 ++++++++++++++++ .../nms/v1_20_R2/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_20_R2/item/NmsItemImpl.java | 18 ++++++++++++++++ .../nms/v1_20_R3/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_20_R3/item/NmsItemImpl.java | 18 ++++++++++++++++ .../nms/v1_20_R4/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_20_R4/item/NmsItemImpl.java | 19 +++++++++++++++++ .../nms/v1_21_R1/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_21_R1/item/NmsItemImpl.java | 21 +++++++++++++++++++ .../nms/v1_8_R1/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_8_R1/item/NmsItemImpl.java | 17 +++++++++++++++ .../nms/v1_8_R2/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_8_R2/item/NmsItemImpl.java | 17 +++++++++++++++ .../nms/v1_8_R3/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_8_R3/item/NmsItemImpl.java | 17 +++++++++++++++ .../nms/v1_9_R1/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_9_R1/item/NmsItemImpl.java | 17 +++++++++++++++ .../nms/v1_9_R2/NmsImplementationsImpl.java | 9 ++++++++ .../core/nms/v1_9_R2/item/NmsItemImpl.java | 17 +++++++++++++++ 57 files changed, 735 insertions(+), 11 deletions(-) create mode 100644 NMS/NMS-API/src/main/java/com/craftaro/core/nms/item/NmsItem.java create mode 100644 NMS/NMS-v1_10_R1/src/main/java/com/craftaro/core/nms/v1_10_R1/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_11_R1/src/main/java/com/craftaro/core/nms/v1_11_R1/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_12_R1/src/main/java/com/craftaro/core/nms/v1_12_R1/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_13_R1/src/main/java/com/craftaro/core/nms/v1_13_R1/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_13_R2/src/main/java/com/craftaro/core/nms/v1_13_R2/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_14_R1/src/main/java/com/craftaro/core/nms/v1_14_R1/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_15_R1/src/main/java/com/craftaro/core/nms/v1_15_R1/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_16_R1/src/main/java/com/craftaro/core/nms/v1_16_R1/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_16_R2/src/main/java/com/craftaro/core/nms/v1_16_R2/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_16_R3/src/main/java/com/craftaro/core/nms/v1_16_R3/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_17_R1/src/main/java/com/craftaro/core/nms/v1_17_R1/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_18_R1/src/main/java/com/craftaro/core/nms/v1_18_R1/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_18_R2/src/main/java/com/craftaro/core/nms/v1_18_R2/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_19_0/src/main/java/com/craftaro/core/nms/v1_19_0/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_19_R1/src/main/java/com/craftaro/core/nms/v1_19_R1/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_19_R2/src/main/java/com/craftaro/core/nms/v1_19_R2/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_19_R3/src/main/java/com/craftaro/core/nms/v1_19_R3/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_20_R1/src/main/java/com/craftaro/core/nms/v1_20_R1/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_20_R2/src/main/java/com/craftaro/core/nms/v1_20_R2/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_20_R3/src/main/java/com/craftaro/core/nms/v1_20_R3/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_20_R4/src/main/java/com/craftaro/core/nms/v1_20_R4/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_21_R1/src/main/java/com/craftaro/core/nms/v1_21_R1/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_8_R1/src/main/java/com/craftaro/core/nms/v1_8_R1/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_8_R2/src/main/java/com/craftaro/core/nms/v1_8_R2/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_8_R3/src/main/java/com/craftaro/core/nms/v1_8_R3/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_9_R1/src/main/java/com/craftaro/core/nms/v1_9_R1/item/NmsItemImpl.java create mode 100644 NMS/NMS-v1_9_R2/src/main/java/com/craftaro/core/nms/v1_9_R2/item/NmsItemImpl.java diff --git a/Core/src/main/java/com/craftaro/core/lootables/loot/Loot.java b/Core/src/main/java/com/craftaro/core/lootables/loot/Loot.java index 86d81bd7..439e479e 100644 --- a/Core/src/main/java/com/craftaro/core/lootables/loot/Loot.java +++ b/Core/src/main/java/com/craftaro/core/lootables/loot/Loot.java @@ -1,6 +1,6 @@ package com.craftaro.core.lootables.loot; -import com.craftaro.core.utils.ItemUtils; +import com.craftaro.core.nms.Nms; import com.craftaro.core.utils.TextUtils; import com.cryptomorin.xseries.XMaterial; import com.google.gson.annotations.SerializedName; @@ -151,18 +151,17 @@ public class Loot { return null; } - // Create enchantment book if (item.getType() == Material.ENCHANTED_BOOK) { EnchantmentStorageMeta meta = (EnchantmentStorageMeta) item.getItemMeta(); for (Map.Entry entry : this.enchants.entrySet()) { - if (entry.getValue() == null) continue; + if (entry.getValue() == null) { + continue; + } - //TODO add random enchants -// if (entry.getKey().equalsIgnoreCase("RANDOM")) { -// item = ItemUtils.applyRandomEnchants(item, entry.getValue()); -// -// continue; -// } + if (entry.getKey().equalsIgnoreCase("RANDOM")) { + item = Nms.getImplementations().getItem().copyAndApplyRandomEnchantment(item, entry.getValue()); + continue; + } meta.addStoredEnchant(Enchantment.getByName(entry.getKey()), entry.getValue(), true); } @@ -177,8 +176,7 @@ public class Loot { } if (entry.getKey().equalsIgnoreCase("RANDOM")) { - item = ItemUtils.applyRandomEnchants(item, entry.getValue()); - + item = Nms.getImplementations().getItem().copyAndApplyRandomEnchantment(item, entry.getValue()); continue; } diff --git a/NMS/NMS-API/src/main/java/com/craftaro/core/nms/NmsImplementations.java b/NMS/NMS-API/src/main/java/com/craftaro/core/nms/NmsImplementations.java index a65d8249..151f7180 100644 --- a/NMS/NMS-API/src/main/java/com/craftaro/core/nms/NmsImplementations.java +++ b/NMS/NMS-API/src/main/java/com/craftaro/core/nms/NmsImplementations.java @@ -3,6 +3,7 @@ package com.craftaro.core.nms; import com.craftaro.core.nms.anvil.AnvilCore; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.world.NmsWorldBorder; import com.craftaro.core.nms.world.WorldCore; @@ -20,4 +21,6 @@ public interface NmsImplementations { @NotNull AnvilCore getAnvil(); @NotNull NBTCore getNbt(); + + @NotNull NmsItem getItem(); } diff --git a/NMS/NMS-API/src/main/java/com/craftaro/core/nms/item/NmsItem.java b/NMS/NMS-API/src/main/java/com/craftaro/core/nms/item/NmsItem.java new file mode 100644 index 00000000..424e197e --- /dev/null +++ b/NMS/NMS-API/src/main/java/com/craftaro/core/nms/item/NmsItem.java @@ -0,0 +1,7 @@ +package com.craftaro.core.nms.item; + +import org.bukkit.inventory.ItemStack; + +public interface NmsItem { + ItemStack copyAndApplyRandomEnchantment(ItemStack item, int level); +} diff --git a/NMS/NMS-v1_10_R1/src/main/java/com/craftaro/core/nms/v1_10_R1/NmsImplementationsImpl.java b/NMS/NMS-v1_10_R1/src/main/java/com/craftaro/core/nms/v1_10_R1/NmsImplementationsImpl.java index dbbe99aa..5546a219 100644 --- a/NMS/NMS-v1_10_R1/src/main/java/com/craftaro/core/nms/v1_10_R1/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_10_R1/src/main/java/com/craftaro/core/nms/v1_10_R1/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_10_R1; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_10_R1.anvil.AnvilCore; import com.craftaro.core.nms.v1_10_R1.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_10_R1.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_10_R1.item.NmsItemImpl; import com.craftaro.core.nms.v1_10_R1.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_10_R1.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_10_R1.world.WorldCoreImpl; @@ -22,6 +24,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -30,6 +33,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -61,4 +65,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_10_R1/src/main/java/com/craftaro/core/nms/v1_10_R1/item/NmsItemImpl.java b/NMS/NMS-v1_10_R1/src/main/java/com/craftaro/core/nms/v1_10_R1/item/NmsItemImpl.java new file mode 100644 index 00000000..fc8cd4b6 --- /dev/null +++ b/NMS/NMS-v1_10_R1/src/main/java/com/craftaro/core/nms/v1_10_R1/item/NmsItemImpl.java @@ -0,0 +1,17 @@ +package com.craftaro.core.nms.v1_10_R1.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.server.v1_10_R1.EnchantmentManager; +import net.minecraft.server.v1_10_R1.ItemStack; +import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftItemStack; + +import java.util.concurrent.ThreadLocalRandom; + +public class NmsItemImpl implements NmsItem { + @Override + public org.bukkit.inventory.ItemStack copyAndApplyRandomEnchantment(org.bukkit.inventory.ItemStack item, int level) { + ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentManager.a(ThreadLocalRandom.current(), nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_11_R1/src/main/java/com/craftaro/core/nms/v1_11_R1/NmsImplementationsImpl.java b/NMS/NMS-v1_11_R1/src/main/java/com/craftaro/core/nms/v1_11_R1/NmsImplementationsImpl.java index b346d587..603384b1 100644 --- a/NMS/NMS-v1_11_R1/src/main/java/com/craftaro/core/nms/v1_11_R1/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_11_R1/src/main/java/com/craftaro/core/nms/v1_11_R1/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_11_R1; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_11_R1.anvil.AnvilCore; import com.craftaro.core.nms.v1_11_R1.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_11_R1.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_11_R1.item.NmsItemImpl; import com.craftaro.core.nms.v1_11_R1.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_11_R1.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_11_R1.world.WorldCoreImpl; @@ -22,6 +24,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -30,6 +33,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -61,4 +65,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_11_R1/src/main/java/com/craftaro/core/nms/v1_11_R1/item/NmsItemImpl.java b/NMS/NMS-v1_11_R1/src/main/java/com/craftaro/core/nms/v1_11_R1/item/NmsItemImpl.java new file mode 100644 index 00000000..426be27e --- /dev/null +++ b/NMS/NMS-v1_11_R1/src/main/java/com/craftaro/core/nms/v1_11_R1/item/NmsItemImpl.java @@ -0,0 +1,17 @@ +package com.craftaro.core.nms.v1_11_R1.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.server.v1_11_R1.EnchantmentManager; +import net.minecraft.server.v1_11_R1.ItemStack; +import org.bukkit.craftbukkit.v1_11_R1.inventory.CraftItemStack; + +import java.util.concurrent.ThreadLocalRandom; + +public class NmsItemImpl implements NmsItem { + @Override + public org.bukkit.inventory.ItemStack copyAndApplyRandomEnchantment(org.bukkit.inventory.ItemStack item, int level) { + ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentManager.a(ThreadLocalRandom.current(), nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_12_R1/src/main/java/com/craftaro/core/nms/v1_12_R1/NmsImplementationsImpl.java b/NMS/NMS-v1_12_R1/src/main/java/com/craftaro/core/nms/v1_12_R1/NmsImplementationsImpl.java index ceb8eb94..d60a1007 100644 --- a/NMS/NMS-v1_12_R1/src/main/java/com/craftaro/core/nms/v1_12_R1/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_12_R1/src/main/java/com/craftaro/core/nms/v1_12_R1/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_12_R1; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_12_R1.anvil.AnvilCore; import com.craftaro.core.nms.v1_12_R1.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_12_R1.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_12_R1.item.NmsItemImpl; import com.craftaro.core.nms.v1_12_R1.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_12_R1.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_12_R1.world.WorldCoreImpl; @@ -22,6 +24,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -30,6 +33,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -61,4 +65,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_12_R1/src/main/java/com/craftaro/core/nms/v1_12_R1/item/NmsItemImpl.java b/NMS/NMS-v1_12_R1/src/main/java/com/craftaro/core/nms/v1_12_R1/item/NmsItemImpl.java new file mode 100644 index 00000000..aa28f608 --- /dev/null +++ b/NMS/NMS-v1_12_R1/src/main/java/com/craftaro/core/nms/v1_12_R1/item/NmsItemImpl.java @@ -0,0 +1,17 @@ +package com.craftaro.core.nms.v1_12_R1.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.server.v1_12_R1.EnchantmentManager; +import net.minecraft.server.v1_12_R1.ItemStack; +import org.bukkit.craftbukkit.v1_12_R1.inventory.CraftItemStack; + +import java.util.concurrent.ThreadLocalRandom; + +public class NmsItemImpl implements NmsItem { + @Override + public org.bukkit.inventory.ItemStack copyAndApplyRandomEnchantment(org.bukkit.inventory.ItemStack item, int level) { + ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentManager.a(ThreadLocalRandom.current(), nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_13_R1/src/main/java/com/craftaro/core/nms/v1_13_R1/NmsImplementationsImpl.java b/NMS/NMS-v1_13_R1/src/main/java/com/craftaro/core/nms/v1_13_R1/NmsImplementationsImpl.java index 52dda861..dc874d98 100644 --- a/NMS/NMS-v1_13_R1/src/main/java/com/craftaro/core/nms/v1_13_R1/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_13_R1/src/main/java/com/craftaro/core/nms/v1_13_R1/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_13_R1; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_13_R1.anvil.AnvilCore; import com.craftaro.core.nms.v1_13_R1.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_13_R1.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_13_R1.item.NmsItemImpl; import com.craftaro.core.nms.v1_13_R1.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_13_R1.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_13_R1.world.WorldCoreImpl; @@ -22,6 +24,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -30,6 +33,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -61,4 +65,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_13_R1/src/main/java/com/craftaro/core/nms/v1_13_R1/item/NmsItemImpl.java b/NMS/NMS-v1_13_R1/src/main/java/com/craftaro/core/nms/v1_13_R1/item/NmsItemImpl.java new file mode 100644 index 00000000..198442e4 --- /dev/null +++ b/NMS/NMS-v1_13_R1/src/main/java/com/craftaro/core/nms/v1_13_R1/item/NmsItemImpl.java @@ -0,0 +1,17 @@ +package com.craftaro.core.nms.v1_13_R1.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.server.v1_13_R1.EnchantmentManager; +import net.minecraft.server.v1_13_R1.ItemStack; +import org.bukkit.craftbukkit.v1_13_R1.inventory.CraftItemStack; + +import java.util.concurrent.ThreadLocalRandom; + +public class NmsItemImpl implements NmsItem { + @Override + public org.bukkit.inventory.ItemStack copyAndApplyRandomEnchantment(org.bukkit.inventory.ItemStack item, int level) { + ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentManager.a(ThreadLocalRandom.current(), nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_13_R2/src/main/java/com/craftaro/core/nms/v1_13_R2/NmsImplementationsImpl.java b/NMS/NMS-v1_13_R2/src/main/java/com/craftaro/core/nms/v1_13_R2/NmsImplementationsImpl.java index fff03931..7eadac7a 100644 --- a/NMS/NMS-v1_13_R2/src/main/java/com/craftaro/core/nms/v1_13_R2/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_13_R2/src/main/java/com/craftaro/core/nms/v1_13_R2/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_13_R2; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_13_R2.anvil.AnvilCore; import com.craftaro.core.nms.v1_13_R2.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_13_R2.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_13_R2.item.NmsItemImpl; import com.craftaro.core.nms.v1_13_R2.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_13_R2.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_13_R2.world.WorldCoreImpl; @@ -22,6 +24,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -30,6 +33,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -61,4 +65,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_13_R2/src/main/java/com/craftaro/core/nms/v1_13_R2/item/NmsItemImpl.java b/NMS/NMS-v1_13_R2/src/main/java/com/craftaro/core/nms/v1_13_R2/item/NmsItemImpl.java new file mode 100644 index 00000000..fa9608ef --- /dev/null +++ b/NMS/NMS-v1_13_R2/src/main/java/com/craftaro/core/nms/v1_13_R2/item/NmsItemImpl.java @@ -0,0 +1,17 @@ +package com.craftaro.core.nms.v1_13_R2.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.server.v1_13_R2.EnchantmentManager; +import net.minecraft.server.v1_13_R2.ItemStack; +import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemStack; + +import java.util.concurrent.ThreadLocalRandom; + +public class NmsItemImpl implements NmsItem { + @Override + public org.bukkit.inventory.ItemStack copyAndApplyRandomEnchantment(org.bukkit.inventory.ItemStack item, int level) { + ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentManager.a(ThreadLocalRandom.current(), nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_14_R1/src/main/java/com/craftaro/core/nms/v1_14_R1/NmsImplementationsImpl.java b/NMS/NMS-v1_14_R1/src/main/java/com/craftaro/core/nms/v1_14_R1/NmsImplementationsImpl.java index 9ae97e67..7c5bbff2 100644 --- a/NMS/NMS-v1_14_R1/src/main/java/com/craftaro/core/nms/v1_14_R1/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_14_R1/src/main/java/com/craftaro/core/nms/v1_14_R1/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_14_R1; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_14_R1.anvil.AnvilCore; import com.craftaro.core.nms.v1_14_R1.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_14_R1.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_14_R1.item.NmsItemImpl; import com.craftaro.core.nms.v1_14_R1.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_14_R1.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_14_R1.world.WorldCoreImpl; @@ -22,6 +24,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -30,6 +33,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -61,4 +65,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_14_R1/src/main/java/com/craftaro/core/nms/v1_14_R1/item/NmsItemImpl.java b/NMS/NMS-v1_14_R1/src/main/java/com/craftaro/core/nms/v1_14_R1/item/NmsItemImpl.java new file mode 100644 index 00000000..b6f5c217 --- /dev/null +++ b/NMS/NMS-v1_14_R1/src/main/java/com/craftaro/core/nms/v1_14_R1/item/NmsItemImpl.java @@ -0,0 +1,17 @@ +package com.craftaro.core.nms.v1_14_R1.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.server.v1_14_R1.EnchantmentManager; +import net.minecraft.server.v1_14_R1.ItemStack; +import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftItemStack; + +import java.util.concurrent.ThreadLocalRandom; + +public class NmsItemImpl implements NmsItem { + @Override + public org.bukkit.inventory.ItemStack copyAndApplyRandomEnchantment(org.bukkit.inventory.ItemStack item, int level) { + ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentManager.a(ThreadLocalRandom.current(), nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_15_R1/src/main/java/com/craftaro/core/nms/v1_15_R1/NmsImplementationsImpl.java b/NMS/NMS-v1_15_R1/src/main/java/com/craftaro/core/nms/v1_15_R1/NmsImplementationsImpl.java index f8386c5d..2c9a0178 100644 --- a/NMS/NMS-v1_15_R1/src/main/java/com/craftaro/core/nms/v1_15_R1/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_15_R1/src/main/java/com/craftaro/core/nms/v1_15_R1/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_15_R1; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_15_R1.anvil.AnvilCore; import com.craftaro.core.nms.v1_15_R1.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_15_R1.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_15_R1.item.NmsItemImpl; import com.craftaro.core.nms.v1_15_R1.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_15_R1.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_15_R1.world.WorldCoreImpl; @@ -22,6 +24,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -30,6 +33,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -61,4 +65,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_15_R1/src/main/java/com/craftaro/core/nms/v1_15_R1/item/NmsItemImpl.java b/NMS/NMS-v1_15_R1/src/main/java/com/craftaro/core/nms/v1_15_R1/item/NmsItemImpl.java new file mode 100644 index 00000000..e705d52d --- /dev/null +++ b/NMS/NMS-v1_15_R1/src/main/java/com/craftaro/core/nms/v1_15_R1/item/NmsItemImpl.java @@ -0,0 +1,17 @@ +package com.craftaro.core.nms.v1_15_R1.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.server.v1_15_R1.EnchantmentManager; +import net.minecraft.server.v1_15_R1.ItemStack; +import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftItemStack; + +import java.util.concurrent.ThreadLocalRandom; + +public class NmsItemImpl implements NmsItem { + @Override + public org.bukkit.inventory.ItemStack copyAndApplyRandomEnchantment(org.bukkit.inventory.ItemStack item, int level) { + ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentManager.a(ThreadLocalRandom.current(), nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_16_R1/src/main/java/com/craftaro/core/nms/v1_16_R1/NmsImplementationsImpl.java b/NMS/NMS-v1_16_R1/src/main/java/com/craftaro/core/nms/v1_16_R1/NmsImplementationsImpl.java index 8b339472..341f9ae5 100644 --- a/NMS/NMS-v1_16_R1/src/main/java/com/craftaro/core/nms/v1_16_R1/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_16_R1/src/main/java/com/craftaro/core/nms/v1_16_R1/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_16_R1; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_16_R1.anvil.AnvilCore; import com.craftaro.core.nms.v1_16_R1.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_16_R1.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_16_R1.item.NmsItemImpl; import com.craftaro.core.nms.v1_16_R1.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_16_R1.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_16_R1.world.WorldCoreImpl; @@ -22,6 +24,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -30,6 +33,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -61,4 +65,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_16_R1/src/main/java/com/craftaro/core/nms/v1_16_R1/item/NmsItemImpl.java b/NMS/NMS-v1_16_R1/src/main/java/com/craftaro/core/nms/v1_16_R1/item/NmsItemImpl.java new file mode 100644 index 00000000..28a0c928 --- /dev/null +++ b/NMS/NMS-v1_16_R1/src/main/java/com/craftaro/core/nms/v1_16_R1/item/NmsItemImpl.java @@ -0,0 +1,17 @@ +package com.craftaro.core.nms.v1_16_R1.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.server.v1_16_R1.EnchantmentManager; +import net.minecraft.server.v1_16_R1.ItemStack; +import org.bukkit.craftbukkit.v1_16_R1.inventory.CraftItemStack; + +import java.util.concurrent.ThreadLocalRandom; + +public class NmsItemImpl implements NmsItem { + @Override + public org.bukkit.inventory.ItemStack copyAndApplyRandomEnchantment(org.bukkit.inventory.ItemStack item, int level) { + ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentManager.a(ThreadLocalRandom.current(), nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_16_R2/src/main/java/com/craftaro/core/nms/v1_16_R2/NmsImplementationsImpl.java b/NMS/NMS-v1_16_R2/src/main/java/com/craftaro/core/nms/v1_16_R2/NmsImplementationsImpl.java index 88c6691b..242a7bcc 100644 --- a/NMS/NMS-v1_16_R2/src/main/java/com/craftaro/core/nms/v1_16_R2/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_16_R2/src/main/java/com/craftaro/core/nms/v1_16_R2/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_16_R2; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_16_R2.anvil.AnvilCore; import com.craftaro.core.nms.v1_16_R2.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_16_R2.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_16_R2.item.NmsItemImpl; import com.craftaro.core.nms.v1_16_R2.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_16_R2.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_16_R2.world.WorldCoreImpl; @@ -22,6 +24,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -30,6 +33,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -61,4 +65,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_16_R2/src/main/java/com/craftaro/core/nms/v1_16_R2/item/NmsItemImpl.java b/NMS/NMS-v1_16_R2/src/main/java/com/craftaro/core/nms/v1_16_R2/item/NmsItemImpl.java new file mode 100644 index 00000000..a9c17580 --- /dev/null +++ b/NMS/NMS-v1_16_R2/src/main/java/com/craftaro/core/nms/v1_16_R2/item/NmsItemImpl.java @@ -0,0 +1,17 @@ +package com.craftaro.core.nms.v1_16_R2.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.server.v1_16_R2.EnchantmentManager; +import net.minecraft.server.v1_16_R2.ItemStack; +import org.bukkit.craftbukkit.v1_16_R2.inventory.CraftItemStack; + +import java.util.concurrent.ThreadLocalRandom; + +public class NmsItemImpl implements NmsItem { + @Override + public org.bukkit.inventory.ItemStack copyAndApplyRandomEnchantment(org.bukkit.inventory.ItemStack item, int level) { + ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentManager.a(ThreadLocalRandom.current(), nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_16_R3/src/main/java/com/craftaro/core/nms/v1_16_R3/NmsImplementationsImpl.java b/NMS/NMS-v1_16_R3/src/main/java/com/craftaro/core/nms/v1_16_R3/NmsImplementationsImpl.java index 39726a8c..ea4b6b55 100644 --- a/NMS/NMS-v1_16_R3/src/main/java/com/craftaro/core/nms/v1_16_R3/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_16_R3/src/main/java/com/craftaro/core/nms/v1_16_R3/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_16_R3; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_16_R3.anvil.AnvilCore; import com.craftaro.core.nms.v1_16_R3.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_16_R3.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_16_R3.item.NmsItemImpl; import com.craftaro.core.nms.v1_16_R3.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_16_R3.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_16_R3.world.WorldCoreImpl; @@ -22,6 +24,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -30,6 +33,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -61,4 +65,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_16_R3/src/main/java/com/craftaro/core/nms/v1_16_R3/item/NmsItemImpl.java b/NMS/NMS-v1_16_R3/src/main/java/com/craftaro/core/nms/v1_16_R3/item/NmsItemImpl.java new file mode 100644 index 00000000..3614ec7b --- /dev/null +++ b/NMS/NMS-v1_16_R3/src/main/java/com/craftaro/core/nms/v1_16_R3/item/NmsItemImpl.java @@ -0,0 +1,17 @@ +package com.craftaro.core.nms.v1_16_R3.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.server.v1_16_R3.EnchantmentManager; +import net.minecraft.server.v1_16_R3.ItemStack; +import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftItemStack; + +import java.util.concurrent.ThreadLocalRandom; + +public class NmsItemImpl implements NmsItem { + @Override + public org.bukkit.inventory.ItemStack copyAndApplyRandomEnchantment(org.bukkit.inventory.ItemStack item, int level) { + ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentManager.a(ThreadLocalRandom.current(), nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_17_R1/src/main/java/com/craftaro/core/nms/v1_17_R1/NmsImplementationsImpl.java b/NMS/NMS-v1_17_R1/src/main/java/com/craftaro/core/nms/v1_17_R1/NmsImplementationsImpl.java index 58f0eb9d..8bc5d335 100644 --- a/NMS/NMS-v1_17_R1/src/main/java/com/craftaro/core/nms/v1_17_R1/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_17_R1/src/main/java/com/craftaro/core/nms/v1_17_R1/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_17_R1; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_17_R1.anvil.AnvilCore; import com.craftaro.core.nms.v1_17_R1.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_17_R1.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_17_R1.item.NmsItemImpl; import com.craftaro.core.nms.v1_17_R1.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_17_R1.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_17_R1.world.WorldCoreImpl; @@ -22,6 +24,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -30,6 +33,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -61,4 +65,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_17_R1/src/main/java/com/craftaro/core/nms/v1_17_R1/item/NmsItemImpl.java b/NMS/NMS-v1_17_R1/src/main/java/com/craftaro/core/nms/v1_17_R1/item/NmsItemImpl.java new file mode 100644 index 00000000..dcc06b25 --- /dev/null +++ b/NMS/NMS-v1_17_R1/src/main/java/com/craftaro/core/nms/v1_17_R1/item/NmsItemImpl.java @@ -0,0 +1,17 @@ +package com.craftaro.core.nms.v1_17_R1.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.world.item.enchantment.EnchantmentManager; +import org.bukkit.craftbukkit.v1_17_R1.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + +import java.util.concurrent.ThreadLocalRandom; + +public class NmsItemImpl implements NmsItem { + @Override + public ItemStack copyAndApplyRandomEnchantment(ItemStack item, int level) { + net.minecraft.world.item.ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentManager.a(ThreadLocalRandom.current(), nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_18_R1/src/main/java/com/craftaro/core/nms/v1_18_R1/NmsImplementationsImpl.java b/NMS/NMS-v1_18_R1/src/main/java/com/craftaro/core/nms/v1_18_R1/NmsImplementationsImpl.java index 1aba7548..3da0f198 100644 --- a/NMS/NMS-v1_18_R1/src/main/java/com/craftaro/core/nms/v1_18_R1/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_18_R1/src/main/java/com/craftaro/core/nms/v1_18_R1/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_18_R1; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_18_R1.anvil.AnvilCore; import com.craftaro.core.nms.v1_18_R1.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_18_R1.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_18_R1.item.NmsItemImpl; import com.craftaro.core.nms.v1_18_R1.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_18_R1.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_18_R1.world.WorldCoreImpl; @@ -22,6 +24,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -30,6 +33,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -61,4 +65,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_18_R1/src/main/java/com/craftaro/core/nms/v1_18_R1/item/NmsItemImpl.java b/NMS/NMS-v1_18_R1/src/main/java/com/craftaro/core/nms/v1_18_R1/item/NmsItemImpl.java new file mode 100644 index 00000000..0f6ac280 --- /dev/null +++ b/NMS/NMS-v1_18_R1/src/main/java/com/craftaro/core/nms/v1_18_R1/item/NmsItemImpl.java @@ -0,0 +1,17 @@ +package com.craftaro.core.nms.v1_18_R1.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import org.bukkit.craftbukkit.v1_18_R1.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + +import java.util.concurrent.ThreadLocalRandom; + +public class NmsItemImpl implements NmsItem { + @Override + public ItemStack copyAndApplyRandomEnchantment(ItemStack item, int level) { + net.minecraft.world.item.ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentHelper.enchantItem(ThreadLocalRandom.current(), nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_18_R2/src/main/java/com/craftaro/core/nms/v1_18_R2/NmsImplementationsImpl.java b/NMS/NMS-v1_18_R2/src/main/java/com/craftaro/core/nms/v1_18_R2/NmsImplementationsImpl.java index ae94fe15..0699c3f2 100644 --- a/NMS/NMS-v1_18_R2/src/main/java/com/craftaro/core/nms/v1_18_R2/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_18_R2/src/main/java/com/craftaro/core/nms/v1_18_R2/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_18_R2; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_18_R2.anvil.AnvilCore; import com.craftaro.core.nms.v1_18_R2.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_18_R2.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_18_R2.item.NmsItemImpl; import com.craftaro.core.nms.v1_18_R2.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_18_R2.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_18_R2.world.WorldCoreImpl; @@ -22,6 +24,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -30,6 +33,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -61,4 +65,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_18_R2/src/main/java/com/craftaro/core/nms/v1_18_R2/item/NmsItemImpl.java b/NMS/NMS-v1_18_R2/src/main/java/com/craftaro/core/nms/v1_18_R2/item/NmsItemImpl.java new file mode 100644 index 00000000..e9e38718 --- /dev/null +++ b/NMS/NMS-v1_18_R2/src/main/java/com/craftaro/core/nms/v1_18_R2/item/NmsItemImpl.java @@ -0,0 +1,17 @@ +package com.craftaro.core.nms.v1_18_R2.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import org.bukkit.craftbukkit.v1_18_R2.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + +import java.util.concurrent.ThreadLocalRandom; + +public class NmsItemImpl implements NmsItem { + @Override + public ItemStack copyAndApplyRandomEnchantment(ItemStack item, int level) { + net.minecraft.world.item.ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentHelper.enchantItem(ThreadLocalRandom.current(), nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_19_0/src/main/java/com/craftaro/core/nms/v1_19_0/NmsImplementationsImpl.java b/NMS/NMS-v1_19_0/src/main/java/com/craftaro/core/nms/v1_19_0/NmsImplementationsImpl.java index 874ebb6a..f9e74ab8 100644 --- a/NMS/NMS-v1_19_0/src/main/java/com/craftaro/core/nms/v1_19_0/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_19_0/src/main/java/com/craftaro/core/nms/v1_19_0/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_19_0; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_19_0.anvil.AnvilCore; import com.craftaro.core.nms.v1_19_0.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_19_0.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_19_0.item.NmsItemImpl; import com.craftaro.core.nms.v1_19_0.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_19_0.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_19_0.world.WorldCoreImpl; @@ -22,6 +24,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -30,6 +33,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -61,4 +65,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_19_0/src/main/java/com/craftaro/core/nms/v1_19_0/item/NmsItemImpl.java b/NMS/NMS-v1_19_0/src/main/java/com/craftaro/core/nms/v1_19_0/item/NmsItemImpl.java new file mode 100644 index 00000000..b1281b96 --- /dev/null +++ b/NMS/NMS-v1_19_0/src/main/java/com/craftaro/core/nms/v1_19_0/item/NmsItemImpl.java @@ -0,0 +1,18 @@ +package com.craftaro.core.nms.v1_19_0.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import org.bukkit.craftbukkit.v1_19_R1.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + +public class NmsItemImpl implements NmsItem { + private final RandomSource randomSource = RandomSource.createNewThreadLocalInstance(); + + @Override + public ItemStack copyAndApplyRandomEnchantment(ItemStack item, int level) { + net.minecraft.world.item.ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentHelper.enchantItem(this.randomSource, nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_19_R1/src/main/java/com/craftaro/core/nms/v1_19_R1/NmsImplementationsImpl.java b/NMS/NMS-v1_19_R1/src/main/java/com/craftaro/core/nms/v1_19_R1/NmsImplementationsImpl.java index 9c29365e..bdf5f883 100644 --- a/NMS/NMS-v1_19_R1/src/main/java/com/craftaro/core/nms/v1_19_R1/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_19_R1/src/main/java/com/craftaro/core/nms/v1_19_R1/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_19_R1; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_19_R1.anvil.AnvilCore; import com.craftaro.core.nms.v1_19_R1.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_19_R1.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_19_R1.item.NmsItemImpl; import com.craftaro.core.nms.v1_19_R1.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_19_R1.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_19_R1.world.WorldCoreImpl; @@ -23,6 +25,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { if (((CraftMagicNumbers) CraftMagicNumbers.INSTANCE).getMappingsVersion().equals("7b9de0da1357e5b251eddde9aa762916")) { @@ -34,6 +37,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = nmsMc1_19_0.getWorldBorder(); this.anvil = nmsMc1_19_0.getAnvil(); this.nbt = nmsMc1_19_0.getNbt(); + this.item = nmsMc1_19_0.getItem(); return; } @@ -44,6 +48,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -75,4 +80,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_19_R1/src/main/java/com/craftaro/core/nms/v1_19_R1/item/NmsItemImpl.java b/NMS/NMS-v1_19_R1/src/main/java/com/craftaro/core/nms/v1_19_R1/item/NmsItemImpl.java new file mode 100644 index 00000000..a7c917fe --- /dev/null +++ b/NMS/NMS-v1_19_R1/src/main/java/com/craftaro/core/nms/v1_19_R1/item/NmsItemImpl.java @@ -0,0 +1,18 @@ +package com.craftaro.core.nms.v1_19_R1.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import org.bukkit.craftbukkit.v1_19_R1.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + +public class NmsItemImpl implements NmsItem { + private final RandomSource randomSource = RandomSource.createNewThreadLocalInstance(); + + @Override + public ItemStack copyAndApplyRandomEnchantment(ItemStack item, int level) { + net.minecraft.world.item.ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentHelper.enchantItem(this.randomSource, nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_19_R2/src/main/java/com/craftaro/core/nms/v1_19_R2/NmsImplementationsImpl.java b/NMS/NMS-v1_19_R2/src/main/java/com/craftaro/core/nms/v1_19_R2/NmsImplementationsImpl.java index 2cea0788..d1601d1a 100644 --- a/NMS/NMS-v1_19_R2/src/main/java/com/craftaro/core/nms/v1_19_R2/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_19_R2/src/main/java/com/craftaro/core/nms/v1_19_R2/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_19_R2; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_19_R2.anvil.AnvilCore; import com.craftaro.core.nms.v1_19_R2.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_19_R2.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_19_R2.item.NmsItemImpl; import com.craftaro.core.nms.v1_19_R2.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_19_R2.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_19_R2.world.WorldCoreImpl; @@ -21,6 +23,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -29,6 +32,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -60,4 +64,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_19_R2/src/main/java/com/craftaro/core/nms/v1_19_R2/item/NmsItemImpl.java b/NMS/NMS-v1_19_R2/src/main/java/com/craftaro/core/nms/v1_19_R2/item/NmsItemImpl.java new file mode 100644 index 00000000..bad08e69 --- /dev/null +++ b/NMS/NMS-v1_19_R2/src/main/java/com/craftaro/core/nms/v1_19_R2/item/NmsItemImpl.java @@ -0,0 +1,18 @@ +package com.craftaro.core.nms.v1_19_R2.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import org.bukkit.craftbukkit.v1_19_R2.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + +public class NmsItemImpl implements NmsItem { + private final RandomSource randomSource = RandomSource.createNewThreadLocalInstance(); + + @Override + public ItemStack copyAndApplyRandomEnchantment(ItemStack item, int level) { + net.minecraft.world.item.ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentHelper.enchantItem(this.randomSource, nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_19_R3/src/main/java/com/craftaro/core/nms/v1_19_R3/NmsImplementationsImpl.java b/NMS/NMS-v1_19_R3/src/main/java/com/craftaro/core/nms/v1_19_R3/NmsImplementationsImpl.java index ceee52fe..d6ae3468 100644 --- a/NMS/NMS-v1_19_R3/src/main/java/com/craftaro/core/nms/v1_19_R3/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_19_R3/src/main/java/com/craftaro/core/nms/v1_19_R3/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_19_R3; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_19_R3.anvil.AnvilCore; import com.craftaro.core.nms.v1_19_R3.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_19_R3.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_19_R3.item.NmsItemImpl; import com.craftaro.core.nms.v1_19_R3.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_19_R3.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_19_R3.world.WorldCoreImpl; @@ -21,6 +23,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -29,6 +32,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -60,4 +64,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_19_R3/src/main/java/com/craftaro/core/nms/v1_19_R3/item/NmsItemImpl.java b/NMS/NMS-v1_19_R3/src/main/java/com/craftaro/core/nms/v1_19_R3/item/NmsItemImpl.java new file mode 100644 index 00000000..97027ae6 --- /dev/null +++ b/NMS/NMS-v1_19_R3/src/main/java/com/craftaro/core/nms/v1_19_R3/item/NmsItemImpl.java @@ -0,0 +1,18 @@ +package com.craftaro.core.nms.v1_19_R3.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import org.bukkit.craftbukkit.v1_19_R3.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + +public class NmsItemImpl implements NmsItem { + private final RandomSource randomSource = RandomSource.createNewThreadLocalInstance(); + + @Override + public ItemStack copyAndApplyRandomEnchantment(ItemStack item, int level) { + net.minecraft.world.item.ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentHelper.enchantItem(this.randomSource, nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_20_R1/src/main/java/com/craftaro/core/nms/v1_20_R1/NmsImplementationsImpl.java b/NMS/NMS-v1_20_R1/src/main/java/com/craftaro/core/nms/v1_20_R1/NmsImplementationsImpl.java index aa74feab..92ed7981 100644 --- a/NMS/NMS-v1_20_R1/src/main/java/com/craftaro/core/nms/v1_20_R1/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_20_R1/src/main/java/com/craftaro/core/nms/v1_20_R1/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_20_R1; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_20_R1.anvil.AnvilCore; import com.craftaro.core.nms.v1_20_R1.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_20_R1.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_20_R1.item.NmsItemImpl; import com.craftaro.core.nms.v1_20_R1.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_20_R1.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_20_R1.world.WorldCoreImpl; @@ -21,6 +23,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -29,6 +32,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -60,4 +64,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_20_R1/src/main/java/com/craftaro/core/nms/v1_20_R1/item/NmsItemImpl.java b/NMS/NMS-v1_20_R1/src/main/java/com/craftaro/core/nms/v1_20_R1/item/NmsItemImpl.java new file mode 100644 index 00000000..b0c31281 --- /dev/null +++ b/NMS/NMS-v1_20_R1/src/main/java/com/craftaro/core/nms/v1_20_R1/item/NmsItemImpl.java @@ -0,0 +1,18 @@ +package com.craftaro.core.nms.v1_20_R1.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import org.bukkit.craftbukkit.v1_20_R1.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + +public class NmsItemImpl implements NmsItem { + private final RandomSource randomSource = RandomSource.createNewThreadLocalInstance(); + + @Override + public ItemStack copyAndApplyRandomEnchantment(ItemStack item, int level) { + net.minecraft.world.item.ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentHelper.enchantItem(this.randomSource, nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_20_R2/src/main/java/com/craftaro/core/nms/v1_20_R2/NmsImplementationsImpl.java b/NMS/NMS-v1_20_R2/src/main/java/com/craftaro/core/nms/v1_20_R2/NmsImplementationsImpl.java index a0a3104c..9a804699 100644 --- a/NMS/NMS-v1_20_R2/src/main/java/com/craftaro/core/nms/v1_20_R2/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_20_R2/src/main/java/com/craftaro/core/nms/v1_20_R2/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_20_R2; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_20_R2.anvil.AnvilCore; import com.craftaro.core.nms.v1_20_R2.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_20_R2.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_20_R2.item.NmsItemImpl; import com.craftaro.core.nms.v1_20_R2.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_20_R2.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_20_R2.world.WorldCoreImpl; @@ -21,6 +23,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -29,6 +32,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -60,4 +64,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_20_R2/src/main/java/com/craftaro/core/nms/v1_20_R2/item/NmsItemImpl.java b/NMS/NMS-v1_20_R2/src/main/java/com/craftaro/core/nms/v1_20_R2/item/NmsItemImpl.java new file mode 100644 index 00000000..c4f8f324 --- /dev/null +++ b/NMS/NMS-v1_20_R2/src/main/java/com/craftaro/core/nms/v1_20_R2/item/NmsItemImpl.java @@ -0,0 +1,18 @@ +package com.craftaro.core.nms.v1_20_R2.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import org.bukkit.craftbukkit.v1_20_R2.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + +public class NmsItemImpl implements NmsItem { + private final RandomSource randomSource = RandomSource.createNewThreadLocalInstance(); + + @Override + public ItemStack copyAndApplyRandomEnchantment(ItemStack item, int level) { + net.minecraft.world.item.ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentHelper.enchantItem(this.randomSource, nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_20_R3/src/main/java/com/craftaro/core/nms/v1_20_R3/NmsImplementationsImpl.java b/NMS/NMS-v1_20_R3/src/main/java/com/craftaro/core/nms/v1_20_R3/NmsImplementationsImpl.java index a20e2adf..42f811e9 100644 --- a/NMS/NMS-v1_20_R3/src/main/java/com/craftaro/core/nms/v1_20_R3/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_20_R3/src/main/java/com/craftaro/core/nms/v1_20_R3/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_20_R3; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_20_R3.anvil.AnvilCore; import com.craftaro.core.nms.v1_20_R3.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_20_R3.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_20_R3.item.NmsItemImpl; import com.craftaro.core.nms.v1_20_R3.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_20_R3.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_20_R3.world.WorldCoreImpl; @@ -21,6 +23,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -29,6 +32,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -60,4 +64,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_20_R3/src/main/java/com/craftaro/core/nms/v1_20_R3/item/NmsItemImpl.java b/NMS/NMS-v1_20_R3/src/main/java/com/craftaro/core/nms/v1_20_R3/item/NmsItemImpl.java new file mode 100644 index 00000000..66b5f689 --- /dev/null +++ b/NMS/NMS-v1_20_R3/src/main/java/com/craftaro/core/nms/v1_20_R3/item/NmsItemImpl.java @@ -0,0 +1,18 @@ +package com.craftaro.core.nms.v1_20_R3.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import org.bukkit.craftbukkit.v1_20_R3.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + +public class NmsItemImpl implements NmsItem { + private final RandomSource randomSource = RandomSource.createNewThreadLocalInstance(); + + @Override + public ItemStack copyAndApplyRandomEnchantment(ItemStack item, int level) { + net.minecraft.world.item.ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentHelper.enchantItem(this.randomSource, nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_20_R4/src/main/java/com/craftaro/core/nms/v1_20_R4/NmsImplementationsImpl.java b/NMS/NMS-v1_20_R4/src/main/java/com/craftaro/core/nms/v1_20_R4/NmsImplementationsImpl.java index 34a3ccf8..17667e2f 100644 --- a/NMS/NMS-v1_20_R4/src/main/java/com/craftaro/core/nms/v1_20_R4/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_20_R4/src/main/java/com/craftaro/core/nms/v1_20_R4/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_20_R4; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_20_R4.anvil.AnvilCore; import com.craftaro.core.nms.v1_20_R4.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_20_R4.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_20_R4.item.NmsItemImpl; import com.craftaro.core.nms.v1_20_R4.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_20_R4.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_20_R4.world.WorldCoreImpl; @@ -21,6 +23,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -29,6 +32,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -60,4 +64,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_20_R4/src/main/java/com/craftaro/core/nms/v1_20_R4/item/NmsItemImpl.java b/NMS/NMS-v1_20_R4/src/main/java/com/craftaro/core/nms/v1_20_R4/item/NmsItemImpl.java new file mode 100644 index 00000000..886300a7 --- /dev/null +++ b/NMS/NMS-v1_20_R4/src/main/java/com/craftaro/core/nms/v1_20_R4/item/NmsItemImpl.java @@ -0,0 +1,19 @@ +package com.craftaro.core.nms.v1_20_R4.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.util.RandomSource; +import net.minecraft.world.flag.FeatureFlags; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import org.bukkit.craftbukkit.v1_20_R4.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + +public class NmsItemImpl implements NmsItem { + private final RandomSource randomSource = RandomSource.createNewThreadLocalInstance(); + + @Override + public ItemStack copyAndApplyRandomEnchantment(ItemStack item, int level) { + net.minecraft.world.item.ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentHelper.enchantItem(FeatureFlags.DEFAULT_FLAGS, this.randomSource, nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_21_R1/src/main/java/com/craftaro/core/nms/v1_21_R1/NmsImplementationsImpl.java b/NMS/NMS-v1_21_R1/src/main/java/com/craftaro/core/nms/v1_21_R1/NmsImplementationsImpl.java index f0f72375..d30cc70f 100644 --- a/NMS/NMS-v1_21_R1/src/main/java/com/craftaro/core/nms/v1_21_R1/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_21_R1/src/main/java/com/craftaro/core/nms/v1_21_R1/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_21_R1; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_21_R1.anvil.AnvilCore; import com.craftaro.core.nms.v1_21_R1.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_21_R1.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_21_R1.item.NmsItemImpl; import com.craftaro.core.nms.v1_21_R1.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_21_R1.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_21_R1.world.WorldCoreImpl; @@ -21,6 +23,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -29,6 +32,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -60,4 +64,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_21_R1/src/main/java/com/craftaro/core/nms/v1_21_R1/item/NmsItemImpl.java b/NMS/NMS-v1_21_R1/src/main/java/com/craftaro/core/nms/v1_21_R1/item/NmsItemImpl.java new file mode 100644 index 00000000..f0f8579e --- /dev/null +++ b/NMS/NMS-v1_21_R1/src/main/java/com/craftaro/core/nms/v1_21_R1/item/NmsItemImpl.java @@ -0,0 +1,21 @@ +package com.craftaro.core.nms.v1_21_R1.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import org.bukkit.craftbukkit.v1_21_R1.CraftRegistry; +import org.bukkit.craftbukkit.v1_21_R1.inventory.CraftItemStack; +import org.bukkit.inventory.ItemStack; + +import java.util.Optional; + +public class NmsItemImpl implements NmsItem { + private final RandomSource randomSource = RandomSource.createNewThreadLocalInstance(); + + @Override + public ItemStack copyAndApplyRandomEnchantment(ItemStack item, int level) { + net.minecraft.world.item.ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentHelper.enchantItem(this.randomSource, nmsItem, level, CraftRegistry.getMinecraftRegistry(), Optional.empty()); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_8_R1/src/main/java/com/craftaro/core/nms/v1_8_R1/NmsImplementationsImpl.java b/NMS/NMS-v1_8_R1/src/main/java/com/craftaro/core/nms/v1_8_R1/NmsImplementationsImpl.java index f2435300..54210f55 100644 --- a/NMS/NMS-v1_8_R1/src/main/java/com/craftaro/core/nms/v1_8_R1/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_8_R1/src/main/java/com/craftaro/core/nms/v1_8_R1/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_8_R1; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_8_R1.anvil.AnvilCore; import com.craftaro.core.nms.v1_8_R1.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_8_R1.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_8_R1.item.NmsItemImpl; import com.craftaro.core.nms.v1_8_R1.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_8_R1.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_8_R1.world.WorldCoreImpl; @@ -22,6 +24,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -30,6 +33,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -61,4 +65,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_8_R1/src/main/java/com/craftaro/core/nms/v1_8_R1/item/NmsItemImpl.java b/NMS/NMS-v1_8_R1/src/main/java/com/craftaro/core/nms/v1_8_R1/item/NmsItemImpl.java new file mode 100644 index 00000000..2aa42fc7 --- /dev/null +++ b/NMS/NMS-v1_8_R1/src/main/java/com/craftaro/core/nms/v1_8_R1/item/NmsItemImpl.java @@ -0,0 +1,17 @@ +package com.craftaro.core.nms.v1_8_R1.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.server.v1_8_R1.EnchantmentManager; +import net.minecraft.server.v1_8_R1.ItemStack; +import org.bukkit.craftbukkit.v1_8_R1.inventory.CraftItemStack; + +import java.util.concurrent.ThreadLocalRandom; + +public class NmsItemImpl implements NmsItem { + @Override + public org.bukkit.inventory.ItemStack copyAndApplyRandomEnchantment(org.bukkit.inventory.ItemStack item, int level) { + ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentManager.a(ThreadLocalRandom.current(), nmsItem, level); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_8_R2/src/main/java/com/craftaro/core/nms/v1_8_R2/NmsImplementationsImpl.java b/NMS/NMS-v1_8_R2/src/main/java/com/craftaro/core/nms/v1_8_R2/NmsImplementationsImpl.java index b284ab4c..e8a37945 100644 --- a/NMS/NMS-v1_8_R2/src/main/java/com/craftaro/core/nms/v1_8_R2/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_8_R2/src/main/java/com/craftaro/core/nms/v1_8_R2/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_8_R2; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_8_R2.anvil.AnvilCore; import com.craftaro.core.nms.v1_8_R2.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_8_R2.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_8_R2.item.NmsItemImpl; import com.craftaro.core.nms.v1_8_R2.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_8_R2.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_8_R2.world.WorldCoreImpl; @@ -22,6 +24,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -30,6 +33,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -61,4 +65,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_8_R2/src/main/java/com/craftaro/core/nms/v1_8_R2/item/NmsItemImpl.java b/NMS/NMS-v1_8_R2/src/main/java/com/craftaro/core/nms/v1_8_R2/item/NmsItemImpl.java new file mode 100644 index 00000000..9006bf1e --- /dev/null +++ b/NMS/NMS-v1_8_R2/src/main/java/com/craftaro/core/nms/v1_8_R2/item/NmsItemImpl.java @@ -0,0 +1,17 @@ +package com.craftaro.core.nms.v1_8_R2.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.server.v1_8_R2.EnchantmentManager; +import net.minecraft.server.v1_8_R2.ItemStack; +import org.bukkit.craftbukkit.v1_8_R2.inventory.CraftItemStack; + +import java.util.concurrent.ThreadLocalRandom; + +public class NmsItemImpl implements NmsItem { + @Override + public org.bukkit.inventory.ItemStack copyAndApplyRandomEnchantment(org.bukkit.inventory.ItemStack item, int level) { + ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentManager.a(ThreadLocalRandom.current(), nmsItem, level); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_8_R3/src/main/java/com/craftaro/core/nms/v1_8_R3/NmsImplementationsImpl.java b/NMS/NMS-v1_8_R3/src/main/java/com/craftaro/core/nms/v1_8_R3/NmsImplementationsImpl.java index b5734322..62a8c88c 100644 --- a/NMS/NMS-v1_8_R3/src/main/java/com/craftaro/core/nms/v1_8_R3/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_8_R3/src/main/java/com/craftaro/core/nms/v1_8_R3/NmsImplementationsImpl.java @@ -4,9 +4,11 @@ import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.anvil.AnvilCore; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_8_R3.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_8_R3.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_8_R3.item.NmsItemImpl; import com.craftaro.core.nms.v1_8_R3.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_8_R3.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_8_R3.world.WorldCoreImpl; @@ -22,6 +24,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -30,6 +33,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new com.craftaro.core.nms.v1_8_R3.anvil.AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -61,4 +65,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_8_R3/src/main/java/com/craftaro/core/nms/v1_8_R3/item/NmsItemImpl.java b/NMS/NMS-v1_8_R3/src/main/java/com/craftaro/core/nms/v1_8_R3/item/NmsItemImpl.java new file mode 100644 index 00000000..497d52ee --- /dev/null +++ b/NMS/NMS-v1_8_R3/src/main/java/com/craftaro/core/nms/v1_8_R3/item/NmsItemImpl.java @@ -0,0 +1,17 @@ +package com.craftaro.core.nms.v1_8_R3.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.server.v1_8_R3.EnchantmentManager; +import net.minecraft.server.v1_8_R3.ItemStack; +import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftItemStack; + +import java.util.concurrent.ThreadLocalRandom; + +public class NmsItemImpl implements NmsItem { + @Override + public org.bukkit.inventory.ItemStack copyAndApplyRandomEnchantment(org.bukkit.inventory.ItemStack item, int level) { + ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentManager.a(ThreadLocalRandom.current(), nmsItem, level); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_9_R1/src/main/java/com/craftaro/core/nms/v1_9_R1/NmsImplementationsImpl.java b/NMS/NMS-v1_9_R1/src/main/java/com/craftaro/core/nms/v1_9_R1/NmsImplementationsImpl.java index 2eedb6cb..a79ef1a2 100644 --- a/NMS/NMS-v1_9_R1/src/main/java/com/craftaro/core/nms/v1_9_R1/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_9_R1/src/main/java/com/craftaro/core/nms/v1_9_R1/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_9_R1; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_9_R1.anvil.AnvilCore; import com.craftaro.core.nms.v1_9_R1.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_9_R1.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_9_R1.item.NmsItemImpl; import com.craftaro.core.nms.v1_9_R1.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_9_R1.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_9_R1.world.WorldCoreImpl; @@ -22,6 +24,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -30,6 +33,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -61,4 +65,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_9_R1/src/main/java/com/craftaro/core/nms/v1_9_R1/item/NmsItemImpl.java b/NMS/NMS-v1_9_R1/src/main/java/com/craftaro/core/nms/v1_9_R1/item/NmsItemImpl.java new file mode 100644 index 00000000..6e3ee306 --- /dev/null +++ b/NMS/NMS-v1_9_R1/src/main/java/com/craftaro/core/nms/v1_9_R1/item/NmsItemImpl.java @@ -0,0 +1,17 @@ +package com.craftaro.core.nms.v1_9_R1.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.server.v1_9_R1.EnchantmentManager; +import net.minecraft.server.v1_9_R1.ItemStack; +import org.bukkit.craftbukkit.v1_9_R1.inventory.CraftItemStack; + +import java.util.concurrent.ThreadLocalRandom; + +public class NmsItemImpl implements NmsItem { + @Override + public org.bukkit.inventory.ItemStack copyAndApplyRandomEnchantment(org.bukkit.inventory.ItemStack item, int level) { + ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentManager.a(ThreadLocalRandom.current(), nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +} diff --git a/NMS/NMS-v1_9_R2/src/main/java/com/craftaro/core/nms/v1_9_R2/NmsImplementationsImpl.java b/NMS/NMS-v1_9_R2/src/main/java/com/craftaro/core/nms/v1_9_R2/NmsImplementationsImpl.java index 84762c01..56987422 100644 --- a/NMS/NMS-v1_9_R2/src/main/java/com/craftaro/core/nms/v1_9_R2/NmsImplementationsImpl.java +++ b/NMS/NMS-v1_9_R2/src/main/java/com/craftaro/core/nms/v1_9_R2/NmsImplementationsImpl.java @@ -3,10 +3,12 @@ package com.craftaro.core.nms.v1_9_R2; import com.craftaro.core.nms.NmsImplementations; import com.craftaro.core.nms.entity.NMSPlayer; import com.craftaro.core.nms.entity.NmsEntity; +import com.craftaro.core.nms.item.NmsItem; import com.craftaro.core.nms.nbt.NBTCore; import com.craftaro.core.nms.v1_9_R2.anvil.AnvilCore; import com.craftaro.core.nms.v1_9_R2.entity.NMSPlayerImpl; import com.craftaro.core.nms.v1_9_R2.entity.NmsEntityImpl; +import com.craftaro.core.nms.v1_9_R2.item.NmsItemImpl; import com.craftaro.core.nms.v1_9_R2.nbt.NBTCoreImpl; import com.craftaro.core.nms.v1_9_R2.world.NmsWorldBorderImpl; import com.craftaro.core.nms.v1_9_R2.world.WorldCoreImpl; @@ -22,6 +24,7 @@ public class NmsImplementationsImpl implements NmsImplementations { private final NmsWorldBorder worldBorder; private final com.craftaro.core.nms.anvil.AnvilCore anvil; private final NBTCore nbt; + private final NmsItem item; public NmsImplementationsImpl() { this.entity = new NmsEntityImpl(); @@ -30,6 +33,7 @@ public class NmsImplementationsImpl implements NmsImplementations { this.worldBorder = new NmsWorldBorderImpl(); this.anvil = new AnvilCore(); this.nbt = new NBTCoreImpl(); + this.item = new NmsItemImpl(); } @Override @@ -61,4 +65,9 @@ public class NmsImplementationsImpl implements NmsImplementations { public @NotNull NBTCore getNbt() { return this.nbt; } + + @Override + public @NotNull NmsItem getItem() { + return this.item; + } } diff --git a/NMS/NMS-v1_9_R2/src/main/java/com/craftaro/core/nms/v1_9_R2/item/NmsItemImpl.java b/NMS/NMS-v1_9_R2/src/main/java/com/craftaro/core/nms/v1_9_R2/item/NmsItemImpl.java new file mode 100644 index 00000000..cf05c9ba --- /dev/null +++ b/NMS/NMS-v1_9_R2/src/main/java/com/craftaro/core/nms/v1_9_R2/item/NmsItemImpl.java @@ -0,0 +1,17 @@ +package com.craftaro.core.nms.v1_9_R2.item; + +import com.craftaro.core.nms.item.NmsItem; +import net.minecraft.server.v1_9_R2.EnchantmentManager; +import net.minecraft.server.v1_9_R2.ItemStack; +import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftItemStack; + +import java.util.concurrent.ThreadLocalRandom; + +public class NmsItemImpl implements NmsItem { + @Override + public org.bukkit.inventory.ItemStack copyAndApplyRandomEnchantment(org.bukkit.inventory.ItemStack item, int level) { + ItemStack nmsItem = CraftItemStack.asNMSCopy(item); + EnchantmentManager.a(ThreadLocalRandom.current(), nmsItem, level, false); + return CraftItemStack.asBukkitCopy(nmsItem); + } +}