diff --git a/probe/src/main/java/art/arcane/iris/probe/StubPlatform.java b/probe/src/main/java/art/arcane/iris/probe/StubPlatform.java index 493a26248..2c481c6ea 100644 --- a/probe/src/main/java/art/arcane/iris/probe/StubPlatform.java +++ b/probe/src/main/java/art/arcane/iris/probe/StubPlatform.java @@ -18,6 +18,7 @@ package art.arcane.iris.probe; +import art.arcane.iris.engine.decorator.DecoratorPlatformHooks; import art.arcane.iris.engine.object.BlockDataMergeSupport; import art.arcane.iris.engine.object.IrisObjectRotation; import art.arcane.iris.engine.object.TileData; @@ -57,6 +58,8 @@ public final class StubPlatform implements IrisPlatform { } public static void bindGenerationStateHandlers() { + DecoratorPlatformHooks.bind((state, hunk, rX, rZ, x, y, z, mantle) -> state, + (surface, upward) -> surface.isOccluding()); IrisObjectRotation.bindPlatformRotator(StubPlatform::rotateState); BlockDataMergeSupport.bindPlatformMerger(StubPlatform::mergeStates); TileData.bindPlatformReader(StubTileData::read); diff --git a/probe/src/test/java/art/arcane/iris/probe/StubPlatformStateTest.java b/probe/src/test/java/art/arcane/iris/probe/StubPlatformStateTest.java index 4cc149a7f..62ad735e7 100644 --- a/probe/src/test/java/art/arcane/iris/probe/StubPlatformStateTest.java +++ b/probe/src/test/java/art/arcane/iris/probe/StubPlatformStateTest.java @@ -1,8 +1,10 @@ package art.arcane.iris.probe; +import art.arcane.iris.engine.decorator.IrisSpeleothems; import art.arcane.iris.engine.object.IrisObjectRotation; import art.arcane.iris.spi.IrisPlatforms; import art.arcane.iris.spi.PlatformBlockState; +import art.arcane.iris.util.project.hunk.Hunk; import org.junit.BeforeClass; import org.junit.Test; @@ -80,6 +82,18 @@ public final class StubPlatformStateTest { assertFalse(state("minecraft:brain_coral_fan").isWaterLogged()); } + @Test + public void resolvesSpikeSupportWithoutServerClasses() { + Hunk blocks = Hunk.newArrayHunk(1, 3, 1); + PlatformBlockState spike = state("minecraft:pointed_dripstone[vertical_direction=up,thickness=tip]"); + blocks.set(0, 0, 0, state("minecraft:stone")); + assertTrue(IrisSpeleothems.isSupported(spike, blocks, 0, 0, 1)); + blocks.set(0, 0, 0, state("minecraft:water[level=0]")); + assertFalse(IrisSpeleothems.isSupported(spike, blocks, 0, 0, 1)); + blocks.set(0, 0, 0, state("minecraft:air")); + assertFalse(IrisSpeleothems.isSupported(spike, blocks, 0, 0, 1)); + } + private PlatformBlockState state(String key) { return IrisPlatforms.get().registries().block(key); }