mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-10-12 03:24:14 +00:00
Completed offline decorator hooks
- Offline generation resolves decorator support without Bukkit classes - Probe coverage checks solid, fluid and air spike support
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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<PlatformBlockState> 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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user