From b1975e912e53b01311881ff2766f25080e99be24 Mon Sep 17 00:00:00 2001 From: Micle Date: Sun, 16 Jan 2022 16:48:07 +0000 Subject: [PATCH] Made Straw totem use new Extended Recipe builder. Created ModRecipes and registering new TOTEM_RECIPE serializer. Removed old events from Registration and added RECIPE_SERIALIZERS. Created new TotemRecipe for totem items. --- .../data/ModRecipeProvider.java | 16 +++++++-- .../item/crafting/TotemRecipe.java | 36 +++++++++++++++++++ .../totemofreviving/setup/ModRecipes.java | 13 +++++++ .../totemofreviving/setup/Registration.java | 9 +++-- 4 files changed, 67 insertions(+), 7 deletions(-) create mode 100644 src/main/java/dev/micle/totemofreviving/item/crafting/TotemRecipe.java create mode 100644 src/main/java/dev/micle/totemofreviving/setup/ModRecipes.java diff --git a/src/main/java/dev/micle/totemofreviving/data/ModRecipeProvider.java b/src/main/java/dev/micle/totemofreviving/data/ModRecipeProvider.java index be9140b..6fde445 100755 --- a/src/main/java/dev/micle/totemofreviving/data/ModRecipeProvider.java +++ b/src/main/java/dev/micle/totemofreviving/data/ModRecipeProvider.java @@ -1,10 +1,11 @@ package dev.micle.totemofreviving.data; +import dev.micle.totemofreviving.item.crafting.ExtendedShapedRecipeBuilder; import dev.micle.totemofreviving.setup.ModItems; +import dev.micle.totemofreviving.setup.ModRecipes; import net.minecraft.data.DataGenerator; import net.minecraft.data.IFinishedRecipe; import net.minecraft.data.RecipeProvider; -import net.minecraft.data.ShapedRecipeBuilder; import net.minecraft.item.Items; import javax.annotation.ParametersAreNonnullByDefault; @@ -18,7 +19,7 @@ public class ModRecipeProvider extends RecipeProvider { @Override @ParametersAreNonnullByDefault protected void buildShapelessRecipes(Consumer consumer) { - ShapedRecipeBuilder.shaped(ModItems.STRAW_TOTEM.get()) + ExtendedShapedRecipeBuilder.shaped(ModRecipes.TOTEM_RECIPE.get(), ModItems.STRAW_TOTEM.get()) .define('W', Items.WHEAT) .define('|', Items.STICK) .define('S', Items.STRING) @@ -29,6 +30,17 @@ public class ModRecipeProvider extends RecipeProvider { .unlockedBy("has_item", has(Items.WHEAT)) .save(consumer); /* + ShapedRecipeBuilder.shaped(ModItems.STRAW_TOTEM.get()) + .define('W', Items.WHEAT) + .define('|', Items.STICK) + .define('S', Items.STRING) + .define('N', Items.IRON_NUGGET) + .pattern("NSN") + .pattern("NWN") + .pattern("N|N") + .unlockedBy("has_item", has(Items.WHEAT)) + .save(consumer); + ShapedRecipeBuilder.shaped(ModItems.STRAW_CHARGE.get()) .define('W', Items.WHEAT) .define('E', Items.EMERALD) diff --git a/src/main/java/dev/micle/totemofreviving/item/crafting/TotemRecipe.java b/src/main/java/dev/micle/totemofreviving/item/crafting/TotemRecipe.java new file mode 100644 index 0000000..4aea62a --- /dev/null +++ b/src/main/java/dev/micle/totemofreviving/item/crafting/TotemRecipe.java @@ -0,0 +1,36 @@ +package dev.micle.totemofreviving.item.crafting; + +import dev.micle.totemofreviving.config.Config; +import dev.micle.totemofreviving.item.StrawTotemItem; +import dev.micle.totemofreviving.setup.ModRecipes; +import net.minecraft.inventory.CraftingInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipeSerializer; +import net.minecraft.item.crafting.ShapedRecipe; +import net.minecraft.world.World; + +public class TotemRecipe extends ExtendedShapedRecipe { + public TotemRecipe(ShapedRecipe recipe) { + super(recipe); + } + + @Override + public IRecipeSerializer getSerializer() { + return ModRecipes.TOTEM_RECIPE.get(); + } + + @Override + public boolean matches(CraftingInventory inventory, World world) { + if (!Config.Server.getStrawTotemConfig().getIsEnabled()) { + if (getResultItem().getItem() instanceof StrawTotemItem) { + return false; + } + } + return getBaseRecipe().matches(inventory, world); + } + + @Override + public ItemStack assemble(CraftingInventory inventory) { + return getResultItem(); + } +} diff --git a/src/main/java/dev/micle/totemofreviving/setup/ModRecipes.java b/src/main/java/dev/micle/totemofreviving/setup/ModRecipes.java new file mode 100644 index 0000000..2c08d8a --- /dev/null +++ b/src/main/java/dev/micle/totemofreviving/setup/ModRecipes.java @@ -0,0 +1,13 @@ +package dev.micle.totemofreviving.setup; + +import dev.micle.totemofreviving.item.crafting.ExtendedShapedRecipe; +import dev.micle.totemofreviving.item.crafting.TotemRecipe; +import net.minecraft.item.crafting.IRecipeSerializer; +import net.minecraftforge.fml.RegistryObject; + +public class ModRecipes { + public static final RegistryObject> TOTEM_RECIPE = + Registration.RECIPE_SERIALIZERS.register("totem_recipe", () -> ExtendedShapedRecipe.Serializer.basic(TotemRecipe::new)); + + public static void register() {} +} diff --git a/src/main/java/dev/micle/totemofreviving/setup/Registration.java b/src/main/java/dev/micle/totemofreviving/setup/Registration.java index b4c5a2d..366e1b0 100755 --- a/src/main/java/dev/micle/totemofreviving/setup/Registration.java +++ b/src/main/java/dev/micle/totemofreviving/setup/Registration.java @@ -1,9 +1,8 @@ package dev.micle.totemofreviving.setup; import dev.micle.totemofreviving.TotemOfReviving; -import dev.micle.totemofreviving.event.UpdateRecipesEventHandler; import net.minecraft.item.Item; -import net.minecraftforge.common.MinecraftForge; +import net.minecraft.item.crafting.IRecipeSerializer; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.registries.DeferredRegister; @@ -13,6 +12,7 @@ import net.minecraftforge.registries.IForgeRegistryEntry; public class Registration { public static final DeferredRegister ITEMS = create(ForgeRegistries.ITEMS); + public static final DeferredRegister> RECIPE_SERIALIZERS = create(ForgeRegistries.RECIPE_SERIALIZERS); public static void register() { IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus(); @@ -20,9 +20,8 @@ public class Registration { ITEMS.register(modEventBus); ModItems.register(); - modEventBus.register(new UpdateRecipesEventHandler.ModBus()); - - MinecraftForge.EVENT_BUS.register(new UpdateRecipesEventHandler.EventBus()); + RECIPE_SERIALIZERS.register(modEventBus); + ModRecipes.register(); } private static > DeferredRegister create(IForgeRegistry registry) {