grid block connected / disconnected texture

This commit is contained in:
Raoul Van den Berge
2015-12-10 01:27:40 +01:00
parent 330b68fb3a
commit c271f0f5c5
10 changed files with 97 additions and 71 deletions

View File

@@ -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;
@@ -26,7 +25,7 @@ public class SC {
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")

View File

@@ -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;

View File

@@ -1,9 +0,0 @@
package storagecraft.tile;
public interface IMachine {
public int getEnergyUsage();
public void onConnected(TileController controller);
public void onDisconnected();
}

View File

@@ -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<IMachine> findMachines(TileController controller) {
List<IMachine> machines = new ArrayList<IMachine>();
public List<TileMachine> findMachines(TileController controller) {
List<TileMachine> machines = new ArrayList<TileMachine>();
findMachinesInternal(new ArrayList<Vec3>(), machines, controller);
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) {
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) {

View File

@@ -12,15 +12,20 @@ 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<IMachine> connectedMachines = new ArrayList<IMachine>();
private int energyUsage;
private List<TileMachine> connectedMachines = new ArrayList<TileMachine>();
private int ticks = 0;
@Override
public void updateEntity() {
super.updateEntity();
if (!destroyed) {
if (!worldObj.isRemote) {
ticks++;
@@ -28,7 +33,7 @@ public class TileController extends TileSC implements IEnergyHandler, INetworkTi
if (!isActive()) {
disconnectAll();
} else {
List<IMachine> machines = new ArrayList<IMachine>();
List<TileMachine> machines = new ArrayList<TileMachine>();
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
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)) {
machine.onDisconnected();
}
}
for (IMachine machine : machines) {
for (TileMachine machine : machines) {
if (!connectedMachines.contains(machine)) {
machine.onConnected(this);
}
@@ -56,7 +61,7 @@ public class TileController extends TileSC implements IEnergyHandler, INetworkTi
energyUsage = BASE_ENERGY_USAGE;
for (IMachine machine : connectedMachines) {
for (TileMachine machine : connectedMachines) {
energyUsage += machine.getEnergyUsage();
}
@@ -65,20 +70,23 @@ public class TileController extends TileSC implements IEnergyHandler, INetworkTi
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<IMachine> getMachines() {
public List<TileMachine> getMachines() {
return connectedMachines;
}

View File

@@ -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;

View 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