package shedar.mods.ic2.nuclearcontrol.blocks; import java.util.HashMap; import java.util.List; import java.util.Map; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import shedar.mods.ic2.nuclearcontrol.IC2NuclearControl; import shedar.mods.ic2.nuclearcontrol.api.BonyDebugger; import shedar.mods.ic2.nuclearcontrol.blocks.subblocks.Subblock; import shedar.mods.ic2.nuclearcontrol.utils.LightDamages; public class BlockNuclearControlLight extends Block{ public static Map<Integer, Boolean> subblocks; private IIcon[] icon; public BlockNuclearControlLight() { super(Material.redstoneLight); subblocks = new HashMap<Integer, Boolean>(); this.setHardness(0.3F); this.setCreativeTab(IC2NuclearControl.tabIC2NC); setStepSound(soundTypeGlass); register(LightDamages.DAMAGE_WHITE_OFF, false); register(LightDamages.DAMAGE_WHITE_ON, true); register(LightDamages.DAMAGE_ORANGE_OFF, false); register(LightDamages.DAMAGE_ORANGE_ON, true); icon = new IIcon[subblocks.size() + 1]; } public void register(int damage, boolean isOn) { subblocks.put(damage, isOn); } @Override public int getLightValue(IBlockAccess world, int x, int y, int z){ int meta = world.getBlockMetadata(x, y, z); if(meta == 1 || meta % 2 == 1) return 15; return 0; } @Override public int damageDropped(int i) { if(i == 0 || i % 2 == 0) return i; return i - 1; } @Override public IIcon getIcon(int side, int metadata) { return icon[metadata]; } @Override public void registerBlockIcons(IIconRegister register){ for(int i = 0; i <= subblocks.size(); i++){ icon[i] = register.registerIcon("nuclearcontrol:light/lamp" + i); } } @Override public void onBlockAdded(World world, int x, int y, int z) { super.onBlockAdded(world, x, y, z); int meta = world.getBlockMetadata(x, y, z); if(meta == 1 || meta % 2 == 1){ if(!world.isRemote){ if (!world.isBlockIndirectlyGettingPowered(x, y, z)) { world.setBlock(x, y, z, this, meta - 1, 2); } } }else{ if (!world.isRemote) { if (world.isBlockIndirectlyGettingPowered(x, y, z)) { world.setBlock(x, y, z, this, meta + 1, 2); } } } } @Override public void onNeighborBlockChange(World world, int x, int y, int z, Block neighbor) { int meta = world.getBlockMetadata(x, y, z); if(meta == 1 || meta % 2 == 1){ if(!world.isRemote) { if (!world.isBlockIndirectlyGettingPowered(x, y, z)) { world.setBlock(x, y, z, this, meta - 1, 2); } } }else{ if(!world.isRemote){ if(world.isBlockIndirectlyGettingPowered(x, y, z)){ world.setBlock(x, y, z, this, meta + 1, 2); } } } } @SuppressWarnings({"rawtypes", "unchecked"}) @Override public void getSubBlocks(Item id, CreativeTabs tab, List itemList) { for (int i = 0; i <= LightDamages.DAMAGE_MAX; i++) { itemList.add(new ItemStack(this, 1, i)); } } }