This commit is contained in:
RePixelatedMC
2024-10-05 20:41:29 +02:00
parent 457b691add
commit db14861b40
4 changed files with 33 additions and 2 deletions

View File

@@ -154,7 +154,7 @@ public class IrisBiomeFixer {
}
// Set biomes to the chunk using NMS
INMS.get().setBiomes(cx, cz, engine.getWorld().realWorld(), biomes);
//INMS.get().setBiomes(cx, cz, engine.getWorld().realWorld(), biomes);
generated.incrementAndGet();
}

View File

@@ -18,6 +18,8 @@
package com.volmit.iris.engine.actuator;
import com.volmit.iris.core.nms.IMemoryWorld;
import com.volmit.iris.core.nms.INMS;
import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.engine.framework.EngineAssignedActuator;
import com.volmit.iris.engine.object.IrisBiome;
@@ -27,11 +29,13 @@ import com.volmit.iris.util.context.ChunkContext;
import com.volmit.iris.util.documentation.BlockCoordinates;
import com.volmit.iris.util.hunk.Hunk;
import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.misc.E;
import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import lombok.Getter;
import org.bukkit.Chunk;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.WorldCreator;
import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData;
import org.bukkit.generator.ChunkGenerator;
@@ -43,6 +47,7 @@ public class IrisTerrainNormalActuator extends EngineAssignedActuator<BlockData>
private static final BlockData LAVA = Material.LAVA.createBlockData();
private static final BlockData GLASS = Material.GLASS.createBlockData();
private static final BlockData CAVE_AIR = Material.CAVE_AIR.createBlockData();
private IMemoryWorld memoryWorld;
@Getter
private final RNG rng;
@Getter
@@ -51,12 +56,22 @@ public class IrisTerrainNormalActuator extends EngineAssignedActuator<BlockData>
public IrisTerrainNormalActuator(Engine engine) {
super(engine, "Terrain");
rng = new RNG(engine.getSeedManager().getTerrain());
if (memoryWorld != null) {
try {
this.memoryWorld = INMS.get().createMemoryWorld(new WorldCreator("terrain").generator(getEngine().getDimension().getMerger().getGenerator()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
@BlockCoordinates
@Override
public void onActuate(int x, int z, Hunk<BlockData> h, boolean multicore, ChunkContext context) {
PrecisionStopwatch p = PrecisionStopwatch.start();
if (memoryWorld != null) {
Hunk<BlockData> hm = toHunk(memoryWorld.getChunkData(x,z));
}
for (int xf = 0; xf < h.getWidth(); xf++) {
terrainSliver(x, z, xf, h, context);
@@ -176,6 +191,20 @@ public class IrisTerrainNormalActuator extends EngineAssignedActuator<BlockData>
for (zf = 0; zf < h.getDepth(); zf++) {
}
}
private Hunk<BlockData> toHunk(ChunkGenerator.ChunkData data) {
Hunk<BlockData> h = Hunk.newArrayHunk(16, memoryWorld.getBukkit().getMaxHeight(), 16);
for (int x = 0; x < 16; x++) {
for (int z = 0; z < 16; z++) {
for (int y = 0; y < memoryWorld.getBukkit().getMaxHeight(); y++) {
BlockData block = data.getBlockData(x, y, z);
h.set(x, y, z, block);
}
}
}
return h;
}
}

View File

@@ -506,7 +506,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat
items.addAll(i.getLoot(debug, rng, slot, world, x, y, z));
}
if (PaperLib.isPaper() && getWorld().hasRealWorld()) {
if (PaperLib.isPaper() && getWorld().hasRealWorld()) {
PaperLib.getChunkAtAsync(getWorld().realWorld(), x >> 4, z >> 4).thenAccept((c) -> {
Runnable r = () -> {
for (ItemStack i : items) {

View File

@@ -144,6 +144,8 @@ public class IrisDimension extends IrisRegistrant {
@RegistryListResource(IrisJigsawStructure.class)
@Desc("If defined, Iris will place the given jigsaw structure where minecraft should place the overworld stronghold.")
private String stronghold;
@Desc("Iris merger")
private IrisMerger merger = new IrisMerger();
@Desc("If set to true, Iris will remove chunks to allow visualizing cross sections of chunks easily")
private boolean debugChunkCrossSections = false;
@Desc("Vertically split up the biome palettes with 3 air blocks in between to visualize them")