diff --git a/patches/server/0099-Implement-bed-explosion-options.patch b/patches/server/0099-Implement-bed-explosion-options.patch new file mode 100644 index 000000000..ff257e029 --- /dev/null +++ b/patches/server/0099-Implement-bed-explosion-options.patch @@ -0,0 +1,69 @@ +From 73ab646b74483a00eebfe8f1a056a2e00f59d7f3 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Sat, 22 Feb 2020 15:04:29 -0600 +Subject: [PATCH] Implement bed explosion options + +--- + .../java/net/minecraft/server/BlockBed.java | 2 +- + .../net/pl3x/purpur/PurpurWorldConfig.java | 18 ++++++++++++++++++ + 2 files changed, 19 insertions(+), 1 deletion(-) + +diff --git a/src/main/java/net/minecraft/server/BlockBed.java b/src/main/java/net/minecraft/server/BlockBed.java +index 06a35629ab..df41a7dfcd 100644 +--- a/src/main/java/net/minecraft/server/BlockBed.java ++++ b/src/main/java/net/minecraft/server/BlockBed.java +@@ -84,7 +84,7 @@ public class BlockBed extends BlockFacingHorizontal implements ITileEntity { + world.a(blockposition1, false); + } + +- world.createExplosion((Entity) null, DamageSource.a(), (double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D, 5.0F, true, Explosion.Effect.DESTROY); ++ if (world.purpurConfig.bedExplode) world.createExplosion(null, DamageSource.a(), blockposition.getX() + 0.5D, blockposition.getY() + 0.5D, blockposition.getZ() + 0.5D, (float) world.purpurConfig.bedExplosionPower, world.purpurConfig.bedExplosionFire, world.purpurConfig.bedExplosionEffect); // Purpur + return EnumInteractionResult.SUCCESS; + // CraftBukkit end + } +diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +index be85d454b2..5054f7b6a3 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +@@ -3,6 +3,7 @@ package net.pl3x.purpur; + import com.destroystokyo.paper.PaperWorldConfig; + import net.minecraft.server.Block; + import net.minecraft.server.Blocks; ++import net.minecraft.server.Explosion; + import net.minecraft.server.IRegistry; + import net.minecraft.server.MinecraftKey; + import org.bukkit.configuration.ConfigurationSection; +@@ -12,6 +13,7 @@ import java.util.ArrayList; + import java.util.HashMap; + import java.util.List; + import java.util.Map; ++import java.util.logging.Level; + + import static net.pl3x.purpur.PurpurConfig.log; + +@@ -79,6 +81,22 @@ public class PurpurWorldConfig { + bambooSmallHeight = getInt("blocks.bamboo.small-height", bambooSmallHeight); + } + ++ public boolean bedExplode = true; ++ public double bedExplosionPower = 5.0D; ++ public boolean bedExplosionFire = true; ++ public Explosion.Effect bedExplosionEffect = Explosion.Effect.DESTROY; ++ private void bedSettings() { ++ bedExplode = getBoolean("blocks.bed.explode", bedExplode); ++ bedExplosionPower = getDouble("blocks.bed.explosion-power", bedExplosionPower); ++ bedExplosionFire = getBoolean("blocks.bed.explosion-fire", bedExplosionFire); ++ try { ++ bedExplosionEffect = Explosion.Effect.valueOf(getString("blocks.bed.explosion-effect", bedExplosionEffect.name())); ++ } catch (IllegalArgumentException e) { ++ log(Level.SEVERE, "Unknown value for `blocks.bed.explosion-effect`! Using default of `DESTROY`"); ++ bedExplosionEffect = Explosion.Effect.DESTROY; ++ } ++ } ++ + public int campfireRegenInterval = 0; + public int campfireRegenDuration = 80; + public int campfireRegenRange = 5; +-- +2.24.0 +