This commit is contained in:
RePixelatedMC 2024-10-22 15:28:39 +02:00
parent dfd27ecbff
commit 05bf92ca50

View File

@ -19,8 +19,6 @@
package com.volmit.iris.engine.actuator;
import com.volmit.iris.Iris;
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;
@ -30,16 +28,10 @@ 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 io.papermc.lib.PaperLib;
import lombok.Getter;
import org.bukkit.*;
import org.bukkit.block.data.BlockData;
import org.bukkit.generator.ChunkGenerator;
import javax.annotation.Nullable;
import java.util.concurrent.atomic.AtomicReference;
public class IrisTerrainNormalActuator extends EngineAssignedActuator<BlockData> {
private static final BlockData AIR = Material.AIR.createBlockData();
@ -48,7 +40,6 @@ 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
@ -57,20 +48,6 @@ public class IrisTerrainNormalActuator extends EngineAssignedActuator<BlockData>
public IrisTerrainNormalActuator(Engine engine) {
super(engine, "Terrain");
rng = new RNG(engine.getSeedManager().getTerrain());
// todo: for v4
// boolean debug = getDimension().getMerger().isDatapackMode();
// if (!getDimension().getMerger().getGenerator().isBlank()) {
// try {
// if (!getDimension().getMerger().isDatapackMode()) {
// this.memoryWorld = INMS.get().createMemoryWorld(new WorldCreator("terrain").generator(getEngine().getDimension().getMerger().getGenerator()));
// } else {
// String test = getDimension().getMerger().getGenerator().toLowerCase();
// this.memoryWorld = INMS.get().createMemoryWorld(NamespacedKey.minecraft(test), new WorldCreator("terrain"));
// }
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
}
@BlockCoordinates
@ -78,16 +55,9 @@ public class IrisTerrainNormalActuator extends EngineAssignedActuator<BlockData>
public void onActuate(int x, int z, Hunk<BlockData> h, boolean multicore, ChunkContext context) {
try {
PrecisionStopwatch p = PrecisionStopwatch.start();
AtomicReference<Hunk<BlockData>> hm = new AtomicReference<>();
if (memoryWorld != null) {
PaperLib.getChunkAtAsync(memoryWorld.getBukkit(), x, z, true).thenAccept((i) -> {
hm.set(toHunk(memoryWorld.getChunkData(x, z)));
}).get();
}
for (int xf = 0; xf < h.getWidth(); xf++) {
terrainSliver(x, z, xf, h, hm.get(), context);
terrainSliver(x, z, xf, h, context);
}
getEngine().getMetrics().getTerrain().put(p.getMilliseconds());
@ -110,7 +80,7 @@ public class IrisTerrainNormalActuator extends EngineAssignedActuator<BlockData>
* @param h the blockdata
*/
@BlockCoordinates
public void terrainSliver(int x, int z, int xf, Hunk<BlockData> h, @Nullable Hunk<BlockData> hm, ChunkContext context) {
public void terrainSliver(int x, int z, int xf, Hunk<BlockData> h, ChunkContext context) {
int zf, realX, realZ, hf, he;
IrisBiome biome;
IrisRegion region;
@ -181,7 +151,7 @@ public class IrisTerrainNormalActuator extends EngineAssignedActuator<BlockData>
if (ore != null) {
h.set(xf, i, zf, ore);
} else if (hm == null) {
} else {
// todo remove this ( TEMP )
if (getDimension().isDeepslateLayer() && i < 64) {
h.set(xf, i, zf, DEEPSLATE);
@ -193,17 +163,4 @@ public class IrisTerrainNormalActuator extends EngineAssignedActuator<BlockData>
}
}
}
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;
}
}