9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-26 02:19:23 +00:00

Merge branch 'Xiao-MoMi:dev' into dev

This commit is contained in:
jhqwqmc
2025-08-04 20:06:28 +08:00
committed by GitHub
41 changed files with 134 additions and 446 deletions

View File

@@ -28,10 +28,8 @@ import org.bukkit.NamespacedKey;
import org.bukkit.event.HandlerList;
import org.bukkit.inventory.ItemStack;
import java.io.IOException;
import java.io.Reader;
import java.lang.reflect.Array;
import java.sql.Ref;
import java.util.*;
import java.util.function.BiFunction;
import java.util.function.Consumer;

View File

@@ -3,7 +3,6 @@ package net.momirealms.craftengine.bukkit.pack;
import net.momirealms.craftengine.bukkit.api.event.AsyncResourcePackGenerateEvent;
import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine;
import net.momirealms.craftengine.bukkit.plugin.command.feature.ReloadCommand;
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections;
import net.momirealms.craftengine.bukkit.plugin.user.BukkitServerPlayer;
import net.momirealms.craftengine.bukkit.util.EventUtils;
import net.momirealms.craftengine.bukkit.util.ResourcePackUtils;
@@ -22,7 +21,6 @@ import org.bukkit.event.player.PlayerJoinEvent;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
public class BukkitPackManager extends AbstractPackManager implements Listener {

View File

@@ -2,7 +2,6 @@ package net.momirealms.craftengine.bukkit.world;
import net.momirealms.craftengine.bukkit.nms.FastNMS;
import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine;
import net.momirealms.craftengine.bukkit.plugin.injector.RecipeInjector;
import net.momirealms.craftengine.bukkit.plugin.injector.WorldStorageInjector;
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections;
import net.momirealms.craftengine.bukkit.util.BlockStateUtils;

View File

@@ -8,7 +8,6 @@ import net.momirealms.craftengine.core.item.data.Enchantment;
import net.momirealms.craftengine.core.item.data.FireworkExplosion;
import net.momirealms.craftengine.core.item.data.JukeboxPlayable;
import net.momirealms.craftengine.core.item.data.Trim;
import net.momirealms.craftengine.core.item.recipe.UniqueIdItem;
import net.momirealms.craftengine.core.item.setting.EquipmentData;
import net.momirealms.craftengine.core.util.Color;
import net.momirealms.craftengine.core.util.Key;

View File

@@ -18,7 +18,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
/**

View File

@@ -1,6 +1,7 @@
package net.momirealms.craftengine.core.item.recipe;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult;
import net.momirealms.craftengine.core.util.Key;
import org.jetbrains.annotations.Nullable;

View File

@@ -4,10 +4,13 @@ import net.momirealms.craftengine.core.item.CloneableConstantItem;
import net.momirealms.craftengine.core.item.CustomItem;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemManager;
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_5;
import net.momirealms.craftengine.core.item.recipe.reader.VanillaRecipeReader1_21_2;
import net.momirealms.craftengine.core.item.recipe.vanilla.VanillaRecipeReader;
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.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.util.*;
@@ -57,7 +60,7 @@ public abstract class AbstractRecipeSerializer<T, R extends Recipe<T>> implement
return recipeCategory;
}
@SuppressWarnings({"unchecked", "rawtypes"})
@SuppressWarnings({"unchecked"})
protected CustomRecipeResult<T> parseResult(Map<String, Object> arguments) {
Map<String, Object> resultMap = MiscUtils.castToMap(arguments.get("result"), true);
if (resultMap == null) {
@@ -65,11 +68,11 @@ public abstract class AbstractRecipeSerializer<T, R extends Recipe<T>> implement
}
String id = ResourceConfigUtils.requireNonEmptyStringOrThrow(resultMap.get("id"), "warning.config.recipe.result.missing_id");
int count = ResourceConfigUtils.getAsInt(resultMap.getOrDefault("count", 1), "count");
List<CustomRecipeResult.PostProcessor<T>> processors = ResourceConfigUtils.parseConfigAsList(resultMap.get("post-processors"), CustomRecipeResult.PostProcessor::fromMap);
return new CustomRecipeResult(
List<PostProcessor<T>> processors = ResourceConfigUtils.parseConfigAsList(resultMap.get("post-processors"), PostProcessors::fromMap);
return (CustomRecipeResult<T>) new CustomRecipeResult<>(
CraftEngine.instance().itemManager().getBuildableItem(Key.of(id)).orElseThrow(() -> new LocalizedResourceConfigException("warning.config.recipe.invalid_result", id)),
count,
processors.isEmpty() ? null : processors.toArray(new CustomRecipeResult.PostProcessor[0])
processors.isEmpty() ? null : processors.toArray(new PostProcessor[0])
);
}

View File

@@ -1,6 +1,7 @@
package net.momirealms.craftengine.core.item.recipe;
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.ResourceConfigUtils;
import org.jetbrains.annotations.NotNull;

View File

@@ -4,6 +4,7 @@ import com.google.gson.JsonObject;
import net.momirealms.craftengine.core.item.ItemBuildContext;
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.result.CustomRecipeResult;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;

View File

@@ -1,6 +1,7 @@
package net.momirealms.craftengine.core.item.recipe;
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.ResourceConfigUtils;
import org.jetbrains.annotations.NotNull;

View File

@@ -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.SingleItemInput;
import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult;
import net.momirealms.craftengine.core.util.Key;
import java.util.List;

View File

@@ -1,5 +1,6 @@
package net.momirealms.craftengine.core.item.recipe;
import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult;
import net.momirealms.craftengine.core.util.Key;
public abstract class CustomCraftingTableRecipe<T> extends AbstractGroupedRecipe<T> {

View File

@@ -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 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, 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;
}
}
}

View File

@@ -4,6 +4,7 @@ import com.google.common.collect.Maps;
import com.google.gson.JsonObject;
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.result.CustomRecipeResult;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;

View File

@@ -3,6 +3,7 @@ package net.momirealms.craftengine.core.item.recipe;
import com.google.gson.JsonObject;
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.result.CustomRecipeResult;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
import org.jetbrains.annotations.NotNull;

View File

@@ -1,6 +1,7 @@
package net.momirealms.craftengine.core.item.recipe;
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.ResourceConfigUtils;
import org.jetbrains.annotations.NotNull;

View File

@@ -5,6 +5,7 @@ import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
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.result.CustomRecipeResult;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.registry.BuiltInRegistries;

View File

@@ -1,6 +1,7 @@
package net.momirealms.craftengine.core.item.recipe;
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.ResourceConfigUtils;
import org.jetbrains.annotations.NotNull;

View File

@@ -3,6 +3,7 @@ package net.momirealms.craftengine.core.item.recipe;
import com.google.gson.JsonObject;
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.result.CustomRecipeResult;
import net.momirealms.craftengine.core.util.Key;
import org.jetbrains.annotations.NotNull;

View File

@@ -2,6 +2,7 @@ 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.item.recipe.result.CustomRecipeResult;
public interface FixedResultRecipe<T> extends Recipe<T> {
@@ -9,6 +10,8 @@ public interface FixedResultRecipe<T> extends Recipe<T> {
CustomRecipeResult<T> result();
@Override
default T assemble(RecipeInput input, ItemBuildContext context) {
return this.result(context);

View File

@@ -1,4 +1,4 @@
package net.momirealms.craftengine.core.item.recipe.vanilla;
package net.momirealms.craftengine.core.item.recipe.reader;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;

View File

@@ -6,7 +6,6 @@ import com.google.gson.JsonObject;
import net.momirealms.craftengine.core.item.recipe.CookingRecipeCategory;
import net.momirealms.craftengine.core.item.recipe.CraftingRecipeCategory;
import net.momirealms.craftengine.core.item.recipe.DatapackRecipeResult;
import net.momirealms.craftengine.core.item.recipe.vanilla.VanillaRecipeReader;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -1,20 +0,0 @@
package net.momirealms.craftengine.core.item.recipe.vanilla;
import net.momirealms.craftengine.core.item.recipe.CookingRecipeCategory;
import net.momirealms.craftengine.core.item.recipe.DatapackRecipeResult;
import net.momirealms.craftengine.core.item.recipe.RecipeSerializers;
import net.momirealms.craftengine.core.util.Key;
import java.util.List;
public class VanillaBlastingRecipe extends VanillaCookingRecipe {
public VanillaBlastingRecipe(CookingRecipeCategory category, String group, DatapackRecipeResult result, List<String> ingredient, float experience, int cookingTime) {
super(category, group, result, ingredient, experience, cookingTime);
}
@Override
public Key type() {
return RecipeSerializers.BLASTING;
}
}

View File

@@ -1,20 +0,0 @@
package net.momirealms.craftengine.core.item.recipe.vanilla;
import net.momirealms.craftengine.core.item.recipe.CookingRecipeCategory;
import net.momirealms.craftengine.core.item.recipe.DatapackRecipeResult;
import net.momirealms.craftengine.core.item.recipe.RecipeSerializers;
import net.momirealms.craftengine.core.util.Key;
import java.util.List;
public class VanillaCampfireRecipe extends VanillaCookingRecipe {
public VanillaCampfireRecipe(CookingRecipeCategory category, String group, DatapackRecipeResult result, List<String> ingredient, float experience, int cookingTime) {
super(category, group, result, ingredient, experience, cookingTime);
}
@Override
public Key type() {
return RecipeSerializers.CAMPFIRE_COOKING;
}
}

View File

@@ -1,37 +0,0 @@
package net.momirealms.craftengine.core.item.recipe.vanilla;
import net.momirealms.craftengine.core.item.recipe.CookingRecipeCategory;
import net.momirealms.craftengine.core.item.recipe.DatapackRecipeResult;
import java.util.List;
public abstract class VanillaCookingRecipe extends VanillaGroupedRecipe {
protected final List<String> ingredient;
protected final CookingRecipeCategory category;
protected final float experience;
protected final int cookingTime;
protected VanillaCookingRecipe(CookingRecipeCategory category, String group, DatapackRecipeResult result, List<String> ingredient, float experience, int cookingTime) {
super(group, result);
this.ingredient = ingredient;
this.experience = experience;
this.cookingTime = cookingTime;
this.category = category;
}
public CookingRecipeCategory category() {
return category;
}
public List<String> ingredient() {
return ingredient;
}
public float experience() {
return experience;
}
public int cookingTime() {
return cookingTime;
}
}

View File

@@ -1,17 +0,0 @@
package net.momirealms.craftengine.core.item.recipe.vanilla;
import net.momirealms.craftengine.core.item.recipe.CraftingRecipeCategory;
import net.momirealms.craftengine.core.item.recipe.DatapackRecipeResult;
public abstract class VanillaCraftingRecipe extends VanillaGroupedRecipe {
protected final CraftingRecipeCategory category;
protected VanillaCraftingRecipe(CraftingRecipeCategory category, String group, DatapackRecipeResult result) {
super(group, result);
this.category = category;
}
public CraftingRecipeCategory category() {
return category;
}
}

View File

@@ -1,21 +0,0 @@
package net.momirealms.craftengine.core.item.recipe.vanilla;
import net.momirealms.craftengine.core.item.recipe.DatapackRecipeResult;
public abstract class VanillaGroupedRecipe implements VanillaRecipe {
protected final String group;
protected final DatapackRecipeResult result;
protected VanillaGroupedRecipe(String group, DatapackRecipeResult result) {
this.group = group;
this.result = result;
}
public String group() {
return group;
}
public DatapackRecipeResult result() {
return result;
}
}

View File

@@ -1,8 +0,0 @@
package net.momirealms.craftengine.core.item.recipe.vanilla;
import net.momirealms.craftengine.core.util.Key;
public interface VanillaRecipe {
Key type();
}

View File

@@ -1,37 +0,0 @@
package net.momirealms.craftengine.core.item.recipe.vanilla;
import net.momirealms.craftengine.core.item.recipe.CraftingRecipeCategory;
import net.momirealms.craftengine.core.item.recipe.DatapackRecipeResult;
import net.momirealms.craftengine.core.item.recipe.RecipeSerializers;
import net.momirealms.craftengine.core.util.Key;
import java.util.List;
import java.util.Map;
public class VanillaShapedRecipe extends VanillaCraftingRecipe {
private final String[] pattern;
private final Map<Character, List<String>> key;
public VanillaShapedRecipe(CraftingRecipeCategory category,
String group,
Map<Character, List<String>> key,
String[] pattern,
DatapackRecipeResult result) {
super(category, group, result);
this.key = key;
this.pattern = pattern;
}
public Map<Character, List<String>> ingredients() {
return key;
}
public String[] pattern() {
return pattern;
}
@Override
public Key type() {
return RecipeSerializers.SHAPED;
}
}

View File

@@ -1,26 +0,0 @@
package net.momirealms.craftengine.core.item.recipe.vanilla;
import net.momirealms.craftengine.core.item.recipe.CraftingRecipeCategory;
import net.momirealms.craftengine.core.item.recipe.DatapackRecipeResult;
import net.momirealms.craftengine.core.item.recipe.RecipeSerializers;
import net.momirealms.craftengine.core.util.Key;
import java.util.List;
public class VanillaShapelessRecipe extends VanillaCraftingRecipe {
private final List<List<String>> ingredients;
public VanillaShapelessRecipe(CraftingRecipeCategory category, String group, List<List<String>> ingredients, DatapackRecipeResult result) {
super(category, group, result);
this.ingredients = ingredients;
}
public List<List<String>> ingredients() {
return ingredients;
}
@Override
public Key type() {
return RecipeSerializers.SHAPELESS;
}
}

View File

@@ -1,20 +0,0 @@
package net.momirealms.craftengine.core.item.recipe.vanilla;
import net.momirealms.craftengine.core.item.recipe.CookingRecipeCategory;
import net.momirealms.craftengine.core.item.recipe.DatapackRecipeResult;
import net.momirealms.craftengine.core.item.recipe.RecipeSerializers;
import net.momirealms.craftengine.core.util.Key;
import java.util.List;
public class VanillaSmeltingRecipe extends VanillaCookingRecipe {
public VanillaSmeltingRecipe(CookingRecipeCategory category, String group, DatapackRecipeResult result, List<String> ingredient, float experience, int cookingTime) {
super(category, group, result, ingredient, experience, cookingTime);
}
@Override
public Key type() {
return RecipeSerializers.SMELTING;
}
}

View File

@@ -1,42 +0,0 @@
package net.momirealms.craftengine.core.item.recipe.vanilla;
import net.momirealms.craftengine.core.item.recipe.DatapackRecipeResult;
import net.momirealms.craftengine.core.item.recipe.RecipeSerializers;
import net.momirealms.craftengine.core.util.Key;
import java.util.List;
public class VanillaSmithingTransformRecipe implements VanillaRecipe {
private final DatapackRecipeResult result;
private final List<String> base;
private final List<String> template;
private final List<String> addition;
public VanillaSmithingTransformRecipe(List<String> base, List<String> template, List<String> addition, DatapackRecipeResult result) {
this.result = result;
this.base = base;
this.template = template;
this.addition = addition;
}
@Override
public Key type() {
return RecipeSerializers.SMITHING_TRANSFORM;
}
public DatapackRecipeResult result() {
return result;
}
public List<String> base() {
return base;
}
public List<String> template() {
return template;
}
public List<String> addition() {
return addition;
}
}

View File

@@ -1,45 +0,0 @@
package net.momirealms.craftengine.core.item.recipe.vanilla;
import net.momirealms.craftengine.core.item.recipe.RecipeSerializers;
import net.momirealms.craftengine.core.util.Key;
import org.jetbrains.annotations.Nullable;
import java.util.List;
public class VanillaSmithingTrimRecipe implements VanillaRecipe {
@Nullable // 1.21.5
private final String pattern;
private final List<String> base;
private final List<String> template;
private final List<String> addition;
public VanillaSmithingTrimRecipe(List<String> base, List<String> template, List<String> addition, @Nullable String pattern) {
this.base = base;
this.template = template;
this.addition = addition;
this.pattern = pattern;
}
@Override
public Key type() {
return RecipeSerializers.SMITHING_TRIM;
}
public List<String> base() {
return base;
}
public List<String> template() {
return template;
}
public List<String> addition() {
return addition;
}
@Nullable
public String pattern() {
return pattern;
}
}

View File

@@ -1,20 +0,0 @@
package net.momirealms.craftengine.core.item.recipe.vanilla;
import net.momirealms.craftengine.core.item.recipe.CookingRecipeCategory;
import net.momirealms.craftengine.core.item.recipe.DatapackRecipeResult;
import net.momirealms.craftengine.core.item.recipe.RecipeSerializers;
import net.momirealms.craftengine.core.util.Key;
import java.util.List;
public class VanillaSmokingRecipe extends VanillaCookingRecipe {
public VanillaSmokingRecipe(CookingRecipeCategory category, String group, DatapackRecipeResult result, List<String> ingredient, float experience, int cookingTime) {
super(category, group, result, ingredient, experience, cookingTime);
}
@Override
public Key type() {
return RecipeSerializers.SMOKING;
}
}

View File

@@ -1,25 +0,0 @@
package net.momirealms.craftengine.core.item.recipe.vanilla;
import net.momirealms.craftengine.core.item.recipe.DatapackRecipeResult;
import net.momirealms.craftengine.core.item.recipe.RecipeSerializers;
import net.momirealms.craftengine.core.util.Key;
import java.util.List;
public class VanillaStoneCuttingRecipe extends VanillaGroupedRecipe {
private final List<String> ingredient;
public VanillaStoneCuttingRecipe(String group, DatapackRecipeResult result, List<String> ingredient) {
super(group, result);
this.ingredient = ingredient;
}
public List<String> ingredient() {
return ingredient;
}
@Override
public Key type() {
return RecipeSerializers.STONECUTTING;
}
}

View File

@@ -7,13 +7,13 @@ import net.momirealms.craftengine.core.entity.furniture.HitBoxFactory;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
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.Recipe;
import net.momirealms.craftengine.core.item.recipe.RecipeSerializer;
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.slot.SlotDisplay;
import net.momirealms.craftengine.core.item.recipe.result.PostProcessor;
import net.momirealms.craftengine.core.loot.LootContext;
import net.momirealms.craftengine.core.loot.entry.LootEntryContainerFactory;
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<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<CustomRecipeResult.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) {
return new ConstantBoundRegistry<>(key);

View File

@@ -7,13 +7,13 @@ import net.momirealms.craftengine.core.entity.furniture.HitBoxFactory;
import net.momirealms.craftengine.core.item.ItemDataModifierFactory;
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.Recipe;
import net.momirealms.craftengine.core.item.recipe.RecipeSerializer;
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.slot.SlotDisplay;
import net.momirealms.craftengine.core.item.recipe.result.PostProcessor;
import net.momirealms.craftengine.core.loot.LootContext;
import net.momirealms.craftengine.core.loot.entry.LootEntryContainerFactory;
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<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<CustomRecipeResult.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"));
}