From 6b62ba1c5bd9f0ca349965f5f34b536d7ea6051d Mon Sep 17 00:00:00 2001 From: cyberpwn Date: Tue, 21 Sep 2021 08:18:51 -0400 Subject: [PATCH] Mantle reduction mem --- src/main/java/com/volmit/iris/engine/IrisEngine.java | 3 +++ .../com/volmit/iris/util/hunk/storage/MappedHunk.java | 1 + src/main/java/com/volmit/iris/util/mantle/Mantle.java | 9 +++++++++ .../java/com/volmit/iris/util/mantle/MantleChunk.java | 8 ++++++++ .../java/com/volmit/iris/util/mantle/TectonicPlate.java | 3 +++ 5 files changed, 24 insertions(+) diff --git a/src/main/java/com/volmit/iris/engine/IrisEngine.java b/src/main/java/com/volmit/iris/engine/IrisEngine.java index 278320078..f14c667c1 100644 --- a/src/main/java/com/volmit/iris/engine/IrisEngine.java +++ b/src/main/java/com/volmit/iris/engine/IrisEngine.java @@ -21,6 +21,7 @@ package com.volmit.iris.engine; import com.google.common.util.concurrent.AtomicDouble; import com.google.gson.Gson; import com.volmit.iris.Iris; +import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.events.IrisEngineHotloadEvent; import com.volmit.iris.core.project.IrisProject; import com.volmit.iris.core.service.PreservationSVC; @@ -61,6 +62,8 @@ import com.volmit.iris.util.hunk.Hunk; import com.volmit.iris.util.io.IO; import com.volmit.iris.util.math.M; import com.volmit.iris.util.math.RNG; +import com.volmit.iris.util.matter.MatterCavern; +import com.volmit.iris.util.matter.MatterFluidBody; import com.volmit.iris.util.scheduling.ChronoLatch; import com.volmit.iris.util.scheduling.J; import com.volmit.iris.util.scheduling.PrecisionStopwatch; diff --git a/src/main/java/com/volmit/iris/util/hunk/storage/MappedHunk.java b/src/main/java/com/volmit/iris/util/hunk/storage/MappedHunk.java index 4d5d9fba8..23b3726e2 100644 --- a/src/main/java/com/volmit/iris/util/hunk/storage/MappedHunk.java +++ b/src/main/java/com/volmit/iris/util/hunk/storage/MappedHunk.java @@ -27,6 +27,7 @@ import lombok.EqualsAndHashCode; import java.io.IOException; import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; @SuppressWarnings({"DefaultAnnotationParam", "Lombok"}) @Data diff --git a/src/main/java/com/volmit/iris/util/mantle/Mantle.java b/src/main/java/com/volmit/iris/util/mantle/Mantle.java index a54040ee8..88149846a 100644 --- a/src/main/java/com/volmit/iris/util/mantle/Mantle.java +++ b/src/main/java/com/volmit/iris/util/mantle/Mantle.java @@ -19,7 +19,9 @@ package com.volmit.iris.util.mantle; import com.volmit.iris.Iris; +import com.volmit.iris.core.IrisSettings; import com.volmit.iris.engine.data.cache.Cache; +import com.volmit.iris.engine.framework.Engine; import com.volmit.iris.engine.mantle.EngineMantle; import com.volmit.iris.engine.mantle.MantleWriter; import com.volmit.iris.util.collection.KMap; @@ -36,6 +38,8 @@ import com.volmit.iris.util.matter.MatterSlice; import com.volmit.iris.util.parallel.BurstExecutor; import com.volmit.iris.util.parallel.HyperLock; import com.volmit.iris.util.parallel.MultiBurst; +import com.volmit.iris.util.scheduling.J; +import lombok.Getter; import org.bukkit.Chunk; import java.io.File; @@ -54,6 +58,7 @@ public class Mantle { private final File dataFolder; private final int worldHeight; private final Map lastUse; + @Getter private final Map loadedRegions; private final HyperLock hyperLock; private final KSet unload; @@ -529,4 +534,8 @@ public class Mantle { public boolean isLoaded(Chunk c) { return loadedRegions.containsKey(key(c.getX() >> 5, c.getZ() >> 5)); } + + public boolean shouldReduce(Engine engine) { + return !engine.isStudio() || IrisSettings.get().getPerformance().isTrimMantleInStudio(); + } } diff --git a/src/main/java/com/volmit/iris/util/mantle/MantleChunk.java b/src/main/java/com/volmit/iris/util/mantle/MantleChunk.java index feec922d7..fc341f687 100644 --- a/src/main/java/com/volmit/iris/util/mantle/MantleChunk.java +++ b/src/main/java/com/volmit/iris/util/mantle/MantleChunk.java @@ -223,4 +223,12 @@ public class MantleChunk { } } } + + public void trimSlices() { + for (int i = 0; i < sections.length(); i++) { + if (exists(i)) { + trimSlice(i); + } + } + } } diff --git a/src/main/java/com/volmit/iris/util/mantle/TectonicPlate.java b/src/main/java/com/volmit/iris/util/mantle/TectonicPlate.java index 2cca77286..c1e648a13 100644 --- a/src/main/java/com/volmit/iris/util/mantle/TectonicPlate.java +++ b/src/main/java/com/volmit/iris/util/mantle/TectonicPlate.java @@ -20,9 +20,12 @@ package com.volmit.iris.util.mantle; import com.volmit.iris.Iris; import com.volmit.iris.engine.data.cache.Cache; +import com.volmit.iris.util.collection.KMap; import com.volmit.iris.util.documentation.ChunkCoordinates; import com.volmit.iris.util.format.C; import com.volmit.iris.util.format.Form; +import com.volmit.iris.util.matter.Matter; +import com.volmit.iris.util.nbt.mca.Section; import com.volmit.iris.util.scheduling.PrecisionStopwatch; import lombok.Getter;