aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server')
-rw-r--r--patches/server/0781-Rewrite-dataconverter-system.patch97
1 files changed, 49 insertions, 48 deletions
diff --git a/patches/server/0781-Rewrite-dataconverter-system.patch b/patches/server/0781-Rewrite-dataconverter-system.patch
index 28a57fdc14..c2ceaf8d0f 100644
--- a/patches/server/0781-Rewrite-dataconverter-system.patch
+++ b/patches/server/0781-Rewrite-dataconverter-system.patch
@@ -15313,10 +15313,10 @@ index 0000000000000000000000000000000000000000..d28ade80499dce882a9a84309a2a0da5
+}
diff --git a/src/main/java/ca/spottedleaf/dataconverter/minecraft/versions/V2832.java b/src/main/java/ca/spottedleaf/dataconverter/minecraft/versions/V2832.java
new file mode 100644
-index 0000000000000000000000000000000000000000..6a975a5e69f4aad4b65aaf1300b5136d72ea6499
+index 0000000000000000000000000000000000000000..b1049823fc2ff1c8183f4664ff4d40da6495f9ee
--- /dev/null
+++ b/src/main/java/ca/spottedleaf/dataconverter/minecraft/versions/V2832.java
-@@ -0,0 +1,919 @@
+@@ -0,0 +1,920 @@
+package ca.spottedleaf.dataconverter.minecraft.versions;
+
+import ca.spottedleaf.dataconverter.converters.DataConverter;
@@ -15710,73 +15710,74 @@ index 0000000000000000000000000000000000000000..6a975a5e69f4aad4b65aaf1300b5136d
+ final MapType<String>[] newBiomes = createBiomeSections(level, isOverworld, minSection, isAlreadyExtended);
+ final MapType<String> wrappedEmptyBlockPalette = getEmptyBlockPalette();
+
-+ final ListType sections = level.getList("Sections", ObjectType.MAP);
++ ListType sections = level.getList("Sections", ObjectType.MAP);
++ if (sections == null) {
++ level.setList("Sections", sections = Types.NBT.createEmptyList());
++ }
+
+ // must update sections for two things:
+ // 1. the biomes are now stored per section, so we must insert the biomes palette into each section (and create them if they don't exist)
+ // 2. each section must now have block states (or at least DFU is ensuring they do, but current code does not require)
+ V2841.SimplePaletteReader bottomSection = null;
+ final Set<String> allBlocks = new HashSet<>();
-+ if (sections != null) {
-+ final IntOpenHashSet existingSections = new IntOpenHashSet();
++ final IntOpenHashSet existingSections = new IntOpenHashSet();
+
-+ for (int i = 0, len = sections.size(); i < len; ++i) {
-+ final MapType<String> section = sections.getMap(i);
++ for (int i = 0, len = sections.size(); i < len; ++i) {
++ final MapType<String> section = sections.getMap(i);
+
-+ final int y = section.getInt("Y");
-+ final int sectionIndex = y - minSection;
++ final int y = section.getInt("Y");
++ final int sectionIndex = y - minSection;
+
-+ existingSections.add(y);
++ existingSections.add(y);
+
-+ // add in relevant biome section
-+ if (sectionIndex >= 0 && sectionIndex < newBiomes.length) {
-+ // exclude out of bounds sections (i.e the light sections above and below the world)
-+ section.setMap("biomes", newBiomes[sectionIndex]);
-+ }
++ // add in relevant biome section
++ if (sectionIndex >= 0 && sectionIndex < newBiomes.length) {
++ // exclude out of bounds sections (i.e the light sections above and below the world)
++ section.setMap("biomes", newBiomes[sectionIndex]);
++ }
+
-+ // update palette
-+ final ListType palette = section.getList("Palette", ObjectType.MAP);
-+ final long[] blockStates = section.getLongs("BlockStates");
++ // update palette
++ final ListType palette = section.getList("Palette", ObjectType.MAP);
++ final long[] blockStates = section.getLongs("BlockStates");
+
-+ section.remove("Palette");
-+ section.remove("BlockStates");
++ section.remove("Palette");
++ section.remove("BlockStates");
+
-+ if (palette != null) {
-+ for (int j = 0, len2 = palette.size(); j < len2; ++j) {
-+ allBlocks.add(V2841.getBlockId(palette.getMap(j)));
-+ }
++ if (palette != null) {
++ for (int j = 0, len2 = palette.size(); j < len2; ++j) {
++ allBlocks.add(V2841.getBlockId(palette.getMap(j)));
+ }
++ }
+
-+ final MapType<String> palettedContainer;
-+ if (palette != null && blockStates != null) {
-+ // only if both exist, same as DFU, same as legacy chunk loading code
-+ section.setMap("block_states", palettedContainer = wrapPaletteOptimised(palette, blockStates));
-+ } else {
-+ section.setMap("block_states", palettedContainer = wrappedEmptyBlockPalette.copy()); // must write a palette now, copy so that later edits do not edit them all
-+ }
++ final MapType<String> palettedContainer;
++ if (palette != null && blockStates != null) {
++ // only if both exist, same as DFU, same as legacy chunk loading code
++ section.setMap("block_states", palettedContainer = wrapPaletteOptimised(palette, blockStates));
++ } else {
++ section.setMap("block_states", palettedContainer = wrappedEmptyBlockPalette.copy()); // must write a palette now, copy so that later edits do not edit them all
++ }
+
-+ if (section.getInt("Y", Integer.MAX_VALUE) == 0) {
-+ bottomSection = new V2841.SimplePaletteReader(palettedContainer.getList("palette", ObjectType.MAP), palettedContainer.getLongs("data"));
-+ }
++ if (section.getInt("Y", Integer.MAX_VALUE) == 0) {
++ bottomSection = new V2841.SimplePaletteReader(palettedContainer.getList("palette", ObjectType.MAP), palettedContainer.getLongs("data"));
+ }
++ }
+
-+ // all existing sections updated, now we must create new sections just for the biomes migration
-+ for (int sectionIndex = 0; sectionIndex < newBiomes.length; ++sectionIndex) {
-+ final int sectionY = sectionIndex + minSection;
-+ if (!existingSections.add(sectionY)) {
-+ // exists already
-+ continue;
-+ }
++ // all existing sections updated, now we must create new sections just for the biomes migration
++ for (int sectionIndex = 0; sectionIndex < newBiomes.length; ++sectionIndex) {
++ final int sectionY = sectionIndex + minSection;
++ if (!existingSections.add(sectionY)) {
++ // exists already
++ continue;
++ }
+
-+ final MapType<String> newSection = Types.NBT.createEmptyMap();
-+ sections.addMap(newSection);
++ final MapType<String> newSection = Types.NBT.createEmptyMap();
++ sections.addMap(newSection);
+
-+ newSection.setByte("Y", (byte)sectionY);
-+ // must write a palette now, copy so that later edits do not edit them all
-+ newSection.setMap("block_states", wrappedEmptyBlockPalette.copy());
++ newSection.setByte("Y", (byte)sectionY);
++ // must write a palette now, copy so that later edits do not edit them all
++ newSection.setMap("block_states", wrappedEmptyBlockPalette.copy());
+
-+ newSection.setGeneric("biomes", newBiomes[sectionIndex]);
-+ }
++ newSection.setGeneric("biomes", newBiomes[sectionIndex]);
+ }
+
+ // update status so interpolation can take place