diff options
author | Glease <4586901+Glease@users.noreply.github.com> | 2023-01-02 16:22:37 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-02 09:22:37 +0100 |
commit | e30abbb03c2af80a00d2036808d3125c58331b19 (patch) | |
tree | 40be9db1033b6b3a1cbf3f0b49ad85ea504e58fd /src/main/java/gregtech | |
parent | 744834083d4504108be1715d36acd94d71c31a84 (diff) | |
download | GT5-Unofficial-e30abbb03c2af80a00d2036808d3125c58331b19.tar.gz GT5-Unofficial-e30abbb03c2af80a00d2036808d3125c58331b19.tar.bz2 GT5-Unofficial-e30abbb03c2af80a00d2036808d3125c58331b19.zip |
add callhook for pre block destroy (#1625)
* add callhook for pre block destroy
Signed-off-by: Glease <4586901+Glease@users.noreply.github.com>
* spotless
Signed-off-by: Glease <4586901+Glease@users.noreply.github.com>
Signed-off-by: Glease <4586901+Glease@users.noreply.github.com>
Diffstat (limited to 'src/main/java/gregtech')
5 files changed, 18 insertions, 0 deletions
diff --git a/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntity.java b/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntity.java index 59d048e618..0d1d52edb0 100644 --- a/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntity.java +++ b/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntity.java @@ -519,4 +519,9 @@ public interface IMetaTileEntity default int getTextColorOrDefault(String textType, int defaultColor) { return defaultColor; } + + /** + * Called before block is destroyed. This is before inventory dropping code has executed. + */ + default void onBlockDestroyed() {} } diff --git a/src/main/java/gregtech/api/interfaces/tileentity/IGregTechTileEntity.java b/src/main/java/gregtech/api/interfaces/tileentity/IGregTechTileEntity.java index b389c8be6c..16fbe4f327 100644 --- a/src/main/java/gregtech/api/interfaces/tileentity/IGregTechTileEntity.java +++ b/src/main/java/gregtech/api/interfaces/tileentity/IGregTechTileEntity.java @@ -140,6 +140,8 @@ public interface IGregTechTileEntity float getBlastResistance(byte aSide); + default void onBlockDestroyed() {} + ArrayList<ItemStack> getDrops(); /** Check if the item at the specific index should be dropped or not diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java index 87a865641f..09b62c0657 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaPipeEntity.java @@ -1359,6 +1359,11 @@ public class BaseMetaPipeEntity extends CommonMetaTileEntity } @Override + public void onBlockDestroyed() { + if (canAccessData()) getMetaTileEntity().onBlockDestroyed(); + } + + @Override public boolean isMufflerUpgradable() { return false; } diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java index 8c6076a56e..f2da90cde9 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java @@ -2235,6 +2235,11 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity } @Override + public void onBlockDestroyed() { + if (canAccessData()) getMetaTileEntity().onBlockDestroyed(); + } + + @Override public boolean isUniversalEnergyStored(long aEnergyAmount) { if (getUniversalEnergyStored() >= aEnergyAmount) return true; mHasEnoughEnergy = false; diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Machines.java b/src/main/java/gregtech/common/blocks/GT_Block_Machines.java index 3aeb2f0a5e..d176fd26a3 100644 --- a/src/main/java/gregtech/common/blocks/GT_Block_Machines.java +++ b/src/main/java/gregtech/common/blocks/GT_Block_Machines.java @@ -410,6 +410,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo final TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ); if (tTileEntity instanceof IGregTechTileEntity) { final IGregTechTileEntity tGregTechTileEntity = (IGregTechTileEntity) tTileEntity; + tGregTechTileEntity.onBlockDestroyed(); mTemporaryTileEntity.set(tGregTechTileEntity); if (!(tGregTechTileEntity.getMetaTileEntity() instanceof GT_MetaTileEntity_QuantumChest)) { for (int i = 0; i < tGregTechTileEntity.getSizeInventory(); i++) { |