package com.simibubi.create; import java.util.function.Supplier; import com.simibubi.create.modules.contraptions.base.ProcessingRecipeSerializer; import com.simibubi.create.modules.contraptions.receivers.CrushingRecipe; import com.simibubi.create.modules.contraptions.receivers.PressingRecipe; import com.simibubi.create.modules.contraptions.receivers.SplashingRecipe; import com.simibubi.create.modules.curiosities.placementHandgun.BuilderGunUpgradeRecipe; import net.minecraft.inventory.IInventory; import net.minecraft.item.crafting.IRecipe; import net.minecraft.item.crafting.IRecipeSerializer; import net.minecraft.item.crafting.IRecipeType; import net.minecraft.util.ResourceLocation; import net.minecraft.util.registry.Registry; import net.minecraftforge.event.RegistryEvent; public enum AllRecipes { PLACEMENT_HANDGUN_UPGRADE(BuilderGunUpgradeRecipe.Serializer::new, Types.BLOCKZAPPER_UPGRADE), CRUSHING(() -> new ProcessingRecipeSerializer<>(CrushingRecipe::new), Types.CRUSHING), SPLASHING(() -> new ProcessingRecipeSerializer<>(SplashingRecipe::new), Types.SPLASHING), PRESSING(() -> new ProcessingRecipeSerializer<>(PressingRecipe::new), Types.PRESSING), ; public static class Types { public static IRecipeType CRUSHING = register("crushing"); public static IRecipeType SPLASHING = register("splashing"); public static IRecipeType PRESSING = register("pressing"); public static IRecipeType BLOCKZAPPER_UPGRADE = register("blockzapper_upgrade"); static > IRecipeType register(final String key) { return Registry.register(Registry.RECIPE_TYPE, new ResourceLocation(key), new IRecipeType() { public String toString() { return key; } }); } } public IRecipeSerializer serializer; public Supplier> supplier; public IRecipeType> type; private AllRecipes(Supplier> supplier, IRecipeType> type) { this.supplier = supplier; this.type = type; } public static void register(RegistryEvent.Register> event) { for (AllRecipes r : AllRecipes.values()) { r.serializer = r.supplier.get(); ResourceLocation location = new ResourceLocation(Create.ID, r.name().toLowerCase()); event.getRegistry().register(r.serializer.setRegistryName(location)); } } }