From 57696b2538cb82a5556b2ace7781eb4322098c5a Mon Sep 17 00:00:00 2001 From: Electroblob77 <35599699+Electroblob77@users.noreply.github.com> Date: Fri, 18 Jun 2021 16:27:57 +0100 Subject: [PATCH] Make all forfeits respect claims via the methods in BlockUtils, fixes #672 --- .../electroblob/wizardry/misc/Forfeit.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/main/java/electroblob/wizardry/misc/Forfeit.java b/src/main/java/electroblob/wizardry/misc/Forfeit.java index 3a225c99..e4aa1d76 100644 --- a/src/main/java/electroblob/wizardry/misc/Forfeit.java +++ b/src/main/java/electroblob/wizardry/misc/Forfeit.java @@ -242,10 +242,11 @@ public abstract class Forfeit { })); add(Tier.MASTER, Element.FIRE, create("burn_surroundings", (w, p) -> { - if(!w.isRemote){ + if(!w.isRemote && EntityUtils.canDamageBlocks(p, w)){ List sphere = BlockUtils.getBlockSphere(p.getPosition(), 6); for(BlockPos pos : sphere){ - if(w.rand.nextBoolean() && w.isAirBlock(pos)) w.setBlockState(pos, Blocks.FIRE.getDefaultState()); + if(w.rand.nextBoolean() && w.isAirBlock(pos) && BlockUtils.canPlaceBlock(p, w, pos)) + w.setBlockState(pos, Blocks.FIRE.getDefaultState()); } } })); @@ -396,10 +397,11 @@ public abstract class Forfeit { })); add(Tier.NOVICE, Element.EARTH, create("snares", (w, p) -> { - if(!w.isRemote){ + if(!w.isRemote && EntityUtils.canDamageBlocks(p, w)){ for(EnumFacing direction : EnumFacing.HORIZONTALS){ BlockPos pos = p.getPosition().offset(direction); - if(BlockUtils.canBlockBeReplaced(w, pos)) w.setBlockState(pos, WizardryBlocks.snare.getDefaultState()); + if(BlockUtils.canBlockBeReplaced(w, pos) && BlockUtils.canPlaceBlock(p, w, pos)) + w.setBlockState(pos, WizardryBlocks.snare.getDefaultState()); } } })); @@ -413,9 +415,9 @@ public abstract class Forfeit { })); add(Tier.APPRENTICE, Element.EARTH, create("uproot_plants", (w, p) -> { - if(!w.isRemote){ + if(!w.isRemote && EntityUtils.canDamageBlocks(p, w)){ List sphere = BlockUtils.getBlockSphere(p.getPosition(), 5); - sphere.removeIf(pos -> !(w.getBlockState(pos).getBlock() instanceof IPlantable)); + sphere.removeIf(pos -> !(w.getBlockState(pos).getBlock() instanceof IPlantable) || !BlockUtils.canBreakBlock(p, w, pos)); sphere.forEach(pos -> w.destroyBlock(pos, true)); } })); @@ -423,9 +425,9 @@ public abstract class Forfeit { add(Tier.APPRENTICE, Element.EARTH, create("poison_self", (w, p) -> p.addPotionEffect(new PotionEffect(MobEffects.POISON, 400, 1)))); add(Tier.ADVANCED, Element.EARTH, create("flood", (w, p) -> { - if(!w.isRemote){ + if(!w.isRemote && EntityUtils.canDamageBlocks(p, w)){ List sphere = BlockUtils.getBlockSphere(p.getPosition().up(), 2); - sphere.removeIf(pos -> !BlockUtils.canBlockBeReplaced(w, pos, true)); + sphere.removeIf(pos -> !BlockUtils.canBlockBeReplaced(w, pos, true) || !BlockUtils.canPlaceBlock(p, w, pos)); sphere.forEach(pos -> w.setBlockState(pos, Blocks.WATER.getDefaultState())); } })); @@ -433,8 +435,7 @@ public abstract class Forfeit { add(Tier.MASTER, Element.EARTH, create("bury_self", (w, p) -> { if(!w.isRemote){ List sphere = BlockUtils.getBlockSphere(p.getPosition(), 4); - sphere.removeIf(pos -> !w.getBlockState(pos).isFullCube()); - sphere.removeIf(pos -> BlockUtils.isBlockUnbreakable(w, pos)); + sphere.removeIf(pos -> !w.getBlockState(pos).isFullCube() || BlockUtils.isBlockUnbreakable(w, pos) || BlockUtils.canBreakBlock(p, w, pos)); sphere.forEach(pos -> { EntityFallingBlock block = new EntityFallingBlock(w, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, w.getBlockState(pos));