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 ItemReinforcedDoor extends Item {
public ItemReinforcedDoor(){
this.maxStackSize = 1;
}
public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10){
if(par3World.isRemote){
return true;
}else{
if (par7 != 1){
return false;
}else{
++par5;
Block block = mod_SecurityCraft.reinforcedDoor;
if (par2EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack) && par2EntityPlayer.canPlayerEdit(par4, par5 + 1, par6, par7, par1ItemStack)){
if (!block.canPlaceBlockAt(par3World, par4, par5, par6)){
return false;
}else{
int i1 = MathHelper.floor_double((par2EntityPlayer.rotationYaw + 180.0F) * 4.0F / 360.0F - 0.5D) & 3;
placeDoorBlock(par3World, par4, par5, par6, i1, block);
((TileEntityOwnable) par3World.getTileEntity(par4, par5, par6)).getOwner().set(par2EntityPlayer.getGameProfile().getId().toString(), par2EntityPlayer.getCommandSenderName());
((TileEntityOwnable) par3World.getTileEntity(par4, par5 + 1, par6)).getOwner().set(par2EntityPlayer.getGameProfile().getId().toString(), par2EntityPlayer.getCommandSenderName());
--par1ItemStack.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);
}
}