Fix setting blocks in null sections

This commit is contained in:
Jesse Boyd
2019-11-17 19:30:28 +00:00
parent 868554367a
commit e661652c12
5 changed files with 22 additions and 14 deletions

View File

@ -227,7 +227,7 @@ public final class BukkitAdapter_1_14 {
for (; i < 4096; i++) {
char ordinal = set[i];
switch (ordinal) {
case 0:
case BlockID.__RESERVED__:
break outer;
case BlockID.AIR:
case BlockID.CAVE_AIR:
@ -247,14 +247,17 @@ public final class BukkitAdapter_1_14 {
for (; i < 4096; i++) {
char ordinal = set[i];
switch (ordinal) {
case 0:
case BlockID.__RESERVED__:
ordinal = getArr[i];
set[i] = ordinal;
switch (ordinal) {
case BlockID.__RESERVED__:
ordinal = BlockID.AIR;
case BlockID.AIR:
case BlockID.CAVE_AIR:
case BlockID.VOID_AIR:
air++;
default:
set[i] = ordinal;
}
break;
case BlockID.AIR:

View File

@ -38,6 +38,7 @@ import java.util.concurrent.Future;
import java.util.function.Function;
import javax.annotation.Nullable;
import net.minecraft.server.v1_14_R1.BiomeBase;
import net.minecraft.server.v1_14_R1.Block;
import net.minecraft.server.v1_14_R1.BlockPosition;
import net.minecraft.server.v1_14_R1.Chunk;
import net.minecraft.server.v1_14_R1.ChunkSection;
@ -564,17 +565,20 @@ public class BukkitGetBlocks_1_14 extends CharGetBlocks {
return data;
}
char[] paletteToBlockChars = FaweCache.IMP.PALETTE_TO_BLOCK_CHAR.get();
char[] paletteToOrdinal = FaweCache.IMP.PALETTE_TO_BLOCK_CHAR.get();
try {
final int size = num_palette;
if (size != 1) {
for (int i = 0; i < size; i++) {
if (num_palette != 1) {
for (int i = 0; i < num_palette; i++) {
char ordinal = ordinal(palette.a(i), adapter);
paletteToBlockChars[i] = ordinal;
paletteToOrdinal[i] = ordinal;
}
for (int i = 0; i < 4096; i++) {
char paletteVal = data[i];
char val = paletteToBlockChars[paletteVal];
char val = paletteToOrdinal[paletteVal];
if (val == Character.MAX_VALUE) {
val = ordinal(palette.a(i), adapter);
paletteToOrdinal[i] = val;
}
data[i] = val;
}
} else {
@ -583,14 +587,14 @@ public class BukkitGetBlocks_1_14 extends CharGetBlocks {
}
} finally {
for (int i = 0; i < num_palette; i++) {
paletteToBlockChars[i] = Character.MAX_VALUE;
paletteToOrdinal[i] = Character.MAX_VALUE;
}
}
return data;
} catch (IllegalAccessException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return data;
}
}