aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0710-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch
diff options
context:
space:
mode:
authorJason Penilla <[email protected]>2024-04-27 13:27:01 -0700
committerJason Penilla <[email protected]>2024-04-27 13:27:01 -0700
commite2552eea2481871c9d8445a3c5653a2329112648 (patch)
tree727c90f395576b66200f8d9e59f38859f3850562 /patches/server/0710-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch
parent0b1b1fe067444c5e879313e017da0ffd5d6b826d (diff)
downloadPaper-e2552eea2481871c9d8445a3c5653a2329112648.tar.gz
Paper-e2552eea2481871c9d8445a3c5653a2329112648.zip
Start cleaning up plugin remapping patches
Diffstat (limited to 'patches/server/0710-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch')
-rw-r--r--patches/server/0710-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/patches/server/0710-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch b/patches/server/0710-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch
new file mode 100644
index 0000000000..05d5b9189b
--- /dev/null
+++ b/patches/server/0710-Fix-NBT-pieces-overriding-a-block-entity-during-worl.patch
@@ -0,0 +1,40 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: etil2jz <[email protected]>
+Date: Sat, 2 Apr 2022 23:29:24 +0200
+Subject: [PATCH] Fix NBT pieces overriding a block entity during worldgen
+ deadlock
+
+By checking if the world passed into StructureTemplate's placeInWorld
+is not a WorldGenRegion, we can bypass the deadlock entirely.
+See https://bugs.mojang.com/browse/MC-246262
+
+diff --git a/src/main/java/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java b/src/main/java/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java
+index bd401b38239fb7e510f82f458f9336b7da372da0..b5365dce7882c98b5be4f5df877165eee80933dd 100644
+--- a/src/main/java/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java
++++ b/src/main/java/net/minecraft/world/level/levelgen/structure/templatesystem/StructureTemplate.java
+@@ -279,7 +279,11 @@ public class StructureTemplate {
+
+ if (definedstructure_blockinfo.nbt != null) {
+ tileentity = world.getBlockEntity(blockposition2);
+- Clearable.tryClear(tileentity);
++ // Paper start - Fix NBT pieces overriding a block entity during worldgen deadlock
++ if (!(world instanceof net.minecraft.world.level.WorldGenLevel)) {
++ Clearable.tryClear(tileentity);
++ }
++ // Paper end - Fix NBT pieces overriding a block entity during worldgen deadlock
+ world.setBlock(blockposition2, Blocks.BARRIER.defaultBlockState(), 20);
+ }
+ // CraftBukkit start
+@@ -406,7 +410,11 @@ public class StructureTemplate {
+ if (pair1.getSecond() != null) {
+ tileentity = world.getBlockEntity(blockposition6);
+ if (tileentity != null) {
+- tileentity.setChanged();
++ // Paper start - Fix NBT pieces overriding a block entity during worldgen deadlock
++ if (!(world instanceof net.minecraft.world.level.WorldGenLevel)) {
++ tileentity.setChanged();
++ }
++ // Paper end - Fix NBT pieces overriding a block entity during worldgen deadlock
+ }
+ }
+ }