Skip to content

Commit 50785bb

Browse files
committed
Added NEI input handler for fluid slots
1 parent c21229c commit 50785bb

File tree

7 files changed

+84
-25
lines changed

7 files changed

+84
-25
lines changed

src/main/java/gregtechmod/common/containers/GT_Container_Electrolyzer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package gregtechmod.common.containers;
22

33
import gregtechmod.api.gui.GT_ContainerMetaTile_Machine;
4-
import gregtechmod.api.gui.GT_Slot_Holo;
4+
import gregtechmod.api.gui.GT_FluidSlot;
55
import gregtechmod.api.gui.GT_Slot_Output;
66
import gregtechmod.api.interfaces.IGregTechTileEntity;
77

@@ -21,7 +21,7 @@ public void addSlots(InventoryPlayer aInventoryPlayer) {
2121
addSlotToContainer(new GT_Slot_Output (mTileEntity, 3, 70, 16));
2222
addSlotToContainer(new GT_Slot_Output (mTileEntity, 4, 90, 16));
2323
addSlotToContainer(new GT_Slot_Output (mTileEntity, 5, 110, 16));
24-
addSlotToContainer(new GT_Slot_Holo (mTileEntity, 6, 110, 46, false, false, 64));
24+
addFluidSlot(new GT_FluidSlot(mTileEntity, 6, 110, 46, 0));
2525
}
2626

2727
public int getSlotCount() {
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package gregtechmod.mistaqur.nei;
2+
3+
import codechicken.nei.NEIClientConfig;
4+
import codechicken.nei.guihook.GuiContainerManager;
5+
import codechicken.nei.guihook.IContainerInputHandler;
6+
import codechicken.nei.recipe.GuiCraftingRecipe;
7+
import codechicken.nei.recipe.GuiUsageRecipe;
8+
9+
import gregtechmod.api.gui.GT_FluidSlot;
10+
import gregtechmod.api.util.GT_Utility;
11+
12+
import net.minecraft.client.gui.inventory.GuiContainer;
13+
import net.minecraft.inventory.Slot;
14+
import net.minecraftforge.fluids.FluidStack;
15+
16+
/**
17+
* @author TheDarkDnKTv
18+
*
19+
*/
20+
public class GT_NEIInputHandler implements IContainerInputHandler {
21+
22+
@Override
23+
public boolean lastKeyTyped(GuiContainer gui, char keyChar, int keyID) {
24+
if (keyID == NEIClientConfig.getKeyBinding("gui.usage") || keyID == NEIClientConfig.getKeyBinding("gui.recipe")) {
25+
Slot slot = GuiContainerManager.getSlotMouseOver(gui);
26+
if (slot != null && slot instanceof GT_FluidSlot) {
27+
FluidStack fluid = ((GT_FluidSlot) slot).getFluid();
28+
if (GT_Utility.isFluidStackValid(fluid)) {
29+
return keyID == NEIClientConfig.getKeyBinding("gui.usage") ? GuiUsageRecipe.openRecipeGui("liquid", fluid.copy()) : GuiCraftingRecipe.openRecipeGui("liquid", fluid.copy());
30+
}
31+
}
32+
}
33+
34+
return false;
35+
}
36+
37+
@Override public boolean mouseClicked(GuiContainer gui, int mousex, int mousey, int button) { return false; }
38+
@Override public boolean keyTyped(GuiContainer gui, char keyChar, int keyCode) { return false; }
39+
@Override public void onKeyTyped(GuiContainer gui, char keyChar, int keyID) {}
40+
@Override public void onMouseClicked(GuiContainer gui, int mousex, int mousey, int button) {}
41+
@Override public void onMouseUp(GuiContainer gui, int mousex, int mousey, int button) {}
42+
@Override public boolean mouseScrolled(GuiContainer gui, int mousex, int mousey, int scrolled) { return false; }
43+
@Override public void onMouseScrolled(GuiContainer gui, int mousex, int mousey, int scrolled) {}
44+
@Override public void onMouseDragged(GuiContainer gui, int mousex, int mousey, int button, long heldTime) {}
45+
}

src/main/java/gregtechmod/mistaqur/nei/NEI_GregTech_Config.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import gregtechmod.common.gui.GT_GUIContainer_SemifluidGenerator;
1212
import gregtechmod.common.gui.GT_GUIContainer_ThermalGenerator;
1313
import gregtechmod.common.recipe.RecipeMaps;
14+
import gregtechmod.mistaqur.nei.handlers.AlloySmelterRecipeHandler;
1415
import gregtechmod.mistaqur.nei.handlers.AssemblerRecipeHandler;
1516
import gregtechmod.mistaqur.nei.handlers.BenderRecipeHandler;
1617
import gregtechmod.mistaqur.nei.handlers.BlastRecipeHandler;
@@ -31,6 +32,7 @@
3132
import gregtechmod.mistaqur.nei.handlers.VacuumFreezerRecipeHandler;
3233
import gregtechmod.mistaqur.nei.handlers.WiremillRecipeHandler;
3334
import codechicken.nei.api.IConfigureNEI;
35+
import codechicken.nei.guihook.GuiContainerManager;
3436

3537
public class NEI_GregTech_Config implements IConfigureNEI {
3638
public static boolean sIsAdded = true;
@@ -65,6 +67,8 @@ public void loadConfig() {
6567
new GeneratorHandler(RecipeMaps.PLASMA_FUELS , "plasma_generator" , GT_GUIContainer_PlasmaGenerator.class);
6668
new GeneratorHandler(RecipeMaps.MAGIC_FUELS , "magic_generator" , GT_GUIContainer_MagicEnergyConverter.class);
6769

70+
GuiContainerManager.addInputHandler(new GT_NEIInputHandler());
71+
6872
try {
6973
Class.forName("codechicken.nei.api.API");
7074
codechicken.nei.api.API.registerGuiOverlay(GT_GUIContainer_AdvancedWorkbench.class, "crafting", 57, 22);
@@ -89,6 +93,5 @@ public String getName() {
8993
public String getVersion() {
9094
return "(3.08)";
9195
}
92-
9396
}
9497

src/main/java/gregtechmod/mistaqur/nei/PositionedFluidStack.java

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,20 @@
55

66
import org.lwjgl.opengl.GL11;
77

8-
import codechicken.lib.gui.GuiDraw;
98
import codechicken.nei.recipe.GuiCraftingRecipe;
109
import codechicken.nei.recipe.GuiUsageRecipe;
10+
11+
import cpw.mods.fml.common.FMLCommonHandler;
1112
import cpw.mods.fml.relauncher.Side;
1213
import cpw.mods.fml.relauncher.SideOnly;
14+
15+
import gregtechmod.api.GregTech_API;
1316
import gregtechmod.api.util.GT_Utility;
14-
import net.minecraft.client.renderer.Tessellator;
17+
import gregtechmod.common.render.GTRenderHelper;
18+
1519
import net.minecraft.client.renderer.texture.TextureMap;
1620
import net.minecraft.util.IIcon;
21+
import net.minecraft.util.ResourceLocation;
1722
import net.minecraftforge.fluids.FluidStack;
1823

1924
/**
@@ -22,16 +27,29 @@
2227
*/
2328
public class PositionedFluidStack {
2429

30+
@SideOnly(Side.CLIENT)
31+
protected static ResourceLocation DEFAULT_SLOT_OVERLAY;
32+
protected boolean renderOverlay;
33+
2534
public int x;
2635
public int y;
2736
public FluidStack fluid;
28-
/**
29-
*
30-
*/
31-
public PositionedFluidStack(FluidStack fluid, int x, int y) {
37+
38+
static {
39+
if (FMLCommonHandler.instance().getSide().isClient()) {
40+
DEFAULT_SLOT_OVERLAY = new ResourceLocation(GregTech_API.GUI_PATH + "overlays/FluidSlot.png");
41+
}
42+
}
43+
44+
PositionedFluidStack(FluidStack fluid, int x, int y) {
45+
this(fluid, x, y, false);
46+
}
47+
48+
PositionedFluidStack(FluidStack fluid, int x, int y, boolean renderOverlay) {
3249
this.x = x;
3350
this.y = y;
3451
this.fluid = fluid;
52+
this.renderOverlay = renderOverlay;
3553
}
3654

3755
public boolean transfer(boolean usage) {
@@ -52,29 +70,21 @@ public boolean transfer(boolean usage) {
5270

5371
@SideOnly(Side.CLIENT)
5472
public void draw() {
73+
if (renderOverlay) {
74+
GTRenderHelper.bindTexture(DEFAULT_SLOT_OVERLAY);
75+
GTRenderHelper.drawQuad(x-1, y-1, 0, 18, 18, 0.0F, 1.0F, 0.0F, 1.0F);
76+
}
77+
5578
if (GT_Utility.isFluidStackValid(fluid)) {
5679
IIcon fluidIcon = fluid.getFluid().getIcon(fluid);
5780
fluidIcon = fluidIcon != null ? fluidIcon : fluid.getFluid().getFlowingIcon();
5881
fluidIcon = fluidIcon != null ? fluidIcon : fluid.getFluid().getStillIcon();
5982
if (fluidIcon == null) return;
60-
61-
GuiDraw.changeTexture(TextureMap.locationBlocksTexture);
83+
GTRenderHelper.bindTexture(TextureMap.locationBlocksTexture);
6284
int color = fluid.getFluid().getColor(fluid);
6385
GL11.glColor3ub((byte) (color >> 16 & 0xFF), (byte) (color >> 8 & 0xFF), (byte) (color & 0xFF));
6486
GL11.glDisable(GL11.GL_BLEND);
65-
66-
double minU = fluidIcon.getMinU();
67-
double maxU = fluidIcon.getMaxU();
68-
double minV = fluidIcon.getMinV();
69-
double maxV = fluidIcon.getMaxV();
70-
71-
Tessellator.instance.startDrawingQuads();
72-
Tessellator.instance.addVertexWithUV(x , y + 16 , 0, maxU, minV);
73-
Tessellator.instance.addVertexWithUV(x + 16 , y + 16 , 0, minU, minV);
74-
Tessellator.instance.addVertexWithUV(x + 16 , y , 0, minU, maxV);
75-
Tessellator.instance.addVertexWithUV(x , y , 0, maxU, maxV);
76-
Tessellator.instance.draw();
77-
87+
GTRenderHelper.drawQuad(x, y, 0, fluidIcon);
7888
GL11.glEnable(GL11.GL_BLEND);
7989
}
8090
}

src/main/java/gregtechmod/mistaqur/nei/AlloySmelterRecipeHandler.java renamed to src/main/java/gregtechmod/mistaqur/nei/handlers/AlloySmelterRecipeHandler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package gregtechmod.mistaqur.nei;
1+
package gregtechmod.mistaqur.nei.handlers;
22

33
import gregtechmod.api.GregTech_API;
44
import gregtechmod.api.recipe.Recipe;
@@ -12,6 +12,7 @@
1212
import gregtechmod.common.gui.GT_GUIContainer_BasicMachine_Macerator;
1313
import gregtechmod.common.gui.GT_GUIContainer_Scrapboxinator;
1414
import gregtechmod.common.recipe.RecipeMaps;
15+
import gregtechmod.mistaqur.nei.GT_RecipeHandler;
1516

1617
import java.awt.Rectangle;
1718
import java.util.ArrayList;
-462 Bytes
Loading
-85 Bytes
Loading

0 commit comments

Comments
 (0)