diff options
Diffstat (limited to 'src/main/java/gregtech/api')
4 files changed, 49 insertions, 2 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java index bf6358c884..386975dd6d 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java @@ -980,9 +980,9 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity @Override public void onChunkUnload() { if (canAccessData()) { + onCoverUnload(); mMetaTileEntity.onUnload(); } - super.onChunkUnload(); onChunkUnloadAE(); } @@ -2276,7 +2276,9 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity @Override public void onBlockDestroyed() { - if (canAccessData()) getMetaTileEntity().onBlockDestroyed(); + if (canAccessData()) { + getMetaTileEntity().onBlockDestroyed(); + } } @Override diff --git a/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java b/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java index 277b79c777..4dce0a083e 100644 --- a/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/CoverableTileEntity.java @@ -194,6 +194,22 @@ public abstract class CoverableTileEntity extends BaseTileEntity implements ICov return true; } + protected void onCoverUnload() { + byte validCoversMask = this.validCoversMask; + if (validCoversMask == 0) return; + + for (int i = Integer.numberOfTrailingZeros(validCoversMask); i < 6; i++) { + if (((validCoversMask >>> i) & 1) == 0) continue; + onCoverUnloadAtSide(ForgeDirection.VALID_DIRECTIONS[i]); + } + } + + public void onCoverUnloadAtSide(ForgeDirection side) { + final CoverInfo coverInfo = getCoverInfoAtSide(side); + if (!coverInfo.isValid()) return; + coverInfo.onCoverUnload(); + } + public boolean tickCoverAtSide(ForgeDirection side) { return tickCoverAtSide(side, mTickTimer); } diff --git a/src/main/java/gregtech/api/util/GT_CoverBehavior.java b/src/main/java/gregtech/api/util/GT_CoverBehavior.java index 34fc151b9a..3c3a8607fe 100644 --- a/src/main/java/gregtech/api/util/GT_CoverBehavior.java +++ b/src/main/java/gregtech/api/util/GT_CoverBehavior.java @@ -100,6 +100,18 @@ public abstract class GT_CoverBehavior extends GT_CoverBehaviorBase<ISerializabl } @Override + protected void onBaseTEDestroyedImpl(ForgeDirection side, int aCoverID, + ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) { + onBaseTEDestroyed(side, aCoverID, convert(aCoverVariable), aTileEntity); + } + + @Override + protected void onCoverUnloadImpl(ForgeDirection side, int aCoverID, ISerializableObject aCoverVariable, + ICoverable aTileEntity) { + onCoverUnload(aTileEntity); + } + + @Override protected String getDescriptionImpl(ForgeDirection side, int aCoverID, ISerializableObject.LegacyCoverData aCoverVariable, ICoverable aTileEntity) { return getDescription(side, aCoverID, convert(aCoverVariable), aTileEntity); @@ -275,6 +287,12 @@ public abstract class GT_CoverBehavior extends GT_CoverBehaviorBase<ISerializabl return true; } + public void onCoverUnload(ICoverable aTileEntity) { + + } + + public void onBaseTEDestroyed(ForgeDirection side, int aCoverID, int aCoverVariable, ICoverable aTileEntity) {} + /** * Gives a small Text for the status of the Cover. */ diff --git a/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java b/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java index be9492ebba..76408e59c0 100644 --- a/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java +++ b/src/main/java/gregtech/api/util/GT_CoverBehaviorBase.java @@ -256,6 +256,14 @@ public abstract class GT_CoverBehaviorBase<T extends ISerializableObject> { } /** + * Called when Base TE being unloaded. + */ + public void onCoverUnload(ForgeDirection side, int aCoverID, ISerializableObject aCoverVariable, + ICoverable aTileEntity) { + onCoverUnloadImpl(side, aCoverID, forceCast(aCoverVariable), aTileEntity); + } + + /** * How Blast Proof the Cover is. 30 is normal. */ public final float getBlastProofLevel(ForgeDirection side, int aCoverID, ISerializableObject aCoverVariable, @@ -581,6 +589,9 @@ public abstract class GT_CoverBehaviorBase<T extends ISerializableObject> { protected void onBaseTEDestroyedImpl(ForgeDirection side, int aCoverID, T aCoverVariable, ICoverable aTileEntity) {} + protected void onCoverUnloadImpl(ForgeDirection side, int aCoverID, ISerializableObject aCoverVariable, + ICoverable aTileEntity) {} + protected boolean isRedstoneSensitiveImpl(ForgeDirection side, int aCoverID, T aCoverVariable, ICoverable aTileEntity, long aTimer) { return false; |