diff --git a/src/main/java/gregtechmod/common/containers/GT_Container_Electrolyzer.java b/src/main/java/gregtechmod/common/containers/GT_Container_Electrolyzer.java index 1d8c6f0..7ab12dd 100644 --- a/src/main/java/gregtechmod/common/containers/GT_Container_Electrolyzer.java +++ b/src/main/java/gregtechmod/common/containers/GT_Container_Electrolyzer.java @@ -1,7 +1,7 @@ package gregtechmod.common.containers; import gregtechmod.api.gui.GT_ContainerMetaTile_Machine; -import gregtechmod.api.gui.GT_Slot_Holo; +import gregtechmod.api.gui.GT_FluidSlot; import gregtechmod.api.gui.GT_Slot_Output; import gregtechmod.api.interfaces.IGregTechTileEntity; @@ -21,7 +21,7 @@ public class GT_Container_Electrolyzer extends GT_ContainerMetaTile_Machine { addSlotToContainer(new GT_Slot_Output (mTileEntity, 3, 70, 16)); addSlotToContainer(new GT_Slot_Output (mTileEntity, 4, 90, 16)); addSlotToContainer(new GT_Slot_Output (mTileEntity, 5, 110, 16)); - addSlotToContainer(new GT_Slot_Holo (mTileEntity, 6, 110, 46, false, false, 64)); + addFluidSlot(new GT_FluidSlot(mTileEntity, 6, 110, 46, 0)); } public int getSlotCount() { diff --git a/src/main/java/gregtechmod/mistaqur/nei/GT_NEIInputHandler.java b/src/main/java/gregtechmod/mistaqur/nei/GT_NEIInputHandler.java new file mode 100644 index 0000000..26a1285 --- /dev/null +++ b/src/main/java/gregtechmod/mistaqur/nei/GT_NEIInputHandler.java @@ -0,0 +1,45 @@ +package gregtechmod.mistaqur.nei; + +import codechicken.nei.NEIClientConfig; +import codechicken.nei.guihook.GuiContainerManager; +import codechicken.nei.guihook.IContainerInputHandler; +import codechicken.nei.recipe.GuiCraftingRecipe; +import codechicken.nei.recipe.GuiUsageRecipe; + +import gregtechmod.api.gui.GT_FluidSlot; +import gregtechmod.api.util.GT_Utility; + +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.inventory.Slot; +import net.minecraftforge.fluids.FluidStack; + +/** + * @author TheDarkDnKTv + * + */ +public class GT_NEIInputHandler implements IContainerInputHandler { + + @Override + public boolean lastKeyTyped(GuiContainer gui, char keyChar, int keyID) { + if (keyID == NEIClientConfig.getKeyBinding("gui.usage") || keyID == NEIClientConfig.getKeyBinding("gui.recipe")) { + Slot slot = GuiContainerManager.getSlotMouseOver(gui); + if (slot != null && slot instanceof GT_FluidSlot) { + FluidStack fluid = ((GT_FluidSlot) slot).getFluid(); + if (GT_Utility.isFluidStackValid(fluid)) { + return keyID == NEIClientConfig.getKeyBinding("gui.usage") ? GuiUsageRecipe.openRecipeGui("liquid", fluid.copy()) : GuiCraftingRecipe.openRecipeGui("liquid", fluid.copy()); + } + } + } + + return false; + } + + @Override public boolean mouseClicked(GuiContainer gui, int mousex, int mousey, int button) { return false; } + @Override public boolean keyTyped(GuiContainer gui, char keyChar, int keyCode) { return false; } + @Override public void onKeyTyped(GuiContainer gui, char keyChar, int keyID) {} + @Override public void onMouseClicked(GuiContainer gui, int mousex, int mousey, int button) {} + @Override public void onMouseUp(GuiContainer gui, int mousex, int mousey, int button) {} + @Override public boolean mouseScrolled(GuiContainer gui, int mousex, int mousey, int scrolled) { return false; } + @Override public void onMouseScrolled(GuiContainer gui, int mousex, int mousey, int scrolled) {} + @Override public void onMouseDragged(GuiContainer gui, int mousex, int mousey, int button, long heldTime) {} +} diff --git a/src/main/java/gregtechmod/mistaqur/nei/NEI_GregTech_Config.java b/src/main/java/gregtechmod/mistaqur/nei/NEI_GregTech_Config.java index b235f6f..ac5e6cd 100644 --- a/src/main/java/gregtechmod/mistaqur/nei/NEI_GregTech_Config.java +++ b/src/main/java/gregtechmod/mistaqur/nei/NEI_GregTech_Config.java @@ -11,6 +11,7 @@ import gregtechmod.common.gui.GT_GUIContainer_PlasmaGenerator; import gregtechmod.common.gui.GT_GUIContainer_SemifluidGenerator; import gregtechmod.common.gui.GT_GUIContainer_ThermalGenerator; import gregtechmod.common.recipe.RecipeMaps; +import gregtechmod.mistaqur.nei.handlers.AlloySmelterRecipeHandler; import gregtechmod.mistaqur.nei.handlers.AssemblerRecipeHandler; import gregtechmod.mistaqur.nei.handlers.BenderRecipeHandler; import gregtechmod.mistaqur.nei.handlers.BlastRecipeHandler; @@ -31,6 +32,7 @@ import gregtechmod.mistaqur.nei.handlers.SawmillRecipeHandler; import gregtechmod.mistaqur.nei.handlers.VacuumFreezerRecipeHandler; import gregtechmod.mistaqur.nei.handlers.WiremillRecipeHandler; import codechicken.nei.api.IConfigureNEI; +import codechicken.nei.guihook.GuiContainerManager; public class NEI_GregTech_Config implements IConfigureNEI { public static boolean sIsAdded = true; @@ -65,6 +67,8 @@ public class NEI_GregTech_Config implements IConfigureNEI { new GeneratorHandler(RecipeMaps.PLASMA_FUELS , "plasma_generator" , GT_GUIContainer_PlasmaGenerator.class); new GeneratorHandler(RecipeMaps.MAGIC_FUELS , "magic_generator" , GT_GUIContainer_MagicEnergyConverter.class); + GuiContainerManager.addInputHandler(new GT_NEIInputHandler()); + try { Class.forName("codechicken.nei.api.API"); codechicken.nei.api.API.registerGuiOverlay(GT_GUIContainer_AdvancedWorkbench.class, "crafting", 57, 22); @@ -89,6 +93,5 @@ public class NEI_GregTech_Config implements IConfigureNEI { public String getVersion() { return "(3.08)"; } - } diff --git a/src/main/java/gregtechmod/mistaqur/nei/PositionedFluidStack.java b/src/main/java/gregtechmod/mistaqur/nei/PositionedFluidStack.java index 0ef7c9c..469ac58 100644 --- a/src/main/java/gregtechmod/mistaqur/nei/PositionedFluidStack.java +++ b/src/main/java/gregtechmod/mistaqur/nei/PositionedFluidStack.java @@ -5,15 +5,20 @@ import java.awt.Rectangle; import org.lwjgl.opengl.GL11; -import codechicken.lib.gui.GuiDraw; import codechicken.nei.recipe.GuiCraftingRecipe; import codechicken.nei.recipe.GuiUsageRecipe; + +import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; + +import gregtechmod.api.GregTech_API; import gregtechmod.api.util.GT_Utility; -import net.minecraft.client.renderer.Tessellator; +import gregtechmod.common.render.GTRenderHelper; + import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.util.IIcon; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.FluidStack; /** @@ -22,16 +27,29 @@ import net.minecraftforge.fluids.FluidStack; */ public class PositionedFluidStack { + @SideOnly(Side.CLIENT) + protected static ResourceLocation DEFAULT_SLOT_OVERLAY; + protected boolean renderOverlay; + public int x; public int y; public FluidStack fluid; - /** - * - */ - public PositionedFluidStack(FluidStack fluid, int x, int y) { + + static { + if (FMLCommonHandler.instance().getSide().isClient()) { + DEFAULT_SLOT_OVERLAY = new ResourceLocation(GregTech_API.GUI_PATH + "overlays/FluidSlot.png"); + } + } + + PositionedFluidStack(FluidStack fluid, int x, int y) { + this(fluid, x, y, false); + } + + PositionedFluidStack(FluidStack fluid, int x, int y, boolean renderOverlay) { this.x = x; this.y = y; this.fluid = fluid; + this.renderOverlay = renderOverlay; } public boolean transfer(boolean usage) { @@ -52,29 +70,21 @@ public class PositionedFluidStack { @SideOnly(Side.CLIENT) public void draw() { + if (renderOverlay) { + GTRenderHelper.bindTexture(DEFAULT_SLOT_OVERLAY); + GTRenderHelper.drawQuad(x-1, y-1, 0, 18, 18, 0.0F, 1.0F, 0.0F, 1.0F); + } + if (GT_Utility.isFluidStackValid(fluid)) { IIcon fluidIcon = fluid.getFluid().getIcon(fluid); fluidIcon = fluidIcon != null ? fluidIcon : fluid.getFluid().getFlowingIcon(); fluidIcon = fluidIcon != null ? fluidIcon : fluid.getFluid().getStillIcon(); if (fluidIcon == null) return; - - GuiDraw.changeTexture(TextureMap.locationBlocksTexture); + GTRenderHelper.bindTexture(TextureMap.locationBlocksTexture); int color = fluid.getFluid().getColor(fluid); GL11.glColor3ub((byte) (color >> 16 & 0xFF), (byte) (color >> 8 & 0xFF), (byte) (color & 0xFF)); GL11.glDisable(GL11.GL_BLEND); - - double minU = fluidIcon.getMinU(); - double maxU = fluidIcon.getMaxU(); - double minV = fluidIcon.getMinV(); - double maxV = fluidIcon.getMaxV(); - - Tessellator.instance.startDrawingQuads(); - Tessellator.instance.addVertexWithUV(x , y + 16 , 0, maxU, minV); - Tessellator.instance.addVertexWithUV(x + 16 , y + 16 , 0, minU, minV); - Tessellator.instance.addVertexWithUV(x + 16 , y , 0, minU, maxV); - Tessellator.instance.addVertexWithUV(x , y , 0, maxU, maxV); - Tessellator.instance.draw(); - + GTRenderHelper.drawQuad(x, y, 0, fluidIcon); GL11.glEnable(GL11.GL_BLEND); } } diff --git a/src/main/java/gregtechmod/mistaqur/nei/AlloySmelterRecipeHandler.java b/src/main/java/gregtechmod/mistaqur/nei/handlers/AlloySmelterRecipeHandler.java similarity index 98% rename from src/main/java/gregtechmod/mistaqur/nei/AlloySmelterRecipeHandler.java rename to src/main/java/gregtechmod/mistaqur/nei/handlers/AlloySmelterRecipeHandler.java index fd1c0c3..70fee19 100644 --- a/src/main/java/gregtechmod/mistaqur/nei/AlloySmelterRecipeHandler.java +++ b/src/main/java/gregtechmod/mistaqur/nei/handlers/AlloySmelterRecipeHandler.java @@ -1,4 +1,4 @@ -package gregtechmod.mistaqur.nei; +package gregtechmod.mistaqur.nei.handlers; import gregtechmod.api.GregTech_API; import gregtechmod.api.recipe.Recipe; @@ -12,6 +12,7 @@ import gregtechmod.common.gui.GT_GUIContainer_BasicMachine_Extractor; import gregtechmod.common.gui.GT_GUIContainer_BasicMachine_Macerator; import gregtechmod.common.gui.GT_GUIContainer_Scrapboxinator; import gregtechmod.common.recipe.RecipeMaps; +import gregtechmod.mistaqur.nei.GT_RecipeHandler; import java.awt.Rectangle; import java.util.ArrayList; diff --git a/src/main/resources/assets/gregtech_addon/textures/gui/Electrolyzer.png b/src/main/resources/assets/gregtech_addon/textures/gui/Electrolyzer.png index cbd30e1..bb1e0cd 100644 Binary files a/src/main/resources/assets/gregtech_addon/textures/gui/Electrolyzer.png and b/src/main/resources/assets/gregtech_addon/textures/gui/Electrolyzer.png differ diff --git a/src/main/resources/assets/gregtech_addon/textures/gui/NEIElectrolyzer.png b/src/main/resources/assets/gregtech_addon/textures/gui/NEIElectrolyzer.png index 6a3cf7d..36c6305 100644 Binary files a/src/main/resources/assets/gregtech_addon/textures/gui/NEIElectrolyzer.png and b/src/main/resources/assets/gregtech_addon/textures/gui/NEIElectrolyzer.png differ