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.

This commit is contained in:
2022-01-16 16:48:07 +00:00
parent 350176d6f9
commit b1975e912e
4 changed files with 67 additions and 7 deletions

View File

@ -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<IFinishedRecipe> 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)

View File

@ -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();
}
}

View File

@ -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<IRecipeSerializer<?>> TOTEM_RECIPE =
Registration.RECIPE_SERIALIZERS.register("totem_recipe", () -> ExtendedShapedRecipe.Serializer.basic(TotemRecipe::new));
public static void register() {}
}

View File

@ -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<Item> ITEMS = create(ForgeRegistries.ITEMS);
public static final DeferredRegister<IRecipeSerializer<?>> 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 <T extends IForgeRegistryEntry<T>> DeferredRegister<T> create(IForgeRegistry<T> registry) {