From 40d3566ec415ec14d8499e41f11d454ca3994655 Mon Sep 17 00:00:00 2001 From: Nico314159 Date: Sun, 12 Jan 2025 17:08:12 -0800 Subject: [PATCH] Config to remove explosion radius clamp --- ...fig-to-remove-explosion-radius-clamp.patch | 44 ------------------- .../world/level/ServerExplosion.java.patch | 20 +++++++++ .../purpurmc/purpur/PurpurWorldConfig.java | 5 +++ 3 files changed, 25 insertions(+), 44 deletions(-) delete mode 100644 patches/server/0271-Config-to-remove-explosion-radius-clamp.patch create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch diff --git a/patches/server/0271-Config-to-remove-explosion-radius-clamp.patch b/patches/server/0271-Config-to-remove-explosion-radius-clamp.patch deleted file mode 100644 index 6328e4255..000000000 --- a/patches/server/0271-Config-to-remove-explosion-radius-clamp.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Nico314159 -Date: Mon, 9 Jan 2023 19:45:55 -0500 -Subject: [PATCH] Config to remove explosion radius clamp - - -diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java -index 685ccfb73bf7125585ef90b6a0f51b2f81daa428..05fdb02b6f73c24f6985755effecf92c0b365cf0 100644 ---- a/net/minecraft/world/level/ServerExplosion.java -+++ b/net/minecraft/world/level/ServerExplosion.java -@@ -311,7 +311,7 @@ public class ServerExplosion implements Explosion { - public ServerExplosion(ServerLevel world, @Nullable Entity entity, @Nullable DamageSource damageSource, @Nullable ExplosionDamageCalculator behavior, Vec3 pos, float power, boolean createFire, Explosion.BlockInteraction destructionType) { - this.level = world; - this.source = entity; -- this.radius = (float) Math.max(power, 0.0); // CraftBukkit - clamp bad values -+ this.radius = (float) (world == null || world.purpurConfig.explosionClampRadius ? Math.max(power, 0.0) : power); // CraftBukkit - clamp bad values // Purpur - Config to remove explosion radius clamp - this.center = pos; - this.fire = createFire; - this.blockInteraction = destructionType; -@@ -666,7 +666,7 @@ public class ServerExplosion implements Explosion { - - public void explode() { - // CraftBukkit start -- if (this.radius < 0.1F) { -+ if ((this.level == null || this.level.purpurConfig.explosionClampRadius) && this.radius < 0.1F) { // Purpur - Config to remove explosion radius clamp - return; - } - // CraftBukkit end -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0cc3e2a55712a809a3338b06ab23a3172334b1b3..7c468d3002a0b6fca37ae5a731c5f0456af35744 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -225,6 +225,11 @@ public class PurpurWorldConfig { - infinityWorksWithoutArrows = getBoolean("gameplay-mechanics.infinity-bow.works-without-arrows", infinityWorksWithoutArrows); - } - -+ public boolean explosionClampRadius = true; -+ private void explosionSettings() { -+ explosionClampRadius = getBoolean("gameplay-mechanics.clamp-explosion-radius", explosionClampRadius); -+ } -+ - public List itemImmuneToCactus = new ArrayList<>(); - public List itemImmuneToExplosion = new ArrayList<>(); - public List itemImmuneToFire = new ArrayList<>(); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch new file mode 100644 index 000000000..d728ef469 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/ServerExplosion.java.patch @@ -0,0 +1,20 @@ +--- a/net/minecraft/world/level/ServerExplosion.java ++++ b/net/minecraft/world/level/ServerExplosion.java +@@ -319,7 +_,7 @@ + ) { + this.level = level; + this.source = source; +- this.radius = (float) Math.max(radius, 0.0); // CraftBukkit - clamp bad values ++ this.radius = (float) (level == null || level.purpurConfig.explosionClampRadius ? Math.max(radius, 0.0) : radius); // CraftBukkit - clamp bad values // Purpur - Config to remove explosion radius clamp + this.center = center; + this.fire = fire; + this.blockInteraction = blockInteraction; +@@ -649,7 +_,7 @@ + + public void explode() { + // CraftBukkit start +- if (this.radius < 0.1F) { ++ if ((this.level == null || this.level.purpurConfig.explosionClampRadius) && this.radius < 0.1F) { // Purpur - Config to remove explosion radius clamp + return; + } + // CraftBukkit end diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 920ddfa37..61fe9baa6 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -224,6 +224,11 @@ public class PurpurWorldConfig { infinityWorksWithoutArrows = getBoolean("gameplay-mechanics.infinity-bow.works-without-arrows", infinityWorksWithoutArrows); } + public boolean explosionClampRadius = true; + private void explosionSettings() { + explosionClampRadius = getBoolean("gameplay-mechanics.clamp-explosion-radius", explosionClampRadius); + } + public List itemImmuneToCactus = new ArrayList<>(); public List itemImmuneToExplosion = new ArrayList<>(); public List itemImmuneToFire = new ArrayList<>();