diff --git a/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyInventoryUtils.java b/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyInventoryUtils.java index e67356021..4c0d200f6 100644 --- a/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyInventoryUtils.java +++ b/bukkit/legacy/src/main/java/net/momirealms/craftengine/bukkit/util/LegacyInventoryUtils.java @@ -7,6 +7,7 @@ import org.bukkit.event.inventory.PrepareAnvilEvent; import org.bukkit.inventory.AnvilInventory; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryView; +import org.bukkit.inventory.Merchant; import org.jetbrains.annotations.Nullable; public class LegacyInventoryUtils { @@ -68,6 +69,10 @@ public class LegacyInventoryUtils { player.openWorkbench(null, true); } + public static void openMerchant(Player player, Merchant merchant) { + player.openMerchant(merchant, true); + } + public static Player getPlayerFromInventoryEvent(InventoryEvent event) { return (Player) event.getView().getPlayer(); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitItemManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitItemManager.java index d4124a9fc..c2b80e836 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitItemManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitItemManager.java @@ -408,7 +408,7 @@ public class BukkitItemManager extends AbstractItemManager { Object armorTrim = FastNMS.INSTANCE.constructor$ArmorTrim(optionalMaterial.get(), optionalPattern.get()); Object previousTrim; if (VersionHelper.isOrAbove1_20_5()) { - previousTrim = base.getExactComponent(ComponentKeys.TRIM); + previousTrim = base.getExactComponent(DataComponentKeys.TRIM); } else { try { previousTrim = VersionHelper.isOrAbove1_20_2() ? @@ -424,7 +424,7 @@ public class BukkitItemManager extends AbstractItemManager { } Item newItem = base.copyWithCount(1); if (VersionHelper.isOrAbove1_20_5()) { - newItem.setExactComponent(ComponentKeys.TRIM, armorTrim); + newItem.setExactComponent(DataComponentKeys.TRIM, armorTrim); } else { try { CoreReflections.method$ArmorTrim$setTrim.invoke(null, FastNMS.INSTANCE.registryAccess(), newItem.getLiteralObject(), armorTrim); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ComponentTypes.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ComponentTypes.java deleted file mode 100644 index 9eb500833..000000000 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ComponentTypes.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.momirealms.craftengine.bukkit.item; - -import net.momirealms.craftengine.bukkit.nms.FastNMS; -import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBuiltInRegistries; -import net.momirealms.craftengine.bukkit.util.KeyUtils; -import net.momirealms.craftengine.core.item.ComponentKeys; -import net.momirealms.craftengine.core.util.Key; -import net.momirealms.craftengine.core.util.VersionHelper; - -public class ComponentTypes { - public static final Object CUSTOM_MODEL_DATA = getComponentType(ComponentKeys.CUSTOM_MODEL_DATA); - public static final Object CUSTOM_NAME = getComponentType(ComponentKeys.CUSTOM_NAME); - public static final Object ITEM_NAME = getComponentType(ComponentKeys.ITEM_NAME); - public static final Object LORE = getComponentType(ComponentKeys.LORE); - public static final Object DAMAGE = getComponentType(ComponentKeys.DAMAGE); - public static final Object MAX_DAMAGE = getComponentType(ComponentKeys.MAX_DAMAGE); - public static final Object ENCHANTMENT_GLINT_OVERRIDE = getComponentType(ComponentKeys.ENCHANTMENT_GLINT_OVERRIDE); - public static final Object ENCHANTMENTS = getComponentType(ComponentKeys.ENCHANTMENTS); - public static final Object STORED_ENCHANTMENTS = getComponentType(ComponentKeys.STORED_ENCHANTMENTS); - public static final Object UNBREAKABLE = getComponentType(ComponentKeys.UNBREAKABLE); - public static final Object MAX_STACK_SIZE = getComponentType(ComponentKeys.MAX_STACK_SIZE); - public static final Object EQUIPPABLE = getComponentType(ComponentKeys.EQUIPPABLE); - public static final Object ITEM_MODEL = getComponentType(ComponentKeys.ITEM_MODEL); - public static final Object TOOLTIP_STYLE = getComponentType(ComponentKeys.TOOLTIP_STYLE); - public static final Object JUKEBOX_PLAYABLE = getComponentType(ComponentKeys.JUKEBOX_PLAYABLE); - public static final Object TRIM = getComponentType(ComponentKeys.TRIM); - public static final Object REPAIR_COST = getComponentType(ComponentKeys.REPAIR_COST); - public static final Object CUSTOM_DATA = getComponentType(ComponentKeys.CUSTOM_DATA); - public static final Object PROFILE = getComponentType(ComponentKeys.PROFILE); - public static final Object DYED_COLOR = getComponentType(ComponentKeys.DYED_COLOR); - public static final Object DEATH_PROTECTION = getComponentType(ComponentKeys.DEATH_PROTECTION); - public static final Object FIREWORK_EXPLOSION = getComponentType(ComponentKeys.FIREWORK_EXPLOSION); - public static final Object BUNDLE_CONTENTS = getComponentType(ComponentKeys.BUNDLE_CONTENTS); - public static final Object CONTAINER = getComponentType(ComponentKeys.CONTAINER); - public static final Object BLOCK_STATE = getComponentType(ComponentKeys.BLOCK_STATE); - - private ComponentTypes() {} - - private static Object getComponentType(Key key) { - if (!VersionHelper.isOrAbove1_20_5()) return null; - return FastNMS.INSTANCE.method$Registry$getValue(MBuiltInRegistries.DATA_COMPONENT_TYPE, KeyUtils.toResourceLocation(key)); - } -} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/DataComponentPredicateTypes.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/DataComponentPredicateTypes.java new file mode 100644 index 000000000..a989983e1 --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/DataComponentPredicateTypes.java @@ -0,0 +1,16 @@ +package net.momirealms.craftengine.bukkit.item; + +import net.momirealms.craftengine.bukkit.nms.FastNMS; +import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBuiltInRegistries; +import net.momirealms.craftengine.bukkit.util.KeyUtils; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.VersionHelper; + +public final class DataComponentPredicateTypes { + private DataComponentPredicateTypes() {} + + public static Object byId(Key key) { + if (!VersionHelper.isOrAbove1_21_5()) return null; + return FastNMS.INSTANCE.method$Registry$getValue(MBuiltInRegistries.DATA_COMPONENT_PREDICATE_TYPE, KeyUtils.toResourceLocation(key)); + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/DataComponentTypes.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/DataComponentTypes.java new file mode 100644 index 000000000..09f99cf98 --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/DataComponentTypes.java @@ -0,0 +1,43 @@ +package net.momirealms.craftengine.bukkit.item; + +import net.momirealms.craftengine.bukkit.nms.FastNMS; +import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MBuiltInRegistries; +import net.momirealms.craftengine.bukkit.util.KeyUtils; +import net.momirealms.craftengine.core.item.DataComponentKeys; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.VersionHelper; + +public final class DataComponentTypes { + public static final Object CUSTOM_MODEL_DATA = byId(DataComponentKeys.CUSTOM_MODEL_DATA); + public static final Object CUSTOM_NAME = byId(DataComponentKeys.CUSTOM_NAME); + public static final Object ITEM_NAME = byId(DataComponentKeys.ITEM_NAME); + public static final Object LORE = byId(DataComponentKeys.LORE); + public static final Object DAMAGE = byId(DataComponentKeys.DAMAGE); + public static final Object MAX_DAMAGE = byId(DataComponentKeys.MAX_DAMAGE); + public static final Object ENCHANTMENT_GLINT_OVERRIDE = byId(DataComponentKeys.ENCHANTMENT_GLINT_OVERRIDE); + public static final Object ENCHANTMENTS = byId(DataComponentKeys.ENCHANTMENTS); + public static final Object STORED_ENCHANTMENTS = byId(DataComponentKeys.STORED_ENCHANTMENTS); + public static final Object UNBREAKABLE = byId(DataComponentKeys.UNBREAKABLE); + public static final Object MAX_STACK_SIZE = byId(DataComponentKeys.MAX_STACK_SIZE); + public static final Object EQUIPPABLE = byId(DataComponentKeys.EQUIPPABLE); + public static final Object ITEM_MODEL = byId(DataComponentKeys.ITEM_MODEL); + public static final Object TOOLTIP_STYLE = byId(DataComponentKeys.TOOLTIP_STYLE); + public static final Object JUKEBOX_PLAYABLE = byId(DataComponentKeys.JUKEBOX_PLAYABLE); + public static final Object TRIM = byId(DataComponentKeys.TRIM); + public static final Object REPAIR_COST = byId(DataComponentKeys.REPAIR_COST); + public static final Object CUSTOM_DATA = byId(DataComponentKeys.CUSTOM_DATA); + public static final Object PROFILE = byId(DataComponentKeys.PROFILE); + public static final Object DYED_COLOR = byId(DataComponentKeys.DYED_COLOR); + public static final Object DEATH_PROTECTION = byId(DataComponentKeys.DEATH_PROTECTION); + public static final Object FIREWORK_EXPLOSION = byId(DataComponentKeys.FIREWORK_EXPLOSION); + public static final Object BUNDLE_CONTENTS = byId(DataComponentKeys.BUNDLE_CONTENTS); + public static final Object CONTAINER = byId(DataComponentKeys.CONTAINER); + public static final Object BLOCK_STATE = byId(DataComponentKeys.BLOCK_STATE); + + private DataComponentTypes() {} + + public static Object byId(Key key) { + if (!VersionHelper.isOrAbove1_20_5()) return null; + return FastNMS.INSTANCE.method$Registry$getValue(MBuiltInRegistries.DATA_COMPONENT_TYPE, KeyUtils.toResourceLocation(key)); + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ModernNetworkItemHandler.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ModernNetworkItemHandler.java index ae56ffd1a..b9fd28806 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ModernNetworkItemHandler.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ModernNetworkItemHandler.java @@ -34,8 +34,8 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler newItems = new ArrayList<>(); boolean changed = false; for (Object previousItem : FastNMS.INSTANCE.method$BundleContents$items(bundleContents)) { @@ -48,14 +48,14 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler newItems = new ArrayList<>(); boolean changed = false; for (Object previousItem : FastNMS.INSTANCE.field$ItemContainerContents$items(containerContents)) { @@ -68,7 +68,7 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler newItems = new ArrayList<>(); boolean changed = false; for (Object previousItem : FastNMS.INSTANCE.method$BundleContents$items(bundleContents)) { @@ -128,14 +128,14 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler newItems = new ArrayList<>(); for (Object previousItem : FastNMS.INSTANCE.field$ItemContainerContents$items(containerContents)) { boolean changed = false; @@ -147,7 +147,7 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler tag, context); else processLegacyItemName(wrapped, () -> tag, context); } - if (!tag.containsKey(ComponentIds.CUSTOM_NAME)) { + if (!tag.containsKey(DataComponentIds.CUSTOM_NAME)) { if (VersionHelper.isOrAbove1_21_5()) processModernCustomName(wrapped, () -> tag, context); else processLegacyCustomName(wrapped, () -> tag, context); } - if (!tag.containsKey(ComponentIds.LORE)) { + if (!tag.containsKey(DataComponentIds.LORE)) { if (VersionHelper.isOrAbove1_21_5()) processModernLore(wrapped, () -> tag, context); else processLegacyLore(wrapped, () -> tag, context); } @@ -222,7 +222,7 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler tokens = CraftEngine.instance().fontManager().matchTags(line); if (!tokens.isEmpty()) { item.customNameJson(AdventureHelper.componentToJson(AdventureHelper.replaceText(AdventureHelper.jsonToComponent(line), tokens, context))); - tag.get().put(ComponentIds.CUSTOM_NAME, NetworkItemHandler.pack(Operation.ADD, new StringTag(line))); + tag.get().put(DataComponentIds.CUSTOM_NAME, NetworkItemHandler.pack(Operation.ADD, new StringTag(line))); return true; } } @@ -277,7 +277,7 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler tokens = CraftEngine.instance().fontManager().matchTags(line); if (!tokens.isEmpty()) { item.itemNameJson(AdventureHelper.componentToJson(AdventureHelper.replaceText(AdventureHelper.jsonToComponent(line), tokens, context))); - tag.get().put(ComponentIds.ITEM_NAME, NetworkItemHandler.pack(Operation.ADD, new StringTag(line))); + tag.get().put(DataComponentIds.ITEM_NAME, NetworkItemHandler.pack(Operation.ADD, new StringTag(line))); return true; } } @@ -285,31 +285,31 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler item, Supplier tag, Context context) { - Tag nameTag = item.getSparrowNBTComponent(ComponentTypes.ITEM_NAME); + Tag nameTag = item.getSparrowNBTComponent(DataComponentTypes.ITEM_NAME); if (nameTag == null) return false; Map tokens = CraftEngine.instance().fontManager().matchTags(nameTag); if (!tokens.isEmpty()) { - item.setNBTComponent(ComponentKeys.ITEM_NAME, AdventureHelper.componentToNbt(AdventureHelper.replaceText(AdventureHelper.nbtToComponent(nameTag), tokens, context))); - tag.get().put(ComponentIds.ITEM_NAME, NetworkItemHandler.pack(Operation.ADD, nameTag)); + item.setNBTComponent(DataComponentKeys.ITEM_NAME, AdventureHelper.componentToNbt(AdventureHelper.replaceText(AdventureHelper.nbtToComponent(nameTag), tokens, context))); + tag.get().put(DataComponentIds.ITEM_NAME, NetworkItemHandler.pack(Operation.ADD, nameTag)); return true; } return false; } public static boolean processModernCustomName(Item item, Supplier tag, Context context) { - Tag nameTag = item.getSparrowNBTComponent(ComponentTypes.CUSTOM_NAME); + Tag nameTag = item.getSparrowNBTComponent(DataComponentTypes.CUSTOM_NAME); if (nameTag == null) return false; Map tokens = CraftEngine.instance().fontManager().matchTags(nameTag); if (!tokens.isEmpty()) { - item.setNBTComponent(ComponentKeys.CUSTOM_NAME, AdventureHelper.componentToNbt(AdventureHelper.replaceText(AdventureHelper.nbtToComponent(nameTag), tokens, context))); - tag.get().put(ComponentIds.CUSTOM_NAME, NetworkItemHandler.pack(Operation.ADD, nameTag)); + item.setNBTComponent(DataComponentKeys.CUSTOM_NAME, AdventureHelper.componentToNbt(AdventureHelper.replaceText(AdventureHelper.nbtToComponent(nameTag), tokens, context))); + tag.get().put(DataComponentIds.CUSTOM_NAME, NetworkItemHandler.pack(Operation.ADD, nameTag)); return true; } return false; } public static boolean processModernLore(Item item, Supplier tagSupplier, Context context) { - Tag loreTag = item.getSparrowNBTComponent(ComponentTypes.LORE); + Tag loreTag = item.getSparrowNBTComponent(DataComponentTypes.LORE); boolean changed = false; if (!(loreTag instanceof ListTag listTag)) { return false; @@ -325,8 +325,8 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler rootMap = (Map) item.getJavaComponent(ComponentTypes.CUSTOM_DATA).orElse(null); + Map rootMap = (Map) item.getJavaComponent(DataComponentTypes.CUSTOM_DATA).orElse(null); if (rootMap == null) return null; Object currentObj = rootMap; for (int i = 0; i < path.length; i++) { @@ -70,7 +70,7 @@ public class ComponentItemFactory1_20_5 extends BukkitItemFactory customModelData(ComponentItemWrapper item) { - return item.getJavaComponent(ComponentTypes.CUSTOM_MODEL_DATA); + return item.getJavaComponent(DataComponentTypes.CUSTOM_MODEL_DATA); } @Override protected void customNameJson(ComponentItemWrapper item, String json) { if (json == null) { - item.resetComponent(ComponentTypes.CUSTOM_NAME); + item.resetComponent(DataComponentTypes.CUSTOM_NAME); } else { - item.setJavaComponent(ComponentTypes.CUSTOM_NAME, json); + item.setJavaComponent(DataComponentTypes.CUSTOM_NAME, json); } } @Override protected Optional customNameJson(ComponentItemWrapper item) { - return item.getJavaComponent(ComponentTypes.CUSTOM_NAME); + return item.getJavaComponent(DataComponentTypes.CUSTOM_NAME); } @Override protected void itemNameJson(ComponentItemWrapper item, String json) { if (json == null) { - item.resetComponent(ComponentTypes.ITEM_NAME); + item.resetComponent(DataComponentTypes.ITEM_NAME); } else { - item.setJavaComponent(ComponentTypes.ITEM_NAME, json); + item.setJavaComponent(DataComponentTypes.ITEM_NAME, json); } } @Override protected Optional itemNameJson(ComponentItemWrapper item) { - return item.getJavaComponent(ComponentTypes.ITEM_NAME); + return item.getJavaComponent(DataComponentTypes.ITEM_NAME); } @Override protected void skull(ComponentItemWrapper item, String skullData) { if (skullData == null) { - item.resetComponent(ComponentTypes.PROFILE); + item.resetComponent(DataComponentTypes.PROFILE); } else { Map profile = Map.of("properties", List.of(Map.of("name", "textures", "value", skullData))); - item.setJavaComponent(ComponentTypes.PROFILE, profile); + item.setJavaComponent(DataComponentTypes.PROFILE, profile); } } @Override protected Optional> loreJson(ComponentItemWrapper item) { - return item.getJavaComponent(ComponentTypes.LORE); + return item.getJavaComponent(DataComponentTypes.LORE); } @Override protected void loreJson(ComponentItemWrapper item, List lore) { if (lore == null || lore.isEmpty()) { - item.resetComponent(ComponentTypes.LORE); + item.resetComponent(DataComponentTypes.LORE); } else { - item.setJavaComponent(ComponentTypes.LORE, lore); + item.setJavaComponent(DataComponentTypes.LORE, lore); } } @Override protected boolean unbreakable(ComponentItemWrapper item) { - return item.hasComponent(ComponentTypes.UNBREAKABLE); + return item.hasComponent(DataComponentTypes.UNBREAKABLE); } @Override protected void unbreakable(ComponentItemWrapper item, boolean unbreakable) { if (unbreakable) { - item.setJavaComponent(ComponentTypes.UNBREAKABLE, Map.of()); + item.setJavaComponent(DataComponentTypes.UNBREAKABLE, Map.of()); } else { - item.resetComponent(ComponentTypes.UNBREAKABLE); + item.resetComponent(DataComponentTypes.UNBREAKABLE); } } @Override protected Optional glint(ComponentItemWrapper item) { - return Optional.ofNullable((Boolean) item.getComponentExact(ComponentTypes.ENCHANTMENT_GLINT_OVERRIDE)); + return Optional.ofNullable((Boolean) item.getComponentExact(DataComponentTypes.ENCHANTMENT_GLINT_OVERRIDE)); } @Override protected void glint(ComponentItemWrapper item, Boolean glint) { if (glint == null) { - item.resetComponent(ComponentTypes.ENCHANTMENT_GLINT_OVERRIDE); + item.resetComponent(DataComponentTypes.ENCHANTMENT_GLINT_OVERRIDE); } else { - item.setJavaComponent(ComponentTypes.ENCHANTMENT_GLINT_OVERRIDE, glint); + item.setJavaComponent(DataComponentTypes.ENCHANTMENT_GLINT_OVERRIDE, glint); } } @Override protected Optional damage(ComponentItemWrapper item) { - return item.getJavaComponent(ComponentTypes.DAMAGE); + return item.getJavaComponent(DataComponentTypes.DAMAGE); } @Override protected void damage(ComponentItemWrapper item, Integer damage) { if (damage == null) { - item.resetComponent(ComponentTypes.DAMAGE); + item.resetComponent(DataComponentTypes.DAMAGE); } else { - item.setJavaComponent(ComponentTypes.DAMAGE, damage); + item.setJavaComponent(DataComponentTypes.DAMAGE, damage); } } @Override protected Optional dyedColor(ComponentItemWrapper item) { - if (!item.hasComponent(ComponentTypes.DYED_COLOR)) return Optional.empty(); - Object javaObj = getJavaComponent(item, ComponentTypes.DYED_COLOR); + if (!item.hasComponent(DataComponentTypes.DYED_COLOR)) return Optional.empty(); + Object javaObj = getJavaComponent(item, DataComponentTypes.DYED_COLOR); if (javaObj instanceof Integer integer) { return Optional.of(Color.fromDecimal(integer)); } else if (javaObj instanceof Map map) { @@ -400,30 +400,30 @@ public class ComponentItemFactory1_20_5 extends BukkitItemFactory damage = item.getJavaComponent(ComponentTypes.MAX_DAMAGE); + Optional damage = item.getJavaComponent(DataComponentTypes.MAX_DAMAGE); return damage.orElseGet(() -> (int) item.getItem().getType().getMaxDurability()); } @Override protected void maxDamage(ComponentItemWrapper item, Integer damage) { if (damage == null) { - item.resetComponent(ComponentTypes.MAX_DAMAGE); + item.resetComponent(DataComponentTypes.MAX_DAMAGE); } else { - item.setJavaComponent(ComponentTypes.MAX_DAMAGE, damage); + item.setJavaComponent(DataComponentTypes.MAX_DAMAGE, damage); } } @Override protected Optional getEnchantment(ComponentItemWrapper item, Key key) { - Object enchant = item.getComponentExact(ComponentTypes.ENCHANTMENTS); + Object enchant = item.getComponentExact(DataComponentTypes.ENCHANTMENTS); if (enchant == null) return Optional.empty(); try { Map map = EnchantmentUtils.toMap(enchant); @@ -439,26 +439,26 @@ public class ComponentItemFactory1_20_5 extends BukkitItemFactory enchantments) { if (enchantments == null || enchantments.isEmpty()) { - item.resetComponent(ComponentTypes.ENCHANTMENTS); + item.resetComponent(DataComponentTypes.ENCHANTMENTS); } else { Map enchants = new HashMap<>(); for (Enchantment enchantment : enchantments) { enchants.put(enchantment.id().toString(), enchantment.level()); } - item.setJavaComponent(ComponentTypes.ENCHANTMENTS, enchants); + item.setJavaComponent(DataComponentTypes.ENCHANTMENTS, enchants); } } @Override protected void storedEnchantments(ComponentItemWrapper item, List enchantments) { if (enchantments == null || enchantments.isEmpty()) { - item.resetComponent(ComponentTypes.STORED_ENCHANTMENTS); + item.resetComponent(DataComponentTypes.STORED_ENCHANTMENTS); } else { Map enchants = new HashMap<>(); for (Enchantment enchantment : enchantments) { enchants.put(enchantment.id().toString(), enchantment.level()); } - item.setJavaComponent(ComponentTypes.STORED_ENCHANTMENTS, enchants); + item.setJavaComponent(DataComponentTypes.STORED_ENCHANTMENTS, enchants); } } @@ -469,39 +469,39 @@ public class ComponentItemFactory1_20_5 extends BukkitItemFactory stackSize = item.getJavaComponent(ComponentTypes.MAX_STACK_SIZE); + Optional stackSize = item.getJavaComponent(DataComponentTypes.MAX_STACK_SIZE); return stackSize.orElseGet(() -> item.getItem().getType().getMaxStackSize()); } @Override protected void maxStackSize(ComponentItemWrapper item, Integer maxStackSize) { if (maxStackSize == null) { - item.resetComponent(ComponentTypes.MAX_STACK_SIZE); + item.resetComponent(DataComponentTypes.MAX_STACK_SIZE); } else { - item.setJavaComponent(ComponentTypes.MAX_STACK_SIZE, maxStackSize); + item.setJavaComponent(DataComponentTypes.MAX_STACK_SIZE, maxStackSize); } } @Override protected void repairCost(ComponentItemWrapper item, Integer data) { if (data == null) { - item.resetComponent(ComponentTypes.REPAIR_COST); + item.resetComponent(DataComponentTypes.REPAIR_COST); } else { - item.setJavaComponent(ComponentTypes.REPAIR_COST, data); + item.setJavaComponent(DataComponentTypes.REPAIR_COST, data); } } @Override protected Optional repairCost(ComponentItemWrapper item) { - return item.getJavaComponent(ComponentTypes.REPAIR_COST); + return item.getJavaComponent(DataComponentTypes.REPAIR_COST); } @Override protected void trim(ComponentItemWrapper item, Trim trim) { if (trim == null) { - item.resetComponent(ComponentTypes.TRIM); + item.resetComponent(DataComponentTypes.TRIM); } else { - item.setJavaComponent(ComponentTypes.TRIM, Map.of( + item.setJavaComponent(DataComponentTypes.TRIM, Map.of( "pattern", trim.pattern().asString(), "material", trim.material().asString() )); @@ -510,7 +510,7 @@ public class ComponentItemFactory1_20_5 extends BukkitItemFactory trim(ComponentItemWrapper item) { - Optional trim = item.getJavaComponent(ComponentTypes.TRIM); + Optional trim = item.getJavaComponent(DataComponentTypes.TRIM); if (trim.isEmpty()) { return Optional.empty(); } @@ -522,7 +522,7 @@ public class ComponentItemFactory1_20_5 extends BukkitItemFactory fireworkExplosion(ComponentItemWrapper item) { - Optional optionalExplosion = item.getJavaComponent(ComponentTypes.FIREWORK_EXPLOSION); + Optional optionalExplosion = item.getJavaComponent(DataComponentTypes.FIREWORK_EXPLOSION); if (optionalExplosion.isEmpty()) return Optional.empty(); Map explosions = MiscUtils.castToMap(optionalExplosion.get(), false); FireworkExplosion.Shape shape = Optional.ofNullable(FireworkExplosion.Shape.byName((String) explosions.get("shape"))).orElse(FireworkExplosion.Shape.SMALL_BALL); @@ -542,9 +542,9 @@ public class ComponentItemFactory1_20_5 extends BukkitItemFactory modifierList) { - CompoundTag compoundTag = (CompoundTag) item.getSparrowNBTComponent(ComponentKeys.ATTRIBUTE_MODIFIERS).orElseGet(CompoundTag::new); + CompoundTag compoundTag = (CompoundTag) item.getSparrowNBTComponent(DataComponentKeys.ATTRIBUTE_MODIFIERS).orElseGet(CompoundTag::new); ListTag modifiers = new ListTag(); compoundTag.put("modifiers", modifiers); for (AttributeModifier modifier : modifierList) { @@ -607,16 +607,16 @@ public class ComponentItemFactory1_20_5 extends BukkitItemFactory> blockState(ComponentItemWrapper item) { - return item.getJavaComponent(ComponentTypes.BLOCK_STATE); + return item.getJavaComponent(DataComponentTypes.BLOCK_STATE); } @Override protected void blockState(ComponentItemWrapper item, Map state) { - item.setJavaComponent(ComponentTypes.BLOCK_STATE, state); + item.setJavaComponent(DataComponentTypes.BLOCK_STATE, state); } } \ No newline at end of file diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21.java index c59058968..c2de613b5 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21.java @@ -1,7 +1,7 @@ package net.momirealms.craftengine.bukkit.item.factory; import net.momirealms.craftengine.bukkit.item.ComponentItemWrapper; -import net.momirealms.craftengine.bukkit.item.ComponentTypes; +import net.momirealms.craftengine.bukkit.item.DataComponentTypes; import net.momirealms.craftengine.core.item.data.JukeboxPlayable; import net.momirealms.craftengine.core.plugin.CraftEngine; @@ -16,7 +16,7 @@ public class ComponentItemFactory1_21 extends ComponentItemFactory1_20_5 { @Override protected Optional jukeboxSong(ComponentItemWrapper item) { - Optional> map = item.getJavaComponent(ComponentTypes.JUKEBOX_PLAYABLE); + Optional> map = item.getJavaComponent(DataComponentTypes.JUKEBOX_PLAYABLE); return map.map(song -> new JukeboxPlayable( (String) song.get("song"), (boolean) song.getOrDefault("show_in_tooltip", true)) @@ -25,7 +25,7 @@ public class ComponentItemFactory1_21 extends ComponentItemFactory1_20_5 { @Override protected void jukeboxSong(ComponentItemWrapper item, JukeboxPlayable data) { - item.setJavaComponent(ComponentTypes.JUKEBOX_PLAYABLE, Map.of( + item.setJavaComponent(DataComponentTypes.JUKEBOX_PLAYABLE, Map.of( "song", data.song(), "show_in_tooltip", true )); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_2.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_2.java index 99263f9d8..a183a8864 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_2.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_2.java @@ -1,7 +1,7 @@ package net.momirealms.craftengine.bukkit.item.factory; import net.momirealms.craftengine.bukkit.item.ComponentItemWrapper; -import net.momirealms.craftengine.bukkit.item.ComponentTypes; +import net.momirealms.craftengine.bukkit.item.DataComponentTypes; import net.momirealms.craftengine.core.entity.EquipmentSlot; import net.momirealms.craftengine.core.item.setting.EquipmentData; import net.momirealms.craftengine.core.plugin.CraftEngine; @@ -21,43 +21,43 @@ public class ComponentItemFactory1_21_2 extends ComponentItemFactory1_21 { @Override protected void tooltipStyle(ComponentItemWrapper item, String data) { if (data == null) { - item.resetComponent(ComponentTypes.TOOLTIP_STYLE); + item.resetComponent(DataComponentTypes.TOOLTIP_STYLE); } else { - item.setJavaComponent(ComponentTypes.TOOLTIP_STYLE, data); + item.setJavaComponent(DataComponentTypes.TOOLTIP_STYLE, data); } } @Override protected Optional tooltipStyle(ComponentItemWrapper item) { - return item.getJavaComponent(ComponentTypes.TOOLTIP_STYLE); + return item.getJavaComponent(DataComponentTypes.TOOLTIP_STYLE); } @Override protected void itemModel(ComponentItemWrapper item, String data) { if (data == null) { - item.resetComponent(ComponentTypes.ITEM_MODEL); + item.resetComponent(DataComponentTypes.ITEM_MODEL); } else { - item.setJavaComponent(ComponentTypes.ITEM_MODEL, data); + item.setJavaComponent(DataComponentTypes.ITEM_MODEL, data); } } @Override protected Optional itemModel(ComponentItemWrapper item) { - return item.getJavaComponent(ComponentTypes.ITEM_MODEL); + return item.getJavaComponent(DataComponentTypes.ITEM_MODEL); } @Override protected void equippable(ComponentItemWrapper item, EquipmentData data) { if (data == null) { - item.resetComponent(ComponentTypes.EQUIPPABLE); + item.resetComponent(DataComponentTypes.EQUIPPABLE); } else { - item.setSparrowNBTComponent(ComponentTypes.EQUIPPABLE, data.toNBT()); + item.setSparrowNBTComponent(DataComponentTypes.EQUIPPABLE, data.toNBT()); } } @Override protected Optional equippable(ComponentItemWrapper item) { - Optional optionalData = item.getJavaComponent(ComponentTypes.EQUIPPABLE); + Optional optionalData = item.getJavaComponent(DataComponentTypes.EQUIPPABLE); if (optionalData.isEmpty()) return Optional.empty(); Map data = MiscUtils.castToMap(optionalData.get(), false); String slot = data.get("slot").toString(); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_4.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_4.java index df4ed6d31..32ecbd377 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_4.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_4.java @@ -1,7 +1,7 @@ package net.momirealms.craftengine.bukkit.item.factory; import net.momirealms.craftengine.bukkit.item.ComponentItemWrapper; -import net.momirealms.craftengine.bukkit.item.ComponentTypes; +import net.momirealms.craftengine.bukkit.item.DataComponentTypes; import net.momirealms.craftengine.core.plugin.CraftEngine; import java.util.List; @@ -16,7 +16,7 @@ public class ComponentItemFactory1_21_4 extends ComponentItemFactory1_21_2 { @Override protected Optional customModelData(ComponentItemWrapper item) { - Optional optional = item.getJavaComponent(ComponentTypes.CUSTOM_MODEL_DATA); + Optional optional = item.getJavaComponent(DataComponentTypes.CUSTOM_MODEL_DATA); if (optional.isEmpty()) return Optional.empty(); @SuppressWarnings("unchecked") Map data = (Map) optional.get(); @@ -29,9 +29,9 @@ public class ComponentItemFactory1_21_4 extends ComponentItemFactory1_21_2 { @Override protected void customModelData(ComponentItemWrapper item, Integer data) { if (data == null) { - item.resetComponent(ComponentTypes.CUSTOM_MODEL_DATA); + item.resetComponent(DataComponentTypes.CUSTOM_MODEL_DATA); } else { - item.setJavaComponent(ComponentTypes.CUSTOM_MODEL_DATA, Map.of("floats", List.of(data.floatValue()))); + item.setJavaComponent(DataComponentTypes.CUSTOM_MODEL_DATA, Map.of("floats", List.of(data.floatValue()))); } } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_5.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_5.java index e8c513d0d..283f4f8ee 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_5.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/factory/ComponentItemFactory1_21_5.java @@ -4,9 +4,9 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import net.kyori.adventure.text.Component; import net.momirealms.craftengine.bukkit.item.ComponentItemWrapper; -import net.momirealms.craftengine.bukkit.item.ComponentTypes; +import net.momirealms.craftengine.bukkit.item.DataComponentTypes; import net.momirealms.craftengine.core.attribute.AttributeModifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.data.JukeboxPlayable; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.util.AdventureHelper; @@ -30,23 +30,23 @@ public class ComponentItemFactory1_21_5 extends ComponentItemFactory1_21_4 { @Override protected void customNameJson(ComponentItemWrapper item, String json) { if (json == null) { - item.resetComponent(ComponentTypes.CUSTOM_NAME); + item.resetComponent(DataComponentTypes.CUSTOM_NAME); } else { - item.setSparrowNBTComponent(ComponentTypes.CUSTOM_NAME, AdventureHelper.componentToNbt(AdventureHelper.jsonToComponent(json))); + item.setSparrowNBTComponent(DataComponentTypes.CUSTOM_NAME, AdventureHelper.componentToNbt(AdventureHelper.jsonToComponent(json))); } } @Override protected Optional customNameJson(ComponentItemWrapper item) { - return item.getJsonComponent(ComponentTypes.CUSTOM_NAME).map(it -> GsonHelper.get().toJson(it)); + return item.getJsonComponent(DataComponentTypes.CUSTOM_NAME).map(it -> GsonHelper.get().toJson(it)); } @Override protected void customNameComponent(ComponentItemWrapper item, Component component) { if (component == null) { - item.resetComponent(ComponentTypes.CUSTOM_NAME); + item.resetComponent(DataComponentTypes.CUSTOM_NAME); } else { - item.setSparrowNBTComponent(ComponentTypes.CUSTOM_NAME, AdventureHelper.componentToNbt(component)); + item.setSparrowNBTComponent(DataComponentTypes.CUSTOM_NAME, AdventureHelper.componentToNbt(component)); } } @@ -58,30 +58,30 @@ public class ComponentItemFactory1_21_5 extends ComponentItemFactory1_21_4 { @Override protected void itemNameJson(ComponentItemWrapper item, String json) { if (json == null) { - item.resetComponent(ComponentTypes.ITEM_NAME); + item.resetComponent(DataComponentTypes.ITEM_NAME); } else { - item.setSparrowNBTComponent(ComponentTypes.ITEM_NAME, AdventureHelper.componentToNbt(AdventureHelper.jsonToComponent(json))); + item.setSparrowNBTComponent(DataComponentTypes.ITEM_NAME, AdventureHelper.componentToNbt(AdventureHelper.jsonToComponent(json))); } } @Override protected void itemNameComponent(ComponentItemWrapper item, Component component) { if (component == null) { - item.resetComponent(ComponentTypes.ITEM_NAME); + item.resetComponent(DataComponentTypes.ITEM_NAME); } else { - item.setSparrowNBTComponent(ComponentTypes.ITEM_NAME, AdventureHelper.componentToNbt(component)); + item.setSparrowNBTComponent(DataComponentTypes.ITEM_NAME, AdventureHelper.componentToNbt(component)); } } @Override protected Optional itemNameJson(ComponentItemWrapper item) { - return item.getJsonComponent(ComponentTypes.ITEM_NAME).map(it -> GsonHelper.get().toJson(it)); + return item.getJsonComponent(DataComponentTypes.ITEM_NAME).map(it -> GsonHelper.get().toJson(it)); } @Override protected Optional> loreJson(ComponentItemWrapper item) { - if (!item.hasComponent(ComponentTypes.LORE)) return Optional.empty(); - Optional json = item.getJsonComponent(ComponentTypes.LORE); + if (!item.hasComponent(DataComponentTypes.LORE)) return Optional.empty(); + Optional json = item.getJsonComponent(DataComponentTypes.LORE); if (json.isEmpty()) return Optional.empty(); List lore = new ArrayList<>(); for (JsonElement jsonElement : (JsonArray) json.get()) { @@ -93,40 +93,40 @@ public class ComponentItemFactory1_21_5 extends ComponentItemFactory1_21_4 { @Override protected void loreComponent(ComponentItemWrapper item, List lore) { if (lore == null || lore.isEmpty()) { - item.resetComponent(ComponentTypes.LORE); + item.resetComponent(DataComponentTypes.LORE); } else { List loreTags = new ArrayList<>(); for (Component component : lore) { loreTags.add(AdventureHelper.componentToTag(component)); } - item.setSparrowNBTComponent(ComponentTypes.LORE, new ListTag(loreTags)); + item.setSparrowNBTComponent(DataComponentTypes.LORE, new ListTag(loreTags)); } } @Override protected void loreJson(ComponentItemWrapper item, List lore) { if (lore == null || lore.isEmpty()) { - item.resetComponent(ComponentTypes.LORE); + item.resetComponent(DataComponentTypes.LORE); } else { List loreTags = new ArrayList<>(); for (String json : lore) { loreTags.add(AdventureHelper.componentToTag(AdventureHelper.jsonToComponent(json))); } - item.setSparrowNBTComponent(ComponentTypes.LORE, new ListTag(loreTags)); + item.setSparrowNBTComponent(DataComponentTypes.LORE, new ListTag(loreTags)); } } @Override protected Optional jukeboxSong(ComponentItemWrapper item) { - if (!item.hasComponent(ComponentTypes.JUKEBOX_PLAYABLE)) return Optional.empty(); - String song = (String) item.getJavaComponent(ComponentTypes.JUKEBOX_PLAYABLE).orElse(null); + if (!item.hasComponent(DataComponentTypes.JUKEBOX_PLAYABLE)) return Optional.empty(); + String song = (String) item.getJavaComponent(DataComponentTypes.JUKEBOX_PLAYABLE).orElse(null); if (song == null) return Optional.empty(); return Optional.of(new JukeboxPlayable(song, true)); } @Override protected void jukeboxSong(ComponentItemWrapper item, JukeboxPlayable data) { - item.setJavaComponent(ComponentTypes.JUKEBOX_PLAYABLE, data.song()); + item.setJavaComponent(DataComponentTypes.JUKEBOX_PLAYABLE, data.song()); } @Override @@ -151,6 +151,6 @@ public class ComponentItemFactory1_21_5 extends ComponentItemFactory1_21_4 { } modifiers.add(modifierTag); } - item.setSparrowNBTComponent(ComponentKeys.ATTRIBUTE_MODIFIERS, modifiers); + item.setSparrowNBTComponent(DataComponentKeys.ATTRIBUTE_MODIFIERS, modifiers); } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java index caea4c06b..419e561d7 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java @@ -4,7 +4,7 @@ import com.destroystokyo.paper.event.inventory.PrepareResultEvent; import net.kyori.adventure.text.Component; import net.momirealms.craftengine.bukkit.api.BukkitAdaptors; import net.momirealms.craftengine.bukkit.item.BukkitItemManager; -import net.momirealms.craftengine.bukkit.item.ComponentTypes; +import net.momirealms.craftengine.bukkit.item.DataComponentTypes; import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; import net.momirealms.craftengine.bukkit.plugin.reflection.bukkit.CraftBukkitReflections; @@ -329,11 +329,11 @@ public class RecipeEventListener implements Listener { Item wrappedResult = BukkitItemManager.instance().wrap(event.getResult()); if (!firstCustomItem.settings().canEnchant()) { - Object previousEnchantment = wrappedFirst.getExactComponent(ComponentTypes.ENCHANTMENTS); + Object previousEnchantment = wrappedFirst.getExactComponent(DataComponentTypes.ENCHANTMENTS); if (previousEnchantment != null) { - wrappedResult.setExactComponent(ComponentTypes.ENCHANTMENTS, previousEnchantment); + wrappedResult.setExactComponent(DataComponentTypes.ENCHANTMENTS, previousEnchantment); } else { - wrappedResult.resetComponent(ComponentTypes.ENCHANTMENTS); + wrappedResult.resetComponent(DataComponentTypes.ENCHANTMENTS); } } } @@ -440,7 +440,7 @@ public class RecipeEventListener implements Listener { } catch (ReflectiveOperationException e) { plugin.logger().warn("Failed to get hover name", e); } - } else if (VersionHelper.isOrAbove1_20_5() && wrappedFirst.hasComponent(ComponentTypes.CUSTOM_NAME)) { + } else if (VersionHelper.isOrAbove1_20_5() && wrappedFirst.hasComponent(DataComponentTypes.CUSTOM_NAME)) { repairCost += 1; wrappedFirst.customNameJson(null); } else if (!VersionHelper.isOrAbove1_20_5() && wrappedFirst.hasTag("display", "Name")) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitCraftEngine.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitCraftEngine.java index 43c8a652d..ee55bd30c 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitCraftEngine.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitCraftEngine.java @@ -87,7 +87,7 @@ public class BukkitCraftEngine extends CraftEngine { super.sharedClassPathAppender = sharedClassPathAppender; super.privateClassPathAppender = privateClassPathAppender; super.logger = logger; - super.platform = new BukkitPlatform(); + super.platform = new BukkitPlatform(this); super.scheduler = new BukkitSchedulerAdapter(this); Class compatibilityClass = ReflectionUtils.getClazz(COMPATIBILITY_CLASS); if (compatibilityClass != null) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitPlatform.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitPlatform.java index dfccb590f..171b48994 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitPlatform.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitPlatform.java @@ -2,11 +2,18 @@ package net.momirealms.craftengine.bukkit.plugin; import com.google.gson.JsonElement; import com.mojang.brigadier.exceptions.CommandSyntaxException; +import net.kyori.adventure.text.Component; import net.momirealms.craftengine.bukkit.api.BukkitAdaptors; import net.momirealms.craftengine.bukkit.nms.FastNMS; +import net.momirealms.craftengine.bukkit.plugin.reflection.bukkit.CraftBukkitReflections; +import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MRegistryOps; +import net.momirealms.craftengine.bukkit.util.ComponentUtils; +import net.momirealms.craftengine.bukkit.util.LegacyInventoryUtils; import net.momirealms.craftengine.bukkit.util.ParticleUtils; import net.momirealms.craftengine.bukkit.world.particle.BukkitParticleType; +import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.item.trade.MerchantOffer; import net.momirealms.craftengine.core.plugin.Platform; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.util.Key; @@ -16,10 +23,19 @@ import net.momirealms.sparrow.nbt.CompoundTag; import net.momirealms.sparrow.nbt.Tag; import org.bukkit.Bukkit; import org.bukkit.Particle; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.Merchant; +import org.bukkit.inventory.MerchantRecipe; +import java.util.List; import java.util.Map; public class BukkitPlatform implements Platform { + private final BukkitCraftEngine plugin; + + public BukkitPlatform(BukkitCraftEngine plugin) { + this.plugin = plugin; + } @Override public void dispatchCommand(String command) { @@ -76,4 +92,26 @@ public class BukkitPlatform implements Platform { } return new BukkitParticleType(particle, name); } + + @Override + public void openMerchant(Player player, Component title, List> offers) { + Merchant merchant = Bukkit.createMerchant(); + List recipes = merchant.getRecipes(); + for (MerchantOffer offer : offers) { + MerchantRecipe merchantRecipe = new MerchantRecipe((ItemStack) offer.result().getItem(), 0, Integer.MAX_VALUE, offer.xp() > 0, offer.xp(), 0); + merchantRecipe.addIngredient((ItemStack) offer.cost1().getItem()); + offer.cost2().ifPresent(it -> merchantRecipe.addIngredient((ItemStack) it.getItem())); + recipes.add(merchantRecipe); + } + merchant.setRecipes(recipes); + if (title != null) { + try { + Object minecraftMerchant = CraftBukkitReflections.method$CraftMerchant$getMerchant.invoke(merchant); + CraftBukkitReflections.field$MinecraftMerchant$title.set(minecraftMerchant, ComponentUtils.adventureToMinecraft(title)); + } catch (ReflectiveOperationException e) { + this.plugin.logger().warn("Failed to update merchant title", e); + } + } + LegacyInventoryUtils.openMerchant((org.bukkit.entity.Player) player.platformPlayer(), merchant); + } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/TotemAnimationCommand.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/TotemAnimationCommand.java index 0545ee0b4..ea75683d3 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/TotemAnimationCommand.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/TotemAnimationCommand.java @@ -2,7 +2,7 @@ package net.momirealms.craftengine.bukkit.plugin.command.feature; import net.kyori.adventure.text.Component; import net.momirealms.craftengine.bukkit.api.BukkitAdaptors; -import net.momirealms.craftengine.bukkit.item.ComponentTypes; +import net.momirealms.craftengine.bukkit.item.DataComponentTypes; import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.command.BukkitCommandFeature; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; @@ -95,7 +95,7 @@ public class TotemAnimationCommand extends BukkitCommandFeature { BukkitServerPlayer serverPlayer = BukkitAdaptors.adapt(player); Item item = customItem.buildItem(serverPlayer); if (VersionHelper.isOrAbove1_21_2()) { - item.setJavaComponent(ComponentTypes.DEATH_PROTECTION, Map.of()); + item.setJavaComponent(DataComponentTypes.DEATH_PROTECTION, Map.of()); } PlayerUtils.sendTotemAnimation(serverPlayer, item, soundData, removeSound); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/gui/BukkitGuiManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/gui/BukkitGuiManager.java index 65feeb73d..06c01928f 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/gui/BukkitGuiManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/gui/BukkitGuiManager.java @@ -22,9 +22,9 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.inventory.InventoryDragEvent; import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.MerchantRecipe; public class BukkitGuiManager implements GuiManager, Listener { -// private static final boolean useNewOpenInventory = ReflectionUtils.getDeclaredMethod(InventoryView.class, void.class, new String[]{"open"}) != null; private static BukkitGuiManager instance; private final BukkitCraftEngine plugin; @@ -43,31 +43,18 @@ public class BukkitGuiManager implements GuiManager, Listener { HandlerList.unregisterAll(this); } -// @SuppressWarnings("UnstableApiUsage") @Override public void openInventory(net.momirealms.craftengine.core.entity.player.Player player, GuiType guiType) { Player bukkitPlayer = (Player) player.platformPlayer(); -// if (useNewOpenInventory) { -// switch (guiType) { -// case ANVIL -> MenuType.ANVIL.create(bukkitPlayer).open(); -// case LOOM -> MenuType.LOOM.create(bukkitPlayer).open(); -// case ENCHANTMENT -> MenuType.ENCHANTMENT.create(bukkitPlayer).open(); -// case CRAFTING -> MenuType.CRAFTING.create(bukkitPlayer).open(); -// case CARTOGRAPHY -> MenuType.CARTOGRAPHY_TABLE.create(bukkitPlayer).open(); -// case SMITHING -> MenuType.SMITHING.create(bukkitPlayer).open(); -// case GRINDSTONE -> MenuType.GRINDSTONE.create(bukkitPlayer).open(); -// } -// } else { - switch (guiType) { - case ANVIL -> LegacyInventoryUtils.openAnvil(bukkitPlayer); - case LOOM -> LegacyInventoryUtils.openLoom(bukkitPlayer); - case GRINDSTONE -> LegacyInventoryUtils.openGrindstone(bukkitPlayer); - case SMITHING -> LegacyInventoryUtils.openSmithingTable(bukkitPlayer); - case CRAFTING -> LegacyInventoryUtils.openWorkbench(bukkitPlayer); - case ENCHANTMENT -> LegacyInventoryUtils.openEnchanting(bukkitPlayer); - case CARTOGRAPHY -> LegacyInventoryUtils.openCartographyTable(bukkitPlayer); - } -// } + switch (guiType) { + case ANVIL -> LegacyInventoryUtils.openAnvil(bukkitPlayer); + case LOOM -> LegacyInventoryUtils.openLoom(bukkitPlayer); + case GRINDSTONE -> LegacyInventoryUtils.openGrindstone(bukkitPlayer); + case SMITHING -> LegacyInventoryUtils.openSmithingTable(bukkitPlayer); + case CRAFTING -> LegacyInventoryUtils.openWorkbench(bukkitPlayer); + case ENCHANTMENT -> LegacyInventoryUtils.openEnchanting(bukkitPlayer); + case CARTOGRAPHY -> LegacyInventoryUtils.openCartographyTable(bukkitPlayer); + } } @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/RecipeInjector.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/RecipeInjector.java index d474df0f8..179b62e47 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/RecipeInjector.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/injector/RecipeInjector.java @@ -13,7 +13,7 @@ import net.bytebuddy.implementation.bind.annotation.RuntimeType; import net.bytebuddy.matcher.ElementMatcher; import net.bytebuddy.matcher.ElementMatchers; import net.momirealms.craftengine.bukkit.item.BukkitItemManager; -import net.momirealms.craftengine.bukkit.item.ComponentTypes; +import net.momirealms.craftengine.bukkit.item.DataComponentTypes; import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; import net.momirealms.craftengine.bukkit.util.ItemTags; @@ -245,7 +245,7 @@ public final class RecipeInjector { private static boolean isDamageableItem(Item item) { if (VersionHelper.isOrAbove1_20_5()) { - return item.hasComponent(ComponentTypes.MAX_DAMAGE) && item.hasComponent(ComponentTypes.DAMAGE); + return item.hasComponent(DataComponentTypes.MAX_DAMAGE) && item.hasComponent(DataComponentTypes.DAMAGE); } else { return FastNMS.INSTANCE.method$Item$canBeDepleted(FastNMS.INSTANCE.method$ItemStack$getItem(item.getLiteralObject())); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/bukkit/CraftBukkitReflections.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/bukkit/CraftBukkitReflections.java index 7d09bd51f..06546717e 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/bukkit/CraftBukkitReflections.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/bukkit/CraftBukkitReflections.java @@ -372,4 +372,24 @@ public final class CraftBukkitReflections { public static final Class clazz$MinecraftInventory = requireNonNull( ReflectionUtils.getClazz(BukkitReflectionUtils.assembleCBClass("inventory.CraftInventoryCustom$MinecraftInventory")) ); + + public static final Class clazz$CraftMerchant = requireNonNull( + ReflectionUtils.getClazz(BukkitReflectionUtils.assembleCBClass("inventory.CraftMerchant")) + ); + + public static final Method method$CraftMerchant$getMerchant = requireNonNull( + ReflectionUtils.getMethod(clazz$CraftMerchant, CoreReflections.clazz$Merchant) + ); + + public static final Class clazz$CraftMerchantCustom = requireNonNull( + ReflectionUtils.getClazz(BukkitReflectionUtils.assembleCBClass("inventory.CraftMerchantCustom")) + ); + + public static final Class clazz$CraftMerchantCustom$MinecraftMerchant = requireNonNull( + ReflectionUtils.getClazz(BukkitReflectionUtils.assembleCBClass("inventory.CraftMerchantCustom$MinecraftMerchant")) + ); + + public static final Field field$MinecraftMerchant$title = requireNonNull( + ReflectionUtils.getDeclaredField(clazz$CraftMerchantCustom$MinecraftMerchant, CoreReflections.clazz$Component, 0) + ); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java index 736271cfa..7df65621c 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java @@ -629,6 +629,17 @@ public final class CoreReflections { BukkitReflectionUtils.assembleMCClass("core.component.DataComponentType") ); + public static final Class clazz$TypedDataComponent = ReflectionUtils.getClazz( + BukkitReflectionUtils.assembleMCClass("core.component.TypedDataComponent") + ); + + // 1.21.5+ + public static final Class clazz$DataComponentPredicate$Type = MiscUtils.requireNonNullIf(ReflectionUtils.getClazz( + BukkitReflectionUtils.assembleMCClass("core.component.predicates.DataComponentPredicate$Type") + ), VersionHelper.isOrAbove1_21_5()); + + + public static final Method method$Registry$getId = requireNonNull( ReflectionUtils.getMethod(clazz$Registry, int.class, Object.class) ); @@ -4470,4 +4481,14 @@ public final class CoreReflections { "world.item.trading.ItemCost" ), VersionHelper.isOrAbove1_20_5() ); + + public static final Class clazz$MerchantOffer = requireNonNull(BukkitReflectionUtils.findReobfOrMojmapClass( + "world.item.trading.MerchantRecipe", + "world.item.trading.MerchantOffer" + )); + + public static final Class clazz$Merchant = requireNonNull(BukkitReflectionUtils.findReobfOrMojmapClass( + "world.item.trading.IMerchant", + "world.item.trading.Merchant" + )); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/MBuiltInRegistries.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/MBuiltInRegistries.java index 565ae69c3..3f757ad7a 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/MBuiltInRegistries.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/MBuiltInRegistries.java @@ -1,6 +1,7 @@ package net.momirealms.craftengine.bukkit.plugin.reflection.minecraft; import net.momirealms.craftengine.bukkit.plugin.reflection.ReflectionInitException; +import net.momirealms.craftengine.core.util.VersionHelper; import java.lang.reflect.Field; import java.lang.reflect.ParameterizedType; @@ -21,6 +22,7 @@ public final class MBuiltInRegistries { public static final Object RECIPE_TYPE; public static final Object PARTICLE_TYPE; public static final Object DATA_COMPONENT_TYPE; + public static final Object DATA_COMPONENT_PREDICATE_TYPE; public static final Object LOOT_POOL_ENTRY_TYPE; public static final Object GAME_EVENT; @@ -37,6 +39,7 @@ public final class MBuiltInRegistries { Object registries$Fluid = null; Object registries$RecipeType = null; Object registries$DataComponentType = null; + Object registries$DataComponentPredicateType = null; Object registries$LootPoolEntryType = null; Object registries$GameEvent = null; for (Field field : fields) { @@ -51,8 +54,10 @@ public final class MBuiltInRegistries { registries$EntityType = field.get(null); } else if (rawType == CoreReflections.clazz$RecipeType) { registries$RecipeType = field.get(null); - } else if (rawType == CoreReflections.clazz$DataComponentType && registries$DataComponentType == null) { + } else if (VersionHelper.isOrAbove1_20_5() && rawType == CoreReflections.clazz$DataComponentType && registries$DataComponentType == null) { registries$DataComponentType = field.get(null); + } else if (VersionHelper.isOrAbove1_21_5() && rawType == CoreReflections.clazz$DataComponentPredicate$Type) { + registries$DataComponentPredicateType = field.get(null); } } else { if (type == CoreReflections.clazz$Block) { @@ -87,6 +92,7 @@ public final class MBuiltInRegistries { LOOT_POOL_ENTRY_TYPE = requireNonNull(registries$LootPoolEntryType); DATA_COMPONENT_TYPE = registries$DataComponentType; GAME_EVENT = requireNonNull(registries$GameEvent); + DATA_COMPONENT_PREDICATE_TYPE = registries$DataComponentPredicateType; } catch (ReflectiveOperationException e) { throw new ReflectionInitException("Failed to init BuiltInRegistries", e); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/PlayerUtils.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/PlayerUtils.java index c0b242549..82b9b8113 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/PlayerUtils.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/PlayerUtils.java @@ -2,7 +2,7 @@ package net.momirealms.craftengine.bukkit.util; import com.mojang.datafixers.util.Pair; import net.momirealms.craftengine.bukkit.item.BukkitItemManager; -import net.momirealms.craftengine.bukkit.item.ComponentTypes; +import net.momirealms.craftengine.bukkit.item.DataComponentTypes; import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; @@ -64,7 +64,7 @@ public final class PlayerUtils { Item previousMainHandItem = player.getItemInHand(InteractionHand.MAIN_HAND); boolean isMainHandTotem; if (VersionHelper.isOrAbove1_21_2()) { - isMainHandTotem = previousMainHandItem.hasComponent(ComponentTypes.DEATH_PROTECTION); + isMainHandTotem = previousMainHandItem.hasComponent(DataComponentTypes.DEATH_PROTECTION); } else { isMainHandTotem = previousMainHandItem.id().equals(ItemKeys.TOTEM_OF_UNDYING); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ComponentIds.java b/core/src/main/java/net/momirealms/craftengine/core/item/DataComponentIds.java similarity index 81% rename from core/src/main/java/net/momirealms/craftengine/core/item/ComponentIds.java rename to core/src/main/java/net/momirealms/craftengine/core/item/DataComponentIds.java index 9cfa7771f..123dacc19 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ComponentIds.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/DataComponentIds.java @@ -1,7 +1,7 @@ package net.momirealms.craftengine.core.item; -public final class ComponentIds { - private ComponentIds() {} +public final class DataComponentIds { + private DataComponentIds() {} public static final String ITEM_NAME = "minecraft:item_name"; public static final String CUSTOM_NAME = "minecraft:custom_name"; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ComponentKeys.java b/core/src/main/java/net/momirealms/craftengine/core/item/DataComponentKeys.java similarity index 98% rename from core/src/main/java/net/momirealms/craftengine/core/item/ComponentKeys.java rename to core/src/main/java/net/momirealms/craftengine/core/item/DataComponentKeys.java index 6b4e70569..601f3046b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ComponentKeys.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/DataComponentKeys.java @@ -2,8 +2,8 @@ package net.momirealms.craftengine.core.item; import net.momirealms.craftengine.core.util.Key; -public final class ComponentKeys { - private ComponentKeys() {} +public final class DataComponentKeys { + private DataComponentKeys() {} public static final Key ATTRIBUTE_MODIFIERS = Key.of("minecraft", "attribute_modifiers"); public static final Key BANNER_PATTERN = Key.of("minecraft", "banner_patterns"); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/DataComponentPredicateKeys.java b/core/src/main/java/net/momirealms/craftengine/core/item/DataComponentPredicateKeys.java new file mode 100644 index 000000000..20c8a25ed --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/DataComponentPredicateKeys.java @@ -0,0 +1,22 @@ +package net.momirealms.craftengine.core.item; + +import net.momirealms.craftengine.core.util.Key; + +public final class DataComponentPredicateKeys { + private DataComponentPredicateKeys() {} + + public static final Key DAMAGE = Key.of("minecraft", "damage"); + public static final Key ENCHANTMENTS = Key.of("minecraft", "enchantments"); + public static final Key STORED_ENCHANTMENTS = Key.of("minecraft", "stored_enchantments"); + public static final Key POTIONS = Key.of("minecraft", "potion_contents"); + public static final Key CUSTOM_DATA = Key.of("minecraft", "custom_data"); + public static final Key CONTAINER = Key.of("minecraft", "container"); + public static final Key BUNDLE_CONTENTS = Key.of("minecraft", "bundle_contents"); + public static final Key FIREWORK_EXPLOSION = Key.of("minecraft", "firework_explosion"); + public static final Key FIREWORKS = Key.of("minecraft", "fireworks"); + public static final Key WRITABLE_BOOK = Key.of("minecraft", "writable_book_content"); + public static final Key WRITTEN_BOOK = Key.of("minecraft", "written_book_content"); + public static final Key ATTRIBUTE_MODIFIERS = Key.of("minecraft", "attribute_modifiers"); + public static final Key ARMOR_TRIM = Key.of("minecraft", "trim"); + public static final Key JUKEBOX_PLAYABLE = Key.of("minecraft", "jukebox_playable"); +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/equipment/TrimBasedEquipment.java b/core/src/main/java/net/momirealms/craftengine/core/item/equipment/TrimBasedEquipment.java index 6023fd20d..d620d30a0 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/equipment/TrimBasedEquipment.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/equipment/TrimBasedEquipment.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.equipment; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.modifier.HideTooltipModifier; import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; import net.momirealms.craftengine.core.item.modifier.TrimModifier; @@ -42,7 +42,7 @@ public class TrimBasedEquipment extends AbstractEquipment { public List> modifiers() { return List.of( new TrimModifier<>(Key.of(AbstractPackManager.NEW_TRIM_MATERIAL), this.assetId), - new HideTooltipModifier<>(List.of(ComponentKeys.TRIM)) + new HideTooltipModifier<>(List.of(DataComponentKeys.TRIM)) ); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ArgumentsModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ArgumentsModifier.java index b2b636f60..e5a534eba 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ArgumentsModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ArgumentsModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -37,13 +37,13 @@ public class ArgumentsModifier implements ItemDataModifier { @Override public Item apply(Item item, ItemBuildContext context) { if (VersionHelper.isOrAbove1_20_5()) { - CompoundTag customData = (CompoundTag) Optional.ofNullable(item.getSparrowNBTComponent(ComponentKeys.CUSTOM_DATA)).orElseGet(CompoundTag::new); + CompoundTag customData = (CompoundTag) Optional.ofNullable(item.getSparrowNBTComponent(DataComponentKeys.CUSTOM_DATA)).orElseGet(CompoundTag::new); CompoundTag argumentTag = new CompoundTag(); for (Map.Entry entry : this.arguments.entrySet()) { argumentTag.put(entry.getKey(), new StringTag(entry.getValue().get(context))); } customData.put(ARGUMENTS_TAG, argumentTag); - item.setNBTComponent(ComponentKeys.CUSTOM_DATA, customData); + item.setNBTComponent(DataComponentKeys.CUSTOM_DATA, customData); } else { Map processed = new HashMap<>(); for (Map.Entry entry : this.arguments.entrySet()) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/AttributeModifiersModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/AttributeModifiersModifier.java index a01272ffe..2c609babf 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/AttributeModifiersModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/AttributeModifiersModifier.java @@ -3,7 +3,7 @@ package net.momirealms.craftengine.core.item.modifier; import net.momirealms.craftengine.core.attribute.AttributeModifier; import net.momirealms.craftengine.core.attribute.Attributes; import net.momirealms.craftengine.core.attribute.Attributes1_21; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -115,7 +115,7 @@ public class AttributeModifiersModifier implements SimpleNetworkItemDataModif @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.ATTRIBUTE_MODIFIERS; + return DataComponentKeys.ATTRIBUTE_MODIFIERS; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/BlockStateModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/BlockStateModifier.java index 8cd170673..7ca29a9f5 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/BlockStateModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/BlockStateModifier.java @@ -2,7 +2,7 @@ package net.momirealms.craftengine.core.item.modifier; import net.momirealms.craftengine.core.block.BlockStateWrapper; import net.momirealms.craftengine.core.block.CustomBlockStateWrapper; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -47,7 +47,7 @@ public class BlockStateModifier implements SimpleNetworkItemDataModifier { @Override public Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.BLOCK_STATE; + return DataComponentKeys.BLOCK_STATE; } public static class Factory implements ItemDataModifierFactory { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ComponentsModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ComponentsModifier.java index 7e822a08d..143e4572f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ComponentsModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ComponentsModifier.java @@ -23,7 +23,7 @@ public class ComponentsModifier implements ItemDataModifier { List> pairs = new ArrayList<>(arguments.size()); for (Map.Entry entry : arguments.entrySet()) { Key key = Key.of(entry.getKey()); - if (key.equals(ComponentKeys.CUSTOM_DATA)) { + if (key.equals(DataComponentKeys.CUSTOM_DATA)) { this.customData = (CompoundTag) parseValue(entry.getValue()); } else { pairs.add(new Pair<>(key, parseValue(entry.getValue()))); @@ -58,14 +58,14 @@ public class ComponentsModifier implements ItemDataModifier { item.setNBTComponent(entry.left(), entry.right()); } if (this.customData != null) { - CompoundTag tag = (CompoundTag) item.getTag(ComponentKeys.CUSTOM_DATA); + CompoundTag tag = (CompoundTag) item.getTag(DataComponentKeys.CUSTOM_DATA); if (tag != null) { for (Map.Entry entry : this.customData.entrySet()) { tag.put(entry.getKey(), entry.getValue()); } - item.setComponent(ComponentKeys.CUSTOM_DATA, tag); + item.setComponent(DataComponentKeys.CUSTOM_DATA, tag); } else { - item.setComponent(ComponentKeys.CUSTOM_DATA, this.customData); + item.setComponent(DataComponentKeys.CUSTOM_DATA, this.customData); } } return item; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomModelDataModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomModelDataModifier.java index 9d1c68671..b704eac4a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomModelDataModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomModelDataModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -33,7 +33,7 @@ public class CustomModelDataModifier implements SimpleNetworkItemDataModifier @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.CUSTOM_MODEL_DATA; + return DataComponentKeys.CUSTOM_MODEL_DATA; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomNameModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomNameModifier.java index 0d2fb47c8..0b9b2653a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomNameModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomNameModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -45,7 +45,7 @@ public class CustomNameModifier implements SimpleNetworkItemDataModifier { @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.CUSTOM_NAME; + return DataComponentKeys.CUSTOM_NAME; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/DyedColorModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/DyedColorModifier.java index caa5441fc..0d84d467f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/DyedColorModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/DyedColorModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -35,7 +35,7 @@ public class DyedColorModifier implements SimpleNetworkItemDataModifier { @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.DYED_COLOR; + return DataComponentKeys.DYED_COLOR; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EnchantmentsModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EnchantmentsModifier.java index 24ce81ff0..24c55f3a1 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EnchantmentsModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EnchantmentsModifier.java @@ -40,7 +40,7 @@ public class EnchantmentsModifier implements SimpleNetworkItemDataModifier @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return item.vanillaId().equals(ItemKeys.ENCHANTED_BOOK) ? ComponentKeys.STORED_ENCHANTMENTS : ComponentKeys.ENCHANTMENTS; + return item.vanillaId().equals(ItemKeys.ENCHANTED_BOOK) ? DataComponentKeys.STORED_ENCHANTMENTS : DataComponentKeys.ENCHANTMENTS; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableAssetIdModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableAssetIdModifier.java index d6cb67ac6..3ceb9c999 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableAssetIdModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableAssetIdModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.setting.EquipmentData; @@ -42,6 +42,6 @@ public class EquippableAssetIdModifier implements SimpleNetworkItemDataModifi @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.EQUIPPABLE; + return DataComponentKeys.EQUIPPABLE; } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableModifier.java index 6570920da..51bb9b8ff 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -35,7 +35,7 @@ public class EquippableModifier implements SimpleNetworkItemDataModifier { @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.EQUIPPABLE; + return DataComponentKeys.EQUIPPABLE; } public static class Factory implements ItemDataModifierFactory { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/FoodModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/FoodModifier.java index 42fcb7f65..0405c2740 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/FoodModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/FoodModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -41,7 +41,7 @@ public class FoodModifier implements SimpleNetworkItemDataModifier { @Override public Item apply(Item item, ItemBuildContext context) { - item.setJavaComponent(ComponentKeys.FOOD, Map.of( + item.setJavaComponent(DataComponentKeys.FOOD, Map.of( "nutrition", this.nutrition, "saturation", this.saturation, "can_always_eat", this.canAlwaysEat @@ -51,7 +51,7 @@ public class FoodModifier implements SimpleNetworkItemDataModifier { @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.FOOD; + return DataComponentKeys.FOOD; } public static class Factory implements ItemDataModifierFactory { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/HideTooltipModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/HideTooltipModifier.java index e2b229923..e63ed942f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/HideTooltipModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/HideTooltipModifier.java @@ -19,34 +19,34 @@ public class HideTooltipModifier implements ItemDataModifier { public static final Factory FACTORY = new Factory<>(); public static final Map TO_LEGACY; public static final List COMPONENTS = List.of( - ComponentKeys.UNBREAKABLE, - ComponentKeys.ENCHANTMENTS, - ComponentKeys.STORED_ENCHANTMENTS, - ComponentKeys.CAN_PLACE_ON, - ComponentKeys.CAN_BREAK, - ComponentKeys.ATTRIBUTE_MODIFIERS, - ComponentKeys.DYED_COLOR, - ComponentKeys.TRIM, - ComponentKeys.JUKEBOX_PLAYABLE + DataComponentKeys.UNBREAKABLE, + DataComponentKeys.ENCHANTMENTS, + DataComponentKeys.STORED_ENCHANTMENTS, + DataComponentKeys.CAN_PLACE_ON, + DataComponentKeys.CAN_BREAK, + DataComponentKeys.ATTRIBUTE_MODIFIERS, + DataComponentKeys.DYED_COLOR, + DataComponentKeys.TRIM, + DataComponentKeys.JUKEBOX_PLAYABLE ); static { ImmutableMap.Builder builder = ImmutableMap.builder(); - builder.put(ComponentKeys.ENCHANTMENTS, 1); - builder.put(ComponentKeys.ATTRIBUTE_MODIFIERS, 2); - builder.put(ComponentKeys.UNBREAKABLE, 4); - builder.put(ComponentKeys.CAN_BREAK, 8); - builder.put(ComponentKeys.CAN_PLACE_ON, 16); - builder.put(ComponentKeys.STORED_ENCHANTMENTS, 32); - builder.put(ComponentKeys.POTION_CONTENTS, 32); - builder.put(ComponentKeys.WRITTEN_BOOK_CONTENT, 32); - builder.put(ComponentKeys.FIREWORKS, 32); - builder.put(ComponentKeys.FIREWORK_EXPLOSION, 32); - builder.put(ComponentKeys.BUNDLE_CONTENTS, 32); - builder.put(ComponentKeys.MAP_ID, 32); - builder.put(ComponentKeys.MAP_COLOR, 32); - builder.put(ComponentKeys.MAP_DECORATIONS, 32); - builder.put(ComponentKeys.DYED_COLOR, 64); - builder.put(ComponentKeys.TRIM, 128); + builder.put(DataComponentKeys.ENCHANTMENTS, 1); + builder.put(DataComponentKeys.ATTRIBUTE_MODIFIERS, 2); + builder.put(DataComponentKeys.UNBREAKABLE, 4); + builder.put(DataComponentKeys.CAN_BREAK, 8); + builder.put(DataComponentKeys.CAN_PLACE_ON, 16); + builder.put(DataComponentKeys.STORED_ENCHANTMENTS, 32); + builder.put(DataComponentKeys.POTION_CONTENTS, 32); + builder.put(DataComponentKeys.WRITTEN_BOOK_CONTENT, 32); + builder.put(DataComponentKeys.FIREWORKS, 32); + builder.put(DataComponentKeys.FIREWORK_EXPLOSION, 32); + builder.put(DataComponentKeys.BUNDLE_CONTENTS, 32); + builder.put(DataComponentKeys.MAP_ID, 32); + builder.put(DataComponentKeys.MAP_COLOR, 32); + builder.put(DataComponentKeys.MAP_DECORATIONS, 32); + builder.put(DataComponentKeys.DYED_COLOR, 64); + builder.put(DataComponentKeys.TRIM, 128); TO_LEGACY = builder.build(); } @@ -98,11 +98,11 @@ public class HideTooltipModifier implements ItemDataModifier { @Override public Item prepareNetworkItem(Item item, ItemBuildContext context, CompoundTag networkData) { if (VersionHelper.isOrAbove1_21_5()) { - Tag previous = item.getSparrowNBTComponent(ComponentKeys.TOOLTIP_DISPLAY); + Tag previous = item.getSparrowNBTComponent(DataComponentKeys.TOOLTIP_DISPLAY); if (previous != null) { - networkData.put(ComponentKeys.TOOLTIP_DISPLAY.asString(), NetworkItemHandler.pack(NetworkItemHandler.Operation.ADD, previous)); + networkData.put(DataComponentKeys.TOOLTIP_DISPLAY.asString(), NetworkItemHandler.pack(NetworkItemHandler.Operation.ADD, previous)); } else { - networkData.put(ComponentKeys.TOOLTIP_DISPLAY.asString(), NetworkItemHandler.pack(NetworkItemHandler.Operation.REMOVE)); + networkData.put(DataComponentKeys.TOOLTIP_DISPLAY.asString(), NetworkItemHandler.pack(NetworkItemHandler.Operation.REMOVE)); } } else if (VersionHelper.isOrAbove1_20_5()) { for (Key component : this.components) { @@ -210,9 +210,9 @@ public class HideTooltipModifier implements ItemDataModifier { @Override public void apply(Item item) { - Map data = MiscUtils.castToMap(item.getJavaComponent(ComponentKeys.TOOLTIP_DISPLAY), true); + Map data = MiscUtils.castToMap(item.getJavaComponent(DataComponentKeys.TOOLTIP_DISPLAY), true); if (data == null) { - item.setJavaComponent(ComponentKeys.TOOLTIP_DISPLAY, Map.of("hidden_components", this.components)); + item.setJavaComponent(DataComponentKeys.TOOLTIP_DISPLAY, Map.of("hidden_components", this.components)); } else { if (data.get("hidden_components") instanceof List list) { List hiddenComponents = list.stream().map(Object::toString).toList(); @@ -222,11 +222,11 @@ public class HideTooltipModifier implements ItemDataModifier { ).distinct().toList(); Map newData = new HashMap<>(data); newData.put("hidden_components", mergedComponents); - item.setJavaComponent(ComponentKeys.TOOLTIP_DISPLAY, newData); + item.setJavaComponent(DataComponentKeys.TOOLTIP_DISPLAY, newData); } else { Map newData = new HashMap<>(data); newData.put("hidden_components", this.components); - item.setJavaComponent(ComponentKeys.TOOLTIP_DISPLAY, newData); + item.setJavaComponent(DataComponentKeys.TOOLTIP_DISPLAY, newData); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemModelModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemModelModifier.java index c83be84d6..be7e74d35 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemModelModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemModelModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -31,7 +31,7 @@ public class ItemModelModifier implements SimpleNetworkItemDataModifier { @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.ITEM_MODEL; + return DataComponentKeys.ITEM_MODEL; } public static class Factory implements ItemDataModifierFactory { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemNameModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemNameModifier.java index c19f8bf10..fc4495311 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemNameModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemNameModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -36,7 +36,7 @@ public class ItemNameModifier implements SimpleNetworkItemDataModifier { @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.ITEM_NAME; + return DataComponentKeys.ITEM_NAME; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemVersionModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemVersionModifier.java index b3002918e..96b6b0a60 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemVersionModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemVersionModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.util.Key; @@ -29,9 +29,9 @@ public class ItemVersionModifier implements ItemDataModifier { @Override public Item apply(Item item, ItemBuildContext context) { if (VersionHelper.isOrAbove1_20_5()) { - CompoundTag customData = (CompoundTag) Optional.ofNullable(item.getSparrowNBTComponent(ComponentKeys.CUSTOM_DATA)).orElseGet(CompoundTag::new); + CompoundTag customData = (CompoundTag) Optional.ofNullable(item.getSparrowNBTComponent(DataComponentKeys.CUSTOM_DATA)).orElseGet(CompoundTag::new); customData.putInt(VERSION_TAG, this.version); - item.setNBTComponent(ComponentKeys.CUSTOM_DATA, customData); + item.setNBTComponent(DataComponentKeys.CUSTOM_DATA, customData); } else { item.setTag(this.version, VERSION_TAG); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/MaxDamageModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/MaxDamageModifier.java index 842e2892b..35546063f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/MaxDamageModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/MaxDamageModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -30,7 +30,7 @@ public class MaxDamageModifier implements SimpleNetworkItemDataModifier { @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.MAX_DAMAGE; + return DataComponentKeys.MAX_DAMAGE; } public static class Factory implements ItemDataModifierFactory { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/OverwritableItemNameModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/OverwritableItemNameModifier.java index 979e70716..50c20cdb6 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/OverwritableItemNameModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/OverwritableItemNameModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -19,7 +19,7 @@ public class OverwritableItemNameModifier implements SimpleNetworkItemDataMod @Override public Item apply(Item item, ItemBuildContext context) { if (VersionHelper.COMPONENT_RELEASE) { - if (item.hasNonDefaultComponent(ComponentKeys.ITEM_NAME)) { + if (item.hasNonDefaultComponent(DataComponentKeys.ITEM_NAME)) { return item; } } else { @@ -37,7 +37,7 @@ public class OverwritableItemNameModifier implements SimpleNetworkItemDataMod @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.ITEM_NAME; + return DataComponentKeys.ITEM_NAME; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/PDCModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/PDCModifier.java index d5cfdd402..2d1f9c2bf 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/PDCModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/PDCModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -30,9 +30,9 @@ public class PDCModifier implements ItemDataModifier { @Override public Item apply(Item item, ItemBuildContext context) { if (VersionHelper.isOrAbove1_20_5()) { - CompoundTag customData = (CompoundTag) Optional.ofNullable(item.getSparrowNBTComponent(ComponentKeys.CUSTOM_DATA)).orElseGet(CompoundTag::new); + CompoundTag customData = (CompoundTag) Optional.ofNullable(item.getSparrowNBTComponent(DataComponentKeys.CUSTOM_DATA)).orElseGet(CompoundTag::new); customData.put(BUKKIT_PDC, this.data); - item.setNBTComponent(ComponentKeys.CUSTOM_DATA, customData); + item.setNBTComponent(DataComponentKeys.CUSTOM_DATA, customData); } else { item.setTag(this.data, BUKKIT_PDC); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TagsModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TagsModifier.java index 6995c87a2..2dcec8ecd 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TagsModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TagsModifier.java @@ -39,11 +39,11 @@ public class TagsModifier implements ItemDataModifier { @Override public Item prepareNetworkItem(Item item, ItemBuildContext context, CompoundTag networkData) { if (VersionHelper.isOrAbove1_20_5()) { - Tag previous = item.getSparrowNBTComponent(ComponentKeys.CUSTOM_DATA); + Tag previous = item.getSparrowNBTComponent(DataComponentKeys.CUSTOM_DATA); if (previous != null) { - networkData.put(ComponentKeys.CUSTOM_DATA.asString(), NetworkItemHandler.pack(NetworkItemHandler.Operation.ADD, previous)); + networkData.put(DataComponentKeys.CUSTOM_DATA.asString(), NetworkItemHandler.pack(NetworkItemHandler.Operation.ADD, previous)); } else { - networkData.put(ComponentKeys.CUSTOM_DATA.asString(), NetworkItemHandler.pack(NetworkItemHandler.Operation.REMOVE)); + networkData.put(DataComponentKeys.CUSTOM_DATA.asString(), NetworkItemHandler.pack(NetworkItemHandler.Operation.REMOVE)); } } else { for (Map.Entry entry : this.arguments.entrySet()) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TooltipStyleModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TooltipStyleModifier.java index 573c484f5..4f94d8517 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TooltipStyleModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TooltipStyleModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -32,7 +32,7 @@ public class TooltipStyleModifier implements SimpleNetworkItemDataModifier @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.TOOLTIP_STYLE; + return DataComponentKeys.TOOLTIP_STYLE; } public static class Factory implements ItemDataModifierFactory { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TrimModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TrimModifier.java index f8e7d4257..ead1b7d12 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TrimModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TrimModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -43,7 +43,7 @@ public class TrimModifier implements SimpleNetworkItemDataModifier { @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.TRIM; + return DataComponentKeys.TRIM; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/UnbreakableModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/UnbreakableModifier.java index 6ce5c9893..8d8bd20d2 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/UnbreakableModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/UnbreakableModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -34,7 +34,7 @@ public class UnbreakableModifier implements SimpleNetworkItemDataModifier @Override public @Nullable Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.UNBREAKABLE; + return DataComponentKeys.UNBREAKABLE; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/DynamicLoreModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/DynamicLoreModifier.java index 8f60c4cca..8a97d988e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/DynamicLoreModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/DynamicLoreModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier.lore; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -45,7 +45,7 @@ public final class DynamicLoreModifier implements SimpleNetworkItemDataModifi @Override public Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.LORE; + return DataComponentKeys.LORE; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/LoreModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/LoreModifier.java index 63e494b3a..61839b7d8 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/LoreModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/LoreModifier.java @@ -1,7 +1,7 @@ package net.momirealms.craftengine.core.item.modifier.lore; import net.kyori.adventure.text.Component; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -30,7 +30,7 @@ public sealed interface LoreModifier extends SimpleNetworkItemDataModifier @Override @Nullable default Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.LORE; + return DataComponentKeys.LORE; } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/OverwritableLoreModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/OverwritableLoreModifier.java index 624eaf279..62a9d966e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/OverwritableLoreModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/lore/OverwritableLoreModifier.java @@ -1,6 +1,6 @@ package net.momirealms.craftengine.core.item.modifier.lore; -import net.momirealms.craftengine.core.item.ComponentKeys; +import net.momirealms.craftengine.core.item.DataComponentKeys; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemDataModifierFactory; @@ -27,7 +27,7 @@ public final class OverwritableLoreModifier implements SimpleNetworkItemDataM @Override public Item apply(Item item, ItemBuildContext context) { if (VersionHelper.COMPONENT_RELEASE) { - if (item.hasNonDefaultComponent(ComponentKeys.LORE)) { + if (item.hasNonDefaultComponent(DataComponentKeys.LORE)) { return item; } } else { @@ -40,7 +40,7 @@ public final class OverwritableLoreModifier implements SimpleNetworkItemDataM @Override public Key componentType(Item item, ItemBuildContext context) { - return ComponentKeys.LORE; + return DataComponentKeys.LORE; } @Override @@ -64,7 +64,7 @@ public final class OverwritableLoreModifier implements SimpleNetworkItemDataM @Override public Item prepareNetworkItem(Item item, ItemBuildContext context, CompoundTag networkData) { if (VersionHelper.COMPONENT_RELEASE) { - if (item.hasNonDefaultComponent(ComponentKeys.LORE)) { + if (item.hasNonDefaultComponent(DataComponentKeys.LORE)) { return item; } } else { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/Platform.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/Platform.java index 6a8ec531b..ea1942453 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/Platform.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/Platform.java @@ -1,11 +1,16 @@ package net.momirealms.craftengine.core.plugin; import com.google.gson.JsonElement; +import net.kyori.adventure.text.Component; +import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.item.trade.MerchantOffer; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.world.World; import net.momirealms.craftengine.core.world.particle.ParticleType; import net.momirealms.sparrow.nbt.Tag; +import java.util.List; + public interface Platform { void dispatchCommand(String command); @@ -21,4 +26,6 @@ public interface Platform { World getWorld(String name); ParticleType getParticleType(Key name); + + void openMerchant(Player player, Component title, List> offers); }