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:
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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])
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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> {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
package net.momirealms.craftengine.core.item.recipe.vanilla;
|
||||
|
||||
import net.momirealms.craftengine.core.util.Key;
|
||||
|
||||
public interface VanillaRecipe {
|
||||
|
||||
Key type();
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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"));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user