Set empty block count when using fastmode on 1.17 (#1710)

* Set empty block count when using fastmode on 1.17
Fixes #1666

* Update legacy adapters
This commit is contained in:
Jordan
2022-04-21 12:11:23 +01:00
committed by GitHub
parent f5ef0cadb6
commit 65349392a6
5 changed files with 56 additions and 19 deletions

View File

@ -303,11 +303,20 @@ public final class PaperweightPlatformAdapter extends NMSAdapter {
final int[] blocksCopy = FaweCache.INSTANCE.SECTION_BLOCKS.get();
try {
int num_palette;
final short[] nonEmptyBlockCount = fastMode ? new short[1] : null;
if (get == null) {
num_palette = createPalette(blockToPalette, paletteToBlock, blocksCopy, set, adapter
);
num_palette = createPalette(blockToPalette, paletteToBlock, blocksCopy, set, adapter, nonEmptyBlockCount);
} else {
num_palette = createPalette(layer, blockToPalette, paletteToBlock, blocksCopy, get, set, adapter);
num_palette = createPalette(
layer,
blockToPalette,
paletteToBlock,
blocksCopy,
get,
set,
adapter,
nonEmptyBlockCount
);
}
// BlockStates
int bitsPerEntry = MathMan.log2nlz(num_palette - 1);
@ -377,6 +386,12 @@ public final class PaperweightPlatformAdapter extends NMSAdapter {
if (!fastMode) {
levelChunkSection.recalcBlockCounts();
} else {
try {
fieldNonEmptyBlockCount.set(levelChunkSection, nonEmptyBlockCount[0]);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
return levelChunkSection;
} catch (final Throwable e) {