001 package net.minecraft.src; 002 003 public class ItemDoor extends Item 004 { 005 private Material doorMaterial; 006 007 public ItemDoor(int par1, Material par2Material) 008 { 009 super(par1); 010 this.doorMaterial = par2Material; 011 this.maxStackSize = 1; 012 this.setTabToDisplayOn(CreativeTabs.tabRedstone); 013 } 014 015 public boolean tryPlaceIntoWorld(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) 016 { 017 if (par7 != 1) 018 { 019 return false; 020 } 021 else 022 { 023 ++par5; 024 Block var11; 025 026 if (this.doorMaterial == Material.wood) 027 { 028 var11 = Block.doorWood; 029 } 030 else 031 { 032 var11 = Block.doorSteel; 033 } 034 035 if (par2EntityPlayer.canPlayerEdit(par4, par5, par6) && par2EntityPlayer.canPlayerEdit(par4, par5 + 1, par6)) 036 { 037 if (!var11.canPlaceBlockAt(par3World, par4, par5, par6)) 038 { 039 return false; 040 } 041 else 042 { 043 int var12 = MathHelper.floor_double((double)((par2EntityPlayer.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; 044 placeDoorBlock(par3World, par4, par5, par6, var12, var11); 045 --par1ItemStack.stackSize; 046 return true; 047 } 048 } 049 else 050 { 051 return false; 052 } 053 } 054 } 055 056 public static void placeDoorBlock(World par0World, int par1, int par2, int par3, int par4, Block par5Block) 057 { 058 byte var6 = 0; 059 byte var7 = 0; 060 061 if (par4 == 0) 062 { 063 var7 = 1; 064 } 065 066 if (par4 == 1) 067 { 068 var6 = -1; 069 } 070 071 if (par4 == 2) 072 { 073 var7 = -1; 074 } 075 076 if (par4 == 3) 077 { 078 var6 = 1; 079 } 080 081 int var8 = (par0World.isBlockNormalCube(par1 - var6, par2, par3 - var7) ? 1 : 0) + (par0World.isBlockNormalCube(par1 - var6, par2 + 1, par3 - var7) ? 1 : 0); 082 int var9 = (par0World.isBlockNormalCube(par1 + var6, par2, par3 + var7) ? 1 : 0) + (par0World.isBlockNormalCube(par1 + var6, par2 + 1, par3 + var7) ? 1 : 0); 083 boolean var10 = par0World.getBlockId(par1 - var6, par2, par3 - var7) == par5Block.blockID || par0World.getBlockId(par1 - var6, par2 + 1, par3 - var7) == par5Block.blockID; 084 boolean var11 = par0World.getBlockId(par1 + var6, par2, par3 + var7) == par5Block.blockID || par0World.getBlockId(par1 + var6, par2 + 1, par3 + var7) == par5Block.blockID; 085 boolean var12 = false; 086 087 if (var10 && !var11) 088 { 089 var12 = true; 090 } 091 else if (var9 > var8) 092 { 093 var12 = true; 094 } 095 096 par0World.editingBlocks = true; 097 par0World.setBlockAndMetadataWithNotify(par1, par2, par3, par5Block.blockID, par4); 098 par0World.setBlockAndMetadataWithNotify(par1, par2 + 1, par3, par5Block.blockID, 8 | (var12 ? 1 : 0)); 099 par0World.editingBlocks = false; 100 par0World.notifyBlocksOfNeighborChange(par1, par2, par3, par5Block.blockID); 101 par0World.notifyBlocksOfNeighborChange(par1, par2 + 1, par3, par5Block.blockID); 102 } 103 }