aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java
diff options
context:
space:
mode:
authorKiwi <42833050+Kiwi233@users.noreply.github.com>2020-05-24 08:28:19 +0800
committerGitHub <noreply@github.com>2020-05-24 08:28:19 +0800
commitf0bce85d3faf040d87a22d83250ae2d9767c3642 (patch)
treeed60c1d975c8b06a27cae03d148714f7bb9e9805 /src/main/java/gregtech/api/metatileentity/BaseTileEntity.java
parentac7282a30ef161101cabc921e52db5c5d7e0096c (diff)
parentd6c19a9b6434c8a4c59ea8452603f85cfd2ad208 (diff)
downloadGT5-Unofficial-f0bce85d3faf040d87a22d83250ae2d9767c3642.tar.gz
GT5-Unofficial-f0bce85d3faf040d87a22d83250ae2d9767c3642.tar.bz2
GT5-Unofficial-f0bce85d3faf040d87a22d83250ae2d9767c3642.zip
Merge pull request #1 from GTNewHorizons/experimental
5/24
Diffstat (limited to 'src/main/java/gregtech/api/metatileentity/BaseTileEntity.java')
-rw-r--r--src/main/java/gregtech/api/metatileentity/BaseTileEntity.java54
1 files changed, 52 insertions, 2 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java b/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java
index 66d1ade42d..f5ba784162 100644
--- a/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java
+++ b/src/main/java/gregtech/api/metatileentity/BaseTileEntity.java
@@ -1,10 +1,13 @@
package gregtech.api.metatileentity;
+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,9 +16,12 @@ 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;
+import java.util.concurrent.ThreadLocalRandom;
+
import static gregtech.api.enums.GT_Values.GT;
import static gregtech.api.enums.GT_Values.NW;
@@ -113,7 +119,7 @@ public abstract class BaseTileEntity extends TileEntity implements IHasWorldObje
@Override
public final int getRandomNumber(int aRange) {
- return worldObj.rand.nextInt(aRange);
+ return ThreadLocalRandom.current().nextInt(aRange);
}
@Override
@@ -398,12 +404,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 +450,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();
+ }
+}