Added NEI input handler for fluid slots
This commit is contained in:
parent
c21229cc63
commit
50785bb041
7 changed files with 84 additions and 25 deletions
|
@ -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() {
|
||||
|
|
|
@ -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) {}
|
||||
}
|
|
@ -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)";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
Binary file not shown.
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.4 KiB |
Binary file not shown.
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Loading…
Reference in a new issue