diff options
author | Jakub Szewczyk <git@kubasz.xyz> | 2022-03-31 17:31:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-31 18:31:42 +0200 |
commit | 2ed0d164315810c0c03e92d30e52225a8228ac99 (patch) | |
tree | 32546c67961d47ed9b7767c18b625952fff576be /src/main/java/gregtech/api/metatileentity/implementations | |
parent | bec757c9d1f329fb30ed262b3eea9e9b69289181 (diff) | |
download | GT5-Unofficial-2ed0d164315810c0c03e92d30e52225a8228ac99.tar.gz GT5-Unofficial-2ed0d164315810c0c03e92d30e52225a8228ac99.tar.bz2 GT5-Unofficial-2ed0d164315810c0c03e92d30e52225a8228ac99.zip |
Make gregtech machines mark the chunk they're in as dirty on updates (#1001)
* Make gregtech machines mark the chunk they're in as dirty on updates
* Avoid any potential NPE in markDirty
* Mark dirty on GT tool use (screwdriver/wrench/etc)
* Fix multiblocks not marking hatches/buses as dirty too
Diffstat (limited to 'src/main/java/gregtech/api/metatileentity/implementations')
3 files changed, 12 insertions, 6 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java index ef492950a1..4c890a5673 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java @@ -125,7 +125,7 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B mNEIName = aNEIName; mPower = buildPower(); } - + public GT_MetaTileEntity_BasicMachine(String aName, int aTier, int aAmperage, String[] aDescription, ITexture[][][] aTextures, int aInputSlotCount, int aOutputSlotCount, String aGUIName, String aNEIName) { super(aName, aTier, OTHER_SLOT_COUNT + aInputSlotCount + aOutputSlotCount + 1, aDescription, aTextures); mInputSlotCount = Math.max(0, aInputSlotCount); @@ -146,7 +146,7 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B protected boolean isValidMainFacing(byte aSide) { return aSide > 1; } - + public boolean setMainFacing(byte aSide){ if (!isValidMainFacing(aSide)) return false; mMainFacing = aSide; @@ -408,6 +408,7 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B @Override public FluidStack setDrainableStack(FluidStack aFluid) { + markDirty(); mFluidOut = aFluid; return mFluidOut; } @@ -428,9 +429,9 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B if(aBaseMetaTileEntity.getAirAtSide(i)){ aBaseMetaTileEntity.openGUI(aPlayer); return true; - } + } } - GT_Utility.sendChatToPlayer(aPlayer,"No free Side!"); + GT_Utility.sendChatToPlayer(aPlayer,"No free Side!"); return true; } @@ -509,6 +510,7 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B boolean tSucceeded = false; if (mMaxProgresstime > 0 && (mProgresstime >= 0 || aBaseMetaTileEntity.isAllowedToWork())) { + markDirty(); aBaseMetaTileEntity.setActive(true); if (mProgresstime < 0 || drainEnergyForProcess(mEUt)) { if (++mProgresstime >= mMaxProgresstime) { @@ -966,7 +968,7 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B { if (debugCleanroom) { GT_Log.out.println( - "BasicMachine: Voiding output due to efficiency failure. mEfficiency = " + + "BasicMachine: Voiding output due to efficiency failure. mEfficiency = " + getCallbackBase().mEfficiency ); } diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_OutputBus.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_OutputBus.java index 60832dd4d9..8ee2f48b2d 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_OutputBus.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_OutputBus.java @@ -133,6 +133,7 @@ public class GT_MetaTileEntity_Hatch_OutputBus extends GT_MetaTileEntity_Hatch { * @return true if stack is fully accepted. false is stack is partially accepted or nothing is accepted */ public boolean storeAll(ItemStack aStack) { + markDirty(); for (int i = 0, mInventoryLength = mInventory.length; i < mInventoryLength && aStack.stackSize > 0; i++) { ItemStack tSlot = mInventory[i]; if (GT_Utility.isStackInvalid(tSlot)) { 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 dcbee86a2d..a2d6f3a05b 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 @@ -354,6 +354,7 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity { protected void runMachine(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { if (mMaxProgresstime > 0 && doRandomMaintenanceDamage()) { if (onRunningTick(mInventory[1])) { + markDirty(); if (!polluteEnvironment(getPollutionPerTick(mInventory[1]))) { stopMachine(); } @@ -390,7 +391,9 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity { if (aTick % 100 == 0 || aBaseMetaTileEntity.hasWorkJustBeenEnabled() || aBaseMetaTileEntity.hasInventoryBeenModified()) { if (aBaseMetaTileEntity.isAllowedToWork()) { - checkRecipe(mInventory[1]); + if(checkRecipe(mInventory[1])) { + markDirty(); + } } if (mMaxProgresstime <= 0) mEfficiency = Math.max(0, mEfficiency - 1000); } |