package net.minecraft.server; import java.util.Iterator; public class ItemFlintAndSteel extends Item { public ItemFlintAndSteel(Item.Info item_info) { super(item_info); } @Override public EnumInteractionResult a(ItemActionContext itemactioncontext) { EntityHuman entityhuman = itemactioncontext.getEntity(); World world = itemactioncontext.getWorld(); BlockPosition blockposition = itemactioncontext.getClickPosition(); IBlockData iblockdata = world.getType(blockposition); if (a(iblockdata)) { world.playSound(entityhuman, blockposition, SoundEffects.ITEM_FLINTANDSTEEL_USE, SoundCategory.BLOCKS, 1.0F, ItemFlintAndSteel.i.nextFloat() * 0.4F + 0.8F); world.setTypeAndData(blockposition, (IBlockData) iblockdata.set(BlockProperties.r, true), 11); if (entityhuman != null) { itemactioncontext.getItemStack().damage(1, entityhuman, (entityhuman1) -> { entityhuman1.broadcastItemBreak(itemactioncontext.getHand()); }); } return EnumInteractionResult.SUCCESS; } else { BlockPosition blockposition1 = blockposition.shift(itemactioncontext.getClickedFace()); if (a(world.getType(blockposition1), (GeneratorAccess) world, blockposition1)) { world.playSound(entityhuman, blockposition1, SoundEffects.ITEM_FLINTANDSTEEL_USE, SoundCategory.BLOCKS, 1.0F, ItemFlintAndSteel.i.nextFloat() * 0.4F + 0.8F); IBlockData iblockdata1 = ((BlockFire) Blocks.FIRE).a((IBlockAccess) world, blockposition1); world.setTypeAndData(blockposition1, iblockdata1, 11); ItemStack itemstack = itemactioncontext.getItemStack(); if (entityhuman instanceof EntityPlayer) { CriterionTriggers.y.a((EntityPlayer) entityhuman, blockposition1, itemstack); itemstack.damage(1, entityhuman, (entityhuman1) -> { entityhuman1.broadcastItemBreak(itemactioncontext.getHand()); }); } return EnumInteractionResult.SUCCESS; } else { return EnumInteractionResult.FAIL; } } } public static boolean a(IBlockData iblockdata) { return iblockdata.getBlock() == Blocks.CAMPFIRE && !(Boolean) iblockdata.get(BlockProperties.C) && !(Boolean) iblockdata.get(BlockProperties.r); } public static boolean a(IBlockData iblockdata, GeneratorAccess generatoraccess, BlockPosition blockposition) { IBlockData iblockdata1 = ((BlockFire) Blocks.FIRE).a((IBlockAccess) generatoraccess, blockposition); boolean flag = false; Iterator iterator = EnumDirection.EnumDirectionLimit.HORIZONTAL.iterator(); while (iterator.hasNext()) { EnumDirection enumdirection = (EnumDirection) iterator.next(); if (generatoraccess.getType(blockposition.shift(enumdirection)).getBlock() == Blocks.OBSIDIAN && ((BlockPortal) Blocks.NETHER_PORTAL).b(generatoraccess, blockposition) != null) { flag = true; } } return iblockdata.isAir() && (iblockdata1.canPlace(generatoraccess, blockposition) || flag); } }