Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rework how recipe types are registered to ensure they are all registered on startup #8168

Merged
merged 3 commits into from
Aug 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ static ICraftingMachine of(Level level, BlockPos pos, Direction side) {
}

/**
* Describe how this machine is displayed & grouped in the pattern access terminal.
* Describe how this machine is displayed and grouped in the pattern access terminal.
*/
PatternContainerGroup getCraftingMachineInfo();

Expand Down
3 changes: 2 additions & 1 deletion src/main/java/appeng/blockentity/misc/ChargerRecipes.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@
import net.minecraft.world.item.crafting.RecipeHolder;
import net.minecraft.world.level.Level;

import appeng.recipes.AERecipeTypes;
import appeng.recipes.handlers.ChargerRecipe;

public class ChargerRecipes {

public static Iterable<RecipeHolder<ChargerRecipe>> getRecipes(Level level) {
return level.getRecipeManager().byType(ChargerRecipe.TYPE);
return level.getRecipeManager().byType(AERecipeTypes.CHARGER);
}

@Nullable
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/appeng/blockentity/misc/InscriberRecipes.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@

import appeng.api.ids.AEComponents;
import appeng.core.definitions.AEItems;
import appeng.recipes.AERecipeTypes;
import appeng.recipes.handlers.InscriberProcessType;
import appeng.recipes.handlers.InscriberRecipe;

Expand All @@ -45,7 +46,7 @@ private InscriberRecipes() {
* Returns an unmodifiable view of all registered inscriber recipes.
*/
public static Iterable<RecipeHolder<InscriberRecipe>> getRecipes(Level level) {
return level.getRecipeManager().byType(InscriberRecipe.TYPE);
return level.getRecipeManager().byType(AERecipeTypes.INSCRIBER);
}

@Nullable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,7 @@
import appeng.client.guidebook.document.block.recipes.LytTransformRecipe;
import appeng.libs.mdast.mdx.model.MdxJsxElementFields;
import appeng.libs.mdast.model.MdAstNode;
import appeng.recipes.handlers.ChargerRecipe;
import appeng.recipes.handlers.InscriberRecipe;
import appeng.recipes.transform.TransformRecipe;
import appeng.recipes.AERecipeTypes;
import appeng.util.Platform;

/**
Expand All @@ -38,9 +36,9 @@ public class RecipeCompiler extends BlockTagCompiler {
new RecipeTypeMapping<>(RecipeType.CRAFTING, LytCraftingRecipe::new),
new RecipeTypeMapping<>(RecipeType.SMELTING, LytSmeltingRecipe::new),
new RecipeTypeMapping<>(RecipeType.SMITHING, LytSmithingRecipe::new),
new RecipeTypeMapping<>(InscriberRecipe.TYPE, LytInscriberRecipe::new),
new RecipeTypeMapping<>(ChargerRecipe.TYPE, LytChargerRecipe::new),
new RecipeTypeMapping<>(TransformRecipe.TYPE, LytTransformRecipe::new));
new RecipeTypeMapping<>(AERecipeTypes.INSCRIBER, LytInscriberRecipe::new),
new RecipeTypeMapping<>(AERecipeTypes.CHARGER, LytChargerRecipe::new),
new RecipeTypeMapping<>(AERecipeTypes.TRANSFORM, LytTransformRecipe::new));

@Override
public Set<String> getTagNames() {
Expand Down
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 @@ -73,8 +73,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 All @@ -86,6 +84,8 @@
import appeng.init.internal.InitUpgrades;
import appeng.init.worldgen.InitStructures;
import appeng.integration.Integrations;
import appeng.recipes.AERecipeSerializers;
import appeng.recipes.AERecipeTypes;
import appeng.server.AECommand;
import appeng.server.services.ChunkLoadingService;
import appeng.server.testworld.GameTestPlotAdapter;
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.

Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,8 @@
import appeng.menu.me.items.CraftingTermMenu;
import appeng.menu.me.items.PatternEncodingTermMenu;
import appeng.menu.me.items.WirelessCraftingTermMenu;
import appeng.recipes.entropy.EntropyRecipe;
import appeng.recipes.AERecipeTypes;
import appeng.recipes.game.StorageCellUpgradeRecipe;
import appeng.recipes.handlers.ChargerRecipe;
import appeng.recipes.handlers.InscriberRecipe;
import appeng.recipes.transform.TransformRecipe;

@EmiEntrypoint
public class AppEngEmiPlugin implements EmiPlugin {
Expand Down Expand Up @@ -82,13 +79,13 @@ public void register(EmiRegistry registry) {
// Inscriber
registry.addCategory(EmiInscriberRecipe.CATEGORY);
registry.addWorkstation(EmiInscriberRecipe.CATEGORY, EmiStack.of(AEBlocks.INSCRIBER));
adaptRecipeType(registry, InscriberRecipe.TYPE, EmiInscriberRecipe::new);
adaptRecipeType(registry, AERecipeTypes.INSCRIBER, EmiInscriberRecipe::new);

// Charger
registry.addCategory(EmiChargerRecipe.CATEGORY);
registry.addWorkstation(EmiChargerRecipe.CATEGORY, EmiStack.of(AEBlocks.CHARGER));
registry.addWorkstation(EmiChargerRecipe.CATEGORY, EmiStack.of(AEBlocks.CRANK));
adaptRecipeType(registry, ChargerRecipe.TYPE, EmiChargerRecipe::new);
adaptRecipeType(registry, AERecipeTypes.CHARGER, EmiChargerRecipe::new);

// Special upgrade recipes
adaptSpecialRecipes(registry, StorageCellUpgradeRecipe.class, this::convertStorageCellUpgradeRecipe);
Expand All @@ -106,11 +103,11 @@ public void register(EmiRegistry registry) {
// Entropy Manipulator
registry.addCategory(EmiEntropyRecipe.CATEGORY);
registry.addWorkstation(EmiEntropyRecipe.CATEGORY, EmiStack.of(AEItems.ENTROPY_MANIPULATOR));
adaptRecipeType(registry, EntropyRecipe.TYPE, EmiEntropyRecipe::new);
adaptRecipeType(registry, AERecipeTypes.ENTROPY, EmiEntropyRecipe::new);

// In-World Transformation
registry.addCategory(EmiTransformRecipe.CATEGORY);
adaptRecipeType(registry, TransformRecipe.TYPE, EmiTransformRecipe::new);
adaptRecipeType(registry, AERecipeTypes.TRANSFORM, EmiTransformRecipe::new);

// Facades
if (AEConfig.instance().isEnableFacadeRecipesInRecipeViewer()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import me.shedaniel.rei.api.client.entry.renderer.EntryRenderer;
import me.shedaniel.rei.api.client.gui.widgets.Tooltip;
import me.shedaniel.rei.api.client.gui.widgets.TooltipContext;
import me.shedaniel.rei.api.client.util.ClientEntryStacks;
import me.shedaniel.rei.api.common.category.CategoryIdentifier;
import me.shedaniel.rei.api.common.display.Display;
import me.shedaniel.rei.api.common.entry.EntryIngredient;
Expand Down Expand Up @@ -75,13 +74,13 @@ public EntropyRecipeDisplay(RecipeHolder<EntropyRecipe> holder) {
this.outputs = List.copyOf(outputs);
}

private static EntryStack<?> makeConsumed(EntryStack<?> entryStack) {
private static <T> EntryStack<T> makeConsumed(EntryStack<T> entryStack) {
entryStack = entryStack.copy();

entryStack.tooltip(ItemModText.CONSUMED.text().withStyle(ChatFormatting.RED, ChatFormatting.BOLD));
ClientEntryStacks.setRenderer(entryStack, new EntryRenderer<EntryStack<?>>() {
entryStack.withRenderer(new EntryRenderer<>() {
@Override
public void render(EntryStack<EntryStack<?>> entry, GuiGraphics graphics, Rectangle bounds, int mouseX,
public void render(EntryStack<T> entry, GuiGraphics graphics, Rectangle bounds, int mouseX,
int mouseY, float delta) {
var baseRenderer = entry.getDefinition().getRenderer();
baseRenderer.render(entry, graphics, bounds, mouseX, mouseY, delta);
Expand All @@ -90,7 +89,7 @@ public void render(EntryStack<EntryStack<?>> entry, GuiGraphics graphics, Rectan
}

@Override
public @Nullable Tooltip getTooltip(EntryStack<EntryStack<?>> entry, TooltipContext context) {
public @Nullable Tooltip getTooltip(EntryStack<T> entry, TooltipContext context) {
var baseRenderer = entry.getDefinition().getRenderer();
return baseRenderer.getTooltip(entry, context);
}
Expand Down Expand Up @@ -148,7 +147,7 @@ private static EntryStack<?> createIngredient(Block block, Fluid fluid) {
AELog.warn("Don't know how to get the source fluid for %s", fluid);
entryStack = EntryStacks.of(fluid);
}
ClientEntryStacks.setTooltipProcessor(entryStack, EntropyRecipeDisplay::addFlowingToTooltip);
entryStack.tooltipProcessor(EntropyRecipeDisplay::addFlowingToTooltip);
return entryStack;
} else {
return EntryStacks.of(fluid);
Expand Down
10 changes: 6 additions & 4 deletions src/main/java/appeng/integration/modules/rei/ReiPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@
import appeng.items.tools.powered.powersink.AEBasePoweredItem;
import appeng.menu.me.items.CraftingTermMenu;
import appeng.menu.me.items.PatternEncodingTermMenu;
import appeng.recipes.AERecipeTypes;
import appeng.recipes.entropy.EntropyRecipe;
import appeng.recipes.game.StorageCellUpgradeRecipe;
import appeng.recipes.handlers.ChargerRecipe;
Expand Down Expand Up @@ -129,10 +130,10 @@ public void registerDisplays(DisplayRegistry registry) {
return;
}

registry.registerRecipeFiller(InscriberRecipe.class, InscriberRecipe.TYPE, InscriberRecipeDisplay::new);
registry.registerRecipeFiller(ChargerRecipe.class, ChargerRecipe.TYPE, ChargerDisplay::new);
registry.registerRecipeFiller(TransformRecipe.class, TransformRecipe.TYPE, TransformRecipeWrapper::new);
registry.registerRecipeFiller(EntropyRecipe.class, EntropyRecipe.TYPE, EntropyRecipeDisplay::new);
registry.registerRecipeFiller(InscriberRecipe.class, AERecipeTypes.INSCRIBER, InscriberRecipeDisplay::new);
registry.registerRecipeFiller(ChargerRecipe.class, AERecipeTypes.CHARGER, ChargerDisplay::new);
registry.registerRecipeFiller(TransformRecipe.class, AERecipeTypes.TRANSFORM, TransformRecipeWrapper::new);
registry.registerRecipeFiller(EntropyRecipe.class, AERecipeTypes.ENTROPY, EntropyRecipeDisplay::new);
registry.registerRecipeFiller(StorageCellUpgradeRecipe.class, RecipeType.CRAFTING,
this::convertStorageCellUpgradeRecipe);

Expand Down Expand Up @@ -209,6 +210,7 @@ public void registerCollapsibleEntries(CollapsibleEntryRegistry registry) {
}
}

@SuppressWarnings("unchecked")
@Override
public void registerExclusionZones(ExclusionZones zones) {
if (CompatLayerHelper.IS_LOADED) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import me.shedaniel.rei.api.client.gui.widgets.Widget;
import me.shedaniel.rei.api.client.gui.widgets.Widgets;
import me.shedaniel.rei.api.client.registry.display.DisplayCategory;
import me.shedaniel.rei.api.client.util.ClientEntryStacks;
import me.shedaniel.rei.api.common.category.CategoryIdentifier;
import me.shedaniel.rei.api.common.entry.EntryStack;
import me.shedaniel.rei.api.common.util.EntryStacks;
Expand Down Expand Up @@ -140,9 +139,7 @@ private Collection<? extends EntryStack<?>> getCatalystForRendering(TransformRec
*/
private static EntryStack<FluidStack> makeCustomRenderingFluidEntry(Fluid fluid) {
var fluidStack = EntryStacks.of(fluid);
ClientEntryStacks.setRenderer(fluidStack, entryStack -> {
return new FluidBlockRenderer();
});
fluidStack.withRenderer(entryStack -> new FluidBlockRenderer());
return fluidStack;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@
import appeng.items.misc.PaintBallItem;
import appeng.items.tools.powered.powersink.AEBasePoweredItem;
import appeng.me.helpers.PlayerSource;
import appeng.recipes.mattercannon.MatterCannonAmmo;
import appeng.recipes.AERecipeTypes;
import appeng.util.ConfigInventory;
import appeng.util.InteractionUtil;
import appeng.util.LookDirection;
Expand Down Expand Up @@ -440,7 +440,7 @@ private float getPenetration(AEItemKey what) {
return 0;
}

var recipes = server.getRecipeManager().byType(MatterCannonAmmo.TYPE);
var recipes = server.getRecipeManager().byType(AERecipeTypes.MATTER_CANNON_AMMO);
for (var holder : recipes) {
var ammoRecipe = holder.value();
if (what.matches(ammoRecipe.getAmmo())) {
Expand Down
40 changes: 40 additions & 0 deletions src/main/java/appeng/recipes/AERecipeSerializers.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package appeng.recipes;

import net.minecraft.core.registries.Registries;
import net.minecraft.world.item.crafting.RecipeSerializer;
import net.neoforged.neoforge.registries.DeferredRegister;

import appeng.core.AppEng;
import appeng.recipes.entropy.EntropyRecipeSerializer;
import appeng.recipes.game.AddItemUpgradeRecipeSerializer;
import appeng.recipes.game.FacadeRecipe;
import appeng.recipes.game.RemoveItemUpgradeRecipeSerializer;
import appeng.recipes.game.StorageCellUpgradeRecipeSerializer;
import appeng.recipes.handlers.ChargerRecipeSerializer;
import appeng.recipes.handlers.InscriberRecipeSerializer;
import appeng.recipes.mattercannon.MatterCannonAmmoSerializer;
import appeng.recipes.transform.TransformRecipeSerializer;

public final class AERecipeSerializers {
private AERecipeSerializers() {
}

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

static {
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);
}
}
Loading