grid block connected / disconnected texture
This commit is contained in:
@@ -10,7 +10,6 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
|||||||
import cpw.mods.fml.common.network.NetworkRegistry;
|
import cpw.mods.fml.common.network.NetworkRegistry;
|
||||||
import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper;
|
import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper;
|
||||||
import net.minecraft.creativetab.CreativeTabs;
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
import net.minecraft.init.Items;
|
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import storagecraft.proxy.CommonProxy;
|
import storagecraft.proxy.CommonProxy;
|
||||||
|
|
||||||
@@ -26,7 +25,7 @@ public class SC {
|
|||||||
public static final CreativeTabs TAB = new CreativeTabs(ID) {
|
public static final CreativeTabs TAB = new CreativeTabs(ID) {
|
||||||
@Override
|
@Override
|
||||||
public Item getTabIconItem() {
|
public Item getTabIconItem() {
|
||||||
return Items.emerald;
|
return Item.getItemFromBlock(SCBlocks.CONTROLLER);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@SidedProxy(clientSide = "storagecraft.proxy.ClientProxy", serverSide = "storagecraft.proxy.ServerProxy")
|
@SidedProxy(clientSide = "storagecraft.proxy.ClientProxy", serverSide = "storagecraft.proxy.ServerProxy")
|
||||||
|
@@ -7,11 +7,11 @@ import net.minecraft.util.IIcon;
|
|||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import storagecraft.tile.TileGrid;
|
import storagecraft.tile.TileGrid;
|
||||||
import storagecraft.tile.TileSC;
|
|
||||||
|
|
||||||
public class BlockGrid extends BlockSC implements ITileEntityProvider {
|
public class BlockGrid extends BlockSC implements ITileEntityProvider {
|
||||||
private IIcon sideIcon;
|
private IIcon sideIcon;
|
||||||
private IIcon icon;
|
private IIcon iconConnected;
|
||||||
|
private IIcon iconDisconnected;
|
||||||
|
|
||||||
public BlockGrid() {
|
public BlockGrid() {
|
||||||
super("grid");
|
super("grid");
|
||||||
@@ -24,16 +24,17 @@ public class BlockGrid extends BlockSC implements ITileEntityProvider {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerBlockIcons(IIconRegister register) {
|
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");
|
sideIcon = register.registerIcon("storagecraft:generic");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) {
|
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()) {
|
if (side == tile.getDirection().getOpposite().ordinal()) {
|
||||||
return icon;
|
return tile.isConnected() ? iconConnected : iconDisconnected;
|
||||||
}
|
}
|
||||||
|
|
||||||
return sideIcon;
|
return sideIcon;
|
||||||
@@ -42,7 +43,7 @@ public class BlockGrid extends BlockSC implements ITileEntityProvider {
|
|||||||
@Override
|
@Override
|
||||||
public IIcon getIcon(int side, int meta) {
|
public IIcon getIcon(int side, int meta) {
|
||||||
if (side == 3) {
|
if (side == 3) {
|
||||||
return icon;
|
return iconDisconnected;
|
||||||
}
|
}
|
||||||
|
|
||||||
return sideIcon;
|
return sideIcon;
|
||||||
|
@@ -1,9 +0,0 @@
|
|||||||
package storagecraft.tile;
|
|
||||||
|
|
||||||
public interface IMachine {
|
|
||||||
public int getEnergyUsage();
|
|
||||||
|
|
||||||
public void onConnected(TileController controller);
|
|
||||||
|
|
||||||
public void onDisconnected();
|
|
||||||
}
|
|
@@ -20,21 +20,21 @@ public class TileCable extends TileSC {
|
|||||||
if (!isCable(worldObj, xCoord, yCoord, zCoord, dir)) {
|
if (!isCable(worldObj, xCoord, yCoord, zCoord, dir)) {
|
||||||
TileEntity tile = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<IMachine> findMachines(TileController controller) {
|
public List<TileMachine> findMachines(TileController controller) {
|
||||||
List<IMachine> machines = new ArrayList<IMachine>();
|
List<TileMachine> machines = new ArrayList<TileMachine>();
|
||||||
|
|
||||||
findMachinesInternal(new ArrayList<Vec3>(), machines, controller);
|
findMachinesInternal(new ArrayList<Vec3>(), machines, controller);
|
||||||
|
|
||||||
return machines;
|
return machines;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void findMachinesInternal(List<Vec3> visited, List<IMachine> machines, TileController controller) {
|
private void findMachinesInternal(List<Vec3> visited, List<TileMachine> machines, TileController controller) {
|
||||||
for (Vec3 visitedBlock : visited) {
|
for (Vec3 visitedBlock : visited) {
|
||||||
if (visitedBlock.xCoord == xCoord && visitedBlock.yCoord == yCoord && visitedBlock.zCoord == zCoord) {
|
if (visitedBlock.xCoord == xCoord && visitedBlock.yCoord == yCoord && visitedBlock.zCoord == zCoord) {
|
||||||
return;
|
return;
|
||||||
@@ -62,8 +62,8 @@ public class TileCable extends TileSC {
|
|||||||
|
|
||||||
TileEntity tile = worldObj.getTileEntity(x, y, z);
|
TileEntity tile = worldObj.getTileEntity(x, y, z);
|
||||||
|
|
||||||
if (tile instanceof IMachine) {
|
if (tile instanceof TileMachine) {
|
||||||
machines.add((IMachine) tile);
|
machines.add((TileMachine) tile);
|
||||||
|
|
||||||
visited.add(Vec3.createVectorHelper(x, y, z));
|
visited.add(Vec3.createVectorHelper(x, y, z));
|
||||||
} else if (tile instanceof TileCable) {
|
} else if (tile instanceof TileCable) {
|
||||||
|
@@ -12,15 +12,20 @@ import net.minecraftforge.common.util.ForgeDirection;
|
|||||||
public class TileController extends TileSC implements IEnergyHandler, INetworkTile {
|
public class TileController extends TileSC implements IEnergyHandler, INetworkTile {
|
||||||
public static final int BASE_ENERGY_USAGE = 100;
|
public static final int BASE_ENERGY_USAGE = 100;
|
||||||
|
|
||||||
private int energyUsage;
|
private boolean destroyed = false;
|
||||||
|
|
||||||
private EnergyStorage storage = new EnergyStorage(32000);
|
private EnergyStorage storage = new EnergyStorage(32000);
|
||||||
private List<IMachine> connectedMachines = new ArrayList<IMachine>();
|
private int energyUsage;
|
||||||
|
|
||||||
|
private List<TileMachine> connectedMachines = new ArrayList<TileMachine>();
|
||||||
|
|
||||||
private int ticks = 0;
|
private int ticks = 0;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateEntity() {
|
public void updateEntity() {
|
||||||
super.updateEntity();
|
super.updateEntity();
|
||||||
|
|
||||||
|
if (!destroyed) {
|
||||||
if (!worldObj.isRemote) {
|
if (!worldObj.isRemote) {
|
||||||
ticks++;
|
ticks++;
|
||||||
|
|
||||||
@@ -28,7 +33,7 @@ public class TileController extends TileSC implements IEnergyHandler, INetworkTi
|
|||||||
if (!isActive()) {
|
if (!isActive()) {
|
||||||
disconnectAll();
|
disconnectAll();
|
||||||
} else {
|
} else {
|
||||||
List<IMachine> machines = new ArrayList<IMachine>();
|
List<TileMachine> machines = new ArrayList<TileMachine>();
|
||||||
|
|
||||||
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
|
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
|
||||||
TileEntity tile = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ);
|
TileEntity tile = worldObj.getTileEntity(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ);
|
||||||
@@ -38,13 +43,13 @@ public class TileController extends TileSC implements IEnergyHandler, INetworkTi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (IMachine machine : connectedMachines) {
|
for (TileMachine machine : connectedMachines) {
|
||||||
if (!machines.contains(machine)) {
|
if (!machines.contains(machine)) {
|
||||||
machine.onDisconnected();
|
machine.onDisconnected();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (IMachine machine : machines) {
|
for (TileMachine machine : machines) {
|
||||||
if (!connectedMachines.contains(machine)) {
|
if (!connectedMachines.contains(machine)) {
|
||||||
machine.onConnected(this);
|
machine.onConnected(this);
|
||||||
}
|
}
|
||||||
@@ -56,7 +61,7 @@ public class TileController extends TileSC implements IEnergyHandler, INetworkTi
|
|||||||
|
|
||||||
energyUsage = BASE_ENERGY_USAGE;
|
energyUsage = BASE_ENERGY_USAGE;
|
||||||
|
|
||||||
for (IMachine machine : connectedMachines) {
|
for (TileMachine machine : connectedMachines) {
|
||||||
energyUsage += machine.getEnergyUsage();
|
energyUsage += machine.getEnergyUsage();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,20 +70,23 @@ public class TileController extends TileSC implements IEnergyHandler, INetworkTi
|
|||||||
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
|
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void onDestroyed() {
|
public void onDestroyed() {
|
||||||
disconnectAll();
|
disconnectAll();
|
||||||
|
|
||||||
|
destroyed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void disconnectAll() {
|
private void disconnectAll() {
|
||||||
for (IMachine machine : connectedMachines) {
|
for (TileMachine machine : connectedMachines) {
|
||||||
machine.onDisconnected();
|
machine.onDisconnected();
|
||||||
}
|
}
|
||||||
|
|
||||||
connectedMachines.clear();
|
connectedMachines.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<IMachine> getMachines() {
|
public List<TileMachine> getMachines() {
|
||||||
return connectedMachines;
|
return connectedMachines;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,14 +1,6 @@
|
|||||||
package storagecraft.tile;
|
package storagecraft.tile;
|
||||||
|
|
||||||
public class TileGrid extends TileSC implements IMachine {
|
public class TileGrid extends TileMachine {
|
||||||
@Override
|
|
||||||
public void onConnected(TileController controller) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDisconnected() {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getEnergyUsage() {
|
public int getEnergyUsage() {
|
||||||
return 10;
|
return 10;
|
||||||
|
35
src/main/java/storagecraft/tile/TileMachine.java
Normal file
35
src/main/java/storagecraft/tile/TileMachine.java
Normal file
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
Before Width: | Height: | Size: 302 B |
Binary file not shown.
After Width: | Height: | Size: 257 B |
Binary file not shown.
After Width: | Height: | Size: 258 B |
Reference in New Issue
Block a user