From 1fcef859696cdd2496d87436150b92285d1bb89e Mon Sep 17 00:00:00 2001 From: 12emin34 Date: Sun, 12 Jan 2025 12:51:15 -0800 Subject: [PATCH] Option for beds to explode on villager sleep --- ...or-beds-to-explode-on-villager-sleep.patch | 43 ------------------- .../world/entity/npc/Villager.java.patch | 13 ++++++ .../purpurmc/purpur/PurpurWorldConfig.java | 2 + 3 files changed, 15 insertions(+), 43 deletions(-) delete mode 100644 patches/server/0206-Option-for-beds-to-explode-on-villager-sleep.patch diff --git a/patches/server/0206-Option-for-beds-to-explode-on-villager-sleep.patch b/patches/server/0206-Option-for-beds-to-explode-on-villager-sleep.patch deleted file mode 100644 index 8d3940a96..000000000 --- a/patches/server/0206-Option-for-beds-to-explode-on-villager-sleep.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: 12emin34 -Date: Tue, 31 Aug 2021 16:48:29 +0200 -Subject: [PATCH] Option for beds to explode on villager sleep - - -diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 0bca1eeaa0f35d702dad41758c72bb3c9ab35220..c912268081beda34c472cff13e41c9dfd51902f2 100644 ---- a/net/minecraft/world/entity/npc/Villager.java -+++ b/net/minecraft/world/entity/npc/Villager.java -@@ -1080,6 +1080,12 @@ public class Villager extends AbstractVillager implements ReputationEventHandler - - @Override - public void startSleeping(BlockPos pos) { -+ // Purpur start -+ if (level().purpurConfig.bedExplodeOnVillagerSleep && this.level().getBlockState(pos).getBlock() instanceof net.minecraft.world.level.block.BedBlock) { -+ this.level().explode(null, (double) pos.getX() + 0.5D, (double) pos.getY() + 0.5D, (double) pos.getZ() + 0.5D, (float) this.level().purpurConfig.bedExplosionPower, this.level().purpurConfig.bedExplosionFire, this.level().purpurConfig.bedExplosionEffect); -+ return; -+ } -+ // Purpur end - super.startSleeping(pos); - this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level().getGameTime()); // CraftBukkit - decompile error - this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index f5b04a904118e2ef15a2b735eca9b3e6adbbf63b..bb0635a71dd3beca33d644b365df8133cb2b2a3a 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -793,6 +793,7 @@ public class PurpurWorldConfig { - } - - public boolean bedExplode = true; -+ public boolean bedExplodeOnVillagerSleep = false; - public double bedExplosionPower = 5.0D; - public boolean bedExplosionFire = true; - public net.minecraft.world.level.Level.ExplosionInteraction bedExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; -@@ -803,6 +804,7 @@ public class PurpurWorldConfig { - } - } - bedExplode = getBoolean("blocks.bed.explode", bedExplode); -+ bedExplodeOnVillagerSleep = getBoolean("blocks.bed.explode-on-villager-sleep", bedExplodeOnVillagerSleep); - bedExplosionPower = getDouble("blocks.bed.explosion-power", bedExplosionPower); - bedExplosionFire = getBoolean("blocks.bed.explosion-fire", bedExplosionFire); - try { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch index dcc668ddb..fdf7bff20 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch @@ -31,3 +31,16 @@ } private boolean hungry() { +@@ -1001,6 +_,12 @@ + + @Override + public void startSleeping(BlockPos pos) { ++ // Purpur start - Option for beds to explode on villager sleep ++ if (level().purpurConfig.bedExplodeOnVillagerSleep && this.level().getBlockState(pos).getBlock() instanceof net.minecraft.world.level.block.BedBlock) { ++ this.level().explode(null, (double) pos.getX() + 0.5D, (double) pos.getY() + 0.5D, (double) pos.getZ() + 0.5D, (float) this.level().purpurConfig.bedExplosionPower, this.level().purpurConfig.bedExplosionFire, this.level().purpurConfig.bedExplosionEffect); ++ return; ++ } ++ // Purpur end - Option for beds to explode on villager sleep + super.startSleeping(pos); + this.brain.setMemory(MemoryModuleType.LAST_SLEPT, this.level().getGameTime()); + this.brain.eraseMemory(MemoryModuleType.WALK_TARGET); 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 4b319c560..57559810d 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -792,6 +792,7 @@ public class PurpurWorldConfig { } public boolean bedExplode = true; + public boolean bedExplodeOnVillagerSleep = false; public double bedExplosionPower = 5.0D; public boolean bedExplosionFire = true; public net.minecraft.world.level.Level.ExplosionInteraction bedExplosionEffect = net.minecraft.world.level.Level.ExplosionInteraction.BLOCK; @@ -802,6 +803,7 @@ public class PurpurWorldConfig { } } bedExplode = getBoolean("blocks.bed.explode", bedExplode); + bedExplodeOnVillagerSleep = getBoolean("blocks.bed.explode-on-villager-sleep", bedExplodeOnVillagerSleep); bedExplosionPower = getDouble("blocks.bed.explosion-power", bedExplosionPower); bedExplosionFire = getBoolean("blocks.bed.explosion-fire", bedExplosionFire); try {