This commit is contained in:
Brian Neumann-Fopiano committed 2026-07-09 18:34:16 -04:00
1 parent 0a7a531646
commit 6111b5670a
65 files changed
+998 -382

No files matched your search

@@ -62,6 +62,7 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemp
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Arrays;
import java.util.EnumSet;
import java.util.List;
import java.util.Optional;
@@ -368,8 +369,8 @@ public final class IrisModdedChunkGenerator extends ChunkGenerator {
for (int blockY = y; blockY < sectionEnd; blockY++) {
int bufferY = blockY - dimMinY;
int localY = blockY & 15;
for (int x = 0; x < 16; x++) {
for (int z = 0; z < 16; z++) {
for (int z = 0; z < 16; z++) {
for (int x = 0; x < 16; x++) {
if (blocks.isAir(x, bufferY, z)) {
continue;
}
@@ -445,7 +446,7 @@ public final class IrisModdedChunkGenerator extends ChunkGenerator {
@Override
public int getSeaLevel() {
Engine current = engineOrNull();
return current == null ? 63 : current.getDimension().getFluidHeight();
return current == null ? 63 : current.getMinHeight() + current.getDimension().getFluidHeight();
}
@Override
@@ -471,25 +472,18 @@ public final class IrisModdedChunkGenerator extends ChunkGenerator {
Engine current = engineOrNull();
BlockState airState = Blocks.AIR.defaultBlockState();
if (current == null) {
for (int i = 0; i < states.length; i++) {
states[i] = airState;
}
Arrays.fill(states, airState);
return new NoiseColumn(minY, states);
}
int surface = current.getMinHeight() + current.getHeight(x, z, true);
int fluid = current.getDimension().getFluidHeight();
int fluid = current.getMinHeight() + current.getDimension().getFluidHeight();
BlockState stone = Blocks.STONE.defaultBlockState();
BlockState water = Blocks.WATER.defaultBlockState();
for (int i = 0; i < states.length; i++) {
int y = minY + i;
if (y <= surface) {
states[i] = stone;
} else if (y <= fluid) {
states[i] = water;
} else {
states[i] = airState;
}
}
int solidEnd = Math.max(0, Math.min(states.length, surface - minY + 1));
int fluidEnd = Math.max(solidEnd, Math.max(0, Math.min(states.length, fluid - minY + 1)));
Arrays.fill(states, 0, solidEnd, stone);
Arrays.fill(states, solidEnd, fluidEnd, water);
Arrays.fill(states, fluidEnd, states.length, airState);
return new NoiseColumn(minY, states);
}
@@ -77,6 +77,9 @@ public final class ModdedProtocolHandler {
transport = serverTransport;
protocolServer = protocol;
IrisServices.register(IrisProtocolServer.class, protocol);
if (server.getPlayerList() == null) {
return;
}
for (ServerPlayer player : server.getPlayerList().getPlayers()) {
sessionRegistry.register(new IrisSession(player.getUUID().toString(), serverTransport));
}
@@ -74,7 +74,7 @@ public final class ModdedGoldenHash {
engineMode,
true,
false,
"minecraft:plains");
GoldenHashEngine.FALLBACK_BIOME_KEY);
this.hashEngine = new GoldenHashEngine(engine, request, goldenDir, this::snapshot, feedback(), progress());
}
@@ -386,7 +386,7 @@ public final class ModdedObjectCommands {
IrisObjectPlacement placement = new IrisObjectPlacement();
placement.setRotation(IrisObjectRotation.of(0, rotation, 0));
ModdedObjectPlacer placer = new ModdedObjectPlacer(level);
ModdedObjectPlacer placer = new ModdedObjectPlacer(level, engine);
try {
object.place(target.getX(), target.getY() + object.getCenter().getY(), target.getZ(), placer, placement, new RNG(), null);
} catch (Throwable e) {
@@ -35,6 +35,7 @@ import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.levelgen.Heightmap;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -45,14 +46,16 @@ final class ModdedObjectPlacer implements IObjectPlacer {
private static final Logger LOGGER = LoggerFactory.getLogger("Iris");
private final ServerLevel level;
private final Engine engine;
private final Map<BlockPos, BlockState> undo = new HashMap<>();
private int writes = 0;
private int nonAirWrites = 0;
private int skippedTiles = 0;
private int restoredTiles = 0;
ModdedObjectPlacer(ServerLevel level) {
ModdedObjectPlacer(ServerLevel level, @Nullable Engine engine) {
this.level = level;
this.engine = engine;
}
Map<BlockPos, BlockState> undoSnapshot() {
@@ -183,6 +186,6 @@ final class ModdedObjectPlacer implements IObjectPlacer {
@Override
public Engine getEngine() {
return null;
return engine;
}
}
@@ -186,6 +186,7 @@ public final class ModdedPregenMethod implements PregeneratorMethod {
listener.onChunkFailed(x, z);
return;
}
markCompleted();
listener.onChunkGenerated(x, z);
cleanupMantleChunk(x, z);
listener.onChunkCleaned(x, z);
@@ -236,6 +237,7 @@ public final class ModdedPregenMethod implements PregeneratorMethod {
return;
}
onSuccess();
markCompleted();
listener.onChunkGenerated(x, z);
cleanupMantleChunk(x, z);
listener.onChunkCleaned(x, z);
@@ -253,12 +255,15 @@ public final class ModdedPregenMethod implements PregeneratorMethod {
private void markFinished() {
inFlight.decrementAndGet();
completed.incrementAndGet();
synchronized (permitMonitor) {
permitMonitor.notifyAll();
}
}
private void markCompleted() {
completed.incrementAndGet();
}
private void onTimeout() {
if (timeoutStreak.incrementAndGet() % ADAPTIVE_TIMEOUT_STEP == 0) {
adjustAdaptiveLimit(-1);
@@ -161,6 +161,7 @@ public final class ModdedStructureCommands {
return 0;
}
ServerLevel level = source.getLevel();
Engine engine = IrisModdedCommands.engineFor(level);
IrisData data = dataFor(source);
if (data == null) {
return 0;
@@ -181,7 +182,7 @@ public final class ModdedStructureCommands {
IrisModdedCommands.fail(source, "Structure '" + key + "' assembled 0 pieces");
return 0;
}
ModdedObjectPlacer placer = new ModdedObjectPlacer(level);
ModdedObjectPlacer placer = new ModdedObjectPlacer(level, engine);
UUID owner = player.getUUID();
try {
for (PlacedStructurePiece piece : pieces) {