From 2222c82207a999ae5f670323a4eae9752f24d5b3 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 4 Jul 2020 13:24:10 -0500 Subject: [PATCH] Implement respawn anchor explosion options --- ...ent-respawn-anchor-explosion-options.patch | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 patches/server/0102-Implement-respawn-anchor-explosion-options.patch diff --git a/patches/server/0102-Implement-respawn-anchor-explosion-options.patch b/patches/server/0102-Implement-respawn-anchor-explosion-options.patch new file mode 100644 index 000000000..5db485c08 --- /dev/null +++ b/patches/server/0102-Implement-respawn-anchor-explosion-options.patch @@ -0,0 +1,58 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Sat, 4 Jul 2020 13:23:19 -0500 +Subject: [PATCH] Implement respawn anchor explosion options + + +diff --git a/src/main/java/net/minecraft/server/BlockRespawnAnchor.java b/src/main/java/net/minecraft/server/BlockRespawnAnchor.java +index 56ad9a51d1..33f4b8a290 100644 +--- a/src/main/java/net/minecraft/server/BlockRespawnAnchor.java ++++ b/src/main/java/net/minecraft/server/BlockRespawnAnchor.java +@@ -79,10 +79,7 @@ public class BlockRespawnAnchor extends Block { + + private void d(IBlockData iblockdata, World world, final BlockPosition blockposition) { + world.a(blockposition, false); +- Stream stream = EnumDirection.EnumDirectionLimit.HORIZONTAL.a(); +- +- blockposition.getClass(); +- boolean flag = stream.map(blockposition::shift).anyMatch((blockposition1) -> { ++ boolean flag = EnumDirection.EnumDirectionLimit.HORIZONTAL.a().map(blockposition::shift).anyMatch((blockposition1) -> { // Purpur - decompile error + return a(blockposition1, world); + }); + final boolean flag1 = flag || world.getFluid(blockposition.up()).a((Tag) TagsFluid.WATER); +@@ -98,7 +95,7 @@ public class BlockRespawnAnchor extends Block { + } + }; + +- world.createExplosion((Entity) null, DamageSource.a(), explosiondamagecalculator, (double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D, 5.0F, true, Explosion.Effect.DESTROY); ++ if (world.purpurConfig.respawnAnchorExplode) world.createExplosion(null, DamageSource.a(), explosiondamagecalculator, (double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D, (float) world.purpurConfig.respawnAnchorExplosionPower, world.purpurConfig.respawnAnchorExplosionFire, world.purpurConfig.respawnAnchorExplosionEffect); // Purpur + } + + public static boolean a(World world) { +diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +index 56c4f9efd0..2f5bc77e03 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +@@ -233,6 +233,22 @@ public class PurpurWorldConfig { + lavaSpeedNotNether = getInt("blocks.lava.speed.not-nether", lavaSpeedNotNether); + } + ++ public boolean respawnAnchorExplode = true; ++ public double respawnAnchorExplosionPower = 5.0D; ++ public boolean respawnAnchorExplosionFire = true; ++ public Explosion.Effect respawnAnchorExplosionEffect = Explosion.Effect.DESTROY; ++ private void respawnAnchorSettings() { ++ respawnAnchorExplode = getBoolean("blocks.respawn_anchor.explode", respawnAnchorExplode); ++ respawnAnchorExplosionPower = getDouble("blocks.respawn_anchor.explosion-power", respawnAnchorExplosionPower); ++ respawnAnchorExplosionFire = getBoolean("blocks.respawn_anchor.explosion-fire", respawnAnchorExplosionFire); ++ try { ++ respawnAnchorExplosionEffect = Explosion.Effect.valueOf(getString("blocks.respawn_anchor.explosion-effect", respawnAnchorExplosionEffect.name())); ++ } catch (IllegalArgumentException e) { ++ log(Level.SEVERE, "Unknown value for `blocks.respawn_anchor.explosion-effect`! Using default of `DESTROY`"); ++ respawnAnchorExplosionEffect = Explosion.Effect.DESTROY; ++ } ++ } ++ + public boolean signAllowColors = false; + public boolean signRightClickEdit = false; + private void signSettings() {