package net.minecraft.server; import javax.annotation.Nullable; public class ItemBlock extends Item { protected final Block a; public ItemBlock(Block block) { this.a = block; } public EnumInteractionResult a(EntityHuman entityhuman, World world, BlockPosition blockposition, EnumHand enumhand, EnumDirection enumdirection, float f, float f1, float f2) { IBlockData iblockdata = world.getType(blockposition); Block block = iblockdata.getBlock(); if (!block.a((IBlockAccess) world, blockposition)) { blockposition = blockposition.shift(enumdirection); } ItemStack itemstack = entityhuman.b(enumhand); if (!itemstack.isEmpty() && entityhuman.a(blockposition, enumdirection, itemstack) && world.a(this.a, blockposition, false, enumdirection, entityhuman)) { // Paper - Pass entityhuman instead of null int i = this.filterData(itemstack.getData()); IBlockData iblockdata1 = this.a.getPlacedState(world, blockposition, enumdirection, f, f1, f2, i, entityhuman); if (world.setTypeAndData(blockposition, iblockdata1, 11)) { iblockdata1 = world.getType(blockposition); if (iblockdata1.getBlock() == this.a) { a(world, entityhuman, blockposition, itemstack); this.a.postPlace(world, blockposition, iblockdata1, entityhuman, itemstack); } SoundEffectType soundeffecttype = this.a.getStepSound(); // world.a(entityhuman, blockposition, soundeffecttype.e(), SoundCategory.BLOCKS, (soundeffecttype.a() + 1.0F) / 2.0F, soundeffecttype.b() * 0.8F); // CraftBukkit - SPIGOT-1288 itemstack.subtract(1); } return EnumInteractionResult.SUCCESS; } else { return EnumInteractionResult.FAIL; } } public static boolean a(World world, @Nullable EntityHuman entityhuman, BlockPosition blockposition, ItemStack itemstack) { MinecraftServer minecraftserver = world.getMinecraftServer(); if (minecraftserver == null) { return false; } else { NBTTagCompound nbttagcompound = itemstack.d("BlockEntityTag"); if (nbttagcompound != null) { TileEntity tileentity = world.getTileEntity(blockposition); if (tileentity != null) { if (!world.isClientSide && tileentity.isFilteredNBT() && (entityhuman == null || !entityhuman.dk())) { return false; } NBTTagCompound nbttagcompound1 = tileentity.save(new NBTTagCompound()); NBTTagCompound nbttagcompound2 = nbttagcompound1.g(); nbttagcompound1.a(nbttagcompound); nbttagcompound1.setInt("x", blockposition.getX()); nbttagcompound1.setInt("y", blockposition.getY()); nbttagcompound1.setInt("z", blockposition.getZ()); if (!nbttagcompound1.equals(nbttagcompound2)) { tileentity.a(nbttagcompound1); tileentity.update(); return true; } } } return false; } } public String a(ItemStack itemstack) { return this.a.a(); } public String getName() { return this.a.a(); } public Block getBlock() { return this.a; } }