aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/1053-Properly-destroy-placed-blocks-on-the-end-platform.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/1053-Properly-destroy-placed-blocks-on-the-end-platform.patch')
-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