aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api/gui')
-rw-r--r--src/main/java/gregtech/api/gui/GT_Container_BasicMachine.java3
-rw-r--r--src/main/java/gregtech/api/gui/GT_Container_BasicTank.java27
-rw-r--r--src/main/java/gregtech/api/gui/GT_Container_DigitalTank.java27
-rw-r--r--src/main/java/gregtech/api/gui/GT_GUIContainer_DigitalTank.java28
4 files changed, 61 insertions, 24 deletions
diff --git a/src/main/java/gregtech/api/gui/GT_Container_BasicMachine.java b/src/main/java/gregtech/api/gui/GT_Container_BasicMachine.java
index fc0b3270d2..590d406ca4 100644
--- a/src/main/java/gregtech/api/gui/GT_Container_BasicMachine.java
+++ b/src/main/java/gregtech/api/gui/GT_Container_BasicMachine.java
@@ -4,6 +4,7 @@ import static gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Basi
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
+import gregtech.api.interfaces.IFluidAccess;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank;
@@ -221,7 +222,7 @@ public class GT_Container_BasicMachine extends GT_Container_BasicTank {
tTank.setFillableStack(GT_Utility.getFluidFromDisplayStack(tTank.getStackInSlot(2)));
}
GT_MetaTileEntity_BasicTank tTank = (GT_MetaTileEntity_BasicTank) mTileEntity.getMetaTileEntity();
- BasicTankFluidAccess tFillableAccess = BasicTankFluidAccess.from(tTank, true);
+ IFluidAccess tFillableAccess = constructFluidAccess(tTank, true);
GT_Recipe_Map recipes = machine.getRecipeList();
// If the machine has recipes but no fluid inputs, disallow filling this slot with fluids.
ItemStack tToken = handleFluidSlotClick(
diff --git a/src/main/java/gregtech/api/gui/GT_Container_BasicTank.java b/src/main/java/gregtech/api/gui/GT_Container_BasicTank.java
index 8d8d018cdc..27138511f0 100644
--- a/src/main/java/gregtech/api/gui/GT_Container_BasicTank.java
+++ b/src/main/java/gregtech/api/gui/GT_Container_BasicTank.java
@@ -54,7 +54,7 @@ public class GT_Container_BasicTank extends GT_ContainerMetaTile_Machine {
tTank.setDrainableStack(GT_Utility.getFluidFromDisplayStack(tTank.getStackInSlot(2)));
}
GT_MetaTileEntity_BasicTank tTank = (GT_MetaTileEntity_BasicTank) mTileEntity.getMetaTileEntity();
- BasicTankFluidAccess tDrainableAccess = BasicTankFluidAccess.from(tTank, false);
+ IFluidAccess tDrainableAccess = constructFluidAccess(tTank, false);
return handleFluidSlotClick(
tDrainableAccess, aPlayer, aMouseclick == 0, true, !tTank.isDrainableStackSeparate());
}
@@ -106,9 +106,13 @@ public class GT_Container_BasicTank extends GT_ContainerMetaTile_Machine {
return 1;
}
+ protected IFluidAccess constructFluidAccess(GT_MetaTileEntity_BasicTank aTank, boolean aIsFillableStack) {
+ return new BasicTankFluidAccess(aTank, aIsFillableStack);
+ }
+
static class BasicTankFluidAccess implements IFluidAccess {
- private final GT_MetaTileEntity_BasicTank mTank;
- private final boolean mIsFillableStack;
+ protected final GT_MetaTileEntity_BasicTank mTank;
+ protected final boolean mIsFillableStack;
public BasicTankFluidAccess(GT_MetaTileEntity_BasicTank aTank, boolean aIsFillableStack) {
this.mTank = aTank;
@@ -132,22 +136,5 @@ public class GT_Container_BasicTank extends GT_ContainerMetaTile_Machine {
public int getCapacity() {
return mTank.getCapacity();
}
-
- @Override
- public int getRealCapacity() {
- if (mTank instanceof GT_MetaTileEntity_DigitalTankBase) {
- return ((GT_MetaTileEntity_DigitalTankBase) mTank).getRealCapacity();
- }
- return IFluidAccess.super.getRealCapacity();
- }
-
- static BasicTankFluidAccess from(GT_MetaTileEntity_BasicTank aTank, boolean aIsFillableStack) {
- return new BasicTankFluidAccess(aTank, aIsFillableStack);
- }
-
- @Override
- public void verifyFluidStack() {
- if (!(mTank instanceof GT_MetaTileEntity_DigitalTankBase) && get() != null && get().amount <= 0) set(null);
- }
}
}
diff --git a/src/main/java/gregtech/api/gui/GT_Container_DigitalTank.java b/src/main/java/gregtech/api/gui/GT_Container_DigitalTank.java
index bdc2b32c80..b4cdf698dc 100644
--- a/src/main/java/gregtech/api/gui/GT_Container_DigitalTank.java
+++ b/src/main/java/gregtech/api/gui/GT_Container_DigitalTank.java
@@ -2,7 +2,9 @@ package gregtech.api.gui;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
+import gregtech.api.interfaces.IFluidAccess;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank;
import gregtech.api.util.GT_Utility;
import gregtech.common.tileentities.storage.GT_MetaTileEntity_DigitalTankBase;
import net.minecraft.entity.player.EntityPlayer;
@@ -53,15 +55,16 @@ public class GT_Container_DigitalTank extends GT_Container_BasicTank {
mte.mLockFluid = !mte.mLockFluid;
if (mte.mLockFluid) {
if (mte.mFluid == null) {
- mte.lockedFluidName = null;
+ mte.setLockedFluidName(null);
inBrackets = GT_Utility.trans("264", "currently none, will be locked to the next that is put in");
} else {
- mte.lockedFluidName = mte.getDrainableStack().getUnlocalizedName();
+ mte.setLockedFluidName(mte.getDrainableStack().getFluid().getName());
inBrackets = mte.getDrainableStack().getLocalizedName();
}
GT_Utility.sendChatToPlayer(
aPlayer, String.format("%s (%s)", GT_Utility.trans("265", "1 specific Fluid"), inBrackets));
} else {
+ mte.setLockedFluidName(null);
GT_Utility.sendChatToPlayer(aPlayer, GT_Utility.trans("266", "Lock Fluid Mode Disabled"));
}
return null;
@@ -152,4 +155,24 @@ public class GT_Container_DigitalTank extends GT_Container_BasicTank {
break;
}
}
+
+ @Override
+ protected IFluidAccess constructFluidAccess(GT_MetaTileEntity_BasicTank aTank, boolean aIsFillableStack) {
+ return new DigitalTankFluidAccess(aTank, aIsFillableStack);
+ }
+
+ static class DigitalTankFluidAccess extends BasicTankFluidAccess {
+
+ public DigitalTankFluidAccess(GT_MetaTileEntity_BasicTank aTank, boolean aIsFillableStack) {
+ super(aTank, aIsFillableStack);
+ }
+
+ @Override
+ public int getRealCapacity() {
+ return ((GT_MetaTileEntity_DigitalTankBase) mTank).getRealCapacity();
+ }
+
+ @Override
+ public void verifyFluidStack() {}
+ }
}
diff --git a/src/main/java/gregtech/api/gui/GT_GUIContainer_DigitalTank.java b/src/main/java/gregtech/api/gui/GT_GUIContainer_DigitalTank.java
index 5d72c9ff51..c1e90ed68a 100644
--- a/src/main/java/gregtech/api/gui/GT_GUIContainer_DigitalTank.java
+++ b/src/main/java/gregtech/api/gui/GT_GUIContainer_DigitalTank.java
@@ -2,14 +2,21 @@ package gregtech.api.gui;
import static gregtech.api.enums.GT_Values.RES_PATH_GUI;
+import gregtech.api.enums.GT_Values;
+import gregtech.api.interfaces.IDragAndDropSupport;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.net.GT_Packet_SetLockedFluid;
import gregtech.api.util.GT_Utility;
+import gregtech.common.tileentities.storage.GT_MetaTileEntity_DigitalTankBase;
import java.util.ArrayList;
import java.util.List;
+import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.item.ItemStack;
import net.minecraft.util.StatCollector;
+import net.minecraftforge.fluids.FluidStack;
-public class GT_GUIContainer_DigitalTank extends GT_GUIContainerMetaTile_Machine {
+public class GT_GUIContainer_DigitalTank extends GT_GUIContainerMetaTile_Machine implements IDragAndDropSupport {
private final String mName;
private final int textColor = this.getTextColorOrDefault("text", 0xFAFAFF),
@@ -94,4 +101,23 @@ public class GT_GUIContainer_DigitalTank extends GT_GUIContainerMetaTile_Machine
}
}
}
+
+ @Override
+ public boolean handleDragAndDropGT(
+ GuiContainer gui, int mousex, int mousey, ItemStack draggedStack, int button, boolean isGhost) {
+ if (!(gui instanceof GT_GUIContainer_DigitalTank)
+ || !((GT_GUIContainer_DigitalTank) gui).isMouseOverSlot(2, mousex, mousey)
+ || !isGhost) return false;
+ FluidStack fluidStack = GT_Utility.getFluidFromContainerOrFluidDisplay(draggedStack);
+ if (fluidStack == null) return false;
+ IGregTechTileEntity te = ((GT_GUIContainer_DigitalTank) gui).mContainer.mTileEntity;
+ GT_MetaTileEntity_DigitalTankBase mte = (GT_MetaTileEntity_DigitalTankBase) te.getMetaTileEntity();
+ if (mte == null || !mte.allowChangingLockedFluid(fluidStack.getFluid().getName())) return false;
+
+ GT_Values.NW.sendToServer(new GT_Packet_SetLockedFluid(te, fluidStack));
+ draggedStack.stackSize = 0;
+ // propagate to client too
+ mte.setLockedFluidName(fluidStack.getFluid().getName());
+ return true;
+ }
}