aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDerEchtePilz <[email protected]>2024-08-25 21:19:40 +0200
committerGitHub <[email protected]>2024-08-25 21:19:40 +0200
commitad4c524c2f09c6b4e0f73e5418ee3aeb0db9972e (patch)
tree4e6561ac4974f5da262ef1734fb0b04710d76cfe
parente2da65c689ae2cf55474e542cbc931a3343ae11e (diff)
downloadPaper-ad4c524c2f09c6b4e0f73e5418ee3aeb0db9972e.tar.gz
Paper-ad4c524c2f09c6b4e0f73e5418ee3aeb0db9972e.zip
Properly destroy placed blocks on the end platform (#11292)
-rw-r--r--patches/server/1053-Properly-destroy-placed-blocks-on-the-end-platform.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/patches/server/1053-Properly-destroy-placed-blocks-on-the-end-platform.patch b/patches/server/1053-Properly-destroy-placed-blocks-on-the-end-platform.patch
new file mode 100644
index 0000000000..94813b1d42
--- /dev/null
+++ b/patches/server/1053-Properly-destroy-placed-blocks-on-the-end-platform.patch
@@ -0,0 +1,40 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: DerEchtePilz <[email protected]>
+Date: Sun, 18 Aug 2024 13:05:31 +0200
+Subject: [PATCH] Properly destroy placed blocks on the end platform
+
+The craftbukkit provided implementation of LevelAccessor,
+BlockStateListPopulator, does not support destroyBlock calls, simply
+ignoring them.
+
+This causes the destroyBlock calls during the generation of the end
+platform to be lost. The patch moves the destroy calls and executes them
+on the actual world access.
+
+diff --git a/src/main/java/net/minecraft/world/level/levelgen/feature/EndPlatformFeature.java b/src/main/java/net/minecraft/world/level/levelgen/feature/EndPlatformFeature.java
+index 0bc659a8427b89b5e3211220c55b52eec6a20494..15d0de7b623d874972c67ac34da2718220b6bdf5 100644
+--- a/src/main/java/net/minecraft/world/level/levelgen/feature/EndPlatformFeature.java
++++ b/src/main/java/net/minecraft/world/level/levelgen/feature/EndPlatformFeature.java
+@@ -44,7 +44,7 @@ public class EndPlatformFeature extends Feature<NoneFeatureConfiguration> {
+ // CraftBukkit start
+ if (!blockList.getBlockState(blockposition_mutableblockposition1).is(block)) {
+ if (flag) {
+- blockList.destroyBlock(blockposition_mutableblockposition1, true, (Entity) null);
++ // blockList.destroyBlock(blockposition_mutableblockposition1, true, (Entity) null); // Paper - moved down - cb implementation of LevelAccessor does not support destoryBlock
+ }
+
+ blockList.setBlock(blockposition_mutableblockposition1, block.defaultBlockState(), 3);
+@@ -65,6 +65,13 @@ public class EndPlatformFeature extends Feature<NoneFeatureConfiguration> {
+
+ worldaccess.getLevel().getCraftServer().getPluginManager().callEvent(portalEvent);
+ if (!portalEvent.isCancelled()) {
++ // Paper start - Properly destroy placed blocks on the end platform
++ if (flag) {
++ for (org.bukkit.craftbukkit.block.CraftBlockState state : blockList.getList()) {
++ worldaccess.destroyBlock(state.getPosition(), true);
++ }
++ }
++ // Paper end - Properly destroy placed blocks on the end platform
+ blockList.updateList();
+ }
+ // CraftBukkit end