From 798bad5583cfa5a22140c17fa2f329850cb4d4d9 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Wed, 7 Sep 2016 17:46:06 -0700 Subject: [PATCH] Clean up TE implementations Offload some work to base classes that provide some helpers TODO: Implementations for Inventories (using caps) and ticking tiles with inventories. --- .../bloodmagic/tile/TileAlchemyArray.java | 23 +--- .../bloodmagic/tile/TileAlchemyTable.java | 8 +- .../WayofTime/bloodmagic/tile/TileAltar.java | 8 +- .../bloodmagic/tile/TileBloodTank.java | 41 +----- .../bloodmagic/tile/TileDemonCrucible.java | 8 +- .../bloodmagic/tile/TileDemonCrystal.java | 55 +------- .../tile/TileDemonCrystallizer.java | 51 +------ .../bloodmagic/tile/TileDemonPylon.java | 53 +------- .../tile/TileDimensionalPortal.java | 50 +------ .../tile/TileImperfectRitualStone.java | 37 +----- .../bloodmagic/tile/TileIncenseAltar.java | 8 +- .../bloodmagic/tile/TileInventory.java | 49 +------ .../tile/TileMasterRitualStone.java | 51 ++----- .../WayofTime/bloodmagic/tile/TileMimic.java | 8 +- .../bloodmagic/tile/TilePhantomBlock.java | 55 +------- .../bloodmagic/tile/TileSoulForge.java | 8 +- .../bloodmagic/tile/TileSpectralBlock.java | 40 +----- .../bloodmagic/tile/TileTeleposer.java | 8 +- .../bloodmagic/tile/base/TileBase.java | 124 ++++++++++++++++++ .../bloodmagic/tile/base/TileTicking.java | 63 +++++++++ .../tile/routing/TileFilteredRoutingNode.java | 8 +- .../tile/routing/TileMasterRoutingNode.java | 9 +- .../tile/routing/TileRoutingNode.java | 8 +- 23 files changed, 280 insertions(+), 493 deletions(-) create mode 100644 src/main/java/WayofTime/bloodmagic/tile/base/TileBase.java create mode 100644 src/main/java/WayofTime/bloodmagic/tile/base/TileTicking.java diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileAlchemyArray.java b/src/main/java/WayofTime/bloodmagic/tile/TileAlchemyArray.java index 84774baa..b9aade81 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileAlchemyArray.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileAlchemyArray.java @@ -40,9 +40,9 @@ public class TileAlchemyArray extends TileInventory implements ITickable, IAlche } @Override - public void readFromNBT(NBTTagCompound tagCompound) + public void deserialize(NBTTagCompound tagCompound) { - super.readFromNBT(tagCompound); + super.deserialize(tagCompound); this.isActive = tagCompound.getBoolean("isActive"); this.activeCounter = tagCompound.getInteger("activeCounter"); this.key = tagCompound.getString("key"); @@ -57,9 +57,9 @@ public class TileAlchemyArray extends TileInventory implements ITickable, IAlche } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tagCompound) + public NBTTagCompound serialize(NBTTagCompound tagCompound) { - super.writeToNBT(tagCompound); + super.serialize(tagCompound); tagCompound.setBoolean("isActive", isActive); tagCompound.setInteger("activeCounter", activeCounter); tagCompound.setString("key", "".equals(key) ? "empty" : key); @@ -153,19 +153,4 @@ public class TileAlchemyArray extends TileInventory implements ITickable, IAlche return false; } - - @Override - public SPacketUpdateTileEntity getUpdatePacket() - { - NBTTagCompound nbttagcompound = new NBTTagCompound(); - writeToNBT(nbttagcompound); - return new SPacketUpdateTileEntity(pos, this.getBlockMetadata(), nbttagcompound); - } - - @Override - public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity packet) - { - super.onDataPacket(net, packet); - readFromNBT(packet.getNbtCompound()); - } } diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileAlchemyTable.java b/src/main/java/WayofTime/bloodmagic/tile/TileAlchemyTable.java index d63a2463..2e1c3d1a 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileAlchemyTable.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileAlchemyTable.java @@ -85,9 +85,9 @@ public class TileAlchemyTable extends TileInventory implements ISidedInventory, } @Override - public void readFromNBT(NBTTagCompound tag) + public void deserialize(NBTTagCompound tag) { - super.readFromNBT(tag); + super.deserialize(tag); isSlave = tag.getBoolean("isSlave"); direction = EnumFacing.getFront(tag.getInteger(Constants.NBT.DIRECTION)); @@ -105,9 +105,9 @@ public class TileAlchemyTable extends TileInventory implements ISidedInventory, } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tag) + public NBTTagCompound serialize(NBTTagCompound tag) { - super.writeToNBT(tag); + super.serialize(tag); tag.setBoolean("isSlave", isSlave); tag.setInteger(Constants.NBT.DIRECTION, direction.getIndex()); diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileAltar.java b/src/main/java/WayofTime/bloodmagic/tile/TileAltar.java index cf894874..7e28a486 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileAltar.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileAltar.java @@ -23,9 +23,9 @@ public class TileAltar extends TileInventory implements IBloodAltar, ITickable, } @Override - public void readFromNBT(NBTTagCompound tagCompound) + public void deserialize(NBTTagCompound tagCompound) { - super.readFromNBT(tagCompound); + super.deserialize(tagCompound); NBTTagCompound altarTag = tagCompound.getCompoundTag("bloodAltar"); @@ -33,9 +33,9 @@ public class TileAltar extends TileInventory implements IBloodAltar, ITickable, } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tagCompound) + public NBTTagCompound serialize(NBTTagCompound tagCompound) { - super.writeToNBT(tagCompound); + super.serialize(tagCompound); NBTTagCompound altarTag = new NBTTagCompound(); this.bloodAltar.writeToNBT(altarTag); diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileBloodTank.java b/src/main/java/WayofTime/bloodmagic/tile/TileBloodTank.java index 7274ddc4..f052ce53 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileBloodTank.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileBloodTank.java @@ -1,15 +1,11 @@ package WayofTime.bloodmagic.tile; +import WayofTime.bloodmagic.tile.base.TileBase; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.play.server.SPacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraftforge.fluids.*; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -public class TileBloodTank extends TileEntity implements IFluidHandler +public class TileBloodTank extends TileBase implements IFluidHandler { public static int capacity; public FluidTank tank; @@ -57,7 +53,7 @@ public class TileBloodTank extends TileEntity implements IFluidHandler } @Override - public void readFromNBT(NBTTagCompound tagCompound) + public void deserialize(NBTTagCompound tagCompound) { super.readFromNBT(tagCompound); tank.readFromNBT(tagCompound.getCompoundTag("tank")); @@ -65,40 +61,11 @@ public class TileBloodTank extends TileEntity implements IFluidHandler } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tagCompound) + public NBTTagCompound serialize(NBTTagCompound tagCompound) { - super.writeToNBT(tagCompound); if (tank.getFluidAmount() != 0) tagCompound.setTag("tank", tank.writeToNBT(new NBTTagCompound())); tagCompound.setInteger("capacity", capacity); return tagCompound; } - - @Override - public SPacketUpdateTileEntity getUpdatePacket() - { - NBTTagCompound nbt = new NBTTagCompound(); - writeToNBT(nbt); - return new SPacketUpdateTileEntity(getPos(), -999, nbt); - } - - @Override - @SideOnly(Side.CLIENT) - public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) - { - super.onDataPacket(net, pkt); - readFromNBT(pkt.getNbtCompound()); - } - - @Override - public NBTTagCompound getUpdateTag() - { - return writeToNBT(new NBTTagCompound()); - } - - @Override - public void handleUpdateTag(NBTTagCompound tag) - { - readFromNBT(tag); - } } diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileDemonCrucible.java b/src/main/java/WayofTime/bloodmagic/tile/TileDemonCrucible.java index 31b0a61b..e34b3c0f 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileDemonCrucible.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileDemonCrucible.java @@ -112,9 +112,9 @@ public class TileDemonCrucible extends TileInventory implements ITickable, IDemo } @Override - public void readFromNBT(NBTTagCompound tag) + public void deserialize(NBTTagCompound tag) { - super.readFromNBT(tag); + super.deserialize(tag); willMap.clear(); @@ -129,9 +129,9 @@ public class TileDemonCrucible extends TileInventory implements ITickable, IDemo } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tag) + public NBTTagCompound serialize(NBTTagCompound tag) { - super.writeToNBT(tag); + super.serialize(tag); for (Entry entry : willMap.entrySet()) { diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileDemonCrystal.java b/src/main/java/WayofTime/bloodmagic/tile/TileDemonCrystal.java index 150b72d7..b432613f 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileDemonCrystal.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileDemonCrystal.java @@ -1,28 +1,20 @@ package WayofTime.bloodmagic.tile; +import WayofTime.bloodmagic.tile.base.TileTicking; import lombok.Getter; import lombok.Setter; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.Packet; -import net.minecraft.network.play.server.SPacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; -import net.minecraft.util.ITickable; -import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; -import net.minecraft.world.World; import WayofTime.bloodmagic.api.soul.DemonWillHolder; import WayofTime.bloodmagic.api.soul.EnumDemonWillType; import WayofTime.bloodmagic.block.BlockDemonCrystal; import WayofTime.bloodmagic.demonAura.WorldDemonWillHandler; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -public class TileDemonCrystal extends TileEntity implements ITickable +public class TileDemonCrystal extends TileTicking { public DemonWillHolder holder = new DemonWillHolder(); public final int maxWill = 100; @@ -47,7 +39,7 @@ public class TileDemonCrystal extends TileEntity implements ITickable } @Override - public void update() + public void onUpdate() { if (worldObj.isRemote) { @@ -179,7 +171,7 @@ public class TileDemonCrystal extends TileEntity implements ITickable } @Override - public void readFromNBT(NBTTagCompound tag) + public void deserialize(NBTTagCompound tag) { super.readFromNBT(tag); @@ -190,49 +182,12 @@ public class TileDemonCrystal extends TileEntity implements ITickable } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tag) + public NBTTagCompound serialize(NBTTagCompound tag) { - super.writeToNBT(tag); - holder.writeToNBT(tag, "Will"); tag.setInteger("crystalCount", crystalCount); tag.setInteger("placement", placement.getIndex()); tag.setDouble("progress", progressToNextCrystal); return tag; } - - @Override - public boolean shouldRefresh(World world, BlockPos pos, IBlockState oldState, IBlockState newState) - { - return oldState.getBlock() != newState.getBlock(); - } - - @Override - public SPacketUpdateTileEntity getUpdatePacket() - { - NBTTagCompound nbt = new NBTTagCompound(); - writeToNBT(nbt); - return new SPacketUpdateTileEntity(getPos(), -999, nbt); - } - - @Override - @SideOnly(Side.CLIENT) - public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) - { - super.onDataPacket(net, pkt); - readFromNBT(pkt.getNbtCompound()); - worldObj.markBlockRangeForRenderUpdate(getPos(), getPos()); - } - - @Override - public NBTTagCompound getUpdateTag() - { - return writeToNBT(new NBTTagCompound()); - } - - @Override - public void handleUpdateTag(NBTTagCompound tag) - { - readFromNBT(tag); - } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileDemonCrystallizer.java b/src/main/java/WayofTime/bloodmagic/tile/TileDemonCrystallizer.java index 448841ed..5b52861f 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileDemonCrystallizer.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileDemonCrystallizer.java @@ -5,19 +5,14 @@ import WayofTime.bloodmagic.api.soul.EnumDemonWillType; import WayofTime.bloodmagic.api.soul.IDemonWillConduit; import WayofTime.bloodmagic.demonAura.WorldDemonWillHandler; import WayofTime.bloodmagic.registry.ModBlocks; -import net.minecraft.block.state.IBlockState; +import WayofTime.bloodmagic.tile.base.TileBase; +import WayofTime.bloodmagic.tile.base.TileTicking; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.play.server.SPacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; -import net.minecraft.util.ITickable; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -public class TileDemonCrystallizer extends TileEntity implements ITickable, IDemonWillConduit +public class TileDemonCrystallizer extends TileTicking implements IDemonWillConduit { //The whole purpose of this block is to grow a crystal initially. The acceleration and crystal growing is up to the crystal itself afterwards. public DemonWillHolder holder = new DemonWillHolder(); @@ -34,7 +29,7 @@ public class TileDemonCrystallizer extends TileEntity implements ITickable, IDem } @Override - public void update() + public void onUpdate() { if (worldObj.isRemote) { @@ -93,7 +88,7 @@ public class TileDemonCrystallizer extends TileEntity implements ITickable, IDem } @Override - public void readFromNBT(NBTTagCompound tag) + public void deserialize(NBTTagCompound tag) { super.readFromNBT(tag); @@ -102,7 +97,7 @@ public class TileDemonCrystallizer extends TileEntity implements ITickable, IDem } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tag) + public NBTTagCompound serialize(NBTTagCompound tag) { super.writeToNBT(tag); @@ -175,38 +170,4 @@ public class TileDemonCrystallizer extends TileEntity implements ITickable, IDem { return holder.getWill(type); } - - @Override - public SPacketUpdateTileEntity getUpdatePacket() - { - NBTTagCompound nbt = new NBTTagCompound(); - writeToNBT(nbt); - return new SPacketUpdateTileEntity(getPos(), -999, nbt); - } - - @Override - @SideOnly(Side.CLIENT) - public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) - { - super.onDataPacket(net, pkt); - readFromNBT(pkt.getNbtCompound()); - } - - @Override - public NBTTagCompound getUpdateTag() - { - return writeToNBT(new NBTTagCompound()); - } - - @Override - public void handleUpdateTag(NBTTagCompound tag) - { - readFromNBT(tag); - } - - @Override - public boolean shouldRefresh(World world, BlockPos pos, IBlockState oldState, IBlockState newState) - { - return oldState.getBlock() != newState.getBlock(); - } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileDemonPylon.java b/src/main/java/WayofTime/bloodmagic/tile/TileDemonPylon.java index 6b0537ca..9e5cfc9a 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileDemonPylon.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileDemonPylon.java @@ -4,19 +4,12 @@ import WayofTime.bloodmagic.api.soul.DemonWillHolder; import WayofTime.bloodmagic.api.soul.EnumDemonWillType; import WayofTime.bloodmagic.api.soul.IDemonWillConduit; import WayofTime.bloodmagic.demonAura.WorldDemonWillHandler; -import net.minecraft.block.state.IBlockState; +import WayofTime.bloodmagic.tile.base.TileTicking; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.play.server.SPacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; -import net.minecraft.util.ITickable; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -public class TileDemonPylon extends TileEntity implements ITickable, IDemonWillConduit +public class TileDemonPylon extends TileTicking implements IDemonWillConduit { public DemonWillHolder holder = new DemonWillHolder(); public final int maxWill = 100; @@ -28,7 +21,7 @@ public class TileDemonPylon extends TileEntity implements ITickable, IDemonWillC } @Override - public void update() + public void onUpdate() { if (worldObj.isRemote) { @@ -54,7 +47,7 @@ public class TileDemonPylon extends TileEntity implements ITickable, IDemonWillC } @Override - public void readFromNBT(NBTTagCompound tag) + public void deserialize(NBTTagCompound tag) { super.readFromNBT(tag); @@ -62,10 +55,8 @@ public class TileDemonPylon extends TileEntity implements ITickable, IDemonWillC } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tag) + public NBTTagCompound serialize(NBTTagCompound tag) { - super.writeToNBT(tag); - holder.writeToNBT(tag, "Will"); return tag; } @@ -134,38 +125,4 @@ public class TileDemonPylon extends TileEntity implements ITickable, IDemonWillC { return holder.getWill(type); } - - @Override - public SPacketUpdateTileEntity getUpdatePacket() - { - NBTTagCompound nbt = new NBTTagCompound(); - writeToNBT(nbt); - return new SPacketUpdateTileEntity(getPos(), -999, nbt); - } - - @Override - @SideOnly(Side.CLIENT) - public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) - { - super.onDataPacket(net, pkt); - readFromNBT(pkt.getNbtCompound()); - } - - @Override - public NBTTagCompound getUpdateTag() - { - return writeToNBT(new NBTTagCompound()); - } - - @Override - public void handleUpdateTag(NBTTagCompound tag) - { - readFromNBT(tag); - } - - @Override - public boolean shouldRefresh(World world, BlockPos pos, IBlockState oldState, IBlockState newState) - { - return oldState.getBlock() != newState.getBlock(); - } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileDimensionalPortal.java b/src/main/java/WayofTime/bloodmagic/tile/TileDimensionalPortal.java index d6c36a97..54016c6e 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileDimensionalPortal.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileDimensionalPortal.java @@ -1,18 +1,12 @@ package WayofTime.bloodmagic.tile; import WayofTime.bloodmagic.ritual.RitualPortal; +import WayofTime.bloodmagic.tile.base.TileBase; import com.google.common.base.Strings; -import net.minecraft.block.state.IBlockState; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.play.server.SPacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -public class TileDimensionalPortal extends TileEntity +public class TileDimensionalPortal extends TileBase { public String portalID = ""; public int masterStoneX; @@ -24,7 +18,7 @@ public class TileDimensionalPortal extends TileEntity ; } - public void readFromNBT(NBTTagCompound tagCompound) + public void deserialize(NBTTagCompound tagCompound) { super.readFromNBT(tagCompound); @@ -35,10 +29,8 @@ public class TileDimensionalPortal extends TileEntity masterStoneZ = tagCompound.getInteger("masterStoneZ"); } - public NBTTagCompound writeToNBT(NBTTagCompound tagCompound) + public NBTTagCompound serialize(NBTTagCompound tagCompound) { - super.writeToNBT(tagCompound); - tagCompound.setString(RitualPortal.PORTAL_ID_TAG, Strings.isNullOrEmpty(portalID) ? "" : portalID); tagCompound.setInteger("masterStoneX", masterStoneX); @@ -58,38 +50,4 @@ public class TileDimensionalPortal extends TileEntity this.masterStoneY = blockPos.getY(); this.masterStoneZ = blockPos.getZ(); } - - @Override - public SPacketUpdateTileEntity getUpdatePacket() - { - NBTTagCompound nbt = new NBTTagCompound(); - writeToNBT(nbt); - return new SPacketUpdateTileEntity(getPos(), -999, nbt); - } - - @Override - @SideOnly(Side.CLIENT) - public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) - { - super.onDataPacket(net, pkt); - readFromNBT(pkt.getNbtCompound()); - } - - @Override - public NBTTagCompound getUpdateTag() - { - return writeToNBT(new NBTTagCompound()); - } - - @Override - public void handleUpdateTag(NBTTagCompound tag) - { - readFromNBT(tag); - } - - @Override - public boolean shouldRefresh(World world, BlockPos pos, IBlockState oldState, IBlockState newState) - { - return oldState.getBlock() != newState.getBlock(); - } } diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileImperfectRitualStone.java b/src/main/java/WayofTime/bloodmagic/tile/TileImperfectRitualStone.java index aa8b0f5f..1bf00be6 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileImperfectRitualStone.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileImperfectRitualStone.java @@ -5,49 +5,16 @@ import WayofTime.bloodmagic.api.ritual.imperfect.IImperfectRitualStone; import WayofTime.bloodmagic.api.ritual.imperfect.ImperfectRitual; import WayofTime.bloodmagic.api.util.helper.NetworkHelper; import WayofTime.bloodmagic.api.util.helper.PlayerHelper; +import WayofTime.bloodmagic.tile.base.TileBase; import lombok.NoArgsConstructor; import net.minecraft.entity.effect.EntityLightningBolt; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.play.server.SPacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; @NoArgsConstructor -public class TileImperfectRitualStone extends TileEntity implements IImperfectRitualStone +public class TileImperfectRitualStone extends TileBase implements IImperfectRitualStone { - @Override - public SPacketUpdateTileEntity getUpdatePacket() - { - NBTTagCompound nbttagcompound = new NBTTagCompound(); - writeToNBT(nbttagcompound); - return new SPacketUpdateTileEntity(pos, this.getBlockMetadata(), nbttagcompound); - } - - @Override - @SideOnly(Side.CLIENT) - public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity packet) - { - super.onDataPacket(net, packet); - readFromNBT(packet.getNbtCompound()); - } - - @Override - public NBTTagCompound getUpdateTag() - { - return writeToNBT(new NBTTagCompound()); - } - - @Override - public void handleUpdateTag(NBTTagCompound tag) - { - readFromNBT(tag); - } - // IImperfectRitualStone @Override diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileIncenseAltar.java b/src/main/java/WayofTime/bloodmagic/tile/TileIncenseAltar.java index dca4615e..f08dcf94 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileIncenseAltar.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileIncenseAltar.java @@ -74,17 +74,17 @@ public class TileIncenseAltar extends TileInventory implements ITickable } @Override - public void readFromNBT(NBTTagCompound tag) + public void deserialize(NBTTagCompound tag) { - super.readFromNBT(tag); + super.deserialize(tag); tranquility = tag.getDouble("tranquility"); incenseAddition = tag.getDouble("incenseAddition"); } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tag) + public NBTTagCompound serialize(NBTTagCompound tag) { - super.writeToNBT(tag); + super.serialize(tag); tag.setDouble("tranquility", tranquility); tag.setDouble("incenseAddition", incenseAddition); return tag; diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileInventory.java b/src/main/java/WayofTime/bloodmagic/tile/TileInventory.java index 55d7070c..fc99048f 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileInventory.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileInventory.java @@ -1,6 +1,6 @@ package WayofTime.bloodmagic.tile; -import net.minecraft.block.state.IBlockState; +import WayofTime.bloodmagic.tile.base.TileBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; @@ -8,24 +8,17 @@ import net.minecraft.inventory.InventoryHelper; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.play.server.SPacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; -import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentString; -import net.minecraft.world.World; import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.wrapper.InvWrapper; import net.minecraftforge.items.wrapper.SidedInvWrapper; import WayofTime.bloodmagic.util.helper.TextHelper; -public class TileInventory extends TileEntity implements IInventory +public class TileInventory extends TileBase implements IInventory { protected int[] syncedSlots = new int[0]; protected ItemStack[] inventory; @@ -53,7 +46,7 @@ public class TileInventory extends TileEntity implements IInventory } @Override - public void readFromNBT(NBTTagCompound tagCompound) + public void deserialize(NBTTagCompound tagCompound) { super.readFromNBT(tagCompound); NBTTagList tags = tagCompound.getTagList("Items", 10); @@ -75,7 +68,7 @@ public class TileInventory extends TileEntity implements IInventory } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tagCompound) + public NBTTagCompound serialize(NBTTagCompound tagCompound) { super.writeToNBT(tagCompound); NBTTagList tags = new NBTTagList(); @@ -95,40 +88,6 @@ public class TileInventory extends TileEntity implements IInventory return tagCompound; } - @Override - public SPacketUpdateTileEntity getUpdatePacket() - { - NBTTagCompound nbt = new NBTTagCompound(); - writeToNBT(nbt); - return new SPacketUpdateTileEntity(getPos(), -999, nbt); - } - - @Override - @SideOnly(Side.CLIENT) - public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) - { - super.onDataPacket(net, pkt); - readFromNBT(pkt.getNbtCompound()); - } - - @Override - public NBTTagCompound getUpdateTag() - { - return writeToNBT(new NBTTagCompound()); - } - - @Override - public void handleUpdateTag(NBTTagCompound tag) - { - readFromNBT(tag); - } - - @Override - public boolean shouldRefresh(World world, BlockPos pos, IBlockState oldState, IBlockState newState) - { - return oldState.getBlock() != newState.getBlock(); - } - public void dropItems() { InventoryHelper.dropInventoryItems(getWorld(), getPos(), this); diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java b/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java index e562a9d7..f2c5103a 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java @@ -3,17 +3,14 @@ package WayofTime.bloodmagic.tile; import java.util.ArrayList; import java.util.List; +import WayofTime.bloodmagic.tile.base.TileTicking; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.play.server.SPacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; -import net.minecraft.util.ITickable; import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.world.World; @@ -35,12 +32,10 @@ import WayofTime.bloodmagic.registry.ModItems; import WayofTime.bloodmagic.util.ChatUtil; import com.google.common.base.Strings; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; @Getter @NoArgsConstructor -public class TileMasterRitualStone extends TileEntity implements IMasterRitualStone, ITickable +public class TileMasterRitualStone extends TileTicking implements IMasterRitualStone { private String owner; private boolean active; @@ -54,7 +49,7 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt private List currentActiveWillConfig = new ArrayList(); @Override - public void update() + public void onUpdate() { if (worldObj.isRemote) return; @@ -86,9 +81,8 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt } @Override - public void readFromNBT(NBTTagCompound tag) + public void deserialize(NBTTagCompound tag) { - super.readFromNBT(tag); owner = tag.getString(Constants.NBT.OWNER_UUID); currentRitual = RitualRegistry.getRitualForId(tag.getString(Constants.NBT.CURRENT_RITUAL)); if (currentRitual != null) @@ -114,9 +108,8 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tag) + public NBTTagCompound serialize(NBTTagCompound tag) { - super.writeToNBT(tag); String ritualId = RitualRegistry.getIdForRitual(getCurrentRitual()); tag.setString(Constants.NBT.OWNER_UUID, Strings.isNullOrEmpty(getOwner()) ? "" : getOwner()); tag.setString(Constants.NBT.CURRENT_RITUAL, Strings.isNullOrEmpty(ritualId) ? "" : ritualId); @@ -188,12 +181,12 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt this.owner = crystalOwner; this.currentRitual = ritual; - getWorld().notifyBlockUpdate(getPos(), getWorld().getBlockState(getPos()), getWorld().getBlockState(getPos()), 3); + notifyUpdate(); return true; } } - getWorld().notifyBlockUpdate(getPos(), getWorld().getBlockState(getPos()), getWorld().getBlockState(getPos()), 3); + notifyUpdate(); return true; } } @@ -242,7 +235,7 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt this.active = false; this.activeTime = 0; } - getWorld().notifyBlockUpdate(getPos(), getWorld().getBlockState(getPos()), getWorld().getBlockState(getPos()), 3); + notifyUpdate(); } } @@ -300,34 +293,6 @@ public class TileMasterRitualStone extends TileEntity implements IMasterRitualSt return super.getPos(); } - @Override - public SPacketUpdateTileEntity getUpdatePacket() - { - NBTTagCompound nbttagcompound = new NBTTagCompound(); - writeToNBT(nbttagcompound); - return new SPacketUpdateTileEntity(pos, this.getBlockMetadata(), nbttagcompound); - } - - @Override - @SideOnly(Side.CLIENT) - public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity packet) - { - super.onDataPacket(net, packet); - readFromNBT(packet.getNbtCompound()); - } - - @Override - public NBTTagCompound getUpdateTag() - { - return writeToNBT(new NBTTagCompound()); - } - - @Override - public void handleUpdateTag(NBTTagCompound tag) - { - readFromNBT(tag); - } - @Override public World getWorldObj() { diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileMimic.java b/src/main/java/WayofTime/bloodmagic/tile/TileMimic.java index 7d00a2a7..166cdf3f 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileMimic.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileMimic.java @@ -282,9 +282,9 @@ public class TileMimic extends TileInventory implements ITickable } @Override - public void readFromNBT(NBTTagCompound tag) + public void deserialize(NBTTagCompound tag) { - super.readFromNBT(tag); + super.deserialize(tag); dropItemsOnBreak = tag.getBoolean("dropItemsOnBreak"); tileTag = tag.getCompoundTag("tileTag"); @@ -296,9 +296,9 @@ public class TileMimic extends TileInventory implements ITickable } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tag) + public NBTTagCompound serialize(NBTTagCompound tag) { - super.writeToNBT(tag); + super.serialize(tag); tag.setBoolean("dropItemsOnBreak", dropItemsOnBreak); tag.setTag("tileTag", tileTag); diff --git a/src/main/java/WayofTime/bloodmagic/tile/TilePhantomBlock.java b/src/main/java/WayofTime/bloodmagic/tile/TilePhantomBlock.java index 424133c0..4c5b8f76 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TilePhantomBlock.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TilePhantomBlock.java @@ -1,21 +1,12 @@ package WayofTime.bloodmagic.tile; import WayofTime.bloodmagic.api.Constants; +import WayofTime.bloodmagic.tile.base.TileTicking; import lombok.NoArgsConstructor; -import net.minecraft.block.state.IBlockState; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.Packet; -import net.minecraft.network.play.server.SPacketUpdateTileEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ITickable; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; @NoArgsConstructor -public class TilePhantomBlock extends TileEntity implements ITickable +public class TilePhantomBlock extends TileTicking { private int ticksRemaining = 10; @@ -25,22 +16,20 @@ public class TilePhantomBlock extends TileEntity implements ITickable } @Override - public void readFromNBT(NBTTagCompound tagCompound) + public void deserialize(NBTTagCompound tagCompound) { - super.readFromNBT(tagCompound); this.ticksRemaining = tagCompound.getInteger(Constants.NBT.TICKS_REMAINING); } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tagCompound) + public NBTTagCompound serialize(NBTTagCompound tagCompound) { - super.writeToNBT(tagCompound); tagCompound.setInteger(Constants.NBT.TICKS_REMAINING, ticksRemaining); return tagCompound; } @Override - public void update() + public void onUpdate() { ticksRemaining--; @@ -50,38 +39,4 @@ public class TilePhantomBlock extends TileEntity implements ITickable worldObj.removeTileEntity(getPos()); } } - - @Override - public SPacketUpdateTileEntity getUpdatePacket() - { - NBTTagCompound nbt = new NBTTagCompound(); - writeToNBT(nbt); - return new SPacketUpdateTileEntity(getPos(), -999, nbt); - } - - @Override - @SideOnly(Side.CLIENT) - public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) - { - super.onDataPacket(net, pkt); - readFromNBT(pkt.getNbtCompound()); - } - - @Override - public NBTTagCompound getUpdateTag() - { - return writeToNBT(new NBTTagCompound()); - } - - @Override - public void handleUpdateTag(NBTTagCompound tag) - { - readFromNBT(tag); - } - - @Override - public boolean shouldRefresh(World world, BlockPos pos, IBlockState oldState, IBlockState newState) - { - return oldState.getBlock() != newState.getBlock(); - } } diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileSoulForge.java b/src/main/java/WayofTime/bloodmagic/tile/TileSoulForge.java index d77ce562..5ee006c1 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileSoulForge.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileSoulForge.java @@ -33,17 +33,17 @@ public class TileSoulForge extends TileInventory implements ITickable, IDemonWil } @Override - public void readFromNBT(NBTTagCompound tag) + public void deserialize(NBTTagCompound tag) { - super.readFromNBT(tag); + super.deserialize(tag); burnTime = tag.getInteger(Constants.NBT.SOUL_FORGE_BURN); } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tag) + public NBTTagCompound serialize(NBTTagCompound tag) { - super.writeToNBT(tag); + super.serialize(tag); tag.setInteger(Constants.NBT.SOUL_FORGE_BURN, burnTime); return tag; diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileSpectralBlock.java b/src/main/java/WayofTime/bloodmagic/tile/TileSpectralBlock.java index c3cedee6..955a2c3b 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileSpectralBlock.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileSpectralBlock.java @@ -2,6 +2,8 @@ package WayofTime.bloodmagic.tile; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.registry.ModBlocks; +import WayofTime.bloodmagic.tile.base.TileBase; +import WayofTime.bloodmagic.tile.base.TileTicking; import com.google.common.base.Strings; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; @@ -17,7 +19,7 @@ import net.minecraftforge.fml.common.registry.ForgeRegistries; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -public class TileSpectralBlock extends TileEntity implements ITickable +public class TileSpectralBlock extends TileTicking { private int ticksRemaining; private String containedBlockName; @@ -28,18 +30,16 @@ public class TileSpectralBlock extends TileEntity implements ITickable } @Override - public void readFromNBT(NBTTagCompound tagCompound) + public void deserialize(NBTTagCompound tagCompound) { - super.readFromNBT(tagCompound); ticksRemaining = tagCompound.getInteger(Constants.NBT.TICKS_REMAINING); containedBlockName = tagCompound.getString(Constants.NBT.CONTAINED_BLOCK_NAME); containedBlockMeta = tagCompound.getInteger(Constants.NBT.CONTAINED_BLOCK_META); } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tagCompound) + public NBTTagCompound serialize(NBTTagCompound tagCompound) { - super.writeToNBT(tagCompound); tagCompound.setInteger(Constants.NBT.TICKS_REMAINING, ticksRemaining); tagCompound.setString(Constants.NBT.CONTAINED_BLOCK_NAME, Strings.isNullOrEmpty(containedBlockName) ? "" : containedBlockName); tagCompound.setInteger(Constants.NBT.CONTAINED_BLOCK_META, containedBlockMeta); @@ -47,35 +47,7 @@ public class TileSpectralBlock extends TileEntity implements ITickable } @Override - public SPacketUpdateTileEntity getUpdatePacket() - { - NBTTagCompound nbt = new NBTTagCompound(); - writeToNBT(nbt); - return new SPacketUpdateTileEntity(getPos(), -999, nbt); - } - - @Override - @SideOnly(Side.CLIENT) - public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) - { - super.onDataPacket(net, pkt); - readFromNBT(pkt.getNbtCompound()); - } - - @Override - public NBTTagCompound getUpdateTag() - { - return writeToNBT(new NBTTagCompound()); - } - - @Override - public void handleUpdateTag(NBTTagCompound tag) - { - readFromNBT(tag); - } - - @Override - public void update() + public void onUpdate() { if (worldObj.isRemote) { diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileTeleposer.java b/src/main/java/WayofTime/bloodmagic/tile/TileTeleposer.java index f89cd314..fc016bb3 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileTeleposer.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileTeleposer.java @@ -35,16 +35,16 @@ public class TileTeleposer extends TileInventory implements ITickable } @Override - public void readFromNBT(NBTTagCompound tagCompound) + public void deserialize(NBTTagCompound tagCompound) { - super.readFromNBT(tagCompound); + super.deserialize(tagCompound); previousInput = tagCompound.getInteger(Constants.NBT.PREVIOUS_INPUT); } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tagCompound) + public NBTTagCompound serialize(NBTTagCompound tagCompound) { - super.writeToNBT(tagCompound); + super.serialize(tagCompound); tagCompound.setInteger(Constants.NBT.PREVIOUS_INPUT, previousInput); return tagCompound; } diff --git a/src/main/java/WayofTime/bloodmagic/tile/base/TileBase.java b/src/main/java/WayofTime/bloodmagic/tile/base/TileBase.java new file mode 100644 index 00000000..138d4719 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/tile/base/TileBase.java @@ -0,0 +1,124 @@ +package WayofTime.bloodmagic.tile.base; + +import net.minecraft.block.state.IBlockState; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.play.server.SPacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +/** + * Base tile class. + * + * Handles data syncing and core data writing/reading. + */ +public class TileBase extends TileEntity +{ + @Override + public final void readFromNBT(NBTTagCompound compound) + { + super.readFromNBT(compound); + deserializeBase(compound); + deserialize(compound); + } + + @Override + public final NBTTagCompound writeToNBT(NBTTagCompound compound) + { + super.writeToNBT(compound); + serializeBase(compound); + return serialize(compound); + } + + /** + * Called by {@link #readFromNBT(NBTTagCompound)} + * + * Internal data (such as coordinates) are handled for you. Just read the data you need. + * + * @param tagCompound - The tag compound to read from + */ + public void deserialize(NBTTagCompound tagCompound) + { + + } + + /** + * Package private method for reading base data from the tag compound. + * + * @see TileTicking + * + * @param tagCompound - The tag compound to read from + */ + void deserializeBase(NBTTagCompound tagCompound) + { + + } + + /** + * Called by {@link #writeToNBT(NBTTagCompound)} + * + * Internal data (such as coordinates) are handled for you. Just read the data you need. + * + * @param tagCompound - The tag compound to write to. + * @return the modified tag compound + */ + public NBTTagCompound serialize(NBTTagCompound tagCompound) + { + return tagCompound; + } + + + /** + * Package private method for writing base data to the tag compound. + * + * @see TileTicking + * + * @param tagCompound - The tag compound to write to. + * @return the modified tag compound + */ + NBTTagCompound serializeBase(NBTTagCompound tagCompound) + { + return tagCompound; + } + + public void notifyUpdate() { + getWorld().notifyBlockUpdate(getPos(), getWorld().getBlockState(getPos()), getWorld().getBlockState(getPos()), 3); + } + + // Data syncing + + @Override + public boolean shouldRefresh(World world, BlockPos pos, IBlockState oldState, IBlockState newState) + { + return oldState.getBlock() != newState.getBlock(); + } + + @Override + public final SPacketUpdateTileEntity getUpdatePacket() + { + return new SPacketUpdateTileEntity(getPos(), -999, writeToNBT(new NBTTagCompound())); + } + + @Override + @SideOnly(Side.CLIENT) + public final void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) + { + super.onDataPacket(net, pkt); + readFromNBT(pkt.getNbtCompound()); + } + + @Override + public final NBTTagCompound getUpdateTag() + { + return writeToNBT(new NBTTagCompound()); + } + + @Override + public final void handleUpdateTag(NBTTagCompound tag) + { + readFromNBT(tag); + } +} diff --git a/src/main/java/WayofTime/bloodmagic/tile/base/TileTicking.java b/src/main/java/WayofTime/bloodmagic/tile/base/TileTicking.java new file mode 100644 index 00000000..83ccaab6 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/tile/base/TileTicking.java @@ -0,0 +1,63 @@ +package WayofTime.bloodmagic.tile.base; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ITickable; + +/** + * Base class for tiles that tick. Allows disabling the ticking programmatically. + */ +// TODO - Move implementations that depend on existed ticks to new methods from here. +public abstract class TileTicking extends TileBase implements ITickable +{ + private int ticksExisted; + private boolean shouldTick = true; + + @Override + public final void update() + { + if (shouldTick()) { + ticksExisted++; + onUpdate(); + } + } + + @Override + void deserializeBase(NBTTagCompound tagCompound) + { + this.ticksExisted = tagCompound.getInteger("ticksExisted"); + this.shouldTick = tagCompound.getBoolean("shouldTick"); + } + + @Override + NBTTagCompound serializeBase(NBTTagCompound tagCompound) + { + tagCompound.setInteger("ticksExisted", getTicksExisted()); + tagCompound.setBoolean("shouldTick", shouldTick()); + return tagCompound; + } + + /** + * Called every tick that {@link #shouldTick()} is true. + */ + public abstract void onUpdate(); + + public int getTicksExisted() + { + return ticksExisted; + } + + public void resetLifetime() + { + ticksExisted = 0; + } + + public boolean shouldTick() + { + return shouldTick; + } + + public void setShouldTick(boolean shouldTick) + { + this.shouldTick = shouldTick; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/tile/routing/TileFilteredRoutingNode.java b/src/main/java/WayofTime/bloodmagic/tile/routing/TileFilteredRoutingNode.java index 61fe70d1..a6ae7453 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/routing/TileFilteredRoutingNode.java +++ b/src/main/java/WayofTime/bloodmagic/tile/routing/TileFilteredRoutingNode.java @@ -47,9 +47,9 @@ public class TileFilteredRoutingNode extends TileRoutingNode implements ISidedIn } @Override - public void readFromNBT(NBTTagCompound tag) + public void deserialize(NBTTagCompound tag) { - super.readFromNBT(tag); + super.deserialize(tag); currentActiveSlot = tag.getInteger("currentSlot"); priorities = tag.getIntArray(Constants.NBT.ROUTING_PRIORITY); if (priorities.length != 6) @@ -83,9 +83,9 @@ public class TileFilteredRoutingNode extends TileRoutingNode implements ISidedIn } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tag) + public NBTTagCompound serialize(NBTTagCompound tag) { - super.writeToNBT(tag); + super.serialize(tag); tag.setInteger("currentSlot", currentActiveSlot); tag.setIntArray(Constants.NBT.ROUTING_PRIORITY, priorities); tag.setBoolean("updated", true); diff --git a/src/main/java/WayofTime/bloodmagic/tile/routing/TileMasterRoutingNode.java b/src/main/java/WayofTime/bloodmagic/tile/routing/TileMasterRoutingNode.java index 9726ff78..0bebb147 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/routing/TileMasterRoutingNode.java +++ b/src/main/java/WayofTime/bloodmagic/tile/routing/TileMasterRoutingNode.java @@ -155,10 +155,9 @@ public class TileMasterRoutingNode extends TileInventory implements IMasterRouti } @Override - public NBTTagCompound writeToNBT(NBTTagCompound tag) + public NBTTagCompound serialize(NBTTagCompound tag) { - super.writeToNBT(tag); - + super.serialize(tag); NBTTagList tags = new NBTTagList(); for (BlockPos pos : generalNodeList) { @@ -195,9 +194,9 @@ public class TileMasterRoutingNode extends TileInventory implements IMasterRouti } @Override - public void readFromNBT(NBTTagCompound tag) + public void deserialize(NBTTagCompound tag) { - super.readFromNBT(tag); + super.deserialize(tag); NBTTagList tags = tag.getTagList(Constants.NBT.ROUTING_MASTER_GENERAL, 10); for (int i = 0; i < tags.tagCount(); i++) diff --git a/src/main/java/WayofTime/bloodmagic/tile/routing/TileRoutingNode.java b/src/main/java/WayofTime/bloodmagic/tile/routing/TileRoutingNode.java index 3dc3d24d..e9f5f03b 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/routing/TileRoutingNode.java +++ b/src/main/java/WayofTime/bloodmagic/tile/routing/TileRoutingNode.java @@ -41,9 +41,9 @@ public class TileRoutingNode extends TileInventory implements IRoutingNode, IIte private List connectionList = new LinkedList(); @Override - public NBTTagCompound writeToNBT(NBTTagCompound tag) + public NBTTagCompound serialize(NBTTagCompound tag) { - super.writeToNBT(tag); + super.deserialize(tag); NBTTagCompound masterTag = new NBTTagCompound(); masterTag.setInteger(Constants.NBT.X_COORD, masterPos.getX()); masterTag.setInteger(Constants.NBT.Y_COORD, masterPos.getY()); @@ -64,9 +64,9 @@ public class TileRoutingNode extends TileInventory implements IRoutingNode, IIte } @Override - public void readFromNBT(NBTTagCompound tag) + public void deserialize(NBTTagCompound tag) { - super.readFromNBT(tag); + super.deserialize(tag); connectionList.clear(); NBTTagCompound masterTag = tag.getCompoundTag(Constants.NBT.ROUTING_MASTER); masterPos = new BlockPos(masterTag.getInteger(Constants.NBT.X_COORD), masterTag.getInteger(Constants.NBT.Y_COORD), masterTag.getInteger(Constants.NBT.Z_COORD));