Skip to content

Commit 42c1b6e

Browse files
committed
Block state unit test now works correct
1 parent 6f1724a commit 42c1b6e

5 files changed

Lines changed: 33 additions & 30 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@
252252
<dependency>
253253
<groupId>com.nukkitx</groupId>
254254
<artifactId>block-state-updater</artifactId>
255-
<version>1.16.0.2</version>
255+
<version>1.16.0.4</version>
256256
<exclusions>
257257
<exclusion>
258258
<groupId>com.nukkitx</groupId>

src/main/java/org/cloudburstmc/server/block/BlockPalette.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package org.cloudburstmc.server.block;
22

33
import com.google.common.collect.ImmutableMap;
4+
import com.nukkitx.blockstateupdater.BlockStateUpdaters;
45
import com.nukkitx.nbt.NbtMap;
56
import com.nukkitx.nbt.NbtMapBuilder;
67
import it.unimi.dsi.fastutil.ints.Int2ReferenceMap;
78
import it.unimi.dsi.fastutil.ints.Int2ReferenceOpenHashMap;
89
import it.unimi.dsi.fastutil.objects.*;
910
import lombok.extern.log4j.Log4j2;
1011
import org.cloudburstmc.server.block.serializer.BlockSerializer;
11-
import org.cloudburstmc.server.block.serializer.BlockSerializers;
12-
import org.cloudburstmc.server.block.serializer.NoopBlockSerializer;
1312
import org.cloudburstmc.server.block.trait.BlockTrait;
1413
import org.cloudburstmc.server.utils.Identifier;
1514

@@ -51,7 +50,7 @@ public void addBlock(Identifier identifier, BlockSerializer serializer, BlockTra
5150
this.runtimeStateMap.put(runtimeId, state);
5251

5352
NbtMapBuilder tagBuilder = NbtMap.builder();
54-
BlockSerializers.serializeCommon(tagBuilder, identifier);
53+
BlockStateUpdaters.serializeCommon(tagBuilder, identifier.toString());
5554

5655
NbtMapBuilder statesBuilder = NbtMap.builder();
5756
serializer.serialize(statesBuilder, state);

src/main/java/org/cloudburstmc/server/block/serializer/BlockSerializers.java

Lines changed: 0 additions & 18 deletions
This file was deleted.

src/main/java/org/cloudburstmc/server/registry/BlockRegistry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public static BlockRegistry get() {
7979
}
8080

8181
public synchronized void register(Identifier id, BlockBehavior behavior) throws RegistryException {
82-
registerVanilla(id, behavior, null);
82+
registerVanilla(id, behavior);
8383

8484
// generate legacy ID (Not sure why we need to but it's a requirement)
8585
int legacyId = this.customIdAllocator.getAndIncrement();
Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.cloudburstmc.server.registry;
22

3+
import com.nukkitx.blockstateupdater.BlockStateUpdaters;
34
import com.nukkitx.nbt.NBTInputStream;
45
import com.nukkitx.nbt.NbtList;
56
import com.nukkitx.nbt.NbtMap;
@@ -10,14 +11,19 @@
1011

1112
import java.io.IOException;
1213
import java.io.InputStream;
14+
import java.nio.file.Files;
15+
import java.nio.file.Paths;
16+
import java.nio.file.StandardOpenOption;
17+
import java.util.ArrayList;
1318
import java.util.HashSet;
19+
import java.util.List;
1420
import java.util.Set;
1521

1622
public class BlockRegistryTest {
1723

1824
@DisplayName("Block Palette Test")
1925
@Test
20-
public void blockPaletteTest() {
26+
public void blockPaletteTest() throws IOException {
2127
Set<NbtMap> vanillaPalette;
2228
InputStream stream = BlockRegistryTest.class.getClassLoader().getResourceAsStream("runtime_block_states.dat");
2329
try (NBTInputStream nbtStream = NbtUtils.createNetworkReader(stream)) {
@@ -27,21 +33,37 @@ public void blockPaletteTest() {
2733
throw new AssertionError("Unable to load block palette");
2834
}
2935

36+
int version = BlockStateUpdaters.getLatestVersion();
37+
int major = (version >> 24) & 0xFF;
38+
int minor = (version >> 16) & 0xFF;
39+
int patch = (version >> 8) & 0xFF;
40+
int build = version & 0xFF;
41+
System.out.printf("Latest block state version: %d.%d.%d.%d%n", major, minor, patch, build);
42+
3043
NbtList<NbtMap> serverPalette = BlockRegistry.get().getPaletteTag(); // init
3144

32-
boolean failed = false;
45+
List<String> invalidStates = new ArrayList<>();
46+
int invalid = 0;
3347
for (NbtMap state : serverPalette) {
3448
if (!vanillaPalette.remove(state)) {
35-
System.out.println("State does not exist in vanilla palette:\n" + state.toString());
36-
failed = true;
49+
invalidStates.add(state.toString());
50+
invalid++;
3751
}
3852
}
3953

54+
System.out.println("Found " + invalid + " invalid block states");
55+
Files.write(Paths.get("invalid_states.log"), invalidStates, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.CREATE);
56+
57+
List<String> missingStates = new ArrayList<>();
58+
int missing = 0;
4059
for (NbtMap state : vanillaPalette) {
41-
System.out.println("State does not exist in Cloudburst:\n" + state.toString());
42-
failed = true;
60+
missing++;
61+
missingStates.add(state.toString());
4362
}
4463

45-
Assertions.assertFalse(failed, "One or more block states did not match the vanilla palette");
64+
System.out.println("Found " + missing + " missing block states");
65+
Files.write(Paths.get("missing_states.log"), missingStates, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.CREATE);
66+
67+
Assertions.assertFalse(missing > 0 | invalid > 0, "One or more block states did not match the vanilla palette");
4668
}
4769
}

0 commit comments

Comments
 (0)