From c271f0f5c577974f9c8ba9364aaee4ad28f01462 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Thu, 10 Dec 2015 01:27:40 +0100 Subject: [PATCH] grid block connected / disconnected texture --- src/main/java/storagecraft/SC.java | 11 ++- .../java/storagecraft/block/BlockGrid.java | 13 +-- src/main/java/storagecraft/tile/IMachine.java | 9 -- .../java/storagecraft/tile/TileCable.java | 12 +-- .../storagecraft/tile/TileController.java | 78 ++++++++++-------- src/main/java/storagecraft/tile/TileGrid.java | 10 +-- .../java/storagecraft/tile/TileMachine.java | 35 ++++++++ .../storagecraft/textures/blocks/grid.png | Bin 302 -> 0 bytes .../textures/blocks/gridConnected.png | Bin 0 -> 257 bytes .../textures/blocks/gridDisconnected.png | Bin 0 -> 258 bytes 10 files changed, 97 insertions(+), 71 deletions(-) delete mode 100644 src/main/java/storagecraft/tile/IMachine.java create mode 100644 src/main/java/storagecraft/tile/TileMachine.java delete mode 100644 src/main/resources/assets/storagecraft/textures/blocks/grid.png create mode 100644 src/main/resources/assets/storagecraft/textures/blocks/gridConnected.png create mode 100644 src/main/resources/assets/storagecraft/textures/blocks/gridDisconnected.png diff --git a/src/main/java/storagecraft/SC.java b/src/main/java/storagecraft/SC.java index dcc0d57dc..8f2d2cf84 100644 --- a/src/main/java/storagecraft/SC.java +++ b/src/main/java/storagecraft/SC.java @@ -10,7 +10,6 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.init.Items; import net.minecraft.item.Item; import storagecraft.proxy.CommonProxy; @@ -19,31 +18,31 @@ public class SC { public static class GUI { public static final int CONTROLLER = 0; } - + public static final String ID = "storagecraft"; public static final String VERSION = "1.0"; public static final SimpleNetworkWrapper NETWORK = NetworkRegistry.INSTANCE.newSimpleChannel(ID); public static final CreativeTabs TAB = new CreativeTabs(ID) { @Override public Item getTabIconItem() { - return Items.emerald; + return Item.getItemFromBlock(SCBlocks.CONTROLLER); } }; @SidedProxy(clientSide = "storagecraft.proxy.ClientProxy", serverSide = "storagecraft.proxy.ServerProxy") public static CommonProxy PROXY; @Instance public static SC INSTANCE; - + @EventHandler public void preInit(FMLPreInitializationEvent e) { PROXY.preInit(e); } - + @EventHandler public void init(FMLInitializationEvent e) { PROXY.init(e); } - + @EventHandler public void postInit(FMLPostInitializationEvent e) { PROXY.postInit(e); diff --git a/src/main/java/storagecraft/block/BlockGrid.java b/src/main/java/storagecraft/block/BlockGrid.java index ba482f378..9cc3005ca 100644 --- a/src/main/java/storagecraft/block/BlockGrid.java +++ b/src/main/java/storagecraft/block/BlockGrid.java @@ -7,11 +7,11 @@ import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import storagecraft.tile.TileGrid; -import storagecraft.tile.TileSC; public class BlockGrid extends BlockSC implements ITileEntityProvider { private IIcon sideIcon; - private IIcon icon; + private IIcon iconConnected; + private IIcon iconDisconnected; public BlockGrid() { super("grid"); @@ -24,16 +24,17 @@ public class BlockGrid extends BlockSC implements ITileEntityProvider { @Override public void registerBlockIcons(IIconRegister register) { - icon = register.registerIcon("storagecraft:grid"); + iconConnected = register.registerIcon("storagecraft:gridConnected"); + iconDisconnected = register.registerIcon("storagecraft:gridDisconnected"); sideIcon = register.registerIcon("storagecraft:generic"); } @Override public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { - TileSC tile = (TileSC) world.getTileEntity(x, y, z); + TileGrid tile = (TileGrid) world.getTileEntity(x, y, z); if (side == tile.getDirection().getOpposite().ordinal()) { - return icon; + return tile.isConnected() ? iconConnected : iconDisconnected; } return sideIcon; @@ -42,7 +43,7 @@ public class BlockGrid extends BlockSC implements ITileEntityProvider { @Override public IIcon getIcon(int side, int meta) { if (side == 3) { - return icon; + return iconDisconnected; } return sideIcon; diff --git a/src/main/java/storagecraft/tile/IMachine.java b/src/main/java/storagecraft/tile/IMachine.java deleted file mode 100644 index cf187cff0..000000000 --- a/src/main/java/storagecraft/tile/IMachine.java +++ /dev/null @@ -1,9 +0,0 @@ -package storagecraft.tile; - -public interface IMachine { - public int getEnergyUsage(); - - public void onConnected(TileController controller); - - public void onDisconnected(); -} diff --git a/src/main/java/storagecraft/tile/TileCable.java b/src/main/java/storagecraft/tile/TileCable.java index cd9c3a039..c1c522d30 100644 --- a/src/main/java/storagecraft/tile/TileCable.java +++ b/src/main/java/storagecraft/tile/TileCable.java @@ -20,21 +20,21 @@ public class TileCable extends TileSC { if (!isCable(worldObj, xCoord, yCoord, zCoord, dir)) { TileEntity tile = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); - return tile instanceof IMachine || tile instanceof TileController; + return tile instanceof TileMachine || tile instanceof TileController; } return true; } - public List findMachines(TileController controller) { - List machines = new ArrayList(); + public List findMachines(TileController controller) { + List machines = new ArrayList(); findMachinesInternal(new ArrayList(), machines, controller); return machines; } - private void findMachinesInternal(List visited, List machines, TileController controller) { + private void findMachinesInternal(List visited, List machines, TileController controller) { for (Vec3 visitedBlock : visited) { if (visitedBlock.xCoord == xCoord && visitedBlock.yCoord == yCoord && visitedBlock.zCoord == zCoord) { return; @@ -62,8 +62,8 @@ public class TileCable extends TileSC { TileEntity tile = worldObj.getTileEntity(x, y, z); - if (tile instanceof IMachine) { - machines.add((IMachine) tile); + if (tile instanceof TileMachine) { + machines.add((TileMachine) tile); visited.add(Vec3.createVectorHelper(x, y, z)); } else if (tile instanceof TileCable) { diff --git a/src/main/java/storagecraft/tile/TileController.java b/src/main/java/storagecraft/tile/TileController.java index b03890b9e..08cd66e39 100644 --- a/src/main/java/storagecraft/tile/TileController.java +++ b/src/main/java/storagecraft/tile/TileController.java @@ -12,73 +12,81 @@ import net.minecraftforge.common.util.ForgeDirection; public class TileController extends TileSC implements IEnergyHandler, INetworkTile { public static final int BASE_ENERGY_USAGE = 100; - private int energyUsage; + private boolean destroyed = false; + private EnergyStorage storage = new EnergyStorage(32000); - private List connectedMachines = new ArrayList(); + private int energyUsage; + + private List connectedMachines = new ArrayList(); + private int ticks = 0; @Override public void updateEntity() { super.updateEntity(); - if (!worldObj.isRemote) { - ticks++; + if (!destroyed) { + if (!worldObj.isRemote) { + ticks++; - if (ticks % 40 == 0) { - if (!isActive()) { - disconnectAll(); - } else { - List machines = new ArrayList(); + if (ticks % 40 == 0) { + if (!isActive()) { + disconnectAll(); + } else { + List machines = new ArrayList(); - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - TileEntity tile = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + TileEntity tile = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); - if (tile instanceof TileCable) { - machines.addAll(((TileCable) tile).findMachines(this)); + if (tile instanceof TileCable) { + machines.addAll(((TileCable) tile).findMachines(this)); + } } - } - for (IMachine machine : connectedMachines) { - if (!machines.contains(machine)) { - machine.onDisconnected(); + for (TileMachine machine : connectedMachines) { + if (!machines.contains(machine)) { + machine.onDisconnected(); + } } - } - for (IMachine machine : machines) { - if (!connectedMachines.contains(machine)) { - machine.onConnected(this); + for (TileMachine machine : machines) { + if (!connectedMachines.contains(machine)) { + machine.onConnected(this); + } } - } - connectedMachines = machines; + connectedMachines = machines; + } } + + energyUsage = BASE_ENERGY_USAGE; + + for (TileMachine machine : connectedMachines) { + energyUsage += machine.getEnergyUsage(); + } + + storage.extractEnergy(energyUsage, false); + } else { + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); } - - energyUsage = BASE_ENERGY_USAGE; - - for (IMachine machine : connectedMachines) { - energyUsage += machine.getEnergyUsage(); - } - - storage.extractEnergy(energyUsage, false); - } else { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); } } public void onDestroyed() { disconnectAll(); + + destroyed = true; } private void disconnectAll() { - for (IMachine machine : connectedMachines) { + for (TileMachine machine : connectedMachines) { machine.onDisconnected(); } connectedMachines.clear(); } - public List getMachines() { + public List getMachines() { return connectedMachines; } diff --git a/src/main/java/storagecraft/tile/TileGrid.java b/src/main/java/storagecraft/tile/TileGrid.java index 08b3559a9..3fededdd0 100644 --- a/src/main/java/storagecraft/tile/TileGrid.java +++ b/src/main/java/storagecraft/tile/TileGrid.java @@ -1,14 +1,6 @@ package storagecraft.tile; -public class TileGrid extends TileSC implements IMachine { - @Override - public void onConnected(TileController controller) { - } - - @Override - public void onDisconnected() { - } - +public class TileGrid extends TileMachine { @Override public int getEnergyUsage() { return 10; diff --git a/src/main/java/storagecraft/tile/TileMachine.java b/src/main/java/storagecraft/tile/TileMachine.java new file mode 100644 index 000000000..e4ec6a9da --- /dev/null +++ b/src/main/java/storagecraft/tile/TileMachine.java @@ -0,0 +1,35 @@ +package storagecraft.tile; + +import io.netty.buffer.ByteBuf; + +public abstract class TileMachine extends TileSC implements INetworkTile { + protected boolean connected = false; + + public void onConnected(TileController controller) { + connected = true; + + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } + + public void onDisconnected() { + connected = false; + + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } + + public boolean isConnected() { + return connected; + } + + public abstract int getEnergyUsage(); + + @Override + public void fromBytes(ByteBuf buf) { + connected = buf.readBoolean(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeBoolean(connected); + } +} diff --git a/src/main/resources/assets/storagecraft/textures/blocks/grid.png b/src/main/resources/assets/storagecraft/textures/blocks/grid.png deleted file mode 100644 index 12a2b38d150c0a8ecef90ab17eae5c2d8920eea0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 302 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={W7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@f)XXJ5hcO-X(i=}MX3x0iJ5sNdU>fO3MP66 zdS-umlJ5i6%=dJ04Ds-OJK-Q#i-Cai-gott@50}N{{Nq$AdoCOGj*d}%7eg5CAZk; zKD*ZTY087$dfSTybS^*VX%qRUAW$M)R5A0=@+1FTZ~T}uYu$6xN4=Yv;`><7M09?? zRmE}IL7^t<_UfJok%|Hzd^Q|>bzMeZ@`k~Gtq%ol?m#6w5A3uG?SEi=V(){vHf{&b sAg>8QO;d!HOi_56+EmCRwq+Zm@vD>|7pCuTflg)cboFyt=akR{0G}^*b^rhX diff --git a/src/main/resources/assets/storagecraft/textures/blocks/gridConnected.png b/src/main/resources/assets/storagecraft/textures/blocks/gridConnected.png new file mode 100644 index 0000000000000000000000000000000000000000..b33779790eb44b8d96aa930fd55ee83c12cc63ea GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WSkfJR9T^xl_H+M9WCij$3p^r= z85sBufiR<}hF1enP@=>&q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&+Jc6@_nG1dQTU} z5D)LS6E|`lFyL_cT{u_v7jNWk{wl+2GP-*diGHZkNctHyQ9m|&(a zclFH{$ZTJ=FLmwlgC=Ya=}E1bJPmJG8(*uE@riCYcF^S5#Qpmh9@N`s9mvy0rx^3Ew|AFMeJbP9u~tDnm{r-UW|AN5=n literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/storagecraft/textures/blocks/gridDisconnected.png b/src/main/resources/assets/storagecraft/textures/blocks/gridDisconnected.png new file mode 100644 index 0000000000000000000000000000000000000000..1aafc81b5a17f844485736cb7f7018766cac588a GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WSkfJR9T^xl_H+M9WCij$3p^r= z85sBuf-vKbiP>*~f)XXJ5hcO-X(i=}MX3x0iJ5sNdU>fO3MP66dS-umlJ5i6G