/*
* Copyright (c) CovertJaguar, 2014 http://railcraft.info
*
* This code is the property of CovertJaguar
* and may only be used with explicit written
* permission unless otherwise specified on the
* license page at http://railcraft.info/wiki/info:license.
*/
package mods.railcraft.common.blocks.signals;
import cpw.mods.fml.common.registry.GameRegistry;
import java.util.List;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import mods.railcraft.client.util.textures.TextureAtlasSheet;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.item.Item;
public class BlockSignalRailcraft extends BlockSignalBase {
public static IIcon[] texturesBox;
public static IIcon[] texturesLampTop;
public static IIcon[] texturesLampBottom;
public static IIcon[] texturesLampBox;
public static IIcon[] texturesSignalSingle;
public static IIcon[] texturesSignalDual;
public static IIcon[] texturesSwitch;
public static IIcon[] texturesSwitchTarget;
public static IIcon texturesSwitchLever;
public BlockSignalRailcraft(int renderType) {
super(renderType);
setBlockName("railcraft.signal");
GameRegistry.registerTileEntity(TileBoxController.class, "RCTileStructureControllerBox");
GameRegistry.registerTileEntity(TileBoxReceiver.class, "RCTileStructureReceiverBox");
GameRegistry.registerTileEntity(TileBoxCapacitor.class, "RCTileStructureCapacitorBox");
GameRegistry.registerTileEntity(TileBoxBlockRelay.class, "RCTileStructureSignalBox");
GameRegistry.registerTileEntity(TileBoxSequencer.class, "RCTileStructureSequencerBox");
GameRegistry.registerTileEntity(TileBoxInterlock.class, "RCTileStructureInterlockBox");
GameRegistry.registerTileEntity(TileBoxAnalogController.class, "RCTileStructureAnalogBox");
GameRegistry.registerTileEntity(TileSwitchMotor.class, "RCTileStructureSwitchMotor");
GameRegistry.registerTileEntity(TileSwitchLever.class, "RCTileStructureSwitchLever");
GameRegistry.registerTileEntity(TileSwitchRouting.class, "RCTileStructureSwitchRouting");
GameRegistry.registerTileEntity(TileSignalDistantSignal.class, "RCTileStructureDistantSignal");
GameRegistry.registerTileEntity(TileSignalDualHeadBlockSignal.class, "RCTileStructureDualHeadBlockSignal");
GameRegistry.registerTileEntity(TileSignalBlockSignal.class, "RCTileStructureBlockSignal");
GameRegistry.registerTileEntity(TileSignalDualHeadDistantSignal.class, "RCTileStructureDualHeadDistantSignal");
}
@Override
public ISignalTileDefinition getSignalType(int meta) {
return EnumSignal.fromId(meta);
}
@Override
public void getSubBlocks(Item item, CreativeTabs tab, List list) {
for (EnumSignal type : EnumSignal.getCreativeList()) {
if (type.isEnabled())
list.add(type.getItem());
}
}
@Override
public void registerBlockIcons(IIconRegister iconRegister) {
texturesBox = TextureAtlasSheet.unstitchIcons(iconRegister, "railcraft:signal.box", 6);
texturesLampBox = TextureAtlasSheet.unstitchIcons(iconRegister, "railcraft:signal.lamp.box", 4);
// TODO: insert color blind mode here!
texturesLampTop = TextureAtlasSheet.unstitchIcons(iconRegister, "railcraft:signal.lamp.top", 4);
texturesLampBottom = TextureAtlasSheet.unstitchIcons(iconRegister, "railcraft:signal.lamp.bottom", 4);
texturesSignalSingle = TextureAtlasSheet.unstitchIcons(iconRegister, "railcraft:signal.single", 5);
texturesSignalDual = TextureAtlasSheet.unstitchIcons(iconRegister, "railcraft:signal.dual", 5);
texturesSwitch = TextureAtlasSheet.unstitchIcons(iconRegister, "railcraft:signal.switch", 2);
texturesSwitchTarget = TextureAtlasSheet.unstitchIcons(iconRegister, "railcraft:signal.switch.target", 2);
texturesSwitchLever = iconRegister.registerIcon("railcraft:signal.switch.throw");
EnumSignal.BOX_BLOCK_RELAY.setIcon(iconRegister.registerIcon("railcraft:signal.box.block.relay"));
EnumSignal.BOX_CAPACITOR.setIcon(iconRegister.registerIcon("railcraft:signal.box.capacitor"));
EnumSignal.BOX_CONTROLLER.setIcon(iconRegister.registerIcon("railcraft:signal.box.controller"));
EnumSignal.BOX_RECEIVER.setIcon(iconRegister.registerIcon("railcraft:signal.box.receiver"));
EnumSignal.BOX_SEQUENCER.setIcon(iconRegister.registerIcon("railcraft:signal.box.sequencer"));
EnumSignal.BOX_INTERLOCK.setIcon(iconRegister.registerIcon("railcraft:signal.box.interlock"));
EnumSignal.BOX_ANALOG_CONTROLLER.setIcon(iconRegister.registerIcon("railcraft:signal.box.analog"));
EnumSignal.SWITCH_MOTOR.setIcon(iconRegister.registerIcon("railcraft:signal.switch.motor"));
EnumSignal.SWITCH_LEVER.setIcon(iconRegister.registerIcon("railcraft:signal.switch.lever"));
EnumSignal.SWITCH_ROUTING.setIcon(iconRegister.registerIcon("railcraft:signal.switch.routing"));
}
@Override
public IIcon getIcon(int side, int meta) {
EnumSignal type = EnumSignal.fromId(meta);
switch (type) {
case DUAL_HEAD_BLOCK_SIGNAL:
case DUAL_HEAD_DISTANT_SIGNAL:
return texturesSignalDual[0];
case DISTANT_SIGNAL:
case BLOCK_SIGNAL:
return texturesSignalSingle[0];
default:
return type.getIcon();
}
}
@Override
public TileEntity createTileEntity(World world, int metadata) {
return EnumSignal.fromId(metadata).getBlockEntity();
}
}