package net.geforcemods.securitycraft.items;
import net.geforcemods.securitycraft.main.mod_SecurityCraft;
import net.geforcemods.securitycraft.tileentity.TileEntityOwnable;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
public class ItemScannerDoor extends Item
{
public ItemScannerDoor()
{
maxStackSize = 1;
}
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int par7, float par8, float par9, float par10)
{
if(world.isRemote)
return true;
else
{
if (par7 != 1)
return false;
else
{
Block block = mod_SecurityCraft.scannerDoor;
y++;
if(player.canPlayerEdit(x, y, z, par7, stack) && player.canPlayerEdit(x, y + 1, z, par7, stack))
{
if(!block.canPlaceBlockAt(world, x, y, z))
return false;
else
{
int i1 = MathHelper.floor_double((player.rotationYaw + 180.0F) * 4.0F / 360.0F - 0.5D) & 3;
placeDoorBlock(world, x, y, z, i1, block);
((TileEntityOwnable) world.getTileEntity(x, y, z)).getOwner().set(player.getGameProfile().getId().toString(), player.getCommandSenderName());
((TileEntityOwnable) world.getTileEntity(x, y + 1, z)).getOwner().set(player.getGameProfile().getId().toString(), player.getCommandSenderName());
stack.stackSize--;
return true;
}
}
else
return false;
}
}
}
public static void placeDoorBlock(World par1World, int par2, int par3, int par4, int par5, Block par6Block)
{
byte b0 = 0;
byte b1 = 0;
if(par5 == 0)
b1 = 1;
else if(par5 == 1)
b0 = -1;
else if(par5 == 2)
b1 = -1;
else if(par5 == 3)
b0 = 1;
int i1 = (par1World.getBlock(par2 - b0, par3, par4 - b1).isNormalCube() ? 1 : 0) + (par1World.getBlock(par2 - b0, par3 + 1, par4 - b1).isNormalCube() ? 1 : 0);
int j1 = (par1World.getBlock(par2 + b0, par3, par4 + b1).isNormalCube() ? 1 : 0) + (par1World.getBlock(par2 + b0, par3 + 1, par4 + b1).isNormalCube() ? 1 : 0);
boolean flag = par1World.getBlock(par2 - b0, par3, par4 - b1) == par6Block || par1World.getBlock(par2 - b0, par3 + 1, par4 - b1) == par6Block;
boolean flag1 = par1World.getBlock(par2 + b0, par3, par4 + b1) == par6Block || par1World.getBlock(par2 + b0, par3 + 1, par4 + b1) == par6Block;
boolean flag2 = false;
if (flag && !flag1)
flag2 = true;
else if (j1 > i1)
flag2 = true;
par1World.setBlock(par2, par3, par4, par6Block, par5, 2);
par1World.setBlock(par2, par3 + 1, par4, par6Block, 8 | (flag2 ? 1 : 0), 2);
par1World.notifyBlocksOfNeighborChange(par2, par3, par4, par6Block);
par1World.notifyBlocksOfNeighborChange(par2, par3 + 1, par4, par6Block);
}
}