This commit is contained in:
RePixelatedMC
2024-10-09 12:57:49 +02:00
parent 03582751c5
commit 57649a9ec5
@@ -32,16 +32,14 @@ import com.volmit.iris.util.hunk.Hunk;
import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.misc.E; import com.volmit.iris.util.misc.E;
import com.volmit.iris.util.scheduling.PrecisionStopwatch; import com.volmit.iris.util.scheduling.PrecisionStopwatch;
import io.papermc.lib.PaperLib;
import lombok.Getter; import lombok.Getter;
import org.bukkit.*; import org.bukkit.*;
import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData; import org.bukkit.block.data.BlockData;
import org.bukkit.generator.ChunkGenerator; import org.bukkit.generator.ChunkGenerator;
import org.bukkit.packs.DataPack;
import org.bukkit.packs.DataPackManager;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.Collection; import java.util.concurrent.atomic.AtomicReference;
public class IrisTerrainNormalActuator extends EngineAssignedActuator<BlockData> { public class IrisTerrainNormalActuator extends EngineAssignedActuator<BlockData> {
private static final BlockData AIR = Material.AIR.createBlockData(); private static final BlockData AIR = Material.AIR.createBlockData();
@@ -77,17 +75,26 @@ public class IrisTerrainNormalActuator extends EngineAssignedActuator<BlockData>
@BlockCoordinates @BlockCoordinates
@Override @Override
public void onActuate(int x, int z, Hunk<BlockData> h, boolean multicore, ChunkContext context) { public void onActuate(int x, int z, Hunk<BlockData> h, boolean multicore, ChunkContext context) {
try {
PrecisionStopwatch p = PrecisionStopwatch.start(); PrecisionStopwatch p = PrecisionStopwatch.start();
Hunk<BlockData> hm = null; AtomicReference<Hunk<BlockData>> hm = new AtomicReference<>();
if (memoryWorld != null) { if (memoryWorld != null) {
hm = toHunk(memoryWorld.getChunkData(x, z));
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++) { for (int xf = 0; xf < h.getWidth(); xf++) {
terrainSliver(x, z, xf, h, hm, context); terrainSliver(x, z, xf, h, hm.get(), context);
} }
getEngine().getMetrics().getTerrain().put(p.getMilliseconds()); getEngine().getMetrics().getTerrain().put(p.getMilliseconds());
} catch (Exception e) {
Iris.error("Fatal Error!", e);
}
} }