This commit is contained in:
Brian Neumann-Fopiano committed 2026-09-21 10:04:22 -04:00
1 parent 8e3ef1b651
commit 197d2c2461
73 files changed
+4586 -424

No files matched your search

@@ -52,6 +52,11 @@ public final class ModdedRegistries implements PlatformRegistries {
return generationRegistry.get();
}
@Override
public NativeBlockState decodeBlockState(String key) {
return ModdedBlockResolution.BLOCKS.decode(key);
}
@Override
public NativeBlockState block(String key) {
return ModdedBlockResolution.BLOCKS.get(key);
@@ -2,6 +2,8 @@ package art.arcane.iris.modded;
import art.arcane.volmlib.nativelib.minecraft26_2.modded.ModdedBlockState;
import art.arcane.volmlib.nativelib.minecraft26_2.modded.NativeBlockResolver;
import art.arcane.volmlib.nativelib.minecraft26_2.modded.NativeRegistryAccess;
import art.arcane.iris.spi.PlatformGenerationRegistry;
import art.arcane.volmlib.nativelib.minecraft26_2.modded.NativeStateMerger;
import art.arcane.volmlib.nativelib.minecraft26_2.modded.NativeStateRotator;
import art.arcane.volmlib.nativelib.terrain.NativeBlockState;
@@ -14,6 +16,10 @@ import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertSame;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verifyNoInteractions;
import static org.mockito.Mockito.when;
public class NativeStateOperationsTest {
@BeforeClass
@@ -22,6 +28,34 @@ public class NativeStateOperationsTest {
Bootstrap.bootStrap();
}
@Test
public void persistedLeafPropertiesBypassGenerationDefaults() {
NativeBlockResolver.Policy policy = mock(NativeBlockResolver.Policy.class);
NativeBlockResolver resolver = new NativeBlockResolver(policy);
ModdedRegistries registries = new ModdedRegistries(mock(NativeRegistryAccess.class),
() -> mock(PlatformGenerationRegistry.class));
for (String key : new String[]{
"minecraft:oak_leaves[distance=2,persistent=false,waterlogged=true]",
"minecraft:oak_leaves[distance=6,persistent=true,waterlogged=false]",
"minecraft:oak_stairs[facing=west,half=top,shape=inner_left,waterlogged=true]"}) {
assertEquals(NativeBlockResolver.strictParse(key).key(), resolver.decode(key).key());
assertEquals(NativeBlockResolver.strictParse(key).key(), registries.decodeBlockState(key).key());
}
verifyNoInteractions(policy);
}
@Test
public void persistedCustomStateRetainsDeferredPlacementIdentity() {
String key = "test:persisted_stairs[facing=west]";
ModdedBlockState nativeState = NativeBlockResolver.strictParse("minecraft:oak_stairs[facing=west]");
ModdedBlockState custom = nativeState.withDeferredPlacement(key);
NativeBlockResolver.Policy policy = mock(NativeBlockResolver.Policy.class);
when(policy.resolveCustomBlock(key)).thenReturn(custom);
assertSame(custom, new NativeBlockResolver(policy).decode(key));
assertEquals(key, custom.deferredPlacementKey());
}
@Test
public void rotationPreservesDeferredPlacementMetadata() {
ModdedBlockState parsed = NativeBlockResolver.strictParse("minecraft:oak_stairs[facing=north]");