Fix oversized chunk merging

This commit is contained in:
Nassim Jahnke
2021-11-27 16:07:45 +01:00
parent 1dc66f14fb
commit 4641f37f4d
2 changed files with 14 additions and 19 deletions

View File

@@ -190,12 +190,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ return chunk;
+ }
+ CompoundTag oversizedLevel = oversizedData.getCompound("Level");
+ CompoundTag level = chunk.getCompound("Level");
+
+ mergeChunkList(level, oversizedLevel, "Entities");
+ mergeChunkList(level, oversizedLevel, "TileEntities");
+
+ chunk.put("Level", level);
+ mergeChunkList(chunk, oversizedLevel, "entities", "Entities");
+ mergeChunkList(chunk, oversizedLevel, "block_entities", "TileEntities");
+
+ return chunk;
+ } catch (Throwable throwable) {
@@ -205,9 +202,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ }
+ }
+
+ private static void mergeChunkList(CompoundTag level, CompoundTag oversizedLevel, String key) {
+ private static void mergeChunkList(CompoundTag level, CompoundTag oversizedLevel, String key, String oversizedKey) {
+ ListTag levelList = level.getList(key, 10);
+ ListTag oversizedList = oversizedLevel.getList(key, 10);
+ ListTag oversizedList = oversizedLevel.getList(oversizedKey, 10);
+
+ if (!oversizedList.isEmpty()) {
+ levelList.addAll(oversizedList);