diff options
author | Martin Robertz <dream-master@gmx.net> | 2019-07-16 09:56:45 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-16 09:56:45 +0200 |
commit | 751aa918768533e6267d7467abb5dc247299d3c5 (patch) | |
tree | 609e8a0e4e73288b0fa96d53ef82ca0ec951dcc5 /src/main/java/gregtech/api/metatileentity/BaseTileEntity.java | |
parent | 30715b1438568a7594cbd7ef03e70f93adc76bdf (diff) | |
parent | ec3fba6409b5ccfdc90494c95fffc7cafd95a3f3 (diff) | |
download | GT5-Unofficial-751aa918768533e6267d7467abb5dc247299d3c5.tar.gz GT5-Unofficial-751aa918768533e6267d7467abb5dc247299d3c5.tar.bz2 GT5-Unofficial-751aa918768533e6267d7467abb5dc247299d3c5.zip |
Merge pull request #195 from GTNewHorizons/ic2_enet_compat
IC2 ENet compat for GT transformers & GT cables
Diffstat (limited to 'src/main/java/gregtech/api/metatileentity/BaseTileEntity.java')
-rw-r--r-- | src/main/java/gregtech/api/metatileentity/BaseTileEntity.java | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java index 66d1ade42d..5c0cd5ceb6 100644 --- a/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java @@ -1,10 +1,14 @@ package gregtech.api.metatileentity; +import cpw.mods.fml.common.FMLCommonHandler; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.interfaces.tileentity.IHasWorldObjectAndCoords; import gregtech.api.net.GT_Packet_Block_Event; import gregtech.api.util.GT_LanguageManager; import gregtech.api.util.GT_Utility; +import ic2.api.energy.event.EnergyTileLoadEvent; +import ic2.api.energy.event.EnergyTileUnloadEvent; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; @@ -13,6 +17,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; +import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.IFluidHandler; @@ -398,12 +403,14 @@ public abstract class BaseTileEntity extends TileEntity implements IHasWorldObje @Override public void invalidate() { + leaveEnet(); clearNullMarkersFromTileEntityBuffer(); super.invalidate(); } @Override public void onChunkUnload() { + leaveEnet(); clearNullMarkersFromTileEntityBuffer(); super.onChunkUnload(); isDead = true; @@ -442,4 +449,46 @@ public abstract class BaseTileEntity extends TileEntity implements IHasWorldObje public String trans(String aKey, String aEnglish){ return GT_LanguageManager.addStringLocalization("Interaction_DESCRIPTION_Index_"+aKey, aEnglish, false); } -}
\ No newline at end of file + + /* + * IC2 Energy Compat + */ + protected TileIC2EnergySink ic2EnergySink = null; + protected boolean joinedIc2Enet = false; + + public IMetaTileEntity getMetaTileEntity() { return null; } + + protected void createIc2Sink() { + if(ic2EnergySink == null && isServerSide() && shouldJoinIc2Enet()) { + ic2EnergySink = new TileIC2EnergySink((IGregTechTileEntity)this); + } + } + + public void doEnetUpdate() { + leaveEnet(); + joinEnet(); + } + + protected void joinEnet() { + if (joinedIc2Enet || !shouldJoinIc2Enet()) return; + + if(ic2EnergySink == null) createIc2Sink(); + + if (ic2EnergySink != null) { + MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(ic2EnergySink)); + joinedIc2Enet = true; + } + } + + protected void leaveEnet() { + if (joinedIc2Enet && ic2EnergySink != null && isServerSide()) { + joinedIc2Enet = false; + MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(ic2EnergySink)); + } + } + + public boolean shouldJoinIc2Enet() { + final IMetaTileEntity meta = getMetaTileEntity(); + return meta != null && meta.shouldJoinIc2Enet(); + } +} |