package net.minecraft.item; import net.minecraft.block.BlockEndPortalFrame; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.item.EntityEnderEye; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.stats.StatList; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; public class ItemEnderEye extends Item { private static final String __OBFID = "CL_00000026"; public ItemEnderEye() { this.setCreativeTab(CreativeTabs.tabMisc); } /** * Called when a Block is right-clicked with this Item * * @param pos The block being right-clicked * @param side The side being right-clicked */ public boolean onItemUse(ItemStack stack, EntityPlayer playerIn, World worldIn, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ) { IBlockState var9 = worldIn.getBlockState(pos); if (playerIn.func_175151_a(pos.offset(side), side, stack) && var9.getBlock() == Blocks.end_portal_frame && !((Boolean)var9.getValue(BlockEndPortalFrame.field_176507_b)).booleanValue()) { if (worldIn.isRemote) { return true; } else { worldIn.setBlockState(pos, var9.withProperty(BlockEndPortalFrame.field_176507_b, Boolean.valueOf(true)), 2); worldIn.updateComparatorOutputLevel(pos, Blocks.end_portal_frame); --stack.stackSize; for (int var10 = 0; var10 < 16; ++var10) { double var11 = (double)((float)pos.getX() + (5.0F + itemRand.nextFloat() * 6.0F) / 16.0F); double var13 = (double)((float)pos.getY() + 0.8125F); double var15 = (double)((float)pos.getZ() + (5.0F + itemRand.nextFloat() * 6.0F) / 16.0F); double var17 = 0.0D; double var19 = 0.0D; double var21 = 0.0D; worldIn.spawnParticle(EnumParticleTypes.SMOKE_NORMAL, var11, var13, var15, var17, var19, var21, new int[0]); } EnumFacing var23 = (EnumFacing)var9.getValue(BlockEndPortalFrame.field_176508_a); int var24 = 0; int var12 = 0; boolean var25 = false; boolean var14 = true; EnumFacing var26 = var23.rotateY(); for (int var16 = -2; var16 <= 2; ++var16) { BlockPos var28 = pos.offset(var26, var16); IBlockState var18 = worldIn.getBlockState(var28); if (var18.getBlock() == Blocks.end_portal_frame) { if (!((Boolean)var18.getValue(BlockEndPortalFrame.field_176507_b)).booleanValue()) { var14 = false; break; } var12 = var16; if (!var25) { var24 = var16; var25 = true; } } } if (var14 && var12 == var24 + 2) { BlockPos var27 = pos.offset(var23, 4); int var29; for (var29 = var24; var29 <= var12; ++var29) { BlockPos var30 = var27.offset(var26, var29); IBlockState var32 = worldIn.getBlockState(var30); if (var32.getBlock() != Blocks.end_portal_frame || !((Boolean)var32.getValue(BlockEndPortalFrame.field_176507_b)).booleanValue()) { var14 = false; break; } } int var31; BlockPos var33; for (var29 = var24 - 1; var29 <= var12 + 1; var29 += 4) { var27 = pos.offset(var26, var29); for (var31 = 1; var31 <= 3; ++var31) { var33 = var27.offset(var23, var31); IBlockState var20 = worldIn.getBlockState(var33); if (var20.getBlock() != Blocks.end_portal_frame || !((Boolean)var20.getValue(BlockEndPortalFrame.field_176507_b)).booleanValue()) { var14 = false; break; } } } if (var14) { for (var29 = var24; var29 <= var12; ++var29) { var27 = pos.offset(var26, var29); for (var31 = 1; var31 <= 3; ++var31) { var33 = var27.offset(var23, var31); worldIn.setBlockState(var33, Blocks.end_portal.getDefaultState(), 2); } } } } return true; } } else { return false; } } /** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer */ public ItemStack onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn) { MovingObjectPosition var4 = this.getMovingObjectPositionFromPlayer(worldIn, playerIn, false); if (var4 != null && var4.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && worldIn.getBlockState(var4.func_178782_a()).getBlock() == Blocks.end_portal_frame) { return itemStackIn; } else { if (!worldIn.isRemote) { BlockPos var5 = worldIn.func_180499_a("Stronghold", new BlockPos(playerIn)); if (var5 != null) { EntityEnderEye var6 = new EntityEnderEye(worldIn, playerIn.posX, playerIn.posY, playerIn.posZ); var6.func_180465_a(var5); worldIn.spawnEntityInWorld(var6); worldIn.playSoundAtEntity(playerIn, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); worldIn.playAuxSFXAtEntity((EntityPlayer)null, 1002, new BlockPos(playerIn), 0); if (!playerIn.capabilities.isCreativeMode) { --itemStackIn.stackSize; } playerIn.triggerAchievement(StatList.objectUseStats[Item.getIdFromItem(this)]); } } return itemStackIn; } } }