diff --git a/core/purity-allowlist.txt b/core/purity-allowlist.txt index f1db35db2..dbc21b63b 100644 --- a/core/purity-allowlist.txt +++ b/core/purity-allowlist.txt @@ -97,13 +97,9 @@ art/arcane/iris/core/tools/IrisWorldCreator.java art/arcane/iris/core/tools/TreePlausibilizer.java art/arcane/iris/core/wand/WandSelection.java art/arcane/iris/engine/actuator/IrisBiomeActuator.java -art/arcane/iris/engine/actuator/IrisDecorantActuator.java -art/arcane/iris/engine/actuator/IrisTerrainNormalActuator.java -art/arcane/iris/engine/data/cache/Cache.java art/arcane/iris/engine/data/chunk/LinkedTerrainChunk.java art/arcane/iris/engine/data/chunk/TerrainChunk.java art/arcane/iris/engine/decorator/DecoratorCore.java -art/arcane/iris/engine/decorator/IrisCeilingDecorator.java art/arcane/iris/engine/framework/BlockUpdater.java art/arcane/iris/engine/framework/Engine.java art/arcane/iris/engine/framework/EngineAssignedWorldManager.java @@ -111,15 +107,12 @@ art/arcane/iris/engine/framework/EnginePlayer.java art/arcane/iris/engine/framework/EngineWorldManager.java art/arcane/iris/engine/framework/LootProvider.java art/arcane/iris/engine/framework/placer/WorldObjectPlacer.java -art/arcane/iris/engine/IrisComplex.java art/arcane/iris/engine/IrisEngineEffects.java art/arcane/iris/engine/IrisWorldManager.java art/arcane/iris/engine/mantle/components/MantleFloatingObjectComponent.java art/arcane/iris/engine/mantle/components/MantleObjectComponent.java art/arcane/iris/engine/mantle/EngineMantle.java art/arcane/iris/engine/mantle/MantleWriter.java -art/arcane/iris/engine/mode/ModeOverworld.java -art/arcane/iris/engine/modifier/IrisCarveModifier.java art/arcane/iris/engine/modifier/IrisDepositModifier.java art/arcane/iris/engine/modifier/IrisFloatingChildBiomeModifier.java art/arcane/iris/engine/modifier/IrisPerfectionModifier.java @@ -128,7 +121,6 @@ art/arcane/iris/engine/object/annotations/functions/LootTableKeyFunction.java art/arcane/iris/engine/object/BlockDataMergeSupport.java art/arcane/iris/engine/object/coral/CoralGenerator.java art/arcane/iris/engine/object/crystal/CrystalGenerator.java -art/arcane/iris/engine/object/FloatingObjectFootprint.java art/arcane/iris/engine/object/formation/FormationBlockResolver.java art/arcane/iris/engine/object/formation/FormationGenerator.java art/arcane/iris/engine/object/fungi/FungusGenerator.java @@ -141,8 +133,6 @@ art/arcane/iris/engine/object/IrisBiomeCustomParticle.java art/arcane/iris/engine/object/IrisBiomeCustomSpawn.java art/arcane/iris/engine/object/IrisBlockData.java art/arcane/iris/engine/object/IrisBlockDrops.java -art/arcane/iris/engine/object/IrisCaveShape.java -art/arcane/iris/engine/object/IrisColor.java art/arcane/iris/engine/object/IrisCommandRegistry.java art/arcane/iris/engine/object/IrisCompat.java art/arcane/iris/engine/object/IrisCompatabilityBlockFilter.java @@ -157,7 +147,6 @@ art/arcane/iris/engine/object/IrisEntitySpawn.java art/arcane/iris/engine/object/IrisLoot.java art/arcane/iris/engine/object/IrisLootTable.java art/arcane/iris/engine/object/IrisObject.java -art/arcane/iris/engine/object/IrisObjectLoot.java art/arcane/iris/engine/object/IrisObjectPlacement.java art/arcane/iris/engine/object/IrisObjectRotation.java art/arcane/iris/engine/object/IrisObjectTranslate.java @@ -181,7 +170,6 @@ art/arcane/iris/engine/object/tree/TreePlausibility.java art/arcane/iris/engine/platform/BukkitChunkGenerator.java art/arcane/iris/engine/platform/DummyBiomeProvider.java art/arcane/iris/engine/platform/DummyChunkGenerator.java -art/arcane/iris/engine/platform/studio/generators/BiomeBuffetGenerator.java art/arcane/iris/engine/platform/studio/generators/ObjectStudioGenerator.java art/arcane/iris/Iris.java art/arcane/iris/platform/bukkit/BukkitBiome.java diff --git a/core/src/main/java/art/arcane/iris/engine/IrisComplex.java b/core/src/main/java/art/arcane/iris/engine/IrisComplex.java index e929c735a..7a251854f 100644 --- a/core/src/main/java/art/arcane/iris/engine/IrisComplex.java +++ b/core/src/main/java/art/arcane/iris/engine/IrisComplex.java @@ -39,8 +39,6 @@ import art.arcane.iris.util.project.stream.interpolation.Interpolated; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; -import org.bukkit.Material; -import org.bukkit.block.data.BlockData; import java.io.File; import java.util.*; @@ -49,7 +47,6 @@ import java.util.*; @EqualsAndHashCode(exclude = "data") @ToString(exclude = "data") public class IrisComplex implements DataProvider { - private static final BlockData AIR = Material.AIR.createBlockData(); private static final NoiseBounds ZERO_NOISE_BOUNDS = new NoiseBounds(0D, 0D); private static final int GRID_BOUNDS_CACHE_SIZE = 8192; private static final int HEIGHT_BOUNDS_GRID = 4; diff --git a/core/src/main/java/art/arcane/iris/engine/IrisWorldManager.java b/core/src/main/java/art/arcane/iris/engine/IrisWorldManager.java index 8def8b4df..497468c73 100644 --- a/core/src/main/java/art/arcane/iris/engine/IrisWorldManager.java +++ b/core/src/main/java/art/arcane/iris/engine/IrisWorldManager.java @@ -692,7 +692,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager { } int cX = e.getX(), cZ = e.getZ(); - Long key = Cache.key(e); + Long key = Cache.key(cX, cZ); cleanup.put(key, cleanupService.schedule(() -> { cleanup.remove(key); getEngine().cleanupMantleChunk(cX, cZ); @@ -701,7 +701,7 @@ public class IrisWorldManager extends EngineAssignedWorldManager { @Override public void onChunkUnload(Chunk e) { - final var future = cleanup.remove(Cache.key(e)); + final var future = cleanup.remove(Cache.key(e.getX(), e.getZ())); if (future != null) { future.cancel(false); } diff --git a/core/src/main/java/art/arcane/iris/engine/actuator/IrisDecorantActuator.java b/core/src/main/java/art/arcane/iris/engine/actuator/IrisDecorantActuator.java index 98bbe9b33..b12d9d494 100644 --- a/core/src/main/java/art/arcane/iris/engine/actuator/IrisDecorantActuator.java +++ b/core/src/main/java/art/arcane/iris/engine/actuator/IrisDecorantActuator.java @@ -31,19 +31,11 @@ import art.arcane.volmlib.util.math.RNG; import art.arcane.volmlib.util.scheduling.PrecisionStopwatch; import art.arcane.iris.spi.PlatformBlockState; import lombok.Getter; -import org.bukkit.Material; -import org.bukkit.block.data.BlockData; import java.util.function.Predicate; public class IrisDecorantActuator extends EngineAssignedActuator { - private static final Predicate PREDICATE_SOLID = (s) -> { - if (s == null) { - return false; - } - BlockData b = (BlockData) s.nativeHandle(); - return !b.getMaterial().isAir() && !b.getMaterial().equals(Material.WATER) && !b.getMaterial().equals(Material.LAVA); - }; + private static final Predicate PREDICATE_SOLID = (s) -> s != null && !B.isAirOrFluid(s); private final RNG rng; @Getter private final EngineDecorator surfaceDecorator; @@ -96,7 +88,7 @@ public class IrisDecorantActuator extends EngineAssignedActuator { - private static final PlatformBlockState AIR = BukkitBlockState.of(Material.AIR.createBlockData()); - private static final PlatformBlockState BEDROCK = BukkitBlockState.of(Material.BEDROCK.createBlockData()); - private static final PlatformBlockState LAVA = BukkitBlockState.of(Material.LAVA.createBlockData()); - private static final PlatformBlockState GLASS = BukkitBlockState.of(Material.GLASS.createBlockData()); - private static final PlatformBlockState CAVE_AIR = BukkitBlockState.of(Material.CAVE_AIR.createBlockData()); + private static final PlatformBlockState AIR = B.getState("AIR"); + private static final PlatformBlockState BEDROCK = B.getState("BEDROCK"); + private static final PlatformBlockState LAVA = B.getState("LAVA"); + private static final PlatformBlockState GLASS = B.getState("GLASS"); + private static final PlatformBlockState CAVE_AIR = B.getState("CAVE_AIR"); @Getter private final RNG rng; @Getter diff --git a/core/src/main/java/art/arcane/iris/engine/data/cache/Cache.java b/core/src/main/java/art/arcane/iris/engine/data/cache/Cache.java index 9ee5a957c..acc1879e7 100644 --- a/core/src/main/java/art/arcane/iris/engine/data/cache/Cache.java +++ b/core/src/main/java/art/arcane/iris/engine/data/cache/Cache.java @@ -19,13 +19,8 @@ package art.arcane.iris.engine.data.cache; import art.arcane.volmlib.util.cache.CacheKey; -import org.bukkit.Chunk; public interface Cache { - static long key(Chunk chunk) { - return CacheKey.key(chunk); - } - static long key(int x, int z) { return CacheKey.key(x, z); } diff --git a/core/src/main/java/art/arcane/iris/engine/decorator/IrisCeilingDecorator.java b/core/src/main/java/art/arcane/iris/engine/decorator/IrisCeilingDecorator.java index 897e88620..cbb9f2002 100644 --- a/core/src/main/java/art/arcane/iris/engine/decorator/IrisCeilingDecorator.java +++ b/core/src/main/java/art/arcane/iris/engine/decorator/IrisCeilingDecorator.java @@ -28,7 +28,6 @@ import art.arcane.iris.util.project.hunk.Hunk; import art.arcane.volmlib.util.documentation.BlockCoordinates; import art.arcane.volmlib.util.math.RNG; import art.arcane.iris.spi.PlatformBlockState; -import org.bukkit.block.data.BlockData; public class IrisCeilingDecorator extends IrisEngineDecorator { private final RNG partRNG; @@ -53,7 +52,7 @@ public class IrisCeilingDecorator extends IrisEngineDecorator { if (!decorator.isStacking()) { if (caveSkipFluid) { PlatformBlockState state = data.get(x, height, z); - if (B.isFluid(state == null ? null : (BlockData) state.nativeHandle())) { + if (B.isFluid(state)) { return; } } diff --git a/core/src/main/java/art/arcane/iris/engine/mantle/EngineMantle.java b/core/src/main/java/art/arcane/iris/engine/mantle/EngineMantle.java index 4b7f68bd5..63c158e4b 100644 --- a/core/src/main/java/art/arcane/iris/engine/mantle/EngineMantle.java +++ b/core/src/main/java/art/arcane/iris/engine/mantle/EngineMantle.java @@ -185,13 +185,13 @@ public interface EngineMantle extends MatterGenerator { } @ChunkCoordinates - default void insertMatter(int x, int z, Class t, Hunk blocks, boolean multicore) { + default void insertMatter(int x, int z, Hunk blocks, boolean multicore) { if (!getEngine().getDimension().isUseMantle()) { return; } UpperDimensionContext upperCtx = getEngine().getUpperContext(); - boolean protectUpper = t == BlockData.class && upperCtx != null; + boolean protectUpper = upperCtx != null; MantleChunk chunk = getMantle().getChunk(x, z).use(); try { @@ -209,14 +209,14 @@ public interface EngineMantle extends MatterGenerator { int rawUpper = upperCtx.getUpperSurfaceY(worldX, worldZ); upperYs[i] = Math.max(rawUpper, he + gap); } - chunk.iterate(t, (lx, y, lz, value) -> { + chunk.iterate(BlockData.class, (lx, y, lz, value) -> { int colIdx = (lx << 4) | (lz & 15); if (y < upperYs[colIdx]) { blocks.set(lx, y, lz, BukkitBlockState.of(value)); } }); } else { - chunk.iterate(t, (lx, y, lz, value) -> blocks.set(lx, y, lz, BukkitBlockState.of(value))); + chunk.iterate(BlockData.class, (lx, y, lz, value) -> blocks.set(lx, y, lz, BukkitBlockState.of(value))); } } finally { chunk.release(); diff --git a/core/src/main/java/art/arcane/iris/engine/mode/ModeOverworld.java b/core/src/main/java/art/arcane/iris/engine/mode/ModeOverworld.java index 0a5e6130e..dced681a4 100644 --- a/core/src/main/java/art/arcane/iris/engine/mode/ModeOverworld.java +++ b/core/src/main/java/art/arcane/iris/engine/mode/ModeOverworld.java @@ -28,7 +28,6 @@ import art.arcane.iris.engine.framework.EngineStage; import art.arcane.iris.engine.framework.IrisEngineMode; import art.arcane.iris.engine.modifier.*; import art.arcane.iris.util.common.scheduling.J; -import org.bukkit.block.data.BlockData; import java.util.concurrent.atomic.AtomicLong; @@ -77,7 +76,7 @@ public class ModeOverworld extends IrisEngineMode implements EngineMode { if (shouldBypassMantleStages(getEngine())) { return; } - getMantle().insertMatter(x >> 4, z >> 4, BlockData.class, K, m); + getMantle().insertMatter(x >> 4, z >> 4, K, m); }; EngineStage sFloatingTerrainSolid = (x, z, k, p, m, c) -> floatingChildBiomes.modify(x, z, k, m, c); EngineStage sFloatingDecorate = (x, z, k, p, m, c) -> floatingChildBiomes.decorateColumns(x, z, k, m, c); diff --git a/core/src/main/java/art/arcane/iris/engine/modifier/IrisCarveModifier.java b/core/src/main/java/art/arcane/iris/engine/modifier/IrisCarveModifier.java index 1974cf6ac..44ab77993 100644 --- a/core/src/main/java/art/arcane/iris/engine/modifier/IrisCarveModifier.java +++ b/core/src/main/java/art/arcane/iris/engine/modifier/IrisCarveModifier.java @@ -44,10 +44,7 @@ import art.arcane.volmlib.util.matter.slices.MarkerMatter; import art.arcane.volmlib.util.scheduling.PrecisionStopwatch; import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; import lombok.Data; -import art.arcane.iris.platform.bukkit.BukkitBlockState; import art.arcane.iris.spi.PlatformBlockState; -import org.bukkit.Material; -import org.bukkit.block.data.BlockData; import java.util.Arrays; import java.util.HashMap; @@ -59,8 +56,8 @@ public class IrisCarveModifier extends EngineAssignedModifier 0 && B.isSolid(unwrap(output.getRaw(rx, zone.getFloor() - 1, rz)))) { + if (decorator.getPartOf().equals(IrisDecorationPart.NONE) && zone.getFloor() > 0 && B.isSolid(output.getRaw(rx, zone.getFloor() - 1, rz))) { decorant.getSurfaceDecorator().decorate(rx, rz, xx, xx, xx, zz, zz, zz, output, biome, zone.getFloor() - 1, zone.airThickness()); - } else if (decorator.getPartOf().equals(IrisDecorationPart.CEILING) && zone.getCeiling() + 1 < maxY && B.isSolid(unwrap(output.getRaw(rx, zone.getCeiling() + 1, rz)))) { + } else if (decorator.getPartOf().equals(IrisDecorationPart.CEILING) && zone.getCeiling() + 1 < maxY && B.isSolid(output.getRaw(rx, zone.getCeiling() + 1, rz))) { decorant.getCeilingDecorator().decorate(rx, rz, xx, xx, xx, zz, zz, zz, output, biome, zone.getCeiling(), zone.airThickness()); } } @@ -597,10 +593,6 @@ public class IrisCarveModifier extends EngineAssignedModifier customBiomeCache, String customBiome) { if (customBiomeCache.containsKey(customBiome)) { return customBiomeCache.get(customBiome); diff --git a/core/src/main/java/art/arcane/iris/engine/object/FloatingObjectFootprint.java b/core/src/main/java/art/arcane/iris/engine/object/FloatingObjectFootprint.java index 3b57bd8b3..c288bd13b 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/FloatingObjectFootprint.java +++ b/core/src/main/java/art/arcane/iris/engine/object/FloatingObjectFootprint.java @@ -18,11 +18,6 @@ package art.arcane.iris.engine.object; -import art.arcane.iris.spi.PlatformBlockState; -import art.arcane.iris.util.common.data.B; -import org.bukkit.block.data.BlockData; -import org.bukkit.util.BlockVector; - import java.util.HashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -69,8 +64,8 @@ public class FloatingObjectFootprint { int[] globalHighestKx = {0}; int[] globalHighestKz = {0}; - obj.getBlocks().forEach((BlockVector key, PlatformBlockState bd) -> { - if (!B.isSolid((BlockData) bd.nativeHandle())) { + obj.getBlocks().forEach((key, bd) -> { + if (!bd.isSolid()) { return; } int kx = key.getBlockX(); diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisCaveShape.java b/core/src/main/java/art/arcane/iris/engine/object/IrisCaveShape.java index 6387683c7..1990a146a 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisCaveShape.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisCaveShape.java @@ -2,7 +2,6 @@ package art.arcane.iris.engine.object; import art.arcane.iris.platform.bukkit.BukkitPlatform; import art.arcane.iris.engine.framework.Engine; -import org.bukkit.block.data.BlockData; import art.arcane.iris.engine.object.annotations.*; import art.arcane.volmlib.util.collection.KMap; import art.arcane.volmlib.util.collection.KSet; @@ -45,7 +44,7 @@ public class IrisCaveShape { return cache.computeIfAbsent(randomRotation(rng), pos -> { var rotated = new KSet(); engine.getData().getObjectLoader().load(object).getBlocks().forEach((vector, data) -> { - if (((BlockData) data.nativeHandle()).getMaterial().isAir()) return; + if (data.isAir()) return; rotated.add(BukkitPlatform.positionOf(objectRotation.rotate(vector, pos.getX(), pos.getY(), pos.getZ()))); }); return rotated; diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisColor.java b/core/src/main/java/art/arcane/iris/engine/object/IrisColor.java index b0e73061e..826c163de 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisColor.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisColor.java @@ -96,10 +96,6 @@ public class IrisColor { }); } - public org.bukkit.Color getBukkitColor() { - return org.bukkit.Color.fromRGB(getColor().getRGB()); - } - public int getAsRGB() { if (hex != null) { try { diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisObjectLoot.java b/core/src/main/java/art/arcane/iris/engine/object/IrisObjectLoot.java index 90c17622b..c96bb0e47 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisObjectLoot.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisObjectLoot.java @@ -21,13 +21,13 @@ package art.arcane.iris.engine.object; import art.arcane.iris.core.loader.IrisData; import art.arcane.iris.engine.data.cache.AtomicCache; import art.arcane.iris.engine.object.annotations.*; +import art.arcane.iris.util.common.data.B; import art.arcane.volmlib.util.collection.KList; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import art.arcane.iris.spi.PlatformBlockState; import lombok.experimental.Accessors; -import org.bukkit.block.data.BlockData; @Snippet("object-loot") @Accessors(chain = true) @@ -67,9 +67,8 @@ public class IrisObjectLoot implements IObjectLoot { } public boolean matchesFilter(IrisData manager, PlatformBlockState data) { - BlockData raw = (BlockData) data.nativeHandle(); for (PlatformBlockState filterState : getFilter(manager)) { - if (((BlockData) filterState.nativeHandle()).matches(raw)) return true; + if (B.matches(filterState, data)) return true; } return false; } diff --git a/core/src/main/java/art/arcane/iris/engine/object/IrisProceduralTree.java b/core/src/main/java/art/arcane/iris/engine/object/IrisProceduralTree.java index cc6faeed7..a44edf1e4 100644 --- a/core/src/main/java/art/arcane/iris/engine/object/IrisProceduralTree.java +++ b/core/src/main/java/art/arcane/iris/engine/object/IrisProceduralTree.java @@ -281,12 +281,12 @@ public class IrisProceduralTree implements IrisProceduralPlacement { if (new java.io.File("plugins/Iris/goldendebug.txt").isFile()) { for (IrisObject object : baked) { - long digest = 0L; - for (java.util.Map.Entry entry : object.getBlocks()) { - long position = ((long) entry.getKey().getBlockX() << 40) ^ ((long) entry.getKey().getBlockY() << 20) ^ entry.getKey().getBlockZ(); - digest ^= Long.rotateLeft(position * 0x9E3779B97F4A7C15L ^ entry.getValue().key().hashCode(), (int) (position & 63)); - } - art.arcane.iris.Iris.info("Goldendebug bake: " + object.getLoadKey() + " blocks=" + object.getBlocks().size() + " digest=" + Long.toHexString(digest)); + long[] digest = new long[]{0L}; + object.getBlocks().forEach((vector, state) -> { + long position = ((long) vector.getBlockX() << 40) ^ ((long) vector.getBlockY() << 20) ^ vector.getBlockZ(); + digest[0] ^= Long.rotateLeft(position * 0x9E3779B97F4A7C15L ^ state.key().hashCode(), (int) (position & 63)); + }); + art.arcane.iris.Iris.info("Goldendebug bake: " + object.getLoadKey() + " blocks=" + object.getBlocks().size() + " digest=" + Long.toHexString(digest[0])); } } diff --git a/core/src/main/java/art/arcane/iris/engine/platform/studio/generators/BiomeBuffetGenerator.java b/core/src/main/java/art/arcane/iris/engine/platform/studio/generators/BiomeBuffetGenerator.java index 2695f7ae5..5e06ad6f9 100644 --- a/core/src/main/java/art/arcane/iris/engine/platform/studio/generators/BiomeBuffetGenerator.java +++ b/core/src/main/java/art/arcane/iris/engine/platform/studio/generators/BiomeBuffetGenerator.java @@ -24,14 +24,13 @@ import art.arcane.iris.engine.framework.Engine; import art.arcane.iris.engine.framework.WrongEngineBroException; import art.arcane.iris.engine.object.IrisBiome; import art.arcane.iris.engine.platform.studio.EnginedStudioGenerator; -import art.arcane.iris.platform.bukkit.BukkitBlockState; import art.arcane.iris.spi.PlatformBlockState; -import org.bukkit.Material; +import art.arcane.iris.util.common.data.B; import java.util.Objects; public class BiomeBuffetGenerator extends EnginedStudioGenerator { - private static final PlatformBlockState FLOOR = BukkitBlockState.of(Material.BARRIER.createBlockData()); + private static final PlatformBlockState FLOOR = B.getState("BARRIER"); private final IrisBiome[] biomes; private final int width; private final int biomeSize; diff --git a/core/src/main/java/art/arcane/iris/util/common/data/B.java b/core/src/main/java/art/arcane/iris/util/common/data/B.java index 8743be86d..3e855ff69 100644 --- a/core/src/main/java/art/arcane/iris/util/common/data/B.java +++ b/core/src/main/java/art/arcane/iris/util/common/data/B.java @@ -136,6 +136,14 @@ public class B { return BASE.toDeepSlateOre(block, ore); } + public static art.arcane.iris.spi.PlatformBlockState toDeepSlateOre(art.arcane.iris.spi.PlatformBlockState block, art.arcane.iris.spi.PlatformBlockState ore) { + return art.arcane.iris.platform.bukkit.BukkitBlockState.of(BASE.toDeepSlateOre((BlockData) block.nativeHandle(), (BlockData) ore.nativeHandle())); + } + + public static boolean isOre(art.arcane.iris.spi.PlatformBlockState state) { + return BASE.isOre(state == null ? null : (BlockData) state.nativeHandle()); + } + public static boolean isDeepSlate(BlockData blockData) { return BASE.isDeepSlate(blockData); } @@ -164,6 +172,10 @@ public class B { return BASE.isWater(b); } + public static boolean isWater(art.arcane.iris.spi.PlatformBlockState state) { + return BASE.isWater(state == null ? null : (BlockData) state.nativeHandle()); + } + public static BlockData getAir() { return BASE.getAir(); } @@ -180,6 +192,10 @@ public class B { return BASE.isSolid(mat); } + public static boolean isSolid(art.arcane.iris.spi.PlatformBlockState state) { + return BASE.isSolid(state == null ? null : (BlockData) state.nativeHandle()); + } + public static BlockData getOrNull(String bdxf) { return BASE.getOrNull(bdxf); } @@ -233,6 +249,10 @@ public class B { return BASE.isDecorant(m); } + public static boolean isDecorant(art.arcane.iris.spi.PlatformBlockState state) { + return BASE.isDecorant(state == null ? null : (BlockData) state.nativeHandle()); + } + public static KList get(KList find) { return BASE.get(find); } @@ -241,6 +261,14 @@ public class B { return BASE.isFluid(d); } + public static boolean isFluid(art.arcane.iris.spi.PlatformBlockState state) { + return BASE.isFluid(state == null ? null : (BlockData) state.nativeHandle()); + } + + public static boolean matches(art.arcane.iris.spi.PlatformBlockState filter, art.arcane.iris.spi.PlatformBlockState state) { + return ((BlockData) filter.nativeHandle()).matches((BlockData) state.nativeHandle()); + } + public static boolean isAirOrFluid(BlockData d) { return BASE.isAirOrFluid(d); }