From 4f6577fdc1a18cf06461fbf24d43bdacbb773bea Mon Sep 17 00:00:00 2001 From: tth05 <36999320+tth05@users.noreply.github.com> Date: Tue, 14 Nov 2023 01:55:42 +0100 Subject: Notifiy greg tech tile entities of world unload event (#2366) --- .../api/interfaces/metatileentity/IMetaTileEntity.java | 4 ++-- .../java/gregtech/api/metatileentity/BaseMetaTileEntity.java | 2 +- src/main/java/gregtech/common/GT_Proxy.java | 10 ++++++++++ 3 files changed, 13 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntity.java b/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntity.java index dfec0bf7a4..ba164352aa 100644 --- a/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntity.java +++ b/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntity.java @@ -188,9 +188,9 @@ public interface IMetaTileEntity extends ISidedInventory, IFluidTank, IFluidHand void onRemoval(); /** - * Called when the BaseMetaTileEntity gets unloaded + * Called when the BaseMetaTileEntity gets unloaded (chunk or world) */ - default void onChunkUnload() {} + default void onUnload() {} /** * @param facing the facing direction to check diff --git a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java index 4390250dcf..2ef6d51776 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseMetaTileEntity.java @@ -988,7 +988,7 @@ public class BaseMetaTileEntity extends CommonMetaTileEntity @Override public void onChunkUnload() { if (canAccessData()) { - mMetaTileEntity.onChunkUnload(); + mMetaTileEntity.onUnload(); } super.onChunkUnload(); diff --git a/src/main/java/gregtech/common/GT_Proxy.java b/src/main/java/gregtech/common/GT_Proxy.java index 14cada3fa2..1c9a515aad 100644 --- a/src/main/java/gregtech/common/GT_Proxy.java +++ b/src/main/java/gregtech/common/GT_Proxy.java @@ -101,6 +101,7 @@ import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.terraingen.OreGenEvent; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.event.world.ChunkDataEvent; +import net.minecraftforge.event.world.WorldEvent; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; @@ -2265,6 +2266,15 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler, IG } } + @SubscribeEvent + public void onWorldUnload(WorldEvent.Unload event) { + for (TileEntity tileEntity : event.world.loadedTileEntityList) { + if (tileEntity instanceof IGregTechTileEntity) { + tileEntity.onChunkUnload(); + } + } + } + public static void registerRecipes(GT_Proxy.OreDictEventContainer aOre) { if ((aOre.mEvent.Ore == null) || (aOre.mEvent.Ore.getItem() == null)) { return; -- cgit