mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2026-07-18 12:53:46 +00:00
Engine Tier 3
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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<PlatformBlockState> {
|
||||
private static final Predicate<PlatformBlockState> 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<PlatformBlockState> 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<PlatformBlockSt
|
||||
}
|
||||
|
||||
if (height < getDimension().getFluidHeight() && PREDICATE_SOLID.test(output.get(i, height, j))
|
||||
&& height + 1 < output.getHeight() && B.isWater(unwrap(output.get(i, height + 1, j)))) {
|
||||
&& height + 1 < output.getHeight() && B.isWater(output.get(i, height + 1, j))) {
|
||||
getSeaSurfaceDecorator().decorate(i, j,
|
||||
realX, Math.round(i + 1), Math.round(x + i - 1),
|
||||
realZ, Math.round(z + j + 1), Math.round(z + j - 1),
|
||||
@@ -142,8 +134,4 @@ public class IrisDecorantActuator extends EngineAssignedActuator<PlatformBlockSt
|
||||
private boolean shouldRayDecorate() {
|
||||
return false; // TODO CAVES
|
||||
}
|
||||
|
||||
private static BlockData unwrap(PlatformBlockState state) {
|
||||
return state == null ? null : (BlockData) state.nativeHandle();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,17 +33,16 @@ import art.arcane.volmlib.util.documentation.BlockCoordinates;
|
||||
import art.arcane.iris.util.project.hunk.Hunk;
|
||||
import art.arcane.volmlib.util.math.RNG;
|
||||
import art.arcane.volmlib.util.scheduling.PrecisionStopwatch;
|
||||
import art.arcane.iris.platform.bukkit.BukkitBlockState;
|
||||
import art.arcane.iris.spi.PlatformBlockState;
|
||||
import art.arcane.iris.util.common.data.B;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.Material;
|
||||
|
||||
public class IrisTerrainNormalActuator extends EngineAssignedActuator<PlatformBlockState> {
|
||||
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
|
||||
|
||||
@@ -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<V> {
|
||||
static long key(Chunk chunk) {
|
||||
return CacheKey.key(chunk);
|
||||
}
|
||||
|
||||
static long key(int x, int z) {
|
||||
return CacheKey.key(x, z);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,13 +185,13 @@ public interface EngineMantle extends MatterGenerator {
|
||||
}
|
||||
|
||||
@ChunkCoordinates
|
||||
default void insertMatter(int x, int z, Class<BlockData> t, Hunk<PlatformBlockState> blocks, boolean multicore) {
|
||||
default void insertMatter(int x, int z, Hunk<PlatformBlockState> blocks, boolean multicore) {
|
||||
if (!getEngine().getDimension().isUseMantle()) {
|
||||
return;
|
||||
}
|
||||
|
||||
UpperDimensionContext upperCtx = getEngine().getUpperContext();
|
||||
boolean protectUpper = t == BlockData.class && upperCtx != null;
|
||||
boolean protectUpper = upperCtx != null;
|
||||
|
||||
MantleChunk<Matter> 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();
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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<PlatformBlockState
|
||||
private static final int CAVE_BIOME_BLEND_CENTER_WEIGHT = 4;
|
||||
private static final int CAVE_BIOME_BLEND_TOTAL_WEIGHT = 8;
|
||||
private final RNG rng;
|
||||
private final PlatformBlockState AIR = BukkitBlockState.of(Material.CAVE_AIR.createBlockData());
|
||||
private final PlatformBlockState LAVA = BukkitBlockState.of(Material.LAVA.createBlockData());
|
||||
private final PlatformBlockState AIR = B.getState("CAVE_AIR");
|
||||
private final PlatformBlockState LAVA = B.getState("LAVA");
|
||||
private final IrisDecorantActuator decorant;
|
||||
|
||||
public IrisCarveModifier(Engine engine) {
|
||||
@@ -123,9 +120,8 @@ public class IrisCarveModifier extends EngineAssignedModifier<PlatformBlockState
|
||||
}
|
||||
|
||||
PlatformBlockState current = output.getRaw(rx, yy, rz);
|
||||
BlockData currentRaw = current == null ? null : (BlockData) current.nativeHandle();
|
||||
|
||||
if (B.isFluid(currentRaw)) {
|
||||
if (B.isFluid(current)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -147,7 +143,7 @@ public class IrisCarveModifier extends EngineAssignedModifier<PlatformBlockState
|
||||
walls.put(rx - 1, yy, rz, c);
|
||||
}
|
||||
|
||||
if (currentRaw.getMaterial().isAir()) {
|
||||
if (current.isAir()) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -181,7 +177,7 @@ public class IrisCarveModifier extends EngineAssignedModifier<PlatformBlockState
|
||||
PlatformBlockState data = biome.getWall().get(rng, worldX, yy, worldZ, getData());
|
||||
int columnIndex = PowerOfTwoCoordinates.packLocal16(rx, rz);
|
||||
|
||||
if (data != null && B.isSolid(unwrap(output.getRaw(rx, yy, rz))) && yy < surfaceHeights[columnIndex]) {
|
||||
if (data != null && B.isSolid(output.getRaw(rx, yy, rz)) && yy < surfaceHeights[columnIndex]) {
|
||||
output.setRaw(rx, yy, rz, data);
|
||||
}
|
||||
}
|
||||
@@ -418,14 +414,14 @@ public class IrisCarveModifier extends EngineAssignedModifier<PlatformBlockState
|
||||
break;
|
||||
}
|
||||
|
||||
BlockData down = unwrap(output.getRaw(rx, fy, rz));
|
||||
PlatformBlockState down = output.getRaw(rx, fy, rz);
|
||||
if (!B.isSolid(down)) {
|
||||
break;
|
||||
}
|
||||
|
||||
PlatformBlockState layer = floorLayers.get(i);
|
||||
if (B.isOre(down)) {
|
||||
output.setRaw(rx, fy, rz, BukkitBlockState.of(B.toDeepSlateOre(down, unwrap(layer))));
|
||||
output.setRaw(rx, fy, rz, B.toDeepSlateOre(down, layer));
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -440,14 +436,14 @@ public class IrisCarveModifier extends EngineAssignedModifier<PlatformBlockState
|
||||
break;
|
||||
}
|
||||
|
||||
BlockData up = unwrap(output.getRaw(rx, cy, rz));
|
||||
PlatformBlockState up = output.getRaw(rx, cy, rz);
|
||||
if (!B.isSolid(up)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
PlatformBlockState layer = ceilingLayers.get(i);
|
||||
if (B.isOre(up)) {
|
||||
output.setRaw(rx, cy, rz, BukkitBlockState.of(B.toDeepSlateOre(up, unwrap(layer))));
|
||||
output.setRaw(rx, cy, rz, B.toDeepSlateOre(up, layer));
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -460,11 +456,11 @@ public class IrisCarveModifier extends EngineAssignedModifier<PlatformBlockState
|
||||
int maxY = output.getHeight();
|
||||
String customBiome = "";
|
||||
|
||||
if (zone.ceiling + 1 < maxY && B.isDecorant(unwrap(output.getRaw(rx, zone.ceiling + 1, rz)))) {
|
||||
if (zone.ceiling + 1 < maxY && B.isDecorant(output.getRaw(rx, zone.ceiling + 1, rz))) {
|
||||
output.setRaw(rx, zone.ceiling + 1, rz, AIR);
|
||||
}
|
||||
|
||||
if (B.isDecorant(unwrap(output.getRaw(rx, zone.ceiling, rz)))) {
|
||||
if (B.isDecorant(output.getRaw(rx, zone.ceiling, rz))) {
|
||||
output.setRaw(rx, zone.ceiling, rz, AIR);
|
||||
}
|
||||
|
||||
@@ -505,14 +501,14 @@ public class IrisCarveModifier extends EngineAssignedModifier<PlatformBlockState
|
||||
int y = zone.floor - i - 1;
|
||||
|
||||
PlatformBlockState b = blocks.get(i);
|
||||
BlockData down = unwrap(output.getRaw(rx, y, rz));
|
||||
PlatformBlockState down = output.getRaw(rx, y, rz);
|
||||
|
||||
if (!B.isSolid(down)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (B.isOre(down)) {
|
||||
output.setRaw(rx, y, rz, BukkitBlockState.of(B.toDeepSlateOre(down, unwrap(b))));
|
||||
output.setRaw(rx, y, rz, B.toDeepSlateOre(down, b));
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -528,14 +524,14 @@ public class IrisCarveModifier extends EngineAssignedModifier<PlatformBlockState
|
||||
}
|
||||
|
||||
PlatformBlockState b = blocks.get(i);
|
||||
BlockData up = unwrap(output.getRaw(rx, cy, rz));
|
||||
PlatformBlockState up = output.getRaw(rx, cy, rz);
|
||||
|
||||
if (!B.isSolid(up)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (B.isOre(up)) {
|
||||
output.setRaw(rx, cy, rz, BukkitBlockState.of(B.toDeepSlateOre(up, unwrap(b))));
|
||||
output.setRaw(rx, cy, rz, B.toDeepSlateOre(up, b));
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -543,9 +539,9 @@ public class IrisCarveModifier extends EngineAssignedModifier<PlatformBlockState
|
||||
}
|
||||
|
||||
for (IrisDecorator decorator : biome.getDecorators()) {
|
||||
if (decorator.getPartOf().equals(IrisDecorationPart.NONE) && zone.getFloor() > 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<PlatformBlockState
|
||||
return resolvedBiome;
|
||||
}
|
||||
|
||||
private static BlockData unwrap(PlatformBlockState state) {
|
||||
return state == null ? null : (BlockData) state.nativeHandle();
|
||||
}
|
||||
|
||||
private IrisBiome resolveCustomBiome(Map<String, IrisBiome> customBiomeCache, String customBiome) {
|
||||
if (customBiomeCache.containsKey(customBiome)) {
|
||||
return customBiomeCache.get(customBiome);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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<IrisPosition>();
|
||||
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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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<org.bukkit.util.BlockVector, art.arcane.iris.spi.PlatformBlockState> 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]));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-3
@@ -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;
|
||||
|
||||
@@ -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<BlockData> get(KList<String> 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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user