aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGlease <4586901+Glease@users.noreply.github.com>2022-09-01 19:07:57 +0800
committerGitHub <noreply@github.com>2022-09-01 13:07:57 +0200
commit8a6973f2bddfb0a1485422725745c1078b1ea49e (patch)
tree07bf447ed0e32ee164df82287eb1dfd7918ff1a7 /src
parent95273570a9154c474c213b87aaf38cd3faf99fbb (diff)
downloadGT5-Unofficial-8a6973f2bddfb0a1485422725745c1078b1ea49e.tar.gz
GT5-Unofficial-8a6973f2bddfb0a1485422725745c1078b1ea49e.tar.bz2
GT5-Unofficial-8a6973f2bddfb0a1485422725745c1078b1ea49e.zip
clean up output hatch lock code (#1321)
Diffstat (limited to 'src')
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Output.java24
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java17
2 files changed, 20 insertions, 21 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Output.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Output.java
index 43ccd2db7c..9e949220f7 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Output.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_Output.java
@@ -8,9 +8,11 @@ import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.render.TextureFactory;
+import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_Utility;
import gregtech.common.gui.GT_Container_OutputHatch;
import gregtech.common.gui.GT_GUIContainer_OutputHatch;
+import java.lang.ref.WeakReference;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
@@ -22,7 +24,7 @@ import net.minecraftforge.fluids.*;
public class GT_MetaTileEntity_Hatch_Output extends GT_MetaTileEntity_Hatch {
private String lockedFluidName = null;
- private EntityPlayer playerThatLockedfluid = null;
+ private WeakReference<EntityPlayer> playerThatLockedfluid = null;
public byte mMode = 0;
public GT_MetaTileEntity_Hatch_Output(int aID, String aName, String aNameRegional, int aTier) {
@@ -263,7 +265,7 @@ public class GT_MetaTileEntity_Hatch_Output extends GT_MetaTileEntity_Hatch {
this.setLockedFluidName(null);
break;
case 8:
- playerThatLockedfluid = aPlayer;
+ playerThatLockedfluid = new WeakReference<>(aPlayer);
if (mFluid == null) {
this.setLockedFluidName(null);
inBrackets = GT_Utility.trans(
@@ -280,7 +282,7 @@ public class GT_MetaTileEntity_Hatch_Output extends GT_MetaTileEntity_Hatch {
GT_Utility.trans("151.1", "Outputs items and 1 specific Fluid"), inBrackets));
break;
case 9:
- playerThatLockedfluid = aPlayer;
+ playerThatLockedfluid = new WeakReference<>(aPlayer);
if (mFluid == null) {
this.setLockedFluidName(null);
inBrackets = GT_Utility.trans(
@@ -378,6 +380,15 @@ public class GT_MetaTileEntity_Hatch_Output extends GT_MetaTileEntity_Hatch {
this.lockedFluidName = lockedFluidName;
}
+ public boolean canStoreFluid(Fluid fluid) {
+ if (isFluidLocked()) {
+ if (lockedFluidName == null) return true;
+ return lockedFluidName.equals(fluid.getName());
+ }
+ if (GT_ModHandler.isSteam(new FluidStack(fluid, 0))) return outputsSteam();
+ return outputsLiquids();
+ }
+
@Override
public int getTankPressure() {
return +100;
@@ -385,12 +396,15 @@ public class GT_MetaTileEntity_Hatch_Output extends GT_MetaTileEntity_Hatch {
@Override
protected void onEmptyingContainerWhenEmpty() {
- if (this.lockedFluidName == null && this.mFluid != null) {
+ if (this.lockedFluidName == null && this.mFluid != null && isFluidLocked()) {
this.setLockedFluidName(this.mFluid.getFluid().getName());
+ EntityPlayer player;
+ if (playerThatLockedfluid == null || (player = playerThatLockedfluid.get()) == null) return;
GT_Utility.sendChatToPlayer(
- playerThatLockedfluid,
+ player,
String.format(
GT_Utility.trans("151.4", "Sucessfully locked Fluid to %s"), mFluid.getLocalizedName()));
+ playerThatLockedfluid = null;
}
}
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java
index bd8daabfb9..2bba7855a5 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java
@@ -17,7 +17,6 @@ import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.objects.GT_ItemStack;
import gregtech.api.util.GT_ExoticEnergyInputHelper;
import gregtech.api.util.GT_Log;
-import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
import gregtech.api.util.GT_Single_Recipe_Check;
import gregtech.api.util.GT_Utility;
@@ -795,21 +794,7 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity {
if (!isValidMetaTileEntity(tHatch) || (restrictiveHatchesOnly && tHatch.mMode == 0)) {
continue;
}
- if (GT_ModHandler.isSteam(copiedFluidStack)) {
- if (!tHatch.outputsSteam()) {
- continue;
- }
- } else {
- if (!tHatch.outputsLiquids()) {
- continue;
- }
- if (tHatch.isFluidLocked()
- && tHatch.getLockedFluidName() != null
- && !tHatch.getLockedFluidName()
- .equals(copiedFluidStack.getFluid().getName())) {
- continue;
- }
- }
+ if (!tHatch.canStoreFluid(copiedFluidStack.getFluid())) continue;
int tAmount = tHatch.fill(copiedFluidStack, false);
if (tAmount >= copiedFluidStack.amount) {
boolean filled = tHatch.fill(copiedFluidStack, true) >= copiedFluidStack.amount;