mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2026-01-06 15:52:03 +00:00
修改post processors
This commit is contained in:
@@ -1,15 +1,16 @@
|
|||||||
package net.momirealms.craftengine.core.item.recipe;
|
package net.momirealms.craftengine.core.item.recipe;
|
||||||
|
|
||||||
import net.momirealms.craftengine.core.item.ItemBuildContext;
|
import net.momirealms.craftengine.core.item.ItemBuildContext;
|
||||||
|
import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult;
|
||||||
import net.momirealms.craftengine.core.util.Key;
|
import net.momirealms.craftengine.core.util.Key;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public abstract class AbstractGroupedRecipe<T> implements FixedResultRecipe<T> {
|
public abstract class AbstractGroupedRecipe<T> implements FixedResultRecipe<T> {
|
||||||
protected final String group;
|
protected final String group;
|
||||||
protected final Key id;
|
protected final Key id;
|
||||||
protected final SimpleRecipeResult<T> result;
|
protected final CustomRecipeResult<T> result;
|
||||||
|
|
||||||
protected AbstractGroupedRecipe(Key id, String group, SimpleRecipeResult<T> result) {
|
protected AbstractGroupedRecipe(Key id, String group, CustomRecipeResult<T> result) {
|
||||||
this.group = group == null ? "" : group;
|
this.group = group == null ? "" : group;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.result = result;
|
this.result = result;
|
||||||
@@ -31,7 +32,7 @@ public abstract class AbstractGroupedRecipe<T> implements FixedResultRecipe<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SimpleRecipeResult<T> result() {
|
public CustomRecipeResult<T> result() {
|
||||||
return this.result;
|
return this.result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,9 @@ import net.momirealms.craftengine.core.item.recipe.reader.VanillaRecipeReader;
|
|||||||
import net.momirealms.craftengine.core.item.recipe.reader.VanillaRecipeReader1_20;
|
import net.momirealms.craftengine.core.item.recipe.reader.VanillaRecipeReader1_20;
|
||||||
import net.momirealms.craftengine.core.item.recipe.reader.VanillaRecipeReader1_20_5;
|
import net.momirealms.craftengine.core.item.recipe.reader.VanillaRecipeReader1_20_5;
|
||||||
import net.momirealms.craftengine.core.item.recipe.reader.VanillaRecipeReader1_21_2;
|
import net.momirealms.craftengine.core.item.recipe.reader.VanillaRecipeReader1_21_2;
|
||||||
|
import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult;
|
||||||
|
import net.momirealms.craftengine.core.item.recipe.result.PostProcessor;
|
||||||
|
import net.momirealms.craftengine.core.item.recipe.result.PostProcessors;
|
||||||
import net.momirealms.craftengine.core.plugin.CraftEngine;
|
import net.momirealms.craftengine.core.plugin.CraftEngine;
|
||||||
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
|
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
|
||||||
import net.momirealms.craftengine.core.util.*;
|
import net.momirealms.craftengine.core.util.*;
|
||||||
@@ -57,26 +60,26 @@ public abstract class AbstractRecipeSerializer<T, R extends Recipe<T>> implement
|
|||||||
return recipeCategory;
|
return recipeCategory;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings({"unchecked", "rawtypes"})
|
@SuppressWarnings({"unchecked"})
|
||||||
protected SimpleRecipeResult<T> parseResult(Map<String, Object> arguments) {
|
protected CustomRecipeResult<T> parseResult(Map<String, Object> arguments) {
|
||||||
Map<String, Object> resultMap = MiscUtils.castToMap(arguments.get("result"), true);
|
Map<String, Object> resultMap = MiscUtils.castToMap(arguments.get("result"), true);
|
||||||
if (resultMap == null) {
|
if (resultMap == null) {
|
||||||
throw new LocalizedResourceConfigException("warning.config.recipe.missing_result");
|
throw new LocalizedResourceConfigException("warning.config.recipe.missing_result");
|
||||||
}
|
}
|
||||||
String id = ResourceConfigUtils.requireNonEmptyStringOrThrow(resultMap.get("id"), "warning.config.recipe.result.missing_id");
|
String id = ResourceConfigUtils.requireNonEmptyStringOrThrow(resultMap.get("id"), "warning.config.recipe.result.missing_id");
|
||||||
int count = ResourceConfigUtils.getAsInt(resultMap.getOrDefault("count", 1), "count");
|
int count = ResourceConfigUtils.getAsInt(resultMap.getOrDefault("count", 1), "count");
|
||||||
List<SimpleRecipeResult.PostProcessor<T>> processors = ResourceConfigUtils.parseConfigAsList(resultMap.get("post-processors"), SimpleRecipeResult.PostProcessor::fromMap);
|
List<PostProcessor<T>> processors = ResourceConfigUtils.parseConfigAsList(resultMap.get("post-processors"), PostProcessors::fromMap);
|
||||||
return new SimpleRecipeResult(
|
return (CustomRecipeResult<T>) new CustomRecipeResult<>(
|
||||||
CraftEngine.instance().itemManager().getBuildableItem(Key.of(id)).orElseThrow(() -> new LocalizedResourceConfigException("warning.config.recipe.invalid_result", id)),
|
CraftEngine.instance().itemManager().getBuildableItem(Key.of(id)).orElseThrow(() -> new LocalizedResourceConfigException("warning.config.recipe.invalid_result", id)),
|
||||||
count,
|
count,
|
||||||
processors.isEmpty() ? null : processors.toArray(new SimpleRecipeResult.PostProcessor[0])
|
processors.isEmpty() ? null : processors.toArray(new PostProcessor[0])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
protected SimpleRecipeResult<T> parseResult(DatapackRecipeResult recipeResult) {
|
protected CustomRecipeResult<T> parseResult(DatapackRecipeResult recipeResult) {
|
||||||
Item<T> result = (Item<T>) CraftEngine.instance().itemManager().build(recipeResult);
|
Item<T> result = (Item<T>) CraftEngine.instance().itemManager().build(recipeResult);
|
||||||
return new SimpleRecipeResult<>(CloneableConstantItem.of(result), recipeResult.count(), null);
|
return new CustomRecipeResult<>(CloneableConstantItem.of(result), recipeResult.count(), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package net.momirealms.craftengine.core.item.recipe;
|
package net.momirealms.craftengine.core.item.recipe;
|
||||||
|
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult;
|
||||||
import net.momirealms.craftengine.core.util.Key;
|
import net.momirealms.craftengine.core.util.Key;
|
||||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -10,7 +11,7 @@ import java.util.Map;
|
|||||||
public class CustomBlastingRecipe<T> extends CustomCookingRecipe<T> {
|
public class CustomBlastingRecipe<T> extends CustomCookingRecipe<T> {
|
||||||
public static final Serializer<?> SERIALIZER = new Serializer<>();
|
public static final Serializer<?> SERIALIZER = new Serializer<>();
|
||||||
|
|
||||||
public CustomBlastingRecipe(Key id, CookingRecipeCategory category, String group, Ingredient<T> ingredient, int cookingTime, float experience, SimpleRecipeResult<T> result) {
|
public CustomBlastingRecipe(Key id, CookingRecipeCategory category, String group, Ingredient<T> ingredient, int cookingTime, float experience, CustomRecipeResult<T> result) {
|
||||||
super(id, category, group, ingredient, cookingTime, experience, result);
|
super(id, category, group, ingredient, cookingTime, experience, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.google.gson.JsonObject;
|
|||||||
import net.momirealms.craftengine.core.item.ItemBuildContext;
|
import net.momirealms.craftengine.core.item.ItemBuildContext;
|
||||||
import net.momirealms.craftengine.core.item.recipe.input.BrewingInput;
|
import net.momirealms.craftengine.core.item.recipe.input.BrewingInput;
|
||||||
import net.momirealms.craftengine.core.item.recipe.input.RecipeInput;
|
import net.momirealms.craftengine.core.item.recipe.input.RecipeInput;
|
||||||
|
import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult;
|
||||||
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
|
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
|
||||||
import net.momirealms.craftengine.core.util.Key;
|
import net.momirealms.craftengine.core.util.Key;
|
||||||
import net.momirealms.craftengine.core.util.MiscUtils;
|
import net.momirealms.craftengine.core.util.MiscUtils;
|
||||||
@@ -19,12 +20,12 @@ public class CustomBrewingRecipe<T> implements FixedResultRecipe<T> {
|
|||||||
private final Key id;
|
private final Key id;
|
||||||
private final Ingredient<T> container;
|
private final Ingredient<T> container;
|
||||||
private final Ingredient<T> ingredient;
|
private final Ingredient<T> ingredient;
|
||||||
private final SimpleRecipeResult<T> result;
|
private final CustomRecipeResult<T> result;
|
||||||
|
|
||||||
public CustomBrewingRecipe(@NotNull Key id,
|
public CustomBrewingRecipe(@NotNull Key id,
|
||||||
@NotNull Ingredient<T> container,
|
@NotNull Ingredient<T> container,
|
||||||
@NotNull Ingredient<T> ingredient,
|
@NotNull Ingredient<T> ingredient,
|
||||||
@NotNull SimpleRecipeResult<T> result) {
|
@NotNull CustomRecipeResult<T> result) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.container = container;
|
this.container = container;
|
||||||
this.ingredient = ingredient;
|
this.ingredient = ingredient;
|
||||||
@@ -32,7 +33,7 @@ public class CustomBrewingRecipe<T> implements FixedResultRecipe<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SimpleRecipeResult<T> result() {
|
public CustomRecipeResult<T> result() {
|
||||||
return this.result;
|
return this.result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package net.momirealms.craftengine.core.item.recipe;
|
package net.momirealms.craftengine.core.item.recipe;
|
||||||
|
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult;
|
||||||
import net.momirealms.craftengine.core.util.Key;
|
import net.momirealms.craftengine.core.util.Key;
|
||||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -10,7 +11,7 @@ import java.util.Map;
|
|||||||
public class CustomCampfireRecipe<T> extends CustomCookingRecipe<T> {
|
public class CustomCampfireRecipe<T> extends CustomCookingRecipe<T> {
|
||||||
public static final Serializer<?> SERIALIZER = new Serializer<>();
|
public static final Serializer<?> SERIALIZER = new Serializer<>();
|
||||||
|
|
||||||
public CustomCampfireRecipe(Key id, CookingRecipeCategory category, String group, Ingredient<T> ingredient, int cookingTime, float experience, SimpleRecipeResult<T> result) {
|
public CustomCampfireRecipe(Key id, CookingRecipeCategory category, String group, Ingredient<T> ingredient, int cookingTime, float experience, CustomRecipeResult<T> result) {
|
||||||
super(id, category, group, ingredient, cookingTime, experience, result);
|
super(id, category, group, ingredient, cookingTime, experience, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package net.momirealms.craftengine.core.item.recipe;
|
|||||||
|
|
||||||
import net.momirealms.craftengine.core.item.recipe.input.RecipeInput;
|
import net.momirealms.craftengine.core.item.recipe.input.RecipeInput;
|
||||||
import net.momirealms.craftengine.core.item.recipe.input.SingleItemInput;
|
import net.momirealms.craftengine.core.item.recipe.input.SingleItemInput;
|
||||||
|
import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult;
|
||||||
import net.momirealms.craftengine.core.util.Key;
|
import net.momirealms.craftengine.core.util.Key;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -18,7 +19,7 @@ public abstract class CustomCookingRecipe<T> extends AbstractGroupedRecipe<T> {
|
|||||||
Ingredient<T> ingredient,
|
Ingredient<T> ingredient,
|
||||||
int cookingTime,
|
int cookingTime,
|
||||||
float experience,
|
float experience,
|
||||||
SimpleRecipeResult<T> result) {
|
CustomRecipeResult<T> result) {
|
||||||
super(id, group, result);
|
super(id, group, result);
|
||||||
this.category = category == null ? CookingRecipeCategory.MISC : category;
|
this.category = category == null ? CookingRecipeCategory.MISC : category;
|
||||||
this.ingredient = ingredient;
|
this.ingredient = ingredient;
|
||||||
@@ -40,7 +41,7 @@ public abstract class CustomCookingRecipe<T> extends AbstractGroupedRecipe<T> {
|
|||||||
return ingredient;
|
return ingredient;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SimpleRecipeResult<T> result() {
|
public CustomRecipeResult<T> result() {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
package net.momirealms.craftengine.core.item.recipe;
|
package net.momirealms.craftengine.core.item.recipe;
|
||||||
|
|
||||||
|
import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult;
|
||||||
import net.momirealms.craftengine.core.util.Key;
|
import net.momirealms.craftengine.core.util.Key;
|
||||||
|
|
||||||
public abstract class CustomCraftingTableRecipe<T> extends AbstractGroupedRecipe<T> {
|
public abstract class CustomCraftingTableRecipe<T> extends AbstractGroupedRecipe<T> {
|
||||||
protected final CraftingRecipeCategory category;
|
protected final CraftingRecipeCategory category;
|
||||||
|
|
||||||
protected CustomCraftingTableRecipe(Key id, CraftingRecipeCategory category, String group, SimpleRecipeResult<T> result) {
|
protected CustomCraftingTableRecipe(Key id, CraftingRecipeCategory category, String group, CustomRecipeResult<T> result) {
|
||||||
super(id, group, result);
|
super(id, group, result);
|
||||||
this.category = category == null ? CraftingRecipeCategory.MISC : category;
|
this.category = category == null ? CraftingRecipeCategory.MISC : category;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.google.common.collect.Maps;
|
|||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import net.momirealms.craftengine.core.item.recipe.input.CraftingInput;
|
import net.momirealms.craftengine.core.item.recipe.input.CraftingInput;
|
||||||
import net.momirealms.craftengine.core.item.recipe.input.RecipeInput;
|
import net.momirealms.craftengine.core.item.recipe.input.RecipeInput;
|
||||||
|
import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult;
|
||||||
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
|
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
|
||||||
import net.momirealms.craftengine.core.util.Key;
|
import net.momirealms.craftengine.core.util.Key;
|
||||||
import net.momirealms.craftengine.core.util.MiscUtils;
|
import net.momirealms.craftengine.core.util.MiscUtils;
|
||||||
@@ -17,7 +18,7 @@ public class CustomShapedRecipe<T> extends CustomCraftingTableRecipe<T> {
|
|||||||
private final ParsedPattern<T> parsedPattern;
|
private final ParsedPattern<T> parsedPattern;
|
||||||
private final Pattern<T> pattern;
|
private final Pattern<T> pattern;
|
||||||
|
|
||||||
public CustomShapedRecipe(Key id, CraftingRecipeCategory category, String group, Pattern<T> pattern, SimpleRecipeResult<T> result) {
|
public CustomShapedRecipe(Key id, CraftingRecipeCategory category, String group, Pattern<T> pattern, CustomRecipeResult<T> result) {
|
||||||
super(id, category, group, result);
|
super(id, category, group, result);
|
||||||
this.pattern = pattern;
|
this.pattern = pattern;
|
||||||
this.parsedPattern = pattern.parse();
|
this.parsedPattern = pattern.parse();
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package net.momirealms.craftengine.core.item.recipe;
|
|||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import net.momirealms.craftengine.core.item.recipe.input.CraftingInput;
|
import net.momirealms.craftengine.core.item.recipe.input.CraftingInput;
|
||||||
import net.momirealms.craftengine.core.item.recipe.input.RecipeInput;
|
import net.momirealms.craftengine.core.item.recipe.input.RecipeInput;
|
||||||
|
import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult;
|
||||||
import net.momirealms.craftengine.core.util.Key;
|
import net.momirealms.craftengine.core.util.Key;
|
||||||
import net.momirealms.craftengine.core.util.MiscUtils;
|
import net.momirealms.craftengine.core.util.MiscUtils;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -16,7 +17,7 @@ public class CustomShapelessRecipe<T> extends CustomCraftingTableRecipe<T> {
|
|||||||
private final List<Ingredient<T>> ingredients;
|
private final List<Ingredient<T>> ingredients;
|
||||||
private final PlacementInfo<T> placementInfo;
|
private final PlacementInfo<T> placementInfo;
|
||||||
|
|
||||||
public CustomShapelessRecipe(Key id, CraftingRecipeCategory category, String group, List<Ingredient<T>> ingredients, SimpleRecipeResult<T> result) {
|
public CustomShapelessRecipe(Key id, CraftingRecipeCategory category, String group, List<Ingredient<T>> ingredients, CustomRecipeResult<T> result) {
|
||||||
super(id, category, group, result);
|
super(id, category, group, result);
|
||||||
this.ingredients = ingredients;
|
this.ingredients = ingredients;
|
||||||
this.placementInfo = PlacementInfo.create(ingredients);
|
this.placementInfo = PlacementInfo.create(ingredients);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package net.momirealms.craftengine.core.item.recipe;
|
package net.momirealms.craftengine.core.item.recipe;
|
||||||
|
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult;
|
||||||
import net.momirealms.craftengine.core.util.Key;
|
import net.momirealms.craftengine.core.util.Key;
|
||||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -10,7 +11,7 @@ import java.util.Map;
|
|||||||
public class CustomSmeltingRecipe<T> extends CustomCookingRecipe<T> {
|
public class CustomSmeltingRecipe<T> extends CustomCookingRecipe<T> {
|
||||||
public static final Serializer<?> SERIALIZER = new Serializer<>();
|
public static final Serializer<?> SERIALIZER = new Serializer<>();
|
||||||
|
|
||||||
public CustomSmeltingRecipe(Key id, CookingRecipeCategory category, String group, Ingredient<T> ingredient, int cookingTime, float experience, SimpleRecipeResult<T> result) {
|
public CustomSmeltingRecipe(Key id, CookingRecipeCategory category, String group, Ingredient<T> ingredient, int cookingTime, float experience, CustomRecipeResult<T> result) {
|
||||||
super(id, category, group, ingredient, cookingTime, experience, result);
|
super(id, category, group, ingredient, cookingTime, experience, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import net.momirealms.craftengine.core.item.Item;
|
|||||||
import net.momirealms.craftengine.core.item.ItemBuildContext;
|
import net.momirealms.craftengine.core.item.ItemBuildContext;
|
||||||
import net.momirealms.craftengine.core.item.recipe.input.RecipeInput;
|
import net.momirealms.craftengine.core.item.recipe.input.RecipeInput;
|
||||||
import net.momirealms.craftengine.core.item.recipe.input.SmithingInput;
|
import net.momirealms.craftengine.core.item.recipe.input.SmithingInput;
|
||||||
|
import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult;
|
||||||
import net.momirealms.craftengine.core.plugin.CraftEngine;
|
import net.momirealms.craftengine.core.plugin.CraftEngine;
|
||||||
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
|
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
|
||||||
import net.momirealms.craftengine.core.registry.BuiltInRegistries;
|
import net.momirealms.craftengine.core.registry.BuiltInRegistries;
|
||||||
@@ -22,7 +23,7 @@ import java.util.Objects;
|
|||||||
public class CustomSmithingTransformRecipe<T> implements FixedResultRecipe<T> {
|
public class CustomSmithingTransformRecipe<T> implements FixedResultRecipe<T> {
|
||||||
public static final Serializer<?> SERIALIZER = new Serializer<>();
|
public static final Serializer<?> SERIALIZER = new Serializer<>();
|
||||||
private final Key id;
|
private final Key id;
|
||||||
private final SimpleRecipeResult<T> result;
|
private final CustomRecipeResult<T> result;
|
||||||
private final Ingredient<T> base;
|
private final Ingredient<T> base;
|
||||||
private final Ingredient<T> template;
|
private final Ingredient<T> template;
|
||||||
private final Ingredient<T> addition;
|
private final Ingredient<T> addition;
|
||||||
@@ -33,7 +34,7 @@ public class CustomSmithingTransformRecipe<T> implements FixedResultRecipe<T> {
|
|||||||
@NotNull Ingredient<T> base,
|
@NotNull Ingredient<T> base,
|
||||||
@Nullable Ingredient<T> template,
|
@Nullable Ingredient<T> template,
|
||||||
@Nullable Ingredient<T> addition,
|
@Nullable Ingredient<T> addition,
|
||||||
SimpleRecipeResult<T> result,
|
CustomRecipeResult<T> result,
|
||||||
boolean mergeComponents,
|
boolean mergeComponents,
|
||||||
List<ItemDataProcessor> processors
|
List<ItemDataProcessor> processors
|
||||||
) {
|
) {
|
||||||
@@ -116,7 +117,7 @@ public class CustomSmithingTransformRecipe<T> implements FixedResultRecipe<T> {
|
|||||||
return finalResult.getItem();
|
return finalResult.getItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
public SimpleRecipeResult<T> result() {
|
public CustomRecipeResult<T> result() {
|
||||||
return this.result;
|
return this.result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package net.momirealms.craftengine.core.item.recipe;
|
package net.momirealms.craftengine.core.item.recipe;
|
||||||
|
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult;
|
||||||
import net.momirealms.craftengine.core.util.Key;
|
import net.momirealms.craftengine.core.util.Key;
|
||||||
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
import net.momirealms.craftengine.core.util.ResourceConfigUtils;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -10,7 +11,7 @@ import java.util.Map;
|
|||||||
public class CustomSmokingRecipe<T> extends CustomCookingRecipe<T> {
|
public class CustomSmokingRecipe<T> extends CustomCookingRecipe<T> {
|
||||||
public static final Serializer<?> SERIALIZER = new Serializer<>();
|
public static final Serializer<?> SERIALIZER = new Serializer<>();
|
||||||
|
|
||||||
public CustomSmokingRecipe(Key id, CookingRecipeCategory category, String group, Ingredient<T> ingredient, int cookingTime, float experience, SimpleRecipeResult<T> result) {
|
public CustomSmokingRecipe(Key id, CookingRecipeCategory category, String group, Ingredient<T> ingredient, int cookingTime, float experience, CustomRecipeResult<T> result) {
|
||||||
super(id, category, group, ingredient, cookingTime, experience, result);
|
super(id, category, group, ingredient, cookingTime, experience, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package net.momirealms.craftengine.core.item.recipe;
|
|||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import net.momirealms.craftengine.core.item.recipe.input.RecipeInput;
|
import net.momirealms.craftengine.core.item.recipe.input.RecipeInput;
|
||||||
import net.momirealms.craftengine.core.item.recipe.input.SingleItemInput;
|
import net.momirealms.craftengine.core.item.recipe.input.SingleItemInput;
|
||||||
|
import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult;
|
||||||
import net.momirealms.craftengine.core.util.Key;
|
import net.momirealms.craftengine.core.util.Key;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
@@ -13,7 +14,7 @@ public class CustomStoneCuttingRecipe<T> extends AbstractGroupedRecipe<T> {
|
|||||||
public static final Serializer<?> SERIALIZER = new Serializer<>();
|
public static final Serializer<?> SERIALIZER = new Serializer<>();
|
||||||
protected final Ingredient<T> ingredient;
|
protected final Ingredient<T> ingredient;
|
||||||
|
|
||||||
public CustomStoneCuttingRecipe(Key id, String group, Ingredient<T> ingredient, SimpleRecipeResult<T> result) {
|
public CustomStoneCuttingRecipe(Key id, String group, Ingredient<T> ingredient, CustomRecipeResult<T> result) {
|
||||||
super(id, group, result);
|
super(id, group, result);
|
||||||
this.ingredient = ingredient;
|
this.ingredient = ingredient;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,12 +2,15 @@ package net.momirealms.craftengine.core.item.recipe;
|
|||||||
|
|
||||||
import net.momirealms.craftengine.core.item.ItemBuildContext;
|
import net.momirealms.craftengine.core.item.ItemBuildContext;
|
||||||
import net.momirealms.craftengine.core.item.recipe.input.RecipeInput;
|
import net.momirealms.craftengine.core.item.recipe.input.RecipeInput;
|
||||||
|
import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult;
|
||||||
|
|
||||||
public interface FixedResultRecipe<T> extends Recipe<T> {
|
public interface FixedResultRecipe<T> extends Recipe<T> {
|
||||||
|
|
||||||
T result(ItemBuildContext context);
|
T result(ItemBuildContext context);
|
||||||
|
|
||||||
SimpleRecipeResult<T> result();
|
CustomRecipeResult<T> result();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
default T assemble(RecipeInput input, ItemBuildContext context) {
|
default T assemble(RecipeInput input, ItemBuildContext context) {
|
||||||
|
|||||||
@@ -1,90 +0,0 @@
|
|||||||
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.locale.LocalizedResourceConfigException;
|
|
||||||
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.ResourceConfigUtils;
|
|
||||||
import net.momirealms.craftengine.core.util.ResourceKey;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
public record SimpleRecipeResult<T>(BuildableItem<T> item, int count, PostProcessor<T>[] postProcessors) {
|
|
||||||
|
|
||||||
public T buildItemStack(ItemBuildContext context) {
|
|
||||||
return buildItem(context).getItem();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Item<T> buildItem(ItemBuildContext context) {
|
|
||||||
Item<T> builtItem = this.item.buildItem(context, count);
|
|
||||||
if (this.postProcessors != null) {
|
|
||||||
for (PostProcessor<T> postProcessor : this.postProcessors) {
|
|
||||||
builtItem = postProcessor.process(builtItem, context);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return builtItem;
|
|
||||||
}
|
|
||||||
|
|
||||||
static {
|
|
||||||
registerPostProcessorType(Key.of("craftengine", "apply_data"), args -> {
|
|
||||||
List<ItemDataModifier<?>> modifiers = new ArrayList<>();
|
|
||||||
Map<String, Object> data = ResourceConfigUtils.getAsMap(args.get("data"), "data");
|
|
||||||
for (Map.Entry<String, Object> entry : data.entrySet()) {
|
|
||||||
Optional.ofNullable(BuiltInRegistries.ITEM_DATA_MODIFIER_FACTORY.getValue(Key.withDefaultNamespace(entry.getKey(), "craftengine")))
|
|
||||||
.ifPresent(factory -> modifiers.add(factory.create(entry.getValue())));
|
|
||||||
}
|
|
||||||
return new ApplyItemDataProcessor<>(modifiers.toArray(new ItemDataModifier[0]));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void registerPostProcessorType(Key id, PostProcessor.Type<?> type) {
|
|
||||||
((WritableRegistry<PostProcessor.Type<?>>) BuiltInRegistries.RECIPE_POST_PROCESSOR_TYPE)
|
|
||||||
.register(ResourceKey.create(Registries.RECIPE_POST_PROCESSOR_TYPE.location(), id), type);
|
|
||||||
}
|
|
||||||
|
|
||||||
@FunctionalInterface
|
|
||||||
public interface PostProcessor<T> {
|
|
||||||
|
|
||||||
static <T> PostProcessor<T> fromMap(Map<String, Object> map) {
|
|
||||||
String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.recipe.result.post_processor.missing_type");
|
|
||||||
Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE);
|
|
||||||
PostProcessor.Type<T> processor = (PostProcessor.Type<T>) BuiltInRegistries.RECIPE_POST_PROCESSOR_TYPE.getValue(key);
|
|
||||||
if (processor == null) {
|
|
||||||
throw new LocalizedResourceConfigException("warning.config.recipe.result.post_processor.invalid_type", type);
|
|
||||||
}
|
|
||||||
return processor.create(map);
|
|
||||||
}
|
|
||||||
|
|
||||||
Item<T> process(Item<T> item, ItemBuildContext context);
|
|
||||||
|
|
||||||
interface Type<T> {
|
|
||||||
|
|
||||||
PostProcessor<T> create(Map<String, Object> args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class ApplyItemDataProcessor<T> implements PostProcessor<T> {
|
|
||||||
private final ItemDataModifier<T>[] modifiers;
|
|
||||||
|
|
||||||
public ApplyItemDataProcessor(ItemDataModifier<T>[] modifiers) {
|
|
||||||
this.modifiers = modifiers;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Item<T> process(Item<T> item, ItemBuildContext context) {
|
|
||||||
for (ItemDataModifier<T> modifier : this.modifiers) {
|
|
||||||
item.apply(modifier, context);
|
|
||||||
}
|
|
||||||
return item;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package net.momirealms.craftengine.core.item.recipe.result;
|
||||||
|
|
||||||
|
import net.momirealms.craftengine.core.item.Item;
|
||||||
|
import net.momirealms.craftengine.core.item.ItemBuildContext;
|
||||||
|
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
|
||||||
|
|
||||||
|
public class ApplyItemDataPostProcessor<T> implements PostProcessor<T> {
|
||||||
|
private final ItemDataModifier<T>[] modifiers;
|
||||||
|
|
||||||
|
public ApplyItemDataPostProcessor(ItemDataModifier<T>[] modifiers) {
|
||||||
|
this.modifiers = modifiers;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Item<T> process(Item<T> item, ItemBuildContext context) {
|
||||||
|
for (ItemDataModifier<T> modifier : this.modifiers) {
|
||||||
|
item.apply(modifier, context);
|
||||||
|
}
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package net.momirealms.craftengine.core.item.recipe.result;
|
||||||
|
|
||||||
|
import net.momirealms.craftengine.core.item.BuildableItem;
|
||||||
|
import net.momirealms.craftengine.core.item.Item;
|
||||||
|
import net.momirealms.craftengine.core.item.ItemBuildContext;
|
||||||
|
|
||||||
|
public record CustomRecipeResult<T>(BuildableItem<T> item, int count, PostProcessor<T>[] postProcessors) {
|
||||||
|
|
||||||
|
public T buildItemStack(ItemBuildContext context) {
|
||||||
|
return buildItem(context).getItem();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Item<T> buildItem(ItemBuildContext context) {
|
||||||
|
Item<T> builtItem = this.item.buildItem(context, this.count);
|
||||||
|
if (this.postProcessors != null) {
|
||||||
|
for (PostProcessor<T> postProcessor : this.postProcessors) {
|
||||||
|
builtItem = postProcessor.process(builtItem, context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return builtItem;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
package net.momirealms.craftengine.core.item.recipe.result;
|
||||||
|
|
||||||
|
import net.momirealms.craftengine.core.item.Item;
|
||||||
|
import net.momirealms.craftengine.core.item.ItemBuildContext;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public interface PostProcessor<T> {
|
||||||
|
|
||||||
|
Item<T> process(Item<T> item, ItemBuildContext context);
|
||||||
|
|
||||||
|
interface Type<T> {
|
||||||
|
|
||||||
|
PostProcessor<T> create(Map<String, Object> args);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package net.momirealms.craftengine.core.item.recipe.result;
|
||||||
|
|
||||||
|
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
|
||||||
|
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
|
||||||
|
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.ResourceConfigUtils;
|
||||||
|
import net.momirealms.craftengine.core.util.ResourceKey;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public class PostProcessors {
|
||||||
|
public static final Key APPLY_DATA = Key.of("craftengine:apply_data");
|
||||||
|
|
||||||
|
static {
|
||||||
|
registerPostProcessorType(APPLY_DATA, args -> {
|
||||||
|
List<ItemDataModifier<?>> modifiers = new ArrayList<>();
|
||||||
|
Map<String, Object> data = ResourceConfigUtils.getAsMap(args.get("data"), "data");
|
||||||
|
for (Map.Entry<String, Object> entry : data.entrySet()) {
|
||||||
|
Optional.ofNullable(BuiltInRegistries.ITEM_DATA_MODIFIER_FACTORY.getValue(Key.withDefaultNamespace(entry.getKey(), Key.DEFAULT_NAMESPACE)))
|
||||||
|
.ifPresent(factory -> modifiers.add(factory.create(entry.getValue())));
|
||||||
|
}
|
||||||
|
return new ApplyItemDataPostProcessor<>(modifiers.toArray(new ItemDataModifier[0]));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public static <T> PostProcessor<T> fromMap(Map<String, Object> map) {
|
||||||
|
String type = ResourceConfigUtils.requireNonEmptyStringOrThrow(map.get("type"), "warning.config.recipe.result.post_processor.missing_type");
|
||||||
|
Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE);
|
||||||
|
PostProcessor.Type<T> processor = (PostProcessor.Type<T>) BuiltInRegistries.RECIPE_POST_PROCESSOR_TYPE.getValue(key);
|
||||||
|
if (processor == null) {
|
||||||
|
throw new LocalizedResourceConfigException("warning.config.recipe.result.post_processor.invalid_type", type);
|
||||||
|
}
|
||||||
|
return processor.create(map);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void registerPostProcessorType(Key id, PostProcessor.Type<?> type) {
|
||||||
|
((WritableRegistry<PostProcessor.Type<?>>) BuiltInRegistries.RECIPE_POST_PROCESSOR_TYPE)
|
||||||
|
.register(ResourceKey.create(Registries.RECIPE_POST_PROCESSOR_TYPE.location(), id), type);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,10 +10,10 @@ import net.momirealms.craftengine.core.item.equipment.EquipmentFactory;
|
|||||||
import net.momirealms.craftengine.core.item.recipe.CustomSmithingTransformRecipe;
|
import net.momirealms.craftengine.core.item.recipe.CustomSmithingTransformRecipe;
|
||||||
import net.momirealms.craftengine.core.item.recipe.Recipe;
|
import net.momirealms.craftengine.core.item.recipe.Recipe;
|
||||||
import net.momirealms.craftengine.core.item.recipe.RecipeSerializer;
|
import net.momirealms.craftengine.core.item.recipe.RecipeSerializer;
|
||||||
import net.momirealms.craftengine.core.item.recipe.SimpleRecipeResult;
|
|
||||||
import net.momirealms.craftengine.core.item.recipe.network.legacy.LegacyRecipe;
|
import net.momirealms.craftengine.core.item.recipe.network.legacy.LegacyRecipe;
|
||||||
import net.momirealms.craftengine.core.item.recipe.network.modern.display.RecipeDisplay;
|
import net.momirealms.craftengine.core.item.recipe.network.modern.display.RecipeDisplay;
|
||||||
import net.momirealms.craftengine.core.item.recipe.network.modern.display.slot.SlotDisplay;
|
import net.momirealms.craftengine.core.item.recipe.network.modern.display.slot.SlotDisplay;
|
||||||
|
import net.momirealms.craftengine.core.item.recipe.result.PostProcessor;
|
||||||
import net.momirealms.craftengine.core.loot.LootContext;
|
import net.momirealms.craftengine.core.loot.LootContext;
|
||||||
import net.momirealms.craftengine.core.loot.entry.LootEntryContainerFactory;
|
import net.momirealms.craftengine.core.loot.entry.LootEntryContainerFactory;
|
||||||
import net.momirealms.craftengine.core.loot.function.ApplyBonusCountFunction;
|
import net.momirealms.craftengine.core.loot.function.ApplyBonusCountFunction;
|
||||||
@@ -78,7 +78,7 @@ public class BuiltInRegistries {
|
|||||||
public static final Registry<SlotDisplay.Type> SLOT_DISPLAY_TYPE = createConstantBoundRegistry(Registries.SLOT_DISPLAY_TYPE);
|
public static final Registry<SlotDisplay.Type> SLOT_DISPLAY_TYPE = createConstantBoundRegistry(Registries.SLOT_DISPLAY_TYPE);
|
||||||
public static final Registry<RecipeDisplay.Type> RECIPE_DISPLAY_TYPE = createConstantBoundRegistry(Registries.RECIPE_DISPLAY_TYPE);
|
public static final Registry<RecipeDisplay.Type> RECIPE_DISPLAY_TYPE = createConstantBoundRegistry(Registries.RECIPE_DISPLAY_TYPE);
|
||||||
public static final Registry<LegacyRecipe.Type> LEGACY_RECIPE_TYPE = createConstantBoundRegistry(Registries.LEGACY_RECIPE_TYPE);
|
public static final Registry<LegacyRecipe.Type> LEGACY_RECIPE_TYPE = createConstantBoundRegistry(Registries.LEGACY_RECIPE_TYPE);
|
||||||
public static final Registry<SimpleRecipeResult.ApplyItemDataProcessor.Type<?>> RECIPE_POST_PROCESSOR_TYPE = createConstantBoundRegistry(Registries.RECIPE_POST_PROCESSOR_TYPE);
|
public static final Registry<PostProcessor.Type<?>> RECIPE_POST_PROCESSOR_TYPE = createConstantBoundRegistry(Registries.RECIPE_POST_PROCESSOR_TYPE);
|
||||||
|
|
||||||
private static <T> Registry<T> createConstantBoundRegistry(ResourceKey<? extends Registry<T>> key) {
|
private static <T> Registry<T> createConstantBoundRegistry(ResourceKey<? extends Registry<T>> key) {
|
||||||
return new ConstantBoundRegistry<>(key);
|
return new ConstantBoundRegistry<>(key);
|
||||||
|
|||||||
@@ -10,10 +10,10 @@ import net.momirealms.craftengine.core.item.equipment.EquipmentFactory;
|
|||||||
import net.momirealms.craftengine.core.item.recipe.CustomSmithingTransformRecipe;
|
import net.momirealms.craftengine.core.item.recipe.CustomSmithingTransformRecipe;
|
||||||
import net.momirealms.craftengine.core.item.recipe.Recipe;
|
import net.momirealms.craftengine.core.item.recipe.Recipe;
|
||||||
import net.momirealms.craftengine.core.item.recipe.RecipeSerializer;
|
import net.momirealms.craftengine.core.item.recipe.RecipeSerializer;
|
||||||
import net.momirealms.craftengine.core.item.recipe.SimpleRecipeResult;
|
|
||||||
import net.momirealms.craftengine.core.item.recipe.network.legacy.LegacyRecipe;
|
import net.momirealms.craftengine.core.item.recipe.network.legacy.LegacyRecipe;
|
||||||
import net.momirealms.craftengine.core.item.recipe.network.modern.display.RecipeDisplay;
|
import net.momirealms.craftengine.core.item.recipe.network.modern.display.RecipeDisplay;
|
||||||
import net.momirealms.craftengine.core.item.recipe.network.modern.display.slot.SlotDisplay;
|
import net.momirealms.craftengine.core.item.recipe.network.modern.display.slot.SlotDisplay;
|
||||||
|
import net.momirealms.craftengine.core.item.recipe.result.PostProcessor;
|
||||||
import net.momirealms.craftengine.core.loot.LootContext;
|
import net.momirealms.craftengine.core.loot.LootContext;
|
||||||
import net.momirealms.craftengine.core.loot.entry.LootEntryContainerFactory;
|
import net.momirealms.craftengine.core.loot.entry.LootEntryContainerFactory;
|
||||||
import net.momirealms.craftengine.core.loot.function.ApplyBonusCountFunction;
|
import net.momirealms.craftengine.core.loot.function.ApplyBonusCountFunction;
|
||||||
@@ -80,5 +80,5 @@ public class Registries {
|
|||||||
public static final ResourceKey<Registry<SlotDisplay.Type>> SLOT_DISPLAY_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("slot_display_type"));
|
public static final ResourceKey<Registry<SlotDisplay.Type>> SLOT_DISPLAY_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("slot_display_type"));
|
||||||
public static final ResourceKey<Registry<RecipeDisplay.Type>> RECIPE_DISPLAY_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("recipe_display_type"));
|
public static final ResourceKey<Registry<RecipeDisplay.Type>> RECIPE_DISPLAY_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("recipe_display_type"));
|
||||||
public static final ResourceKey<Registry<LegacyRecipe.Type>> LEGACY_RECIPE_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("legacy_recipe_type"));
|
public static final ResourceKey<Registry<LegacyRecipe.Type>> LEGACY_RECIPE_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("legacy_recipe_type"));
|
||||||
public static final ResourceKey<Registry<SimpleRecipeResult.ApplyItemDataProcessor.Type<?>>> RECIPE_POST_PROCESSOR_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("recipe_post_processor_type"));
|
public static final ResourceKey<Registry<PostProcessor.Type<?>>> RECIPE_POST_PROCESSOR_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("recipe_post_processor_type"));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user