Skip to content

Commit

Permalink
switched Recipe RECIPE_TYPE to use Recipe instead of IRecipe as the type
Browse files Browse the repository at this point in the history
also made AntimatterRecipeSerializer abstract and moved the instance to
MacineRecipeSerializer
  • Loading branch information
Trinsdar committed Jan 23, 2025
1 parent 5158ef4 commit f8f8d47
Show file tree
Hide file tree
Showing 9 changed files with 58 additions and 38 deletions.
4 changes: 2 additions & 2 deletions common/src/main/java/muramasa/antimatter/Antimatter.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
import muramasa.antimatter.recipe.ingredient.IngredientSerializer;
import muramasa.antimatter.recipe.ingredient.PropertyIngredient;
import muramasa.antimatter.recipe.material.MaterialSerializer;
import muramasa.antimatter.recipe.serializer.AntimatterRecipeSerializer;
import muramasa.antimatter.recipe.serializer.MachineRecipeSerializer;
import muramasa.antimatter.registration.RegistrationEvent;
import muramasa.antimatter.registration.Side;
import muramasa.antimatter.tool.IAntimatterTool;
Expand Down Expand Up @@ -165,7 +165,7 @@ public void onRegistrationEvent(RegistrationEvent event, Side side) {
MaterialSerializer.init();
ContainerItemShapedRecipe.init();
ContainerItemShapelessRecipe.init();
AntimatterRecipeSerializer.init();
MachineRecipeSerializer.init();
IngredientSerializer.init();
PropertyIngredient.Serializer.init();
} else if (event == RegistrationEvent.WORLDGEN_INIT) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,6 @@ public static void onRecipeCompile(boolean server, RecipeManager manager) {
Antimatter.LOGGER.info("Compiling GT recipes");
long time = System.nanoTime();

Set<RecipeType<? extends IRecipe>> recipeTypes = new HashSet<>();
for (RecipeMap<?> m : AntimatterAPI.all(RecipeMap.class)) {
if (m.getProxy() != null) {
List<net.minecraft.world.item.crafting.Recipe<?>> recipes = (List<net.minecraft.world.item.crafting.Recipe<?>>) manager.getAllRecipesFor(m.getProxy().loc());
Expand All @@ -195,7 +194,7 @@ public static void onRecipeCompile(boolean server, RecipeManager manager) {
}

for (RecipeType<? extends IRecipe> recipeType : RecipeMap.getRecipeTypes()) {
List<IRecipe> recipes = (List<IRecipe>) manager.getAllRecipesFor(recipeType);
List<? extends IRecipe> recipes = manager.getAllRecipesFor(recipeType);
Map<String, List<IRecipe>> map = recipes.stream().collect(Collectors.groupingBy(IRecipe::getMapId));

for (Map.Entry<String, List<IRecipe>> entry : map.entrySet()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.blamejared.crafttweaker.api.item.IItemStack;
import earth.terrarium.botarium.common.fluid.base.FluidHolder;
import muramasa.antimatter.AntimatterAPI;
import muramasa.antimatter.recipe.Recipe;
import muramasa.antimatter.recipe.ingredient.FluidIngredient;
import muramasa.antimatter.recipe.map.IRecipeMap;
import muramasa.antimatter.recipe.map.RecipeBuilder;
Expand Down Expand Up @@ -81,7 +82,7 @@ public void build(String id, long duration, long power, long special) {
}

public void build(String domain, String id, long duration, long power, long special, int amps) {
CraftTweakerAPI.apply(new ActionAddRecipe<>(manager, recipeBuilder.recipeMapOnly().add(domain, id, duration, power, special, amps)));
CraftTweakerAPI.apply(new ActionAddRecipe<>(manager, (Recipe) recipeBuilder.recipeMapOnly().add(domain, id, duration, power, special, amps)));
}

public void build(String id, long duration, long power, long special, int amps) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@

@ZenRegister
@ZenCodeType.Name("mods.antimatter.Machines")
public class RecipeManager implements IRecipeManager<IRecipe> {
public class RecipeManager implements IRecipeManager<Recipe> {

@Override
public RecipeType<IRecipe> getRecipeType() {
public RecipeType<Recipe> getRecipeType() {
return Recipe.RECIPE_TYPE;
}

Expand Down
8 changes: 4 additions & 4 deletions common/src/main/java/muramasa/antimatter/recipe/IRecipe.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package muramasa.antimatter.recipe;

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import earth.terrarium.botarium.common.fluid.base.FluidHolder;
import muramasa.antimatter.AntimatterAPI;
import muramasa.antimatter.recipe.ingredient.FluidIngredient;
import muramasa.antimatter.recipe.map.RecipeMap;
import muramasa.antimatter.recipe.serializer.AntimatterRecipeSerializer;
import muramasa.antimatter.recipe.serializer.MachineRecipeSerializer;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.Container;
import net.minecraft.world.item.ItemStack;
Expand All @@ -15,7 +14,6 @@
import org.jetbrains.annotations.Nullable;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface IRecipe extends net.minecraft.world.item.crafting.Recipe<Container>{
Expand All @@ -30,6 +28,8 @@ public interface IRecipe extends net.minecraft.world.item.crafting.Recipe<Contai

void setHidden(boolean hidden);

void setFake(boolean fake);

void addTags(Set<RecipeTag> tags);

boolean hasInputItems();
Expand Down Expand Up @@ -103,7 +103,7 @@ default JsonObject toJson() {
if (recipeMap != null) {
recipeMap.getRecipeSerializer().toJson(json, this);
} else {
AntimatterRecipeSerializer.INSTANCE.toJson(json, this);
MachineRecipeSerializer.INSTANCE.toJson(json, this);
}
return json;
}
Expand Down
8 changes: 3 additions & 5 deletions common/src/main/java/muramasa/antimatter/recipe/Recipe.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package muramasa.antimatter.recipe;

import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import earth.terrarium.botarium.common.fluid.base.FluidHolder;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
Expand All @@ -11,7 +10,7 @@
import muramasa.antimatter.recipe.ingredient.FluidIngredient;
import muramasa.antimatter.recipe.ingredient.RecipeIngredient;
import muramasa.antimatter.recipe.map.RecipeMap;
import muramasa.antimatter.recipe.serializer.AntimatterRecipeSerializer;
import muramasa.antimatter.recipe.serializer.MachineRecipeSerializer;
import muramasa.antimatter.util.AntimatterPlatformUtils;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.Container;
Expand All @@ -25,7 +24,6 @@

import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

Expand Down Expand Up @@ -62,7 +60,7 @@ public static void init() {

}

public static final RecipeType<IRecipe> RECIPE_TYPE = RecipeType.register("antimatter_machine");
public static final RecipeType<Recipe> RECIPE_TYPE = RecipeType.register("antimatter_machine");

public Recipe(@NotNull List<Ingredient> stacksInput, ItemStack[] stacksOutput, @NotNull List<FluidIngredient> fluidsInput, FluidHolder[] fluidsOutput, int duration, long power, int special, int amps) {
this.itemsInput = ImmutableList.copyOf(stacksInput);
Expand Down Expand Up @@ -326,7 +324,7 @@ public ResourceLocation getId() {

@Override
public net.minecraft.world.item.crafting.RecipeSerializer<?> getSerializer() {
return AntimatterRecipeSerializer.INSTANCE;
return MachineRecipeSerializer.INSTANCE;
}

@NotNull
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
import muramasa.antimatter.integration.jeirei.renderer.InfoRenderers;
import muramasa.antimatter.machine.Tier;
import muramasa.antimatter.machine.types.Machine;
import muramasa.antimatter.recipe.BaseRecipeSerializer;
import muramasa.antimatter.recipe.IRecipe;
import muramasa.antimatter.recipe.Recipe;
import muramasa.antimatter.recipe.RecipeUtil;
Expand All @@ -25,8 +24,8 @@
import muramasa.antimatter.recipe.ingredient.MapTagIngredient;
import muramasa.antimatter.recipe.ingredient.RecipeIngredient;
import muramasa.antimatter.recipe.ingredient.SpecialIngredientWrapper;
import muramasa.antimatter.recipe.serializer.AntimatterRecipeSerializer;
import muramasa.antimatter.recipe.serializer.IAntimatterRecipeSerializer;
import muramasa.antimatter.recipe.serializer.MachineRecipeSerializer;
import muramasa.antimatter.registration.ISharedAntimatterObject;
import muramasa.antimatter.util.Utils;
import net.minecraft.resources.ResourceLocation;
Expand Down Expand Up @@ -83,7 +82,7 @@ public class RecipeMap<B extends RecipeBuilder> implements ISharedAntimatterObje
private IRecipeInfoRenderer infoRenderer;

@Getter
private IAntimatterRecipeSerializer<? extends IRecipe> recipeSerializer = AntimatterRecipeSerializer.INSTANCE;
private IAntimatterRecipeSerializer<? extends IRecipe> recipeSerializer = MachineRecipeSerializer.INSTANCE;

private static final Set<RecipeType<? extends IRecipe>> RECIPE_TYPES = new HashSet<>(Collections.singleton(Recipe.RECIPE_TYPE));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import muramasa.antimatter.Ref;
import muramasa.antimatter.recipe.BaseRecipeSerializer;
import muramasa.antimatter.recipe.IRecipe;
import muramasa.antimatter.recipe.Recipe;
import muramasa.antimatter.recipe.RecipeTag;
import muramasa.antimatter.recipe.RecipeUtil;
import muramasa.antimatter.recipe.ingredient.FluidIngredient;
Expand All @@ -26,6 +25,7 @@
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.level.material.Fluid;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import tesseract.FluidPlatformUtils;
import tesseract.TesseractGraphWrappers;
Expand All @@ -35,28 +35,19 @@
import java.util.Set;
import java.util.stream.Collectors;

public class AntimatterRecipeSerializer extends BaseRecipeSerializer<IRecipe> implements IAntimatterRecipeSerializer<IRecipe> {

public static final AntimatterRecipeSerializer INSTANCE = new AntimatterRecipeSerializer();

private AntimatterRecipeSerializer() {
super(Ref.ID, "machine");
}
public abstract class AntimatterRecipeSerializer<T extends IRecipe> extends BaseRecipeSerializer<T> implements IAntimatterRecipeSerializer<T> {

protected AntimatterRecipeSerializer(String domain, String id){
super(domain, id);
}

public static void init() {
}

@Override
public RecipeType<IRecipe> getRecipeType() {
return Recipe.RECIPE_TYPE;
}
public abstract RecipeType<T> getRecipeType();

public abstract T createRecipe(@NotNull List<Ingredient> stacksInput, ItemStack[] stacksOutput, @NotNull List<FluidIngredient> fluidsInput, FluidHolder[] fluidsOutput, int duration, long power, int special, int amps);

@Override
public Recipe fromJson(ResourceLocation recipeId, JsonObject json) {
public T fromJson(ResourceLocation recipeId, JsonObject json) {
try {
String mapId = json.get("map").getAsString();
RecipeMap<?> map = AntimatterAPI.get(RecipeMap.class, mapId);
Expand Down Expand Up @@ -88,7 +79,7 @@ public Recipe fromJson(ResourceLocation recipeId, JsonObject json) {
int duration = json.get("duration").getAsInt();
int amps = json.has("amps") ? json.get("amps").getAsInt() : 1;
int special = json.has("special") ? json.get("special").getAsInt() : 0;
Recipe r = new Recipe(list, outputs, fluidInputs, fluidOutputs, duration, eut, special, amps);
T r = createRecipe(list, outputs, fluidInputs, fluidOutputs, duration, eut, special, amps);
if (json.has("outputChances")) {
List<Integer> chances = new ObjectArrayList<>();
for (JsonElement el : json.getAsJsonArray("outputChances")) {
Expand Down Expand Up @@ -164,7 +155,7 @@ public static FluidIngredient getFluidIngredient(JsonElement element) {

@Nullable
@Override
public Recipe fromNetwork(ResourceLocation recipeId, FriendlyByteBuf buffer) {
public T fromNetwork(ResourceLocation recipeId, FriendlyByteBuf buffer) {
String mapId = buffer.readUtf();
int size = buffer.readInt();
List<Ingredient> ings = new ObjectArrayList<>(size);
Expand Down Expand Up @@ -215,7 +206,7 @@ public Recipe fromNetwork(ResourceLocation recipeId, FriendlyByteBuf buffer) {
boolean hidden = buffer.readBoolean();
boolean fake = buffer.readBoolean();

Recipe r = new Recipe(
T r = createRecipe(
ings,
out.length == 0 ? null : out,
in,
Expand All @@ -237,7 +228,7 @@ public Recipe fromNetwork(ResourceLocation recipeId, FriendlyByteBuf buffer) {
}

@Override
public void toNetwork(FriendlyByteBuf buffer, IRecipe recipe) {
public void toNetwork(FriendlyByteBuf buffer, T recipe) {
buffer.writeUtf(recipe.getMapId());
buffer.writeInt(!recipe.hasInputItems() ? 0 : recipe.getInputItems().size());
if (recipe.hasInputItems()) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package muramasa.antimatter.recipe.serializer;

import earth.terrarium.botarium.common.fluid.base.FluidHolder;
import muramasa.antimatter.Ref;
import muramasa.antimatter.recipe.Recipe;
import muramasa.antimatter.recipe.ingredient.FluidIngredient;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.item.crafting.RecipeType;
import org.jetbrains.annotations.NotNull;

import java.util.List;

public class MachineRecipeSerializer extends AntimatterRecipeSerializer<Recipe>{
public static final MachineRecipeSerializer INSTANCE = new MachineRecipeSerializer();

protected MachineRecipeSerializer() {
super(Ref.ID, "machine");
}

public static void init() {
}

@Override
public RecipeType<Recipe> getRecipeType() {
return Recipe.RECIPE_TYPE;
}

public Recipe createRecipe(@NotNull List<Ingredient> stacksInput, ItemStack[] stacksOutput, @NotNull List<FluidIngredient> fluidsInput, FluidHolder[] fluidsOutput, int duration, long power, int special, int amps){
return new Recipe(stacksInput, stacksOutput, fluidsInput, fluidsOutput, duration, power, special, amps);
}
}

0 comments on commit f8f8d47

Please sign in to comment.