Merge pull request #847 from VolmitSoftware/Development

Development update
This commit is contained in:
Brian Fopiano
2022-08-09 13:50:26 -07:00
committed by GitHub
5 changed files with 28 additions and 16 deletions
+2 -2
View File
@@ -24,8 +24,8 @@ plugins {
id "de.undercouch.download" version "5.0.1" id "de.undercouch.download" version "5.0.1"
} }
version '2.2.7-1.19.1' // Needs to be version specific version '2.2.8-1.19.2' // Needs to be version specific
def nmsVersion = "1.19.1" def nmsVersion = "1.19.2"
def apiVersion = '1.19' def apiVersion = '1.19'
def spigotJarVersion = '1.19.1-R0.1-SNAPSHOT' def spigotJarVersion = '1.19.1-R0.1-SNAPSHOT'
def name = getRootProject().getName() // Defined in settings.gradle def name = getRootProject().getName() // Defined in settings.gradle
@@ -20,7 +20,7 @@ package com.volmit.iris.core.nms;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.IrisSettings;
import com.volmit.iris.core.nms.v19_1.NMSBinding19_1; import com.volmit.iris.core.nms.v19_2.NMSBinding19_2;
import com.volmit.iris.core.nms.v1X.NMSBinding1X; import com.volmit.iris.core.nms.v1X.NMSBinding1X;
import com.volmit.iris.util.collection.KMap; import com.volmit.iris.util.collection.KMap;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@@ -28,7 +28,7 @@ import org.bukkit.Bukkit;
public class INMS { public class INMS {
//@builder //@builder
private static final KMap<String, Class<? extends INMSBinding>> bindings = new KMap<String, Class<? extends INMSBinding>>() private static final KMap<String, Class<? extends INMSBinding>> bindings = new KMap<String, Class<? extends INMSBinding>>()
.qput("v1_19_R1", NMSBinding19_1.class); .qput("v1_19_R1", NMSBinding19_2.class);
//@done //@done
private static final INMSBinding binding = bind(); private static final INMSBinding binding = bind();
@@ -16,7 +16,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
package com.volmit.iris.core.nms.v19_1; package com.volmit.iris.core.nms.v19_2;
import com.volmit.iris.Iris; import com.volmit.iris.Iris;
@@ -39,15 +39,10 @@ import it.unimi.dsi.fastutil.objects.Object2IntMap;
import net.minecraft.core.*; import net.minecraft.core.*;
import net.minecraft.nbt.NbtIo; import net.minecraft.nbt.NbtIo;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.BitStorage;
import net.minecraft.util.Mth;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkAccess;
import net.minecraft.world.level.chunk.LevelChunkSection;
import net.minecraft.world.level.chunk.Palette;
import net.minecraft.world.level.chunk.PalettedContainer;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
@@ -74,7 +69,7 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
public class NMSBinding19_1 implements INMSBinding { public class NMSBinding19_2 implements INMSBinding {
private final KMap<Biome, Object> baseBiomeCache = new KMap<>(); private final KMap<Biome, Object> baseBiomeCache = new KMap<>();
private final BlockData AIR = Material.AIR.createBlockData(); private final BlockData AIR = Material.AIR.createBlockData();
@@ -29,6 +29,7 @@ import com.volmit.iris.util.scheduling.ChronoLatch;
import com.volmit.iris.util.scheduling.J; import com.volmit.iris.util.scheduling.J;
import com.volmit.iris.util.scheduling.Looper; import com.volmit.iris.util.scheduling.Looper;
import java.util.concurrent.Semaphore;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLong;
@@ -55,10 +56,12 @@ public class IrisPregenerator {
private final KSet<Position2> retry; private final KSet<Position2> retry;
private final KSet<Position2> net; private final KSet<Position2> net;
private final ChronoLatch cl; private final ChronoLatch cl;
private final Semaphore limiter;
public IrisPregenerator(PregenTask task, PregeneratorMethod generator, PregenListener listener) { public IrisPregenerator(PregenTask task, PregeneratorMethod generator, PregenListener listener) {
this.listener = listenify(listener); this.listener = listenify(listener);
cl = new ChronoLatch(5000); cl = new ChronoLatch(5000);
limiter = new Semaphore(Runtime.getRuntime().availableProcessors());
generatedRegions = new KSet<>(); generatedRegions = new KSet<>();
this.shutdown = new AtomicBoolean(false); this.shutdown = new AtomicBoolean(false);
this.paused = new AtomicBoolean(false); this.paused = new AtomicBoolean(false);
@@ -163,12 +166,26 @@ public class IrisPregenerator {
boolean hit = false; boolean hit = false;
if(generator.supportsRegions(x, z, listener) && regions) { if(generator.supportsRegions(x, z, listener) && regions) {
hit = true; hit = true;
listener.onRegionGenerating(x, z); try {
generator.generateRegion(x, z, listener); limiter.acquire();
listener.onRegionGenerating(x, z);
generator.generateRegion(x, z, listener);
limiter.release();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
} else if(!regions) { } else if(!regions) {
hit = true; hit = true;
listener.onRegionGenerating(x, z); listener.onRegionGenerating(x, z);
PregenTask.iterateRegion(x, z, (xx, zz) -> generator.generateChunk(xx, zz, listener)); PregenTask.iterateRegion(x, z, (xx, zz) -> {
try {
limiter.acquire();
generator.generateChunk(xx, zz, listener);
limiter.release();
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
});
} }
if(hit) { if(hit) {
@@ -42,10 +42,10 @@ public class ModeOverworld extends IrisEngineMode implements EngineMode {
var deposit = new IrisDepositModifier(getEngine()); var deposit = new IrisDepositModifier(getEngine());
var perfection = new IrisPerfectionModifier(getEngine()); var perfection = new IrisPerfectionModifier(getEngine());
registerStage((x, z, k, p, m) -> biome.actuate(x, z, p, m));
registerStage(burst( registerStage(burst(
(x, z, k, p, m) -> generateMatter(x >> 4, z >> 4, m), (x, z, k, p, m) -> generateMatter(x >> 4, z >> 4, m),
(x, z, k, p, m) -> terrain.actuate(x, z, k, m), (x, z, k, p, m) -> terrain.actuate(x, z, k, m)
(x, z, k, p, m) -> biome.actuate(x, z, p, m)
)); ));
registerStage((x, z, k, p, m) -> cave.modify(x >> 4, z >> 4, k, m)); registerStage((x, z, k, p, m) -> cave.modify(x >> 4, z >> 4, k, m));
registerStage((x, z, k, p, m) -> deposit.modify(x, z, k, m)); registerStage((x, z, k, p, m) -> deposit.modify(x, z, k, m));