Skip to content

Commit

Permalink
feat: JEI integration
Browse files Browse the repository at this point in the history
  • Loading branch information
bruberu committed Jul 21, 2024
1 parent 9abbc5c commit f2f18dc
Show file tree
Hide file tree
Showing 9 changed files with 265 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.Collection;
import java.util.Map;

public class CoolantRegistry {
Expand All @@ -24,6 +25,11 @@ public static ICoolantStats getCoolant(Fluid fluid) {
return COOLANTS.get(fluid);
}

@NotNull
public static Collection<Fluid> getAllCoolants() {
return COOLANTS.keySet();
}

@Nullable
public static Fluid originalFluid(ICoolantStats stats) {
return COOLANTS_INVERSE.get(stats);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import java.util.Collection;
import java.util.Map;

public class FissionFuelRegistry {
Expand All @@ -31,6 +32,11 @@ public static IFissionFuelStats getFissionFuel(ItemStack stack) {
return FUELS.get(stack);
}

@NotNull
public static Collection<ItemStack> getAllFissionableRods() {
return FUELS.keySet();
}

@Nullable
public static IFissionFuelStats getFissionFuel(int hash) {
return HASHED_FUELS.get(hash);
Expand Down
45 changes: 39 additions & 6 deletions src/main/java/gregtech/integration/jei/JustEnoughItemsModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import gregtech.api.metatileentity.SteamMetaTileEntity;
import gregtech.api.metatileentity.registry.MTERegistry;
import gregtech.api.modules.GregTechModule;
import gregtech.api.nuclear.fission.CoolantRegistry;
import gregtech.api.nuclear.fission.FissionFuelRegistry;
import gregtech.api.recipes.Recipe;
import gregtech.api.recipes.RecipeMap;
import gregtech.api.recipes.category.GTRecipeCategory;
Expand All @@ -31,6 +33,10 @@
import gregtech.common.items.MetaItems;
import gregtech.common.metatileentities.MetaTileEntities;
import gregtech.integration.IntegrationSubmodule;
import gregtech.integration.jei.basic.CoolantCategory;
import gregtech.integration.jei.basic.CoolantInfo;
import gregtech.integration.jei.basic.FissionFuelCategory;
import gregtech.integration.jei.basic.FissionFuelInfo;
import gregtech.integration.jei.basic.GTFluidVeinCategory;
import gregtech.integration.jei.basic.GTFluidVeinInfo;
import gregtech.integration.jei.basic.GTOreCategory;
Expand All @@ -55,6 +61,7 @@
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
import net.minecraftforge.fml.common.event.FMLLoadCompleteEvent;
import net.minecraftforge.fml.relauncher.Side;
Expand Down Expand Up @@ -86,11 +93,11 @@

@JEIPlugin
@GregTechModule(
moduleID = GregTechModules.MODULE_JEI,
containerID = GTValues.MODID,
modDependencies = Mods.Names.JUST_ENOUGH_ITEMS,
name = "GregTech JEI Integration",
description = "JustEnoughItems Integration Module")
moduleID = GregTechModules.MODULE_JEI,
containerID = GTValues.MODID,
modDependencies = Mods.Names.JUST_ENOUGH_ITEMS,
name = "GregTech JEI Integration",
description = "JustEnoughItems Integration Module")
public class JustEnoughItemsModule extends IntegrationSubmodule implements IModPlugin {

public static IIngredientRegistry ingredientRegistry;
Expand Down Expand Up @@ -138,6 +145,8 @@ public void registerCategories(@NotNull IRecipeCategoryRegistration registry) {
registry.addRecipeCategories(new GTOreCategory(registry.getJeiHelpers().getGuiHelper()));
registry.addRecipeCategories(new GTFluidVeinCategory(registry.getJeiHelpers().getGuiHelper()));
registry.addRecipeCategories(new MaterialTreeCategory(registry.getJeiHelpers().getGuiHelper()));
registry.addRecipeCategories(new CoolantCategory(registry.getJeiHelpers().getGuiHelper()));
registry.addRecipeCategories(new FissionFuelCategory(registry.getJeiHelpers().getGuiHelper()));
}

@Override
Expand Down Expand Up @@ -188,7 +197,7 @@ public void register(IModRegistry registry) {
}

registry.addRecipes(recipeStream.map(r -> new GTRecipeWrapper(recipeMap, r))
.collect(Collectors.toList()),
.collect(Collectors.toList()),
entry.getKey().getUniqueID());
}
}
Expand Down Expand Up @@ -294,6 +303,30 @@ public void register(IModRegistry registry) {
registry.addRecipeCatalyst(MetaItems.PROSPECTOR_LUV.getStackForm(), fluidVeinSpawnID);
// Fluid Veins End

// Nuclear
Collection<ItemStack> fissionFuels = FissionFuelRegistry.getAllFissionableRods();
List<FissionFuelInfo> fissionFuelInfos = new ArrayList<>();
for (ItemStack fuel : fissionFuels) {
fissionFuelInfos.add(new FissionFuelInfo(fuel,
FissionFuelRegistry.getDepletedFuel(FissionFuelRegistry.getFissionFuel(fuel))));
}

String fissionFuelID = GTValues.MODID + ":" + "fission_fuel";

registry.addRecipes(fissionFuelInfos, fissionFuelID);
registry.addRecipeCatalyst(MetaTileEntities.FISSION_REACTOR.getStackForm(), fissionFuelID);

Collection<Fluid> coolants = CoolantRegistry.getAllCoolants();
List<CoolantInfo> coolantInfos = new ArrayList<>();
for (Fluid coolant : coolants) {
coolantInfos.add(new CoolantInfo(coolant, CoolantRegistry.getCoolant(coolant).getHotCoolant()));
}

String coolantID = GTValues.MODID + ":" + "coolant";
registry.addRecipes(coolantInfos, coolantID);
registry.addRecipeCatalyst(MetaTileEntities.FISSION_REACTOR.getStackForm(), coolantID);
// Nuclear End

ingredientRegistry = registry.getIngredientRegistry();
for (int i = 0; i <= IntCircuitIngredient.CIRCUIT_MAX; i++) {
registry.addIngredientInfo(IntCircuitIngredient.getIntegratedCircuit(i), VanillaTypes.ITEM,
Expand Down
57 changes: 57 additions & 0 deletions src/main/java/gregtech/integration/jei/basic/CoolantCategory.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package gregtech.integration.jei.basic;

import gregtech.api.gui.GuiTextures;
import gregtech.common.metatileentities.MetaTileEntities;

import mezz.jei.api.gui.IGuiFluidStackGroup;

import net.minecraft.client.Minecraft;

import mezz.jei.api.IGuiHelper;
import mezz.jei.api.gui.IDrawable;
import mezz.jei.api.gui.IGuiItemStackGroup;
import mezz.jei.api.gui.IRecipeLayout;
import mezz.jei.api.ingredients.IIngredients;
import mezz.jei.api.recipe.IRecipeWrapper;
import org.jetbrains.annotations.Nullable;

public class CoolantCategory extends BasicRecipeCategory<CoolantInfo, CoolantInfo> {
private final IDrawable icon;
protected final IDrawable slot;
private final IDrawable arrow;
public CoolantCategory(IGuiHelper guiHelper) {
super("coolant", "fission.coolant.name", guiHelper.createBlankDrawable(176, 50), guiHelper);

this.icon = guiHelper.createDrawableIngredient(MetaTileEntities.FISSION_REACTOR.getStackForm());
this.slot = guiHelper.drawableBuilder(GuiTextures.SLOT.imageLocation, 0, 0, 18, 18).setTextureSize(18, 18).build();
this.arrow = guiHelper.drawableBuilder(GuiTextures.PROGRESS_BAR_ARROW.imageLocation, 0, 20, 20, 20).setTextureSize(20, 40).build();
}

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

@Override
public void setRecipe(IRecipeLayout recipeLayout, CoolantInfo recipeWrapper, IIngredients ingredients) {
IGuiFluidStackGroup fluidStackGroup = recipeLayout.getFluidStacks();

fluidStackGroup.init(0, true, 55, 17);
fluidStackGroup.set(0, recipeWrapper.coolant);
fluidStackGroup.init(1, true, 105, 17);
fluidStackGroup.set(1, recipeWrapper.hotCoolant);
}

@Override
public void drawExtras(Minecraft minecraft) {
slot.draw(minecraft, 54, 16);
slot.draw(minecraft, 104, 16);
arrow.draw(minecraft, 77, 14);
}

@Override
public IRecipeWrapper getRecipeWrapper(CoolantInfo recipe) {
return recipe;
}
}
26 changes: 26 additions & 0 deletions src/main/java/gregtech/integration/jei/basic/CoolantInfo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package gregtech.integration.jei.basic;

import net.minecraft.item.ItemStack;

import mezz.jei.api.ingredients.IIngredients;
import mezz.jei.api.ingredients.VanillaTypes;
import mezz.jei.api.recipe.IRecipeWrapper;

import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;

public class CoolantInfo implements IRecipeWrapper
{
public FluidStack coolant;
public FluidStack hotCoolant;

public CoolantInfo(Fluid coolant, Fluid hotCoolant) {
this.coolant = new FluidStack(coolant, 1000);
this.hotCoolant = new FluidStack(hotCoolant, 1000);
}
@Override
public void getIngredients(IIngredients ingredients) {
ingredients.setInput(VanillaTypes.FLUID, coolant);
ingredients.setOutput(VanillaTypes.FLUID, hotCoolant);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package gregtech.integration.jei.basic;

import gregtech.GTInternalTags;
import gregtech.api.GTValues;
import gregtech.api.gui.GuiTextures;

import gregtech.common.metatileentities.MetaTileEntities;

import mezz.jei.api.IGuiHelper;
import mezz.jei.api.gui.IDrawable;
import mezz.jei.api.gui.IGuiItemStackGroup;
import mezz.jei.api.gui.IRecipeLayout;
import mezz.jei.api.ingredients.IIngredients;

import mezz.jei.api.recipe.IRecipeCategory;

import mezz.jei.api.recipe.IRecipeWrapper;

import net.minecraft.client.Minecraft;

import org.jetbrains.annotations.Nullable;

public class FissionFuelCategory extends BasicRecipeCategory<FissionFuelInfo, FissionFuelInfo> {
private final IDrawable icon;
protected final IDrawable slot;
private final IDrawable arrow;
public FissionFuelCategory(IGuiHelper guiHelper) {
super("fission_fuel", "fission.fuel.name", guiHelper.createBlankDrawable(176, 50), guiHelper);

this.icon = guiHelper.createDrawableIngredient(MetaTileEntities.FISSION_REACTOR.getStackForm());
this.slot = guiHelper.drawableBuilder(GuiTextures.SLOT.imageLocation, 0, 0, 18, 18).setTextureSize(18, 18).build();
this.arrow = guiHelper.drawableBuilder(GuiTextures.PROGRESS_BAR_ARROW.imageLocation, 0, 20, 20, 20).setTextureSize(20, 40).build();
}

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

@Override
public void setRecipe(IRecipeLayout recipeLayout, FissionFuelInfo recipeWrapper, IIngredients ingredients) {
IGuiItemStackGroup itemStackGroup = recipeLayout.getItemStacks();

itemStackGroup.init(0, true, 54, 16);
itemStackGroup.set(0, recipeWrapper.rod);
itemStackGroup.init(1, true, 104, 16);
itemStackGroup.set(1, recipeWrapper.depletedRod);
}

@Override
public void drawExtras(Minecraft minecraft) {
slot.draw(minecraft, 54, 16);
slot.draw(minecraft, 104, 16);
arrow.draw(minecraft, 77, 14);
}

@Override
public IRecipeWrapper getRecipeWrapper(FissionFuelInfo recipe) {
return recipe;
}
}
24 changes: 24 additions & 0 deletions src/main/java/gregtech/integration/jei/basic/FissionFuelInfo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package gregtech.integration.jei.basic;

import mezz.jei.api.ingredients.IIngredients;
import mezz.jei.api.ingredients.VanillaTypes;

import mezz.jei.api.recipe.IRecipeWrapper;

import net.minecraft.item.ItemStack;

public class FissionFuelInfo implements IRecipeWrapper
{
public ItemStack rod;
public ItemStack depletedRod;

public FissionFuelInfo(ItemStack rod, ItemStack depletedRod) {
this.rod = rod;
this.depletedRod = depletedRod;
}
@Override
public void getIngredients(IIngredients ingredients) {
ingredients.setInput(VanillaTypes.ITEM, rod);
ingredients.setOutput(VanillaTypes.ITEM, depletedRod);
}
}
3 changes: 3 additions & 0 deletions src/main/resources/assets/gregtech/lang/en_us.lang
Original file line number Diff line number Diff line change
Expand Up @@ -2421,6 +2421,9 @@ gregtech.recipe.category.arc_furnace_recycling=Arc Furnace Recycling
gregtech.recipe.category.macerator_recycling=Macerator Recycling
gregtech.recipe.category.extractor_recycling=Extractor Recycling

fission.coolant.name=Coolant Heating
fission.fuel.name=Fission Reactor

behaviour.hoe=Can till dirt
behaviour.soft_hammer=Activates and Deactivates Machines
behaviour.soft_hammer.enabled=Working Enabled
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,45 @@
{
"animation":{
"frametime":1
"frametime":1,
"frames": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
18,
17,
16,
15,
14,
13,
12,
11,
10,
9,
8,
7,
6,
5,
4,
3,
2,
1
]
}
}
}

0 comments on commit f2f18dc

Please sign in to comment.