Skip to content

Commit

Permalink
Fix Recipe initialization
Browse files Browse the repository at this point in the history
  • Loading branch information
shartte committed Aug 25, 2024
1 parent f6aa466 commit 1c0ea41
Show file tree
Hide file tree
Showing 11 changed files with 113 additions and 132 deletions.
12 changes: 4 additions & 8 deletions src/main/java/appeng/core/AppEngBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
import java.util.Collection;
import java.util.Collections;

import appeng.recipes.AERecipeSerializers;
import appeng.recipes.AERecipeTypes;
import com.mojang.brigadier.CommandDispatcher;

import org.jetbrains.annotations.Nullable;
Expand Down Expand Up @@ -73,8 +75,6 @@
import appeng.init.InitCauldronInteraction;
import appeng.init.InitDispenserBehavior;
import appeng.init.InitMenuTypes;
import appeng.init.InitRecipeSerializers;
import appeng.init.InitRecipeTypes;
import appeng.init.InitStats;
import appeng.init.InitVillager;
import appeng.init.client.InitParticleTypes;
Expand Down Expand Up @@ -129,6 +129,8 @@ public AppEngBase(IEventBus modEventBus, ModContainer container) {
AEBlockEntities.DR.register(modEventBus);
AEComponents.DR.register(modEventBus);
AEEntities.DR.register(modEventBus);
AERecipeTypes.DR.register(modEventBus);
AERecipeSerializers.DR.register(modEventBus);
InitStructures.register(modEventBus);

modEventBus.addListener(this::registerRegistries);
Expand All @@ -150,12 +152,6 @@ public AppEngBase(IEventBus modEventBus, ModContainer container) {
InitParticleTypes.init(event.getRegistry(Registries.PARTICLE_TYPE));
} else if (event.getRegistryKey() == Registries.MENU) {
InitMenuTypes.init(event.getRegistry(Registries.MENU));
} else if (event.getRegistryKey() == Registries.RECIPE_TYPE) {
InitRecipeTypes.init(event.getRegistry(Registries.RECIPE_TYPE));
} else if (event.getRegistryKey() == Registries.RECIPE_SERIALIZER) {
InitRecipeSerializers.init(event.getRegistry(Registries.RECIPE_SERIALIZER));
} else if (event.getRegistryKey() == Registries.RECIPE_SERIALIZER) {
InitRecipeSerializers.init(event.getRegistry(Registries.RECIPE_SERIALIZER));
} else if (event.getRegistryKey() == Registries.CHUNK_GENERATOR) {
Registry.register(BuiltInRegistries.CHUNK_GENERATOR, SpatialStorageDimensionIds.CHUNK_GENERATOR_ID,
SpatialStorageChunkGenerator.CODEC);
Expand Down
69 changes: 0 additions & 69 deletions src/main/java/appeng/init/InitRecipeSerializers.java

This file was deleted.

29 changes: 0 additions & 29 deletions src/main/java/appeng/init/InitRecipeTypes.java

This file was deleted.

50 changes: 50 additions & 0 deletions src/main/java/appeng/recipes/AERecipeSerializers.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package appeng.recipes;

import appeng.core.AppEng;
import appeng.core.definitions.AEItems;
import appeng.items.parts.FacadeItem;
import appeng.recipes.entropy.EntropyRecipe;
import appeng.recipes.entropy.EntropyRecipeSerializer;
import appeng.recipes.game.AddItemUpgradeRecipe;
import appeng.recipes.game.AddItemUpgradeRecipeSerializer;
import appeng.recipes.game.FacadeRecipe;
import appeng.recipes.game.RemoveItemUpgradeRecipe;
import appeng.recipes.game.RemoveItemUpgradeRecipeSerializer;
import appeng.recipes.game.StorageCellUpgradeRecipe;
import appeng.recipes.game.StorageCellUpgradeRecipeSerializer;
import appeng.recipes.handlers.ChargerRecipe;
import appeng.recipes.handlers.ChargerRecipeSerializer;
import appeng.recipes.handlers.InscriberRecipe;
import appeng.recipes.handlers.InscriberRecipeSerializer;
import appeng.recipes.mattercannon.MatterCannonAmmo;
import appeng.recipes.mattercannon.MatterCannonAmmoSerializer;
import appeng.recipes.transform.TransformRecipe;
import appeng.recipes.transform.TransformRecipeSerializer;
import net.minecraft.core.registries.Registries;
import net.minecraft.world.item.crafting.RecipeSerializer;
import net.neoforged.neoforge.registries.DeferredRegister;

public final class AERecipeSerializers {
private AERecipeSerializers() {
}

public static final DeferredRegister<RecipeSerializer<?>> DR = DeferredRegister
.create(Registries.RECIPE_SERIALIZER, AppEng.MOD_ID);

static {
FacadeItem facadeItem = AEItems.FACADE.get();
register("inscriber", InscriberRecipeSerializer.INSTANCE);
register("facade", FacadeRecipe.SERIALIZER);
register("entropy", EntropyRecipeSerializer.INSTANCE);
register("matter_cannon", MatterCannonAmmoSerializer.INSTANCE);
register("transform", TransformRecipeSerializer.INSTANCE);
register("charger", ChargerRecipeSerializer.INSTANCE);
register("storage_cell_upgrade", StorageCellUpgradeRecipeSerializer.INSTANCE);
register("add_item_upgrade", AddItemUpgradeRecipeSerializer.INSTANCE);
register("remove_item_upgrade", RemoveItemUpgradeRecipeSerializer.INSTANCE);
}

private static void register(String id, RecipeSerializer<?> serializer) {
DR.register(id, () -> serializer);
}
}
32 changes: 32 additions & 0 deletions src/main/java/appeng/recipes/AERecipeTypes.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package appeng.recipes;

import appeng.core.AppEng;
import appeng.recipes.entropy.EntropyRecipe;
import appeng.recipes.handlers.ChargerRecipe;
import appeng.recipes.handlers.InscriberRecipe;
import appeng.recipes.mattercannon.MatterCannonAmmo;
import appeng.recipes.transform.TransformRecipe;
import net.minecraft.core.registries.Registries;
import net.minecraft.world.item.crafting.Recipe;
import net.minecraft.world.item.crafting.RecipeType;
import net.neoforged.neoforge.registries.DeferredRegister;

public final class AERecipeTypes {
private AERecipeTypes() {
}

public static final DeferredRegister<RecipeType<?>> DR = DeferredRegister
.create(Registries.RECIPE_TYPE, AppEng.MOD_ID);

public static final RecipeType<TransformRecipe> TRANSFORM = register("transform");
public static final RecipeType<EntropyRecipe> ENTROPY = register("entropy");
public static final RecipeType<InscriberRecipe> INSCRIBER = register("inscriber");
public static final RecipeType<ChargerRecipe> CHARGER = register("charger");
public static final RecipeType<MatterCannonAmmo> MATTER_CANNON_AMMO = register("matter_cannon");

private static <T extends Recipe<?>> RecipeType<T> register(String id) {
RecipeType<T> type = RecipeType.simple(AppEng.makeId(id));
DR.register(id, () -> type);
return type;
}
}
6 changes: 4 additions & 2 deletions src/main/java/appeng/recipes/entropy/EntropyRecipe.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import java.util.Map;
import java.util.Optional;

import appeng.recipes.AERecipeTypes;
import com.google.common.collect.Maps;
import com.mojang.serialization.Codec;
import com.mojang.serialization.MapCodec;
Expand Down Expand Up @@ -54,7 +55,6 @@
import net.neoforged.neoforge.network.codec.NeoForgeStreamCodecs;

import appeng.core.AppEng;
import appeng.init.InitRecipeTypes;
import appeng.items.tools.powered.EntropyManipulatorItem;

/**
Expand All @@ -76,9 +76,11 @@ public class EntropyRecipe implements Recipe<RecipeInput> {
EntropyRecipe::getOutput,
EntropyRecipe::new);

@Deprecated(forRemoval = true, since = "1.21.1")
public static final ResourceLocation TYPE_ID = AppEng.makeId("entropy");

public static final RecipeType<EntropyRecipe> TYPE = InitRecipeTypes.register(TYPE_ID.toString());
@Deprecated(forRemoval = true, since = "1.21.1")
public static final RecipeType<EntropyRecipe> TYPE = AERecipeTypes.ENTROPY;

private final EntropyMode mode;
private final Input input;
Expand Down
21 changes: 7 additions & 14 deletions src/main/java/appeng/recipes/game/FacadeRecipe.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@

package appeng.recipes.game;

import appeng.core.definitions.AEItems;
import appeng.core.definitions.AEParts;
import appeng.core.definitions.ItemDefinition;
import appeng.items.parts.FacadeItem;
import net.minecraft.core.HolderLookup;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.crafting.CraftingBookCategory;
Expand All @@ -27,12 +31,8 @@
import net.minecraft.world.item.crafting.SimpleCraftingRecipeSerializer;
import net.minecraft.world.level.Level;

import appeng.core.definitions.AEParts;
import appeng.core.definitions.ItemDefinition;
import appeng.items.parts.FacadeItem;

public final class FacadeRecipe extends CustomRecipe {
public static SimpleCraftingRecipeSerializer<FacadeRecipe> SERIALIZER = null;
public static RecipeSerializer<FacadeRecipe> SERIALIZER = new SimpleCraftingRecipeSerializer<>((category) -> new FacadeRecipe(category, AEItems.FACADE.get()));

private final ItemDefinition<?> anchor = AEParts.CABLE_ANCHOR;
private final FacadeItem facade;
Expand All @@ -49,9 +49,9 @@ public boolean matches(CraftingInput inv, Level level) {

private ItemStack getOutput(CraftingInput inv, boolean createFacade) {
if (inv.width() == 3 && inv.height() == 3 && inv.getItem(0).isEmpty() && inv.getItem(2).isEmpty()
&& inv.getItem(6).isEmpty() && inv.getItem(8).isEmpty()) {
&& inv.getItem(6).isEmpty() && inv.getItem(8).isEmpty()) {
if (this.anchor.is(inv.getItem(1)) && this.anchor.is(inv.getItem(3))
&& this.anchor.is(inv.getItem(5)) && this.anchor.is(inv.getItem(7))) {
&& this.anchor.is(inv.getItem(5)) && this.anchor.is(inv.getItem(7))) {
final ItemStack facades = this.facade.createFacadeForItem(inv.getItem(4), !createFacade);
if (!facades.isEmpty() && createFacade) {
facades.setCount(4);
Expand All @@ -75,13 +75,6 @@ public boolean canCraftInDimensions(int width, int height) {

@Override
public RecipeSerializer<FacadeRecipe> getSerializer() {
return getSerializer(facade);
}

public static RecipeSerializer<FacadeRecipe> getSerializer(FacadeItem facade) {
if (SERIALIZER == null) {
SERIALIZER = new SimpleCraftingRecipeSerializer<>((category) -> new FacadeRecipe(category, facade));
}
return SERIALIZER;
}

Expand Down
7 changes: 4 additions & 3 deletions src/main/java/appeng/recipes/handlers/ChargerRecipe.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package appeng.recipes.handlers;

import appeng.recipes.AERecipeTypes;
import com.mojang.serialization.MapCodec;
import com.mojang.serialization.codecs.RecordCodecBuilder;

Expand All @@ -17,12 +18,12 @@
import net.minecraft.world.level.Level;

import appeng.core.AppEng;
import appeng.init.InitRecipeTypes;

public class ChargerRecipe implements Recipe<RecipeInput> {
@Deprecated(forRemoval = true, since = "1.21.1")
public static final ResourceLocation TYPE_ID = AppEng.makeId("charger");

public static final RecipeType<ChargerRecipe> TYPE = InitRecipeTypes.register(TYPE_ID.toString());
@Deprecated(forRemoval = true, since = "1.21.1")
public static final RecipeType<ChargerRecipe> TYPE = AERecipeTypes.CHARGER;

public final Ingredient ingredient;
public final NonNullList<Ingredient> ingredients;
Expand Down
6 changes: 4 additions & 2 deletions src/main/java/appeng/recipes/handlers/InscriberRecipe.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

import java.util.Objects;

import appeng.recipes.AERecipeTypes;
import com.mojang.serialization.Codec;
import com.mojang.serialization.MapCodec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
Expand All @@ -39,7 +40,6 @@
import net.neoforged.neoforge.network.codec.NeoForgeStreamCodecs;

import appeng.core.AppEng;
import appeng.init.InitRecipeTypes;

public class InscriberRecipe implements Recipe<RecipeInput> {

Expand Down Expand Up @@ -71,9 +71,11 @@ public class InscriberRecipe implements Recipe<RecipeInput> {
InscriberRecipe::getProcessType,
InscriberRecipe::new);

@Deprecated(forRemoval = true, since = "1.21.1")
public static final ResourceLocation TYPE_ID = AppEng.makeId("inscriber");

public static final RecipeType<InscriberRecipe> TYPE = InitRecipeTypes.register(TYPE_ID.toString());
@Deprecated(forRemoval = true, since = "1.21.1")
public static final RecipeType<InscriberRecipe> TYPE = AERecipeTypes.INSCRIBER;

private final Ingredient middleInput;
private final Ingredient topOptional;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

import java.util.Objects;

import appeng.recipes.AERecipeTypes;
import com.google.common.base.Preconditions;
import com.mojang.serialization.Codec;
import com.mojang.serialization.MapCodec;
Expand All @@ -46,16 +47,16 @@
import net.neoforged.neoforge.common.conditions.TagEmptyCondition;

import appeng.core.AppEng;
import appeng.init.InitRecipeTypes;

/**
* Defines a type of ammo that can be used for the {@link appeng.items.tools.powered.MatterCannonItem}.
*/
public class MatterCannonAmmo implements Recipe<RecipeInput> {

@Deprecated(forRemoval = true, since = "1.21.1")
public static final ResourceLocation TYPE_ID = AppEng.makeId("matter_cannon");

public static final RecipeType<MatterCannonAmmo> TYPE = InitRecipeTypes.register(TYPE_ID.toString());
@Deprecated(forRemoval = true, since = "1.21.1")
public static final RecipeType<MatterCannonAmmo> TYPE = AERecipeTypes.MATTER_CANNON_AMMO;

public static final MapCodec<MatterCannonAmmo> CODEC = RecordCodecBuilder.mapCodec((builder) -> {
return builder.group(
Expand Down
Loading

0 comments on commit 1c0ea41

Please sign in to comment.