/* * 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 mods.railcraft.common.blocks.ItemBlockRailcraftMultiType; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import mods.railcraft.common.blocks.RailcraftBlocks; import net.minecraft.init.Blocks; public class ItemSignal extends ItemBlockRailcraftMultiType { public ItemSignal(Block block) { super(block); setUnlocalizedName("railcraft.signal"); } public ISignalTileDefinition getStructureType(ItemStack stack) { return EnumSignal.fromId(stack.getItemDamage()); } @Override public IIcon getIconFromDamage(int damage) { return RailcraftBlocks.getBlockSignal().getIcon(2, damage); } @Override public String getUnlocalizedName(ItemStack stack) { return getStructureType(stack).getTag(); } @Override public boolean func_150936_a(World world, int x, int y, int z, int side, EntityPlayer player, ItemStack stack) { Block oldBlock = world.getBlock(x, y, z); if (oldBlock == Blocks.snow_layer) side = 1; else if (oldBlock != Blocks.vine && oldBlock != Blocks.tallgrass && oldBlock != Blocks.deadbush && !oldBlock.isReplaceable(world, x, y, z)) { if (side == 0) --y; if (side == 1) ++y; if (side == 2) --z; if (side == 3) ++z; if (side == 4) --x; if (side == 5) ++x; } return world.canPlaceEntityOnSide(field_150939_a, x, y, z, false, side, (Entity) null, stack) && (!getStructureType(stack).needsSupport() || world.isSideSolid(x, y - 1, z, ForgeDirection.UP)); } }