Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-15 19:10:09 +01:00
Fix NBT pieces overriding a block entity during worldgen deadlock (#7692)
Dieser Commit ist enthalten in:
Ursprung
29144573e6
Commit
11e0dcdf86
@ -0,0 +1,40 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: etil2jz <blanchot.arthur@protonmail.ch>
|
||||||
|
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 c5827e4d870a0bba483649d54cae23072eab2b18..332d080ad722a0252d2ae8eb83f7697c1323b4ce 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
|
||||||
|
@@ -265,7 +265,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
|
||||||
|
world.setBlock(blockposition2, Blocks.BARRIER.defaultBlockState(), 20);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -380,7 +384,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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren