diff --git a/src/main/java/com/zixiken/dimdoors/blocks/BlockDimDoorGold.java b/src/main/java/com/zixiken/dimdoors/blocks/BlockDimDoorGold.java index 1190a67b..c780a4c9 100644 --- a/src/main/java/com/zixiken/dimdoors/blocks/BlockDimDoorGold.java +++ b/src/main/java/com/zixiken/dimdoors/blocks/BlockDimDoorGold.java @@ -27,6 +27,6 @@ public class BlockDimDoorGold extends BlockDimDoorBase { public Item getItemDoor() {return ModItems.itemDimDoorGold;} @Override - public TileEntity createNewTileEntity(World world, int metadata) {return new TileEntityDimDoorGold();} + public TileEntity createNewTileEntity(World world, int metadata) {return new TileEntityDimDoorGold(world);} } diff --git a/src/main/java/com/zixiken/dimdoors/blocks/BlockRift.java b/src/main/java/com/zixiken/dimdoors/blocks/BlockRift.java index d37a4716..20612fe6 100644 --- a/src/main/java/com/zixiken/dimdoors/blocks/BlockRift.java +++ b/src/main/java/com/zixiken/dimdoors/blocks/BlockRift.java @@ -180,7 +180,7 @@ public class BlockRift extends Block implements ITileEntityProvider { @Override public TileEntity createNewTileEntity(World world, int metadata) { - return new TileEntityRift(); + return new TileEntityRift(world); } @Override diff --git a/src/main/java/com/zixiken/dimdoors/blocks/BlockTransTrapdoor.java b/src/main/java/com/zixiken/dimdoors/blocks/BlockTransTrapdoor.java index 0c8ec3fa..5ebfabbf 100644 --- a/src/main/java/com/zixiken/dimdoors/blocks/BlockTransTrapdoor.java +++ b/src/main/java/com/zixiken/dimdoors/blocks/BlockTransTrapdoor.java @@ -75,7 +75,7 @@ public class BlockTransTrapdoor extends BlockTrapDoor implements IDimDoor, ITile } @Override - public TileEntity createNewTileEntity(World world, int metadata) {return new TileEntityTransTrapdoor();} + public TileEntity createNewTileEntity(World world, int metadata) {return new TileEntityTransTrapdoor(world);} @Override public void placeLink(World world, BlockPos pos) { diff --git a/src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java b/src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java index e2b90dae..0c94e1e9 100644 --- a/src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java +++ b/src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java @@ -3,6 +3,7 @@ package com.zixiken.dimdoors.tileentities; import com.zixiken.dimdoors.shared.RiftRegistry; import java.util.Random; import net.minecraft.block.state.IBlockState; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -18,6 +19,12 @@ public abstract class DDTileEntityBase extends TileEntity * @return an array of floats representing RGBA color where 1.0 = 255. */ public abstract float[] getRenderColor(Random rand); + + DDTileEntityBase(World world) { //@todo what is the difference between a TileEntity instance being created on Block placement and on world-load? + super(); + this.setWorld(world); + register(); + } @Override public boolean shouldRefresh(World world, BlockPos pos, IBlockState oldState, IBlockState newSate) { @@ -36,6 +43,7 @@ public abstract class DDTileEntityBase extends TileEntity pairedRiftID = otherRiftID; RiftRegistry.Instance.pair(pairedRiftID, riftID); isPaired = true; + this.markDirty(); } public void unpair() { @@ -46,9 +54,30 @@ public abstract class DDTileEntityBase extends TileEntity isPaired = false; RiftRegistry.Instance.unpair(pairedRiftID); } + this.markDirty(); } private void register() { riftID = RiftRegistry.Instance.registerNewRift(this); + this.markDirty(); } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + try { + this.isPaired = nbt.getBoolean("isPaired"); + this.riftID = nbt.getInteger("riftID"); + this.pairedRiftID = nbt.getInteger("pairedRiftID"); + } catch (Exception e) {} + } + + @Override + public NBTTagCompound writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setBoolean("isPaired", this.isPaired); + nbt.setInteger("riftID", this.riftID); + nbt.setInteger("pairedRiftID", this.pairedRiftID); + return nbt; + } } diff --git a/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityDimDoor.java b/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityDimDoor.java index 7bce154e..bf1f07a6 100644 --- a/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityDimDoor.java +++ b/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityDimDoor.java @@ -4,6 +4,7 @@ import java.util.Random; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumFacing; +import net.minecraft.world.World; public class TileEntityDimDoor extends DDTileEntityBase @@ -15,6 +16,10 @@ public class TileEntityDimDoor extends DDTileEntityBase public boolean isDungeonChainLink; public boolean hasGennedPair=false; + public TileEntityDimDoor(World world) { + super(world); + } + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); diff --git a/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityDimDoorGold.java b/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityDimDoorGold.java index 37271f23..4fba38de 100644 --- a/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityDimDoorGold.java +++ b/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityDimDoorGold.java @@ -1,12 +1,17 @@ package com.zixiken.dimdoors.tileentities; import com.zixiken.dimdoors.IChunkLoader; +import net.minecraft.world.World; import net.minecraftforge.common.ForgeChunkManager; import net.minecraftforge.common.ForgeChunkManager.Ticket; public class TileEntityDimDoorGold extends TileEntityDimDoor implements IChunkLoader { private Ticket chunkTicket; private boolean initialized = false; + + public TileEntityDimDoorGold(World world) { + super(world); + } @Override public boolean isInitialized() { diff --git a/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityRift.java b/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityRift.java index 5667c2a3..bcffd6aa 100644 --- a/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityRift.java +++ b/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityRift.java @@ -11,6 +11,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ITickable; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; public class TileEntityRift extends DDTileEntityBase implements ITickable { private static final int ENDERMAN_SPAWNING_CHANCE = 1; @@ -29,7 +30,8 @@ public class TileEntityRift extends DDTileEntityBase implements ITickable { public int riftRotation = random.nextInt(360); public float growth = 0; - public TileEntityRift() { + public TileEntityRift(World world) { + super(world); // Vary the update times of rifts to prevent all the rifts in a cluster // from updating at the same time. updateTimer = random.nextInt(UPDATE_PERIOD); diff --git a/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityTransTrapdoor.java b/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityTransTrapdoor.java index ea54fa45..2c0bebc4 100644 --- a/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityTransTrapdoor.java +++ b/src/main/java/com/zixiken/dimdoors/tileentities/TileEntityTransTrapdoor.java @@ -1,9 +1,14 @@ package com.zixiken.dimdoors.tileentities; import java.util.Random; +import net.minecraft.world.World; public class TileEntityTransTrapdoor extends DDTileEntityBase { + public TileEntityTransTrapdoor(World world) { + super(world); + } + @Override public float[] getRenderColor(Random rand) { float[] rgbaColor = {1,1,1,1};