From 6f906428d0a6e33dc899da980b8698eefa8e18fe Mon Sep 17 00:00:00 2001 From: Giovanni Harting <539@idlegandalf.com> Date: Sat, 17 Dec 2016 14:20:45 +0100 Subject: [PATCH] fixed a potential NPE --- .../sosnitzka/taiga/traits/TraitFracture.java | 68 ++++++++++--------- 1 file changed, 35 insertions(+), 33 deletions(-) diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitFracture.java b/src/main/java/com/sosnitzka/taiga/traits/TraitFracture.java index bdc9b0b..2181de7 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitFracture.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitFracture.java @@ -25,41 +25,43 @@ public class TraitFracture extends AbstractTrait { float b = 0.99F * calcBonus(tool); if (!world.isRemote && tool.canHarvestBlock(state) && f <= b) { RayTraceResult mop = ((ToolCore) tool.getItem()).rayTrace(world, (EntityPlayer) player, false); - for (int i = random.nextInt(9) + 1; i >= 0; i--) { - switch (mop.sideHit) { - case UP: - BlockPos next1 = new BlockPos(pos.getX(), pos.getY() - i, pos.getZ()); - if (tool.canHarvestBlock(world.getBlockState(next1)) && !world.getBlockState(next1).equals(Blocks.BEDROCK.getDefaultState())) - world.destroyBlock(next1, true); - break; - case DOWN: - BlockPos next2 = new BlockPos(pos.getX(), pos.getY() + i, pos.getZ()); - if (tool.canHarvestBlock(world.getBlockState(next2)) && !world.getBlockState(next2).equals(Blocks.BEDROCK.getDefaultState())) - world.destroyBlock(next2, true); - break; - case WEST: - BlockPos next3 = new BlockPos(pos.getX() + i, pos.getY(), pos.getZ()); - if (tool.canHarvestBlock(world.getBlockState(next3)) && !world.getBlockState(next3).equals(Blocks.BEDROCK.getDefaultState())) - world.destroyBlock(next3, true); - break; - case EAST: - BlockPos next4 = new BlockPos(pos.getX() - i, pos.getY(), pos.getZ()); - if (tool.canHarvestBlock(world.getBlockState(next4)) && !world.getBlockState(next4).equals(Blocks.BEDROCK.getDefaultState())) - world.destroyBlock(next4, true); - break; - case SOUTH: - BlockPos next5 = new BlockPos(pos.getX(), pos.getY(), pos.getZ() - i); - if (tool.canHarvestBlock(world.getBlockState(next5)) && !world.getBlockState(next5).equals(Blocks.BEDROCK.getDefaultState())) - world.destroyBlock(next5, true); - break; - case NORTH: - BlockPos next6 = new BlockPos(pos.getX(), pos.getY() - i, pos.getZ() + i); - if (tool.canHarvestBlock(world.getBlockState(next6)) && !world.getBlockState(next6).equals(Blocks.BEDROCK.getDefaultState())) - world.destroyBlock(next6, true); - break; + if (mop != null) { + for (int i = random.nextInt(9) + 1; i >= 0; i--) { + switch (mop.sideHit) { + case UP: + BlockPos next1 = new BlockPos(pos.getX(), pos.getY() - i, pos.getZ()); + if (tool.canHarvestBlock(world.getBlockState(next1)) && !world.getBlockState(next1).equals(Blocks.BEDROCK.getDefaultState())) + world.destroyBlock(next1, true); + break; + case DOWN: + BlockPos next2 = new BlockPos(pos.getX(), pos.getY() + i, pos.getZ()); + if (tool.canHarvestBlock(world.getBlockState(next2)) && !world.getBlockState(next2).equals(Blocks.BEDROCK.getDefaultState())) + world.destroyBlock(next2, true); + break; + case WEST: + BlockPos next3 = new BlockPos(pos.getX() + i, pos.getY(), pos.getZ()); + if (tool.canHarvestBlock(world.getBlockState(next3)) && !world.getBlockState(next3).equals(Blocks.BEDROCK.getDefaultState())) + world.destroyBlock(next3, true); + break; + case EAST: + BlockPos next4 = new BlockPos(pos.getX() - i, pos.getY(), pos.getZ()); + if (tool.canHarvestBlock(world.getBlockState(next4)) && !world.getBlockState(next4).equals(Blocks.BEDROCK.getDefaultState())) + world.destroyBlock(next4, true); + break; + case SOUTH: + BlockPos next5 = new BlockPos(pos.getX(), pos.getY(), pos.getZ() - i); + if (tool.canHarvestBlock(world.getBlockState(next5)) && !world.getBlockState(next5).equals(Blocks.BEDROCK.getDefaultState())) + world.destroyBlock(next5, true); + break; + case NORTH: + BlockPos next6 = new BlockPos(pos.getX(), pos.getY() - i, pos.getZ() + i); + if (tool.canHarvestBlock(world.getBlockState(next6)) && !world.getBlockState(next6).equals(Blocks.BEDROCK.getDefaultState())) + world.destroyBlock(next6, true); + break; + } } + if (random.nextBoolean()) ToolHelper.damageTool(tool, random.nextInt(5), player); } - if (random.nextBoolean()) ToolHelper.damageTool(tool, random.nextInt(5), player); } }