Skip to content

Commit

Permalink
JEI Support for Tagged Goo Recipes
Browse files Browse the repository at this point in the history
  • Loading branch information
Direwolf20-MC committed Oct 8, 2024
1 parent 2c9031b commit af2b2fd
Show file tree
Hide file tree
Showing 5 changed files with 128 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
// 1.21.1 2024-10-08T15:55:42.5554425 Languages: en_us for mod: justdirethings
bbc3b30a0096bf8e1b4eefaa50957727f3cbe93f assets/justdirethings/lang/en_us.json
// 1.21.1 2024-10-08T16:36:37.283985 Languages: en_us for mod: justdirethings
96bc43e5eceb21c7648659daa43d1b5415e229bc assets/justdirethings/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,7 @@
"justdirethings.fuelcanisteritemsamtstack": "Stack Fuel Amount: %f",
"justdirethings.glowing.detailtext": "See all nearby mobs",
"justdirethings.goospreadrecipe.title": "Goo Spreading Recipes",
"justdirethings.goospreadrecipetag.title": "Tagged Goo Spreading Recipes",
"justdirethings.groundstomp.detailtext": "Activate to push mobs away",
"justdirethings.hammer.detailtext": "3x3, 5x5, or 7x7 depending on tool tier",
"justdirethings.hint.dropinwater": "Drop in Water",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
package com.direwolf20.justdirethings.client.jei;

import com.direwolf20.justdirethings.JustDireThings;
import com.direwolf20.justdirethings.datagen.recipes.GooSpreadRecipeTag;
import com.direwolf20.justdirethings.setup.Registration;
import com.mojang.blaze3d.systems.RenderSystem;
import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
import mezz.jei.api.gui.builder.IRecipeSlotBuilder;
import mezz.jei.api.gui.drawable.IDrawable;
import mezz.jei.api.gui.drawable.IDrawableStatic;
import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
import mezz.jei.api.helpers.IGuiHelper;
import mezz.jei.api.recipe.IFocusGroup;
import mezz.jei.api.recipe.RecipeIngredientRole;
import mezz.jei.api.recipe.RecipeType;
import mezz.jei.api.recipe.category.IRecipeCategory;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.level.block.LiquidBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.neoforged.neoforge.common.crafting.BlockTagIngredient;

import java.util.ArrayList;
import java.util.List;

public class GooSpreadRecipeTagCategory implements IRecipeCategory<GooSpreadRecipeTag> {
public static final RecipeType<GooSpreadRecipeTag> TYPE =
RecipeType.create(JustDireThings.MODID, "goo_spread_recipe_tag", GooSpreadRecipeTag.class);

public static final int width = 120;
public static final int height = 40;

private final IDrawable background;
private final IDrawable slot;
private final IDrawable icon;
private final Component localizedName;
private final IDrawableStatic arrow;

public GooSpreadRecipeTagCategory(IGuiHelper guiHelper) {
background = guiHelper.createBlankDrawable(width, height);
slot = guiHelper.getSlotDrawable();
icon = guiHelper.createDrawableItemStack(new ItemStack(Registration.GooBlock_Tier1.get()));
localizedName = Component.translatable("justdirethings.goospreadrecipetag.title");
this.arrow = guiHelper.getRecipeArrow();
}

@Override
public RecipeType<GooSpreadRecipeTag> getRecipeType() {
return TYPE;
}

@Override
public Component getTitle() {
return localizedName;
}

@Override
public IDrawable getBackground() {
return background;
}

@Override
public IDrawable getIcon() {
return icon;
}

@Override
public void draw(GooSpreadRecipeTag recipe, IRecipeSlotsView slotsView, GuiGraphics gui, double mouseX, double mouseY) {
RenderSystem.enableBlend();
arrow.draw(gui, 54, 12);
background.draw(gui, 17, 0);
RenderSystem.disableBlend();
}

@Override
public void setRecipe(IRecipeLayoutBuilder builder, GooSpreadRecipeTag recipe, IFocusGroup focuses) {
BlockTagIngredient input = recipe.getInput();
IRecipeSlotBuilder inputSlotBuilder = builder.addSlot(RecipeIngredientRole.INPUT, 9, 12);
List<ItemStack> itemstacks = input.getItems().toList();
inputSlotBuilder.addItemStacks(itemstacks);
/*if (input.getBlock().asItem() != Items.AIR) {
inputSlotBuilder
.addItemStack(new ItemStack(input.getBlock()));
} else if (input.getBlock() instanceof LiquidBlock liquidBlock) {
inputSlotBuilder
.addFluidStack(liquidBlock.fluid, 1000);
}*/
List<ItemStack> catalystlist = new ArrayList<>();

if (recipe.getTierRequirement() <= 1)
catalystlist.add(new ItemStack(Registration.GooBlock_Tier1.get()));
if (recipe.getTierRequirement() <= 2)
catalystlist.add(new ItemStack(Registration.GooBlock_Tier2.get()));
if (recipe.getTierRequirement() <= 3)
catalystlist.add(new ItemStack(Registration.GooBlock_Tier3.get()));
if (recipe.getTierRequirement() <= 4)
catalystlist.add(new ItemStack(Registration.GooBlock_Tier4.get()));
builder.addSlot(RecipeIngredientRole.CATALYST, 29, 12)
.addItemStacks(catalystlist);

BlockState output = recipe.getOutput();
if (output.getBlock().asItem() != Items.AIR) {
builder.addSlot(RecipeIngredientRole.OUTPUT, 88, 12)
.addItemStack(new ItemStack(output.getBlock()));
} else if (output.getBlock() instanceof LiquidBlock liquidBlock) {
builder.addSlot(RecipeIngredientRole.OUTPUT, 88, 12)
.addFluidStack(liquidBlock.fluid, 1000);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,7 @@
import com.direwolf20.justdirethings.client.jei.ghostfilters.GhostFilterBasic;
import com.direwolf20.justdirethings.client.screens.basescreens.BaseScreen;
import com.direwolf20.justdirethings.common.blocks.baseblocks.BaseMachineBlock;
import com.direwolf20.justdirethings.datagen.recipes.AbilityRecipe;
import com.direwolf20.justdirethings.datagen.recipes.FluidDropRecipe;
import com.direwolf20.justdirethings.datagen.recipes.GooSpreadRecipe;
import com.direwolf20.justdirethings.datagen.recipes.PaxelRecipe;
import com.direwolf20.justdirethings.datagen.recipes.*;
import com.direwolf20.justdirethings.setup.Registration;
import mezz.jei.api.IModPlugin;
import mezz.jei.api.JeiPlugin;
Expand Down Expand Up @@ -70,6 +67,7 @@ public void registerCategories(IRecipeCategoryRegistration registration) {
IGuiHelper guiHelper = jeiHelpers.getGuiHelper();
registration.addRecipeCategories(
new GooSpreadRecipeCategory(guiHelper),
new GooSpreadRecipeTagCategory(guiHelper),
new FluidDropRecipeCategory(guiHelper)
);
registration.addRecipeCategories(new OreToResourceCategory(registration.getJeiHelpers().getGuiHelper()));
Expand All @@ -84,6 +82,11 @@ public void registerRecipes(IRecipeRegistration registration) {

registration.addRecipes(GooSpreadRecipeCategory.TYPE, goospreadrecipes);

List<GooSpreadRecipeTag> goospreadtagrecipes = recipeManager.getAllRecipesFor(Registration.GOO_SPREAD_RECIPE_TYPE_TAG.get())
.stream().map(RecipeHolder::value).collect(Collectors.toList());

registration.addRecipes(GooSpreadRecipeTagCategory.TYPE, goospreadtagrecipes);

List<FluidDropRecipe> fluidDropRecipes = recipeManager.getAllRecipesFor(Registration.FLUID_DROP_RECIPE_TYPE.get())
.stream().map(RecipeHolder::value).collect(Collectors.toList());

Expand Down Expand Up @@ -111,7 +114,11 @@ public void registerRecipeCatalysts(IRecipeCatalystRegistration registry) {
registry.addRecipeCatalyst(new ItemStack(Registration.GooBlock_Tier2.get()), GooSpreadRecipeCategory.TYPE);
registry.addRecipeCatalyst(new ItemStack(Registration.GooBlock_Tier3.get()), GooSpreadRecipeCategory.TYPE);
registry.addRecipeCatalyst(new ItemStack(Registration.GooBlock_Tier4.get()), GooSpreadRecipeCategory.TYPE);
//registry.addRecipeCatalyst(new ItemStack(Registration.PolymorphicCatalyst.get()), FluidDropRecipeCategory.TYPE);

registry.addRecipeCatalyst(new ItemStack(Registration.GooBlock_Tier1.get()), GooSpreadRecipeTagCategory.TYPE);
registry.addRecipeCatalyst(new ItemStack(Registration.GooBlock_Tier2.get()), GooSpreadRecipeTagCategory.TYPE);
registry.addRecipeCatalyst(new ItemStack(Registration.GooBlock_Tier3.get()), GooSpreadRecipeTagCategory.TYPE);
registry.addRecipeCatalyst(new ItemStack(Registration.GooBlock_Tier4.get()), GooSpreadRecipeTagCategory.TYPE);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -543,6 +543,7 @@ protected void addTranslations() {

//Recipes
add("justdirethings.goospreadrecipe.title", "Goo Spreading Recipes");
add("justdirethings.goospreadrecipetag.title", "Tagged Goo Spreading Recipes");
add("justdirethings.oretoresource.title", "Ores to Resources");
add("justdirethings.fluiddroprecipe.title", "Fluid Drop Recipes");

Expand Down

0 comments on commit af2b2fd

Please sign in to comment.