From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Mon, 5 Oct 2020 12:15:14 -0500 Subject: [PATCH] Stonecutter damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java index 90b8e9d7fb97b410cb4b7b555033ce3f14acba78..a586f486996b3bb59067a6d25ace100c24b63ecf 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -925,7 +925,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne } // CraftBukkit end - if (this.onGround && !this.bv()) { + if (this.onGround && (!this.bv() || (block == Blocks.STONECUTTER && world.purpurConfig.stonecutterDamage > 0.0F))) { // Purpur block.stepOn(this.world, blockposition, this); } diff --git a/src/main/java/net/minecraft/world/level/block/BlockStonecutter.java b/src/main/java/net/minecraft/world/level/block/BlockStonecutter.java index 54c9586cd7f8c9691a1c7ded9c9c96b0f316b0b6..68c6f090a10564a790f3bf175e2378d1f7103b8e 100644 --- a/src/main/java/net/minecraft/world/level/block/BlockStonecutter.java +++ b/src/main/java/net/minecraft/world/level/block/BlockStonecutter.java @@ -94,4 +94,16 @@ public class BlockStonecutter extends Block { public boolean a(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition, PathMode pathmode) { return false; } + + // Purpur start + @Override + public void stepOn(World world, BlockPosition pos, net.minecraft.world.entity.Entity entity) { + if (world.purpurConfig.stonecutterDamage > 0.0F && entity instanceof net.minecraft.world.entity.EntityLiving) { + org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = world.getWorld().getBlockAt(pos.getX(), pos.getY(), pos.getZ()); + entity.damageEntity(net.minecraft.world.damagesource.DamageSource.CACTUS, world.purpurConfig.stonecutterDamage); + org.bukkit.craftbukkit.event.CraftEventFactory.blockDamage = null; + } + super.stepOn(world, pos, entity); + } + // Purpur end } diff --git a/src/main/java/net/minecraft/world/level/pathfinder/PathfinderNormal.java b/src/main/java/net/minecraft/world/level/pathfinder/PathfinderNormal.java index 7b92a54cfb64fb77af99e6bf66eacbdb9e769dc1..9d08094165cf18d99116b5c721fff888f3cb42e2 100644 --- a/src/main/java/net/minecraft/world/level/pathfinder/PathfinderNormal.java +++ b/src/main/java/net/minecraft/world/level/pathfinder/PathfinderNormal.java @@ -503,7 +503,7 @@ public class PathfinderNormal extends PathfinderAbstract { return iblockdata.neighbourOverridePathType = PathType.DANGER_CACTUS; // Tuinity - reduce pathfinder branching } - if (iblockdata.a(Blocks.SWEET_BERRY_BUSH)) { + if (iblockdata.a(Blocks.SWEET_BERRY_BUSH) || iblockdata.a(Blocks.STONECUTTER)) { // Purpur return iblockdata.neighbourOverridePathType = PathType.DANGER_OTHER; // Tuinity - reduce pathfinder branching } diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java index e982733732e3dfd9d34cf5d9e87a9caa3af2d6e8..11f699eb7d68013df708a874a214da6be3fe6773 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -441,6 +441,11 @@ public class PurpurWorldConfig { spawnerDeactivateByRedstone = getBoolean("blocks.spawner.deactivate-by-redstone", spawnerDeactivateByRedstone); } + public float stonecutterDamage = 0.0F; + private void stonecutterSettings() { + stonecutterDamage = (float) getDouble("blocks.stonecutter.damage", stonecutterDamage); + } + public boolean turtleEggsBreakFromExpOrbs = true; public boolean turtleEggsBreakFromItems = true; public boolean turtleEggsBreakFromMinecarts = true;