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;
|
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.BlockDataMergeSupport;
|
||||||
import art.arcane.iris.engine.object.IrisObjectRotation;
|
import art.arcane.iris.engine.object.IrisObjectRotation;
|
||||||
import art.arcane.iris.engine.object.TileData;
|
import art.arcane.iris.engine.object.TileData;
|
||||||
@@ -57,6 +58,8 @@ public final class StubPlatform implements IrisPlatform {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void bindGenerationStateHandlers() {
|
public static void bindGenerationStateHandlers() {
|
||||||
|
DecoratorPlatformHooks.bind((state, hunk, rX, rZ, x, y, z, mantle) -> state,
|
||||||
|
(surface, upward) -> surface.isOccluding());
|
||||||
IrisObjectRotation.bindPlatformRotator(StubPlatform::rotateState);
|
IrisObjectRotation.bindPlatformRotator(StubPlatform::rotateState);
|
||||||
BlockDataMergeSupport.bindPlatformMerger(StubPlatform::mergeStates);
|
BlockDataMergeSupport.bindPlatformMerger(StubPlatform::mergeStates);
|
||||||
TileData.bindPlatformReader(StubTileData::read);
|
TileData.bindPlatformReader(StubTileData::read);
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package art.arcane.iris.probe;
|
package art.arcane.iris.probe;
|
||||||
|
|
||||||
|
import art.arcane.iris.engine.decorator.IrisSpeleothems;
|
||||||
import art.arcane.iris.engine.object.IrisObjectRotation;
|
import art.arcane.iris.engine.object.IrisObjectRotation;
|
||||||
import art.arcane.iris.spi.IrisPlatforms;
|
import art.arcane.iris.spi.IrisPlatforms;
|
||||||
import art.arcane.iris.spi.PlatformBlockState;
|
import art.arcane.iris.spi.PlatformBlockState;
|
||||||
|
import art.arcane.iris.util.project.hunk.Hunk;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
@@ -80,6 +82,18 @@ public final class StubPlatformStateTest {
|
|||||||
assertFalse(state("minecraft:brain_coral_fan").isWaterLogged());
|
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) {
|
private PlatformBlockState state(String key) {
|
||||||
return IrisPlatforms.get().registries().block(key);
|
return IrisPlatforms.get().registries().block(key);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user