From 65349392a6a330b2d553bb281df06f370c4ff84f Mon Sep 17 00:00:00 2001 From: Jordan Date: Thu, 21 Apr 2022 12:11:23 +0100 Subject: [PATCH] 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 --- .../PaperweightPlatformAdapter.java | 21 ++++++-- .../v1_18_R1/PaperweightPlatformAdapter.java | 4 +- .../v1_18_R2/PaperweightPlatformAdapter.java | 4 +- .../src/main/resources/worldedit-adapters.jar | Bin 434014 -> 434242 bytes .../bukkit/adapter/NMSAdapter.java | 46 +++++++++++++----- 5 files changed, 56 insertions(+), 19 deletions(-) diff --git a/worldedit-bukkit/adapters/adapter-1_17_1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_17_R1_2/PaperweightPlatformAdapter.java b/worldedit-bukkit/adapters/adapter-1_17_1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_17_R1_2/PaperweightPlatformAdapter.java index a34bbb3f3..9ae0da2bd 100644 --- a/worldedit-bukkit/adapters/adapter-1_17_1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_17_R1_2/PaperweightPlatformAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1_17_1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_17_R1_2/PaperweightPlatformAdapter.java @@ -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) { diff --git a/worldedit-bukkit/adapters/adapter-1_18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R1/PaperweightPlatformAdapter.java b/worldedit-bukkit/adapters/adapter-1_18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R1/PaperweightPlatformAdapter.java index 7a9065305..29e0bc472 100644 --- a/worldedit-bukkit/adapters/adapter-1_18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R1/PaperweightPlatformAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1_18/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R1/PaperweightPlatformAdapter.java @@ -341,9 +341,9 @@ public final class PaperweightPlatformAdapter extends NMSAdapter { try { int num_palette; if (get == null) { - num_palette = createPalette(blockToPalette, paletteToBlock, blocksCopy, set, adapter); + num_palette = createPalette(blockToPalette, paletteToBlock, blocksCopy, set, adapter, null); } else { - num_palette = createPalette(layer, blockToPalette, paletteToBlock, blocksCopy, get, set, adapter); + num_palette = createPalette(layer, blockToPalette, paletteToBlock, blocksCopy, get, set, adapter, null); } int bitsPerEntry = MathMan.log2nlz(num_palette - 1); diff --git a/worldedit-bukkit/adapters/adapter-1_18_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R2/PaperweightPlatformAdapter.java b/worldedit-bukkit/adapters/adapter-1_18_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R2/PaperweightPlatformAdapter.java index e44da5991..4c18fa15d 100644 --- a/worldedit-bukkit/adapters/adapter-1_18_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R2/PaperweightPlatformAdapter.java +++ b/worldedit-bukkit/adapters/adapter-1_18_2/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_18_R2/PaperweightPlatformAdapter.java @@ -342,9 +342,9 @@ public final class PaperweightPlatformAdapter extends NMSAdapter { try { int num_palette; if (get == null) { - num_palette = createPalette(blockToPalette, paletteToBlock, blocksCopy, set, adapter); + num_palette = createPalette(blockToPalette, paletteToBlock, blocksCopy, set, adapter, null); } else { - num_palette = createPalette(layer, blockToPalette, paletteToBlock, blocksCopy, get, set, adapter); + num_palette = createPalette(layer, blockToPalette, paletteToBlock, blocksCopy, get, set, adapter, null); } int bitsPerEntry = MathMan.log2nlz(num_palette - 1); diff --git a/worldedit-bukkit/adapters/adapter-legacy/src/main/resources/worldedit-adapters.jar b/worldedit-bukkit/adapters/adapter-legacy/src/main/resources/worldedit-adapters.jar index 15a9459a4f9b3a7cfa93ba3b288764b4cd501b03..1361359715dae1898d3c670e1b9eaf93b70b9aed 100644 GIT binary patch delta 24541 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 delta 24696 zcmYIOV|W~G8%?r7lg2h0r?G9@wry+E*tQzmHX7Tu)!1p$e0`H2-=Cc`H_mgOduL|% z+C9H|us6G~;pC+N;4mN{U%r6grpCv?kpY-W&Er@l0r3CM0*F2i#pEA{8HWE32@s&{ zA4h®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 diff --git a/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/adapter/NMSAdapter.java b/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/adapter/NMSAdapter.java index 9726f7089..c41a3e168 100644 --- a/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/adapter/NMSAdapter.java +++ b/worldedit-bukkit/src/main/java/com/fastasyncworldedit/bukkit/adapter/NMSAdapter.java @@ -14,13 +14,19 @@ public class NMSAdapter implements FAWEPlatformAdapterImpl { int[] paletteToBlock, int[] blocksCopy, char[] set, - CachedBukkitAdapter adapter + CachedBukkitAdapter adapter, + short[] nonEmptyBlockCount ) { + short nonAir = 4096; int num_palette = 0; for (int i = 0; i < 4096; i++) { char ordinal = set[i]; - if (ordinal == BlockTypesCache.ReservedIDs.__RESERVED__) { - ordinal = BlockTypesCache.ReservedIDs.AIR; + switch (ordinal) { + case BlockTypesCache.ReservedIDs.__RESERVED__ -> { + ordinal = BlockTypesCache.ReservedIDs.AIR; + nonAir--; + } + case BlockTypesCache.ReservedIDs.AIR, BlockTypesCache.ReservedIDs.CAVE_AIR, BlockTypesCache.ReservedIDs.VOID_AIR -> nonAir--; } int palette = blockToPalette[ordinal]; if (palette == Integer.MAX_VALUE) { @@ -46,6 +52,10 @@ public class NMSAdapter implements FAWEPlatformAdapterImpl { int palette = blockToPalette[ordinal]; blocksCopy[i] = palette; } + + if (nonEmptyBlockCount != null) { + nonEmptyBlockCount[0] = nonAir; + } return num_palette; } @@ -56,20 +66,29 @@ public class NMSAdapter implements FAWEPlatformAdapterImpl { int[] blocksCopy, Function get, char[] set, - CachedBukkitAdapter adapter + CachedBukkitAdapter adapter, + short[] nonEmptyBlockCount ) { + short nonAir = 4096; int num_palette = 0; char[] getArr = null; for (int i = 0; i < 4096; i++) { char ordinal = set[i]; - if (ordinal == BlockTypesCache.ReservedIDs.__RESERVED__) { - if (getArr == null) { - getArr = get.apply(layer); - } - ordinal = getArr[i]; - if (ordinal == BlockTypesCache.ReservedIDs.__RESERVED__) { - ordinal = BlockTypesCache.ReservedIDs.AIR; + switch (ordinal) { + case BlockTypesCache.ReservedIDs.__RESERVED__ -> { + if (getArr == null) { + getArr = get.apply(layer); + } + ordinal = getArr[i]; + switch (ordinal) { + case BlockTypesCache.ReservedIDs.__RESERVED__ -> { + ordinal = BlockTypesCache.ReservedIDs.AIR; + nonAir--; + } + case BlockTypesCache.ReservedIDs.AIR, BlockTypesCache.ReservedIDs.CAVE_AIR, BlockTypesCache.ReservedIDs.VOID_AIR -> nonAir--; + } } + case BlockTypesCache.ReservedIDs.AIR, BlockTypesCache.ReservedIDs.CAVE_AIR, BlockTypesCache.ReservedIDs.VOID_AIR -> nonAir--; } int palette = blockToPalette[ordinal]; if (palette == Integer.MAX_VALUE) { @@ -88,7 +107,7 @@ public class NMSAdapter implements FAWEPlatformAdapterImpl { System.arraycopy(adapter.getOrdinalToIbdID(), 0, blockToPalette, 0, adapter.getOrdinalToIbdID().length); } for (int i = 0; i < 4096; i++) { - char ordinal= set[i]; + char ordinal = set[i]; if (ordinal == BlockTypesCache.ReservedIDs.__RESERVED__) { if (getArr == null) { getArr = get.apply(layer); @@ -101,6 +120,9 @@ public class NMSAdapter implements FAWEPlatformAdapterImpl { blocksCopy[i] = palette; } + if (nonEmptyBlockCount != null) { + nonEmptyBlockCount[0] = nonAir; + } return num_palette; }