From 5e3115c08c76795b3716b53f7aa0f783157ca786 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Thu, 17 Jul 2025 16:02:50 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E6=96=B9=E5=90=8E=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=99=A8=E7=9A=84=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../worldedit/FastAsyncWorldEditDelegate.java | 7 +- .../bukkit/item/BukkitCustomItem.java | 6 +- .../bukkit/item/BukkitItemManager.java | 8 +-- .../bukkit/item/CloneableConstantItem.java | 14 ++-- .../item/recipe/BukkitRecipeManager.java | 10 +-- .../craftengine/core/entity/Entity.java | 2 - .../core/item/AbstractItemManager.java | 5 ++ .../craftengine/core/item/BuildableItem.java | 10 +++ .../craftengine/core/item/CustomItem.java | 7 -- .../craftengine/core/item/ItemManager.java | 2 + .../item/recipe/AbstractGroupedRecipe.java | 6 -- .../core/item/recipe/CustomBrewingRecipe.java | 5 -- .../core/item/recipe/CustomRecipeResult.java | 67 ++++++++++++++++++- .../recipe/CustomSmithingTransformRecipe.java | 1 + .../core/item/recipe/FixedResultRecipe.java | 6 ++ .../core/item/recipe/RecipeFactory.java | 3 +- .../core/registry/BuiltInRegistries.java | 2 + .../craftengine/core/registry/Registries.java | 3 +- 18 files changed, 118 insertions(+), 46 deletions(-) diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/worldedit/FastAsyncWorldEditDelegate.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/worldedit/FastAsyncWorldEditDelegate.java index 2263c7f25..b03240f25 100644 --- a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/worldedit/FastAsyncWorldEditDelegate.java +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/worldedit/FastAsyncWorldEditDelegate.java @@ -46,14 +46,12 @@ import static java.util.Objects.requireNonNull; public class FastAsyncWorldEditDelegate extends AbstractDelegateExtent { private static int[] ordinalToIbdID; - private final Extent extent; private final Set chunksToSave; private final CEWorld ceWorld; private final Set brokenChunks = Collections.synchronizedSet(new HashSet<>()); protected FastAsyncWorldEditDelegate(EditSessionEvent event, Extent extent) { super(extent); - this.extent = extent; this.chunksToSave = new HashSet<>(); World weWorld = event.getWorld(); org.bukkit.World world = Bukkit.getWorld(requireNonNull(weWorld).getName()); @@ -77,8 +75,9 @@ public class FastAsyncWorldEditDelegate extends AbstractDelegateExtent { public void onEditSessionEvent(EditSessionEvent event) { World weWorld = event.getWorld(); if (weWorld == null) return; + Extent currentExtent = event.getExtent(); if (event.getStage() == EditSession.Stage.BEFORE_CHANGE) { - event.setExtent(new FastAsyncWorldEditDelegate(event, event.getExtent())); + event.setExtent(new FastAsyncWorldEditDelegate(event, currentExtent)); } } }); @@ -138,7 +137,7 @@ public class FastAsyncWorldEditDelegate extends AbstractDelegateExtent { @Override public > boolean setBlock(int x, int y, int z, T block) { - boolean result = extent.setBlock(x, y, z, block); + boolean result = super.setBlock(x, y, z, block); if (result) { Mask mask = getMask(); if (mask != null && !mask.test(BlockVector3.at(x, y, z))) return true; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java index 40954b670..4f8e68a97 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java @@ -42,13 +42,13 @@ public class BukkitCustomItem extends AbstractCustomItem { } @Override - public Item buildItem(ItemBuildContext context) { - ItemStack item = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(FastNMS.INSTANCE.constructor$ItemStack(this.item, 1)); + public Item buildItem(ItemBuildContext context, int count) { + ItemStack item = FastNMS.INSTANCE.method$CraftItemStack$asCraftMirror(FastNMS.INSTANCE.constructor$ItemStack(this.item, count)); Item wrapped = BukkitCraftEngine.instance().itemManager().wrap(item); for (ItemDataModifier modifier : dataModifiers()) { modifier.apply(wrapped, context); } - return BukkitCraftEngine.instance().itemManager().wrap(wrapped.getItem()); + return wrapped; } public Object clientItem() { 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 733642857..64e8735e5 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 @@ -29,8 +29,6 @@ import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigExce import net.momirealms.craftengine.core.plugin.logger.Debugger; import net.momirealms.craftengine.core.util.*; import org.bukkit.Bukkit; -import org.bukkit.Material; -import org.bukkit.Registry; import org.bukkit.event.HandlerList; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; @@ -165,11 +163,11 @@ public class BukkitItemManager extends AbstractItemManager { @Override public Optional> getVanillaItem(Key key) { - Material material = Registry.MATERIAL.get(KeyUtils.toNamespacedKey(key)); - if (material == null) { + ItemStack vanilla = createVanillaItemStack(key); + if (vanilla == null) { return Optional.empty(); } - return Optional.of(new CloneableConstantItem(key, new ItemStack(material))); + return Optional.of(new CloneableConstantItem(key, this.wrap(vanilla))); } @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/CloneableConstantItem.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/CloneableConstantItem.java index 6eb6eb61d..13fb185c6 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/CloneableConstantItem.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/CloneableConstantItem.java @@ -1,15 +1,16 @@ package net.momirealms.craftengine.bukkit.item; import net.momirealms.craftengine.core.item.BuildableItem; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; import net.momirealms.craftengine.core.util.Key; import org.bukkit.inventory.ItemStack; public class CloneableConstantItem implements BuildableItem { - private final ItemStack item; + private final Item item; private final Key id; - public CloneableConstantItem(Key id, ItemStack item) { + public CloneableConstantItem(Key id, Item item) { this.item = item; this.id = id; } @@ -19,10 +20,13 @@ public class CloneableConstantItem implements BuildableItem { return this.id; } + @Override + public Item buildItem(ItemBuildContext context, int count) { + return this.item.copyWithCount(count); + } + @Override public ItemStack buildItemStack(ItemBuildContext context, int count) { - ItemStack itemStack = this.item.clone(); - itemStack.setAmount(count); - return itemStack; + return this.item.copyWithCount(count).getItem(); } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java index 975c2a42d..953f220fe 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/BukkitRecipeManager.java @@ -561,7 +561,7 @@ public class BukkitRecipeManager extends AbstractRecipeManager { } CustomStoneCuttingRecipe ceRecipe = new CustomStoneCuttingRecipe<>( id, recipe.group(), Ingredient.of(holders), - new CustomRecipeResult<>(new CloneableConstantItem(recipe.result().isCustom() ? Key.of("!internal:custom") : Key.of(recipe.result().id()), result), recipe.result().count()) + new CustomRecipeResult<>(new CloneableConstantItem(recipe.result().isCustom() ? Key.of("!internal:custom") : Key.of(recipe.result().id()), BukkitItemManager.instance().wrap(result)), recipe.result().count(), null) ); this.registerInternalRecipe(id, ceRecipe); } @@ -590,7 +590,7 @@ public class BukkitRecipeManager extends AbstractRecipeManager { } CustomShapelessRecipe ceRecipe = new CustomShapelessRecipe<>( id, recipe.category(), recipe.group(), ingredientList, - new CustomRecipeResult<>(new CloneableConstantItem(recipe.result().isCustom() ? Key.of("!internal:custom") : Key.of(recipe.result().id()), result), recipe.result().count()) + new CustomRecipeResult<>(new CloneableConstantItem(recipe.result().isCustom() ? Key.of("!internal:custom") : Key.of(recipe.result().id()), BukkitItemManager.instance().wrap(result)), recipe.result().count(), null) ); if (hasCustomItemInTag) { Runnable converted = findNMSRecipeConvertor(ceRecipe).convert(id, ceRecipe); @@ -627,7 +627,7 @@ public class BukkitRecipeManager extends AbstractRecipeManager { CustomShapedRecipe ceRecipe = new CustomShapedRecipe<>( id, recipe.category(), recipe.group(), new CustomShapedRecipe.Pattern<>(recipe.pattern(), ingredients), - new CustomRecipeResult<>(new CloneableConstantItem(recipe.result().isCustom() ? Key.of("!internal:custom") : Key.of(recipe.result().id()), result), recipe.result().count()) + new CustomRecipeResult<>(new CloneableConstantItem(recipe.result().isCustom() ? Key.of("!internal:custom") : Key.of(recipe.result().id()), BukkitItemManager.instance().wrap(result)), recipe.result().count(), null) ); if (hasCustomItemInTag) { Runnable converted = findNMSRecipeConvertor(ceRecipe).convert(id, ceRecipe); @@ -651,7 +651,7 @@ public class BukkitRecipeManager extends AbstractRecipeManager { id, recipe.category(), recipe.group(), Ingredient.of(holders), recipe.cookingTime(), recipe.experience(), - new CustomRecipeResult<>(new CloneableConstantItem(recipe.result().isCustom() ? Key.of("!internal:custom") : Key.of(recipe.result().id()), result), recipe.result().count()) + new CustomRecipeResult<>(new CloneableConstantItem(recipe.result().isCustom() ? Key.of("!internal:custom") : Key.of(recipe.result().id()), BukkitItemManager.instance().wrap(result)), recipe.result().count(), null) ); if (hasCustomItemInTag) { Runnable converted = findNMSRecipeConvertor(ceRecipe).convert(id, ceRecipe); @@ -680,7 +680,7 @@ public class BukkitRecipeManager extends AbstractRecipeManager { baseHolders.isEmpty() ? null : Ingredient.of(baseHolders), templateHolders.isEmpty() ? null : Ingredient.of(templateHolders), additionHolders.isEmpty() ? null : Ingredient.of(additionHolders), - new CustomRecipeResult<>(new CloneableConstantItem(recipe.result().isCustom() ? Key.of("!internal:custom") : Key.of(recipe.result().id()), result), recipe.result().count()), + new CustomRecipeResult<>(new CloneableConstantItem(recipe.result().isCustom() ? Key.of("!internal:custom") : Key.of(recipe.result().id()), BukkitItemManager.instance().wrap(result)), recipe.result().count(), null), true, List.of() ); diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/Entity.java b/core/src/main/java/net/momirealms/craftengine/core/entity/Entity.java index 8a43adf97..aac181c4b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/Entity.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/Entity.java @@ -2,10 +2,8 @@ package net.momirealms.craftengine.core.entity; import net.momirealms.craftengine.core.util.Direction; import net.momirealms.craftengine.core.util.Key; -import net.momirealms.craftengine.core.util.MCUtils; import net.momirealms.craftengine.core.world.World; import net.momirealms.craftengine.core.world.WorldPosition; -import net.momirealms.sparrow.nbt.util.MathUtil; import java.util.UUID; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java b/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java index 02b362da3..6b75dc648 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java @@ -93,6 +93,11 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl } } + @Override + public Function> getDataType(String key) { + return this.dataFunctions.get(key); + } + @Override public ConfigParser[] parsers() { return new ConfigParser[]{this.itemParser, this.equipmentParser}; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/BuildableItem.java b/core/src/main/java/net/momirealms/craftengine/core/item/BuildableItem.java index ed2e23317..1d3db94da 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/BuildableItem.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/BuildableItem.java @@ -8,6 +8,16 @@ public interface BuildableItem { Key id(); + Item buildItem(ItemBuildContext context, int count); + + default Item buildItem(Player player) { + return buildItem(ItemBuildContext.of(player)); + } + + default Item buildItem(ItemBuildContext context) { + return buildItem(context, 1); + } + I buildItemStack(ItemBuildContext context, int count); default I buildItemStack(ItemBuildContext context) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/CustomItem.java b/core/src/main/java/net/momirealms/craftengine/core/item/CustomItem.java index b1f37784b..2ab666cf9 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/CustomItem.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/CustomItem.java @@ -1,6 +1,5 @@ package net.momirealms.craftengine.core.item; -import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.item.behavior.ItemBehavior; import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; @@ -35,12 +34,6 @@ public interface CustomItem extends BuildableItem { return settings().tags().contains(tag); } - default Item buildItem(Player player) { - return buildItem(ItemBuildContext.of(player)); - } - - Item buildItem(ItemBuildContext context); - void execute(PlayerOptionalContext context, EventTrigger trigger); @NotNull diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ItemManager.java b/core/src/main/java/net/momirealms/craftengine/core/item/ItemManager.java index 9505da8f1..d88e2d5d3 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ItemManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/ItemManager.java @@ -24,6 +24,8 @@ public interface ItemManager extends Manageable, ModelGenerator { void registerDataType(Function> factory, String... alias); + Function> getDataType(String key); + Map equipments(); ConfigParser[] parsers(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/AbstractGroupedRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/AbstractGroupedRecipe.java index 69ec59426..9b71c93ce 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/AbstractGroupedRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/AbstractGroupedRecipe.java @@ -1,7 +1,6 @@ package net.momirealms.craftengine.core.item.recipe; import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.recipe.input.RecipeInput; import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.Nullable; @@ -16,11 +15,6 @@ public abstract class AbstractGroupedRecipe implements FixedResultRecipe { this.result = result; } - @Override - public T assemble(RecipeInput input, ItemBuildContext context) { - return this.result(context); - } - @Nullable public String group() { return group; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomBrewingRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomBrewingRecipe.java index 7cb0e8763..1b622acfc 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomBrewingRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomBrewingRecipe.java @@ -47,11 +47,6 @@ public class CustomBrewingRecipe implements FixedResultRecipe { return this.container.test(brewingInput.container()) && this.ingredient.test(brewingInput.ingredient()); } - @Override - public T assemble(RecipeInput input, ItemBuildContext context) { - return this.result(context); - } - @Override public List> ingredientsInUse() { List> ingredients = new ArrayList<>(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomRecipeResult.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomRecipeResult.java index c09aa7c22..ea35480b2 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomRecipeResult.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomRecipeResult.java @@ -1,11 +1,74 @@ package net.momirealms.craftengine.core.item.recipe; import net.momirealms.craftengine.core.item.BuildableItem; +import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.ItemBuildContext; +import net.momirealms.craftengine.core.item.modifier.ItemDataModifier; +import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.registry.BuiltInRegistries; +import net.momirealms.craftengine.core.registry.Registries; +import net.momirealms.craftengine.core.registry.WritableRegistry; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.ResourceKey; -public record CustomRecipeResult(BuildableItem item, int count) { +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +@SuppressWarnings("unchecked") +public record CustomRecipeResult(BuildableItem item, int count, PostProcessor[] postProcessors) { public T buildItemStack(ItemBuildContext context) { - return item.buildItemStack(context, count); + Item builtItem = this.item.buildItem(context, count); + if (this.postProcessors != null) { + for (PostProcessor postProcessor : this.postProcessors) { + builtItem = postProcessor.process(builtItem, context); + } + } + return builtItem.getItem(); + } + + static { + registerPostProcessorType(Key.of("apply_data"), args -> { + List> modifiers = new ArrayList<>(); + for (Map.Entry entry : args.entrySet()) { + Optional.ofNullable(CraftEngine.instance().itemManager().getDataType(entry.getKey())).ifPresent(it -> { + modifiers.add(it.apply(entry.getValue())); + }); + } + return new ApplyItemDataProcessor<>(modifiers.toArray(new ItemDataModifier[0])); + }); + } + + public static void registerPostProcessorType(Key id, PostProcessor.Type type) { + ((WritableRegistry>) BuiltInRegistries.RECIPE_POST_PROCESSOR_TYPE).register(ResourceKey.create(Registries.RECIPE_POST_PROCESSOR_TYPE.location(), id), type); + } + + @FunctionalInterface + public interface PostProcessor { + + Item process(Item item, ItemBuildContext context); + + interface Type { + + PostProcessor create(Map args); + } + } + + public static class ApplyItemDataProcessor implements PostProcessor { + private final ItemDataModifier[] modifiers; + + public ApplyItemDataProcessor(ItemDataModifier[] modifiers) { + this.modifiers = modifiers; + } + + @Override + public Item process(Item item, ItemBuildContext context) { + for (ItemDataModifier modifier : this.modifiers) { + item.apply(modifier, context); + } + return item; + } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java index e80872c11..ae26068cd 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java @@ -154,6 +154,7 @@ public class CustomSmithingTransformRecipe implements FixedResultRecipe { public static class ItemDataProcessors { public static final Key KEEP_COMPONENTS = Key.of("craftengine:keep_components"); public static final Key KEEP_TAGS = Key.of("craftengine:keep_tags"); + public static final Key APPLY_DATA = Key.of("craftengine:apply_data"); static { if (VersionHelper.isOrAbove1_20_5()) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/FixedResultRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/FixedResultRecipe.java index cbc2df693..6a17c507c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/FixedResultRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/FixedResultRecipe.java @@ -1,10 +1,16 @@ package net.momirealms.craftengine.core.item.recipe; import net.momirealms.craftengine.core.item.ItemBuildContext; +import net.momirealms.craftengine.core.item.recipe.input.RecipeInput; public interface FixedResultRecipe extends Recipe { T result(ItemBuildContext context); CustomRecipeResult result(); + + @Override + default T assemble(RecipeInput input, ItemBuildContext context) { + return this.result(context); + } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/RecipeFactory.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/RecipeFactory.java index 6620b3b5c..563b8ca1c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/RecipeFactory.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/RecipeFactory.java @@ -27,7 +27,8 @@ public interface RecipeFactory { return new CustomRecipeResult( CraftEngine.instance().itemManager().getBuildableItem(Key.of(id)).orElseThrow( () -> new LocalizedResourceConfigException("warning.config.recipe.invalid_result", id)), - count + count, + null ); } 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 0314031ad..a88ef798b 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 @@ -6,6 +6,7 @@ import net.momirealms.craftengine.core.block.properties.PropertyFactory; import net.momirealms.craftengine.core.entity.furniture.HitBoxFactory; import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory; import net.momirealms.craftengine.core.item.equipment.EquipmentFactory; +import net.momirealms.craftengine.core.item.recipe.CustomRecipeResult; import net.momirealms.craftengine.core.item.recipe.CustomSmithingTransformRecipe; import net.momirealms.craftengine.core.item.recipe.RecipeFactory; import net.momirealms.craftengine.core.item.recipe.network.legacy.LegacyRecipe; @@ -74,6 +75,7 @@ public class BuiltInRegistries { public static final Registry SLOT_DISPLAY_TYPE = createConstantBoundRegistry(Registries.SLOT_DISPLAY_TYPE); public static final Registry RECIPE_DISPLAY_TYPE = createConstantBoundRegistry(Registries.RECIPE_DISPLAY_TYPE); public static final Registry LEGACY_RECIPE_TYPE = createConstantBoundRegistry(Registries.LEGACY_RECIPE_TYPE); + public static final Registry> RECIPE_POST_PROCESSOR_TYPE = createConstantBoundRegistry(Registries.RECIPE_POST_PROCESSOR_TYPE); private static Registry createConstantBoundRegistry(ResourceKey> key) { return new ConstantBoundRegistry<>(key); 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 cbdfba555..382277302 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 @@ -6,6 +6,7 @@ import net.momirealms.craftengine.core.block.properties.PropertyFactory; import net.momirealms.craftengine.core.entity.furniture.HitBoxFactory; import net.momirealms.craftengine.core.item.behavior.ItemBehaviorFactory; import net.momirealms.craftengine.core.item.equipment.EquipmentFactory; +import net.momirealms.craftengine.core.item.recipe.CustomRecipeResult; import net.momirealms.craftengine.core.item.recipe.CustomSmithingTransformRecipe; import net.momirealms.craftengine.core.item.recipe.RecipeFactory; import net.momirealms.craftengine.core.item.recipe.network.legacy.LegacyRecipe; @@ -42,7 +43,6 @@ 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> OPTIMIZED_ITEM_ID = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("optimized_item_id")); public static final ResourceKey> PROPERTY_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("property_factory")); public static final ResourceKey> BLOCK_BEHAVIOR_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("block_behavior_factory")); public static final ResourceKey> ITEM_BEHAVIOR_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("item_behavior_factory")); @@ -77,4 +77,5 @@ public class Registries { public static final ResourceKey> SLOT_DISPLAY_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("slot_display_type")); public static final ResourceKey> RECIPE_DISPLAY_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("recipe_display_type")); public static final ResourceKey> LEGACY_RECIPE_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("legacy_recipe_type")); + public static final ResourceKey>> RECIPE_POST_PROCESSOR_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("recipe_post_processor_type")); }