From dbb7834e0b2b9055c36c53746302624f15a93df7 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Fri, 26 Dec 2025 21:44:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9datamodifier=E4=B8=BAitemproc?= =?UTF-8?q?essor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../item/processor/ArgumentsProcessor.java | 1 + .../AttributeModifiersProcessor.java | 1 + .../item/processor/BlockStateProcessor.java | 1 + .../item/processor/ComponentsProcessor.java | 1 + .../item/processor/ConditionalProcessor.java | 1 + .../processor/CustomModelDataProcessor.java | 1 + .../item/processor/CustomNameProcessor.java | 1 + .../item/processor/DyedColorProcessor.java | 1 + .../item/processor/EnchantmentsProcessor.java | 1 + .../processor/EquippableAssetIdProcessor.java | 12 ++ .../item/processor/EquippableProcessor.java | 1 + .../processor/ExternalSourceProcessor.java | 1 + .../core/item/processor/FoodProcessor.java | 1 + .../item/processor/HideTooltipProcessor.java | 1 + .../core/item/processor/IdProcessor.java | 12 ++ .../item/processor/ItemModelProcessor.java | 3 + .../item/processor/ItemNameProcessor.java | 1 + .../core/item/processor/ItemProcessor.java | 1 - .../core/item/processor/ItemProcessors.java | 188 +++++++++--------- .../item/processor/ItemVersionProcessor.java | 1 - .../item/processor/JukeboxSongProcessor.java | 1 + .../item/processor/MaxDamageProcessor.java | 1 + .../OverwritableCustomModelDataProcessor.java | 1 + .../OverwritableItemModelProcessor.java | 1 + .../OverwritableItemNameProcessor.java | 1 + .../core/item/processor/PDCProcessor.java | 1 + .../processor/RemoveComponentProcessor.java | 1 + .../core/item/processor/TagsProcessor.java | 1 + .../item/processor/TooltipStyleProcessor.java | 1 + .../core/item/processor/TrimProcessor.java | 1 + .../item/processor/UnbreakableProcessor.java | 1 + .../processor/lore/DynamicLoreProcessor.java | 2 +- .../item/processor/lore/LoreProcessor.java | 4 +- .../lore/OverwritableLoreProcessor.java | 2 +- .../plugin/context/event/EventConditions.java | 2 +- .../core/registry/BuiltInRegistries.java | 4 +- .../craftengine/core/registry/Registries.java | 4 +- 37 files changed, 156 insertions(+), 104 deletions(-) diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/ArgumentsProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ArgumentsProcessor.java index bf8e4efe9..084cd938e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/ArgumentsProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ArgumentsProcessor.java @@ -17,6 +17,7 @@ import java.util.Map; import java.util.Optional; public class ArgumentsProcessor implements ItemProcessor { + public static final Key ID = Key.of("craftengine:arguments"); public static final ItemProcessorFactory FACTORY = new Factory<>(); public static final String ARGUMENTS_TAG = "craftengine:arguments"; private final Map arguments; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/AttributeModifiersProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/AttributeModifiersProcessor.java index 49a28c4f9..2240ee5c4 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/AttributeModifiersProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/AttributeModifiersProcessor.java @@ -15,6 +15,7 @@ import org.jetbrains.annotations.Nullable; import java.util.*; public class AttributeModifiersProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:attribute_modifiers"); public static final ItemProcessorFactory FACTORY = new Factory<>(); public static final Map CONVERTOR = new HashMap<>(); private static final Object[] NBT_PATH = new Object[]{"AttributeModifiers"}; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/BlockStateProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/BlockStateProcessor.java index df0f249aa..e245d3a70 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/BlockStateProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/BlockStateProcessor.java @@ -17,6 +17,7 @@ import java.util.Locale; import java.util.Map; public class BlockStateProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:blockstate"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private static final Object[] NBT_PATH = new Object[]{"BlockStateTag"}; private final LazyReference> wrapper; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/ComponentsProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ComponentsProcessor.java index a4ee18698..4fb19915e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/ComponentsProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ComponentsProcessor.java @@ -13,6 +13,7 @@ import java.util.List; import java.util.Map; public class ComponentsProcessor implements ItemProcessor { + public static final Key ID = Key.of("craftengine:components"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private final List> arguments; private CompoundTag customData = null; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/ConditionalProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ConditionalProcessor.java index f60d9d67f..d3535a4db 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/ConditionalProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ConditionalProcessor.java @@ -17,6 +17,7 @@ import java.util.Map; import java.util.function.Predicate; public class ConditionalProcessor implements ItemProcessor { + public static final Key ID = Key.of("craftengine:conditional"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private final Predicate condition; private final ItemProcessor[] modifiers; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/CustomModelDataProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/CustomModelDataProcessor.java index d088c85eb..9f65024b0 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/CustomModelDataProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/CustomModelDataProcessor.java @@ -9,6 +9,7 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import org.jetbrains.annotations.Nullable; public class CustomModelDataProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:custom_model_data"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private final int argument; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/CustomNameProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/CustomNameProcessor.java index df7cc1e8f..9ef536574 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/CustomNameProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/CustomNameProcessor.java @@ -10,6 +10,7 @@ import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.Nullable; public class CustomNameProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:custom_name"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private static final Object[] NBT_PATH = new Object[]{"display", "Name"}; private final String argument; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/DyedColorProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/DyedColorProcessor.java index 7455455b2..bf4d4eaf9 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/DyedColorProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/DyedColorProcessor.java @@ -11,6 +11,7 @@ import org.jetbrains.annotations.Nullable; import org.joml.Vector3f; public class DyedColorProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:dyed_color"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private static final Object[] NBT_PATH = new Object[]{"display", "color"}; private final Color color; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/EnchantmentsProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/EnchantmentsProcessor.java index 1a665ae07..740191d9f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/EnchantmentsProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/EnchantmentsProcessor.java @@ -14,6 +14,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; public class EnchantmentsProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:enchantments"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private static final Object[] STORED_ENCHANTMENTS = new Object[] {"StoredEnchantments"}; private static final Object[] ENCHANTMENTS = new Object[] {"Enchantments"}; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/EquippableAssetIdProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/EquippableAssetIdProcessor.java index 0c69d29ad..a6990b273 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/EquippableAssetIdProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/EquippableAssetIdProcessor.java @@ -3,6 +3,7 @@ package net.momirealms.craftengine.core.item.processor; 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.ItemProcessorFactory; import net.momirealms.craftengine.core.item.setting.EquipmentData; import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.Nullable; @@ -10,6 +11,8 @@ import org.jetbrains.annotations.Nullable; import java.util.Optional; public class EquippableAssetIdProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:equippable_asset_id"); + public static final ItemProcessorFactory FACTORY = new Factory<>(); private final Key assetId; public EquippableAssetIdProcessor(Key assetsId) { @@ -39,4 +42,13 @@ public class EquippableAssetIdProcessor implements SimpleNetworkItemProcessor public @Nullable Key componentType(Item item, ItemBuildContext context) { return DataComponentKeys.EQUIPPABLE; } + + private static class Factory implements ItemProcessorFactory { + + @Override + public ItemProcessor create(Object arg) { + String id = arg.toString(); + return new EquippableAssetIdProcessor<>(Key.of(id)); + } + } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/EquippableProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/EquippableProcessor.java index bc8686bcc..450184f84 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/EquippableProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/EquippableProcessor.java @@ -12,6 +12,7 @@ import org.jetbrains.annotations.Nullable; import java.util.Map; public class EquippableProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:equippable"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private final EquipmentData data; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/ExternalSourceProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ExternalSourceProcessor.java index 0ee299077..45c6be01c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/ExternalSourceProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ExternalSourceProcessor.java @@ -13,6 +13,7 @@ import org.jetbrains.annotations.NotNull; import java.util.*; public class ExternalSourceProcessor implements ItemProcessor { + public static final Key ID = Key.of("craftengine:external"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private static final ThreadLocal> BUILD_STACK = ThreadLocal.withInitial(LinkedHashSet::new); private final String id; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/FoodProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/FoodProcessor.java index 6eed073f8..fb5379e9b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/FoodProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/FoodProcessor.java @@ -11,6 +11,7 @@ import org.jetbrains.annotations.Nullable; import java.util.Map; public class FoodProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:food"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private final int nutrition; private final float saturation; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/HideTooltipProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/HideTooltipProcessor.java index 4cd9e8f09..825452fca 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/HideTooltipProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/HideTooltipProcessor.java @@ -16,6 +16,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; public class HideTooltipProcessor implements ItemProcessor { + public static final Key ID = Key.of("craftengine:hide_tooltip"); public static final ItemProcessorFactory FACTORY = new Factory<>(); public static final Map TO_LEGACY; public static final List COMPONENTS = List.of( diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/IdProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/IdProcessor.java index 5517a8c67..0ec169b85 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/IdProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/IdProcessor.java @@ -2,10 +2,13 @@ package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; +import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.util.Key; public class IdProcessor implements ItemProcessor { + public static final Key ID = Key.of("craftengine:id"); public static final String CRAFT_ENGINE_ID = "craftengine:id"; + public static final ItemProcessorFactory FACTORY = new Factory<>(); private final Key argument; public IdProcessor(Key argument) { @@ -21,4 +24,13 @@ public class IdProcessor implements ItemProcessor { item.customId(this.argument); return item; } + + private static class Factory implements ItemProcessorFactory { + + @Override + public ItemProcessor create(Object arg) { + String id = arg.toString(); + return new IdProcessor<>(Key.of(id)); + } + } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemModelProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemModelProcessor.java index 3087dfc1c..bb35287bd 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemModelProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemModelProcessor.java @@ -5,9 +5,11 @@ import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.VersionHelper; import org.jetbrains.annotations.Nullable; public class ItemModelProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:item_model"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private final Key data; @@ -21,6 +23,7 @@ public class ItemModelProcessor implements SimpleNetworkItemProcessor { @Override public Item apply(Item item, ItemBuildContext context) { + if (!VersionHelper.isOrAbove1_21_2()) return item; return item.itemModel(this.data.asString()); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemNameProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemNameProcessor.java index 6092770b6..d7c150b87 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemNameProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemNameProcessor.java @@ -9,6 +9,7 @@ import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.Nullable; public class ItemNameProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:item_name");; public static final ItemProcessorFactory FACTORY = new Factory<>(); private static final Object[] NBT_PATH = new Object[]{"display", "Name"}; private final String argument; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemProcessor.java index e7c6a14b6..6231646d0 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemProcessor.java @@ -2,7 +2,6 @@ package net.momirealms.craftengine.core.item.processor; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.util.Key; import net.momirealms.sparrow.nbt.CompoundTag; public interface ItemProcessor { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemProcessors.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemProcessors.java index b3d4ceaca..2ab347708 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemProcessors.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemProcessors.java @@ -20,53 +20,56 @@ import java.util.function.Consumer; public final class ItemProcessors { private ItemProcessors() {} - public static final Key ITEM_MODEL = Key.of("craftengine:item_model"); - public static final Key OVERWRITABLE_ITEM_MODEL = Key.of("craftengine:overwritable_item_model"); - public static final Key ID = Key.of("craftengine:id"); - public static final Key HIDE_TOOLTIP = Key.of("craftengine:hide_tooltip"); - public static final Key FOOD = Key.of("craftengine:food"); - public static final Key EXTERNAL = Key.of("craftengine:external"); - public static final Key EQUIPPABLE = Key.of("craftengine:equippable"); - public static final Key EQUIPPABLE_ASSET_ID = Key.of("craftengine:equippable_asset_id"); - public static final Key ENCHANTMENT = Key.of("craftengine:enchantment"); - public static final Key ENCHANTMENTS = Key.of("craftengine:enchantments"); - public static final Key DYED_COLOR = Key.of("craftengine:dyed_color"); - public static final Key DISPLAY_NAME = Key.of("craftengine:display_name"); - public static final Key CUSTOM_NAME = Key.of("craftengine:custom_name"); - public static final Key CUSTOM_MODEL_DATA = Key.of("craftengine:custom_model_data"); - public static final Key OVERWRITABLE_CUSTOM_MODEL_DATA = Key.of("craftengine:overwritable_custom_model_data"); - public static final Key COMPONENTS = Key.of("craftengine:components"); - public static final Key COMPONENT = Key.of("craftengine:component"); - public static final Key ATTRIBUTE_MODIFIERS = Key.of("craftengine:attribute_modifiers"); - public static final Key ATTRIBUTES = Key.of("craftengine:attributes"); - public static final Key ARGUMENTS = Key.of("craftengine:arguments"); - public static final Key VERSION = Key.of("craftengine:version"); - public static final Key PDC = Key.of("craftengine:pdc"); - public static final Key ITEM_NAME = Key.of("craftengine:item_name"); - public static final Key OVERWRITABLE_ITEM_NAME = Key.of("craftengine:overwritable_item_name"); - public static final Key JUKEBOX_PLAYABLE = Key.of("craftengine:jukebox_playable"); - public static final Key REMOVE_COMPONENTS = Key.of("craftengine:remove_components"); - public static final Key REMOVE_COMPONENT = Key.of("craftengine:remove_component"); - public static final Key TAGS = Key.of("craftengine:tags"); - public static final Key NBT = Key.of("craftengine:nbt"); - public static final Key TOOLTIP_STYLE = Key.of("craftengine:tooltip_style"); - public static final Key TRIM = Key.of("craftengine:trim"); - public static final Key LORE = Key.of("craftengine:lore"); - public static final Key UNBREAKABLE = Key.of("craftengine:unbreakable"); - public static final Key DYNAMIC_LORE = Key.of("craftengine:dynamic_lore"); - public static final Key OVERWRITABLE_LORE = Key.of("craftengine:overwritable_lore"); - public static final Key MAX_DAMAGE = Key.of("craftengine:max_damage"); - public static final Key BLOCK_STATE = Key.of("craftengine:block_state"); - public static final Key CONDITIONAL = Key.of("craftengine:conditional"); - public static final Key CONDITION = Key.of("craftengine:condition"); + public static final ItemProcessorType ITEM_MODEL = register(ItemModelProcessor.ID, ItemModelProcessor.FACTORY, VersionHelper.isOrAbove1_21_2()); + public static final ItemProcessorType ARGUMENTS = register(ArgumentsProcessor.ID, ArgumentsProcessor.FACTORY); + public static final ItemProcessorType OVERWRITABLE_ITEM_MODEL = register(OverwritableItemModelProcessor.ID, OverwritableItemModelProcessor.FACTORY, VersionHelper.isOrAbove1_21_2()); + public static final ItemProcessorType ID = register(IdProcessor.ID, IdProcessor.FACTORY); + public static final ItemProcessorType HIDE_TOOLTIP = register(HideTooltipProcessor.ID, HideTooltipProcessor.FACTORY); + public static final ItemProcessorType FOOD = register(FoodProcessor.ID, FoodProcessor.FACTORY, VersionHelper.isOrAbove1_20_5()); + public static final ItemProcessorType EXTERNAL = register(ExternalSourceProcessor.ID, ExternalSourceProcessor.FACTORY); + public static final ItemProcessorType EQUIPPABLE = register(EquippableProcessor.ID, EquippableProcessor.FACTORY, VersionHelper.isOrAbove1_21_2()); + public static final ItemProcessorType EQUIPPABLE_ASSET_ID = register(EquippableAssetIdProcessor.ID, EquippableAssetIdProcessor.FACTORY, VersionHelper.isOrAbove1_21_2()); + public static final ItemProcessorType ENCHANTMENTS = register(EnchantmentsProcessor.ID, EnchantmentsProcessor.FACTORY); + public static final ItemProcessorType ENCHANTMENT = register(Key.of("craftengine:enchantment"), EnchantmentsProcessor.FACTORY); + public static final ItemProcessorType DYED_COLOR = register(DyedColorProcessor.ID, DyedColorProcessor.FACTORY); + public static final ItemProcessorType DISPLAY_NAME = register(Key.of("craftengine:display_name"), ItemNameProcessor.FACTORY); + public static final ItemProcessorType ITEM_NAME = register(ItemNameProcessor.ID, ItemNameProcessor.FACTORY); + public static final ItemProcessorType CUSTOM_NAME = register(CustomNameProcessor.ID, CustomNameProcessor.FACTORY); + public static final ItemProcessorType CUSTOM_MODEL_DATA = register(CustomModelDataProcessor.ID, CustomModelDataProcessor.FACTORY); + public static final ItemProcessorType OVERWRITABLE_CUSTOM_MODEL_DATA = register(OverwritableCustomModelDataProcessor.ID, OverwritableCustomModelDataProcessor.FACTORY); + public static final ItemProcessorType COMPONENTS = register(ComponentsProcessor.ID, ComponentsProcessor.FACTORY, VersionHelper.isOrAbove1_20_5()); + public static final ItemProcessorType COMPONENT = register(Key.of("craftengine:component"), ComponentsProcessor.FACTORY, VersionHelper.isOrAbove1_20_5()); + public static final ItemProcessorType ATTRIBUTE_MODIFIERS = register(AttributeModifiersProcessor.ID, AttributeModifiersProcessor.FACTORY); + public static final ItemProcessorType ATTRIBUTES = register(Key.of("craftengine:attributes"), AttributeModifiersProcessor.FACTORY); + public static final ItemProcessorType PDC = register(PDCProcessor.ID, PDCProcessor.FACTORY); + public static final ItemProcessorType OVERWRITABLE_ITEM_NAME = register(OverwritableItemNameProcessor.ID, OverwritableItemNameProcessor.FACTORY); + public static final ItemProcessorType JUKEBOX_PLAYABLE = register(JukeboxSongProcessor.ID, JukeboxSongProcessor.FACTORY, VersionHelper.isOrAbove1_21()); + public static final ItemProcessorType REMOVE_COMPONENTS = register(RemoveComponentProcessor.ID, RemoveComponentProcessor.FACTORY, VersionHelper.isOrAbove1_20_5()); + public static final ItemProcessorType REMOVE_COMPONENT = register(Key.of("craftengine:remove_component"), RemoveComponentProcessor.FACTORY, VersionHelper.isOrAbove1_20_5()); + public static final ItemProcessorType TAGS = register(TagsProcessor.ID, TagsProcessor.FACTORY); + public static final ItemProcessorType NBT = register(Key.of("craftengine:nbt"), TagsProcessor.FACTORY); + public static final ItemProcessorType TOOLTIP_STYLE = register(TooltipStyleProcessor.ID, TooltipStyleProcessor.FACTORY, VersionHelper.isOrAbove1_21_2()); + public static final ItemProcessorType TRIM = register(TrimProcessor.ID, TrimProcessor.FACTORY); + public static final ItemProcessorType LORE = register(LoreProcessor.ID, LoreProcessor.FACTORY); + public static final ItemProcessorType UNBREAKABLE = register(UnbreakableProcessor.ID, UnbreakableProcessor.FACTORY); + public static final ItemProcessorType DYNAMIC_LORE = register(DynamicLoreProcessor.ID, DynamicLoreProcessor.FACTORY); + public static final ItemProcessorType OVERWRITABLE_LORE = register(OverwritableLoreProcessor.ID, OverwritableLoreProcessor.FACTORY); + public static final ItemProcessorType MAX_DAMAGE = register(MaxDamageProcessor.ID, MaxDamageProcessor.FACTORY, VersionHelper.isOrAbove1_20_5()); + public static final ItemProcessorType BLOCK_STATE = register(BlockStateProcessor.ID, BlockStateProcessor.FACTORY); + public static final ItemProcessorType CONDITIONAL = register(ConditionalProcessor.ID, ConditionalProcessor.FACTORY, VersionHelper.PREMIUM); + public static final ItemProcessorType CONDITION = register(Key.of("craftengine:condition"), ConditionalProcessor.FACTORY, VersionHelper.PREMIUM); public static ItemProcessorType register(Key key, ItemProcessorFactory factory) { ItemProcessorType type = new ItemProcessorType<>(key, factory); - ((WritableRegistry>) BuiltInRegistries.ITEM_DATA_MODIFIER_FACTORY) - .register(ResourceKey.create(Registries.ITEM_DATA_MODIFIER_FACTORY.location(), key), factory); + ((WritableRegistry>) BuiltInRegistries.ITEM_PROCESSOR_TYPE) + .register(ResourceKey.create(Registries.ITEM_PROCESSOR_TYPE.location(), key), type); return type; } + private static ItemProcessorType register(Key key, ItemProcessorFactory factory, boolean condition) { + return register(key, condition ? factory : null); + } + @SuppressWarnings("unchecked") public static void applyDataModifiers(Map dataSection, Consumer> callback) { ExceptionCollector errorCollector = new ExceptionCollector<>(); @@ -74,15 +77,13 @@ public final class ItemProcessors { for (Map.Entry dataEntry : dataSection.entrySet()) { Object value = dataEntry.getValue(); if (value == null) continue; - String key = dataEntry.getKey(); - int idIndex = key.indexOf('#'); - if (idIndex != -1) - key = key.substring(0, idIndex); - if (key.contains("-")) - key = key.replace("-", "_"); - Optional.ofNullable(BuiltInRegistries.ITEM_DATA_MODIFIER_FACTORY.getValue(Key.withDefaultNamespace(key, Key.DEFAULT_NAMESPACE))).ifPresent(factory -> { + String key = processKey(dataEntry.getKey()); + Optional.ofNullable(BuiltInRegistries.ITEM_PROCESSOR_TYPE.getValue(Key.withDefaultNamespace(key, Key.DEFAULT_NAMESPACE))).ifPresent(processorType -> { try { - callback.accept((ItemProcessor) factory.create(value)); + ItemProcessorFactory factory = processorType.factory(); + if (factory != null) { + callback.accept((ItemProcessor) factory.create(value)); + } } catch (LocalizedResourceConfigException e) { errorCollector.add(e); } @@ -92,54 +93,55 @@ public final class ItemProcessors { errorCollector.throwIfPresent(); } - public static void init() {} + public static String processKey(String key) { + if (key == null) return null; + int len = key.length(); + if (len == 0) return key; - static { - register(EXTERNAL, ExternalSourceProcessor.FACTORY); - register(LORE, LoreProcessor.FACTORY); - register(DYNAMIC_LORE, DynamicLoreProcessor.FACTORY); - register(OVERWRITABLE_LORE, OverwritableLoreProcessor.FACTORY); - register(DYED_COLOR, DyedColorProcessor.FACTORY); - register(TAGS, TagsProcessor.FACTORY); - register(NBT, TagsProcessor.FACTORY); - register(ATTRIBUTE_MODIFIERS, AttributeModifiersProcessor.FACTORY); - register(ATTRIBUTES, AttributeModifiersProcessor.FACTORY); - register(CUSTOM_MODEL_DATA, CustomModelDataProcessor.FACTORY); - register(UNBREAKABLE, UnbreakableProcessor.FACTORY); - register(ENCHANTMENT, EnchantmentsProcessor.FACTORY); - register(ENCHANTMENTS, EnchantmentsProcessor.FACTORY); - register(TRIM, TrimProcessor.FACTORY); - register(HIDE_TOOLTIP, HideTooltipProcessor.FACTORY); - register(ARGUMENTS, ArgumentsProcessor.FACTORY); - register(OVERWRITABLE_ITEM_NAME, OverwritableItemNameProcessor.FACTORY); - register(PDC, PDCProcessor.FACTORY); - register(BLOCK_STATE, BlockStateProcessor.FACTORY); - if (VersionHelper.isOrAbove1_20_5()) { - register(CUSTOM_NAME, CustomNameProcessor.FACTORY); - register(ITEM_NAME, ItemNameProcessor.FACTORY); - register(DISPLAY_NAME, ItemNameProcessor.FACTORY); - register(COMPONENTS, ComponentsProcessor.FACTORY); - register(COMPONENT, ComponentsProcessor.FACTORY); - register(REMOVE_COMPONENTS, RemoveComponentProcessor.FACTORY); - register(REMOVE_COMPONENT, RemoveComponentProcessor.FACTORY); - register(FOOD, FoodProcessor.FACTORY); - register(MAX_DAMAGE, MaxDamageProcessor.FACTORY); - } else { - register(CUSTOM_NAME, CustomNameProcessor.FACTORY); - register(ITEM_NAME, CustomNameProcessor.FACTORY); - register(DISPLAY_NAME, CustomNameProcessor.FACTORY); + // 提前扫描确定是否需要处理 + boolean hasHash = false; + boolean hasDash = false; + int hashPos = -1; + + for (int i = 0; i < len; i++) { + char c = key.charAt(i); + if (c == '#') { + hasHash = true; + hashPos = i; + break; + } else if (c == '-') { + hasDash = true; + } } - if (VersionHelper.isOrAbove1_21()) { - register(JUKEBOX_PLAYABLE, JukeboxSongProcessor.FACTORY); + + // 情况1:无需任何处理 + if (!hasHash && !hasDash) { + return key; } - if (VersionHelper.isOrAbove1_21_2()) { - register(TOOLTIP_STYLE, TooltipStyleProcessor.FACTORY); - register(ITEM_MODEL, ItemModelProcessor.FACTORY); - register(EQUIPPABLE, EquippableProcessor.FACTORY); + + // 情况2:只有替换,没有截断 + if (!hasHash) { + char[] chars = key.toCharArray(); + for (int i = 0; i < len; i++) { + if (chars[i] == '-') { + chars[i] = '_'; + } + } + return new String(chars); } - if (VersionHelper.PREMIUM) { - register(CONDITIONAL, ConditionalProcessor.FACTORY); - register(CONDITION, ConditionalProcessor.FACTORY); + + // 情况3:需要截断(可能有替换) + int newLen = hashPos; + char[] result = new char[newLen]; + + // 只需要复制到 hashPos 位置 + for (int i = 0; i < newLen; i++) { + char c = key.charAt(i); + result[i] = (c == '-') ? '_' : c; } + + return new String(result); } + + public static void init() {} } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemVersionProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemVersionProcessor.java index e41a84edf..a90cc0665 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemVersionProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/ItemVersionProcessor.java @@ -3,7 +3,6 @@ package net.momirealms.craftengine.core.item.processor; 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; import net.momirealms.craftengine.core.util.VersionHelper; import net.momirealms.sparrow.nbt.CompoundTag; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/JukeboxSongProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/JukeboxSongProcessor.java index 24717faac..6a10492b2 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/JukeboxSongProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/JukeboxSongProcessor.java @@ -7,6 +7,7 @@ import net.momirealms.craftengine.core.item.data.JukeboxPlayable; import net.momirealms.craftengine.core.util.Key; public class JukeboxSongProcessor implements ItemProcessor { + public static final Key ID = Key.of("craftengine:jukebox_playable"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private final JukeboxPlayable song; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/MaxDamageProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/MaxDamageProcessor.java index 9490346e9..f44733001 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/MaxDamageProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/MaxDamageProcessor.java @@ -10,6 +10,7 @@ import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.Nullable; public class MaxDamageProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:max_damage"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private final NumberProvider argument; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableCustomModelDataProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableCustomModelDataProcessor.java index 23b0dd9f6..d93cd513e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableCustomModelDataProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableCustomModelDataProcessor.java @@ -9,6 +9,7 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import org.jetbrains.annotations.Nullable; public class OverwritableCustomModelDataProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:overwritable_custom_model_data"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private final int argument; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableItemModelProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableItemModelProcessor.java index d2a00b927..48c1cd595 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableItemModelProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableItemModelProcessor.java @@ -8,6 +8,7 @@ import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.Nullable; public class OverwritableItemModelProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:overwritable_item_model"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private final Key data; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableItemNameProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableItemNameProcessor.java index 11af0d1ce..0eb0ebd37 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableItemNameProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/OverwritableItemNameProcessor.java @@ -9,6 +9,7 @@ import net.momirealms.craftengine.core.util.VersionHelper; import org.jetbrains.annotations.Nullable; public class OverwritableItemNameProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:overwritable_item_name"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private final ItemNameProcessor modifier; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/PDCProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/PDCProcessor.java index ea41ce0f1..1cfabbe42 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/PDCProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/PDCProcessor.java @@ -14,6 +14,7 @@ import java.util.Map; import java.util.Optional; public class PDCProcessor implements ItemProcessor { + public static final Key ID = Key.of("craftengine:pdc"); public static final String BUKKIT_PDC = "PublicBukkitValues"; public static final ItemProcessorFactory FACTORY = new Factory<>(); private final CompoundTag data; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/RemoveComponentProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/RemoveComponentProcessor.java index 62c838189..1f43fa0e2 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/RemoveComponentProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/RemoveComponentProcessor.java @@ -13,6 +13,7 @@ import java.util.Collections; import java.util.List; public class RemoveComponentProcessor implements ItemProcessor { + public static final Key ID = Key.of("craftengine:remove_components"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private final List arguments; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/TagsProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/TagsProcessor.java index 3a32b5aba..a26f4b62c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/TagsProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/TagsProcessor.java @@ -9,6 +9,7 @@ import java.util.LinkedHashMap; import java.util.Map; public class TagsProcessor implements ItemProcessor { + public static final Key ID = Key.of("craftengine:tags"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private final Map arguments; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/TooltipStyleProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/TooltipStyleProcessor.java index 586b8b955..736594b54 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/TooltipStyleProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/TooltipStyleProcessor.java @@ -8,6 +8,7 @@ import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.Nullable; public class TooltipStyleProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:tooltip_style"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private final Key argument; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/TrimProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/TrimProcessor.java index ba5c1ea42..3213e098c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/TrimProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/TrimProcessor.java @@ -13,6 +13,7 @@ import java.util.Locale; import java.util.Map; public class TrimProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:trim"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private static final Object[] NBT_PATH = new Object[] {"Trim"}; private final Key material; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/UnbreakableProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/UnbreakableProcessor.java index abc1265a2..8329ddab1 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/UnbreakableProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/UnbreakableProcessor.java @@ -9,6 +9,7 @@ import net.momirealms.craftengine.core.util.ResourceConfigUtils; import org.jetbrains.annotations.Nullable; public class UnbreakableProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:unbreakable"); public static final ItemProcessorFactory FACTORY = new Factory<>(); private static final Object[] NBT_PATH = new Object[]{"Unbreakable"}; private final boolean argument; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/DynamicLoreProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/DynamicLoreProcessor.java index 156ac988e..0aa78e6fa 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/DynamicLoreProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/DynamicLoreProcessor.java @@ -5,7 +5,6 @@ import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.item.processor.ItemProcessor; -import net.momirealms.craftengine.core.item.processor.ItemProcessors; import net.momirealms.craftengine.core.item.processor.SimpleNetworkItemProcessor; import net.momirealms.craftengine.core.util.Key; @@ -14,6 +13,7 @@ import java.util.Map; import java.util.Optional; public final class DynamicLoreProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:dynamic_lore"); public static final Factory FACTORY = new Factory<>(); public static final String CONTEXT_TAG_KEY = "craftengine:display_context"; private final Map> displayContexts; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/LoreProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/LoreProcessor.java index a51ca18e3..519f30173 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/LoreProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/LoreProcessor.java @@ -6,7 +6,6 @@ import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.item.processor.ItemProcessor; -import net.momirealms.craftengine.core.item.processor.ItemProcessors; import net.momirealms.craftengine.core.item.processor.SimpleNetworkItemProcessor; import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.plugin.text.minimessage.FormattedLine; @@ -20,7 +19,8 @@ import java.util.stream.Stream; public sealed interface LoreProcessor extends SimpleNetworkItemProcessor permits LoreProcessor.EmptyLoreProcessor, LoreProcessor.CompositeLoreProcessor, LoreProcessor.DoubleLoreProcessor, LoreProcessor.SingleLoreProcessor { - Factory FACTORY = new Factory<>(); + ItemProcessorFactory FACTORY = new Factory<>(); + Key ID = Key.of("craftengine:lore"); @Override @Nullable diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/OverwritableLoreProcessor.java b/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/OverwritableLoreProcessor.java index 4a5da9626..7717a9252 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/OverwritableLoreProcessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/processor/lore/OverwritableLoreProcessor.java @@ -5,13 +5,13 @@ import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.item.processor.ItemProcessor; -import net.momirealms.craftengine.core.item.processor.ItemProcessors; import net.momirealms.craftengine.core.item.processor.SimpleNetworkItemProcessor; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.VersionHelper; import net.momirealms.sparrow.nbt.CompoundTag; public final class OverwritableLoreProcessor implements SimpleNetworkItemProcessor { + public static final Key ID = Key.of("craftengine:overwritable_lore"); public static final Factory FACTORY = new Factory<>(); private final LoreProcessor loreProcessor; diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/event/EventConditions.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/event/EventConditions.java index 998ced962..a82686946 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/event/EventConditions.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/event/EventConditions.java @@ -53,7 +53,7 @@ public class EventConditions { public static Condition fromMap(Map map) { String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.event.condition.missing_type"); Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE); - if (key.value().charAt(0) == '!') { + if (type.charAt(0) == '!') { ConditionFactory factory = BuiltInRegistries.EVENT_CONDITION_FACTORY.getValue(new Key(key.namespace(), key.value().substring(1))); if (factory == null) { throw new LocalizedResourceConfigException("warning.config.event.condition.invalid_type", type); diff --git a/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java b/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java index f341b9fe3..3023163e7 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java +++ b/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java @@ -8,9 +8,9 @@ import net.momirealms.craftengine.core.block.properties.PropertyFactory; import net.momirealms.craftengine.core.entity.furniture.behavior.FurnitureBehaviorType; import net.momirealms.craftengine.core.entity.furniture.element.FurnitureElementConfigFactory; import net.momirealms.craftengine.core.entity.furniture.hitbox.FurnitureHitBoxConfigFactory; -import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory; import net.momirealms.craftengine.core.item.equipment.EquipmentFactory; +import net.momirealms.craftengine.core.item.processor.ItemProcessorType; import net.momirealms.craftengine.core.item.recipe.CustomSmithingTransformRecipe; import net.momirealms.craftengine.core.item.recipe.Recipe; import net.momirealms.craftengine.core.item.recipe.RecipeSerializer; @@ -53,7 +53,7 @@ import net.momirealms.craftengine.core.util.ResourceKey; public class BuiltInRegistries { public static final Registry BLOCK = createDynamicBoundRegistry(Registries.BLOCK, 512); public static final Registry BLOCK_BEHAVIOR_TYPE = createConstantBoundRegistry(Registries.BLOCK_BEHAVIOR_TYPE, 64); - public static final Registry> ITEM_DATA_MODIFIER_FACTORY = createConstantBoundRegistry(Registries.ITEM_DATA_MODIFIER_FACTORY, 64); + public static final Registry> ITEM_PROCESSOR_TYPE = createConstantBoundRegistry(Registries.ITEM_PROCESSOR_TYPE, 64); public static final Registry ITEM_BEHAVIOR_FACTORY = createConstantBoundRegistry(Registries.ITEM_BEHAVIOR_FACTORY, 64); public static final Registry PROPERTY_FACTORY = createConstantBoundRegistry(Registries.PROPERTY_FACTORY, 16); public static final Registry> LOOT_FUNCTION_FACTORY = createConstantBoundRegistry(Registries.LOOT_FUNCTION_FACTORY, 32); diff --git a/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java b/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java index aea938050..dbd0e90ec 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java +++ b/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java @@ -8,9 +8,9 @@ import net.momirealms.craftengine.core.block.properties.PropertyFactory; import net.momirealms.craftengine.core.entity.furniture.behavior.FurnitureBehaviorType; import net.momirealms.craftengine.core.entity.furniture.element.FurnitureElementConfigFactory; import net.momirealms.craftengine.core.entity.furniture.hitbox.FurnitureHitBoxConfigFactory; -import net.momirealms.craftengine.core.item.ItemProcessorFactory; import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory; import net.momirealms.craftengine.core.item.equipment.EquipmentFactory; +import net.momirealms.craftengine.core.item.processor.ItemProcessorType; import net.momirealms.craftengine.core.item.recipe.CustomSmithingTransformRecipe; import net.momirealms.craftengine.core.item.recipe.Recipe; import net.momirealms.craftengine.core.item.recipe.RecipeSerializer; @@ -54,7 +54,7 @@ import net.momirealms.craftengine.core.util.ResourceKey; public class Registries { public static final Key ROOT_REGISTRY = Key.withDefaultNamespace("root"); public static final ResourceKey> BLOCK = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("block")); - public static final ResourceKey>> ITEM_DATA_MODIFIER_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("item_data_modifier_factory")); + public static final ResourceKey>> ITEM_PROCESSOR_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("item_processor_type")); public static final ResourceKey> PROPERTY_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("property_factory")); public static final ResourceKey> BLOCK_BEHAVIOR_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("block_behavior_type")); public static final ResourceKey> ITEM_BEHAVIOR_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("item_behavior_factory"));