From 1b20d3b6acb76480a3db178581712d86f1a978ea Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Tue, 27 Oct 2020 01:16:04 -0400 Subject: [PATCH] Experimentals --- .../java/com/volmit/iris/IrisSettings.java | 4 + .../com/volmit/iris/command/CommandIris.java | 3 +- .../iris/gen/ContextualTerrainProvider.java | 17 +-- .../volmit/iris/gen/IrisTerrainProvider.java | 126 ++++++++++-------- 4 files changed, 79 insertions(+), 71 deletions(-) diff --git a/src/main/java/com/volmit/iris/IrisSettings.java b/src/main/java/com/volmit/iris/IrisSettings.java index 93511bcda..884d7a052 100644 --- a/src/main/java/com/volmit/iris/IrisSettings.java +++ b/src/main/java/com/volmit/iris/IrisSettings.java @@ -50,6 +50,10 @@ public class IrisSettings @Desc("Useful information when creating iris worlds. Shows object loads & more.") public boolean verbose = false; + @DontObfuscate + @Desc("Experiments...") + public boolean allowExperimentalV2Generator = false; + @DontObfuscate @Desc("If true, will not use world edit even if its on the server") public boolean ignoreWorldEdit = false; diff --git a/src/main/java/com/volmit/iris/command/CommandIris.java b/src/main/java/com/volmit/iris/command/CommandIris.java index c68d04f5e..05fb9f7a8 100644 --- a/src/main/java/com/volmit/iris/command/CommandIris.java +++ b/src/main/java/com/volmit/iris/command/CommandIris.java @@ -1,6 +1,7 @@ package com.volmit.iris.command; import com.volmit.iris.Iris; +import com.volmit.iris.IrisSettings; import com.volmit.iris.gen.v2.TestGen; import com.volmit.iris.util.Command; import com.volmit.iris.util.MortarCommand; @@ -59,7 +60,7 @@ public class CommandIris extends MortarCommand @Override public boolean handle(MortarSender sender, String[] args) { - if(args.length == 1 && args[0].equalsIgnoreCase("test!")) + if(args.length == 1 && args[0].equalsIgnoreCase("test!") && IrisSettings.get().allowExperimentalV2Generator) { TestGen.gen(sender.player()); return true; diff --git a/src/main/java/com/volmit/iris/gen/ContextualTerrainProvider.java b/src/main/java/com/volmit/iris/gen/ContextualTerrainProvider.java index d9a125bd2..068720bbc 100644 --- a/src/main/java/com/volmit/iris/gen/ContextualTerrainProvider.java +++ b/src/main/java/com/volmit/iris/gen/ContextualTerrainProvider.java @@ -226,7 +226,7 @@ public abstract class ContextualTerrainProvider implements TerrainProvider, List @EventHandler(priority = EventPriority.MONITOR) public void on(EntitySpawnEvent e) { - onSpawn(e); + J.a(() -> onSpawn(e)); } protected abstract void onSpawn(EntitySpawnEvent e); @@ -288,15 +288,14 @@ public abstract class ContextualTerrainProvider implements TerrainProvider, List { if(getTarget().isWorld(e.getFrom().getWorld()) && !getTarget().isWorld(e.getTo().getWorld())) { - tick(); - onPlayerLeft(e.getPlayer()); + J.a(() -> onPlayerLeft(e.getPlayer())); } if(!getTarget().isWorld(e.getFrom().getWorld()) && getTarget().isWorld(e.getTo().getWorld())) { - tick(); - onPlayerJoin(e.getPlayer()); + J.a(() -> onPlayerJoin(e.getPlayer())); } + } @EventHandler(priority = EventPriority.MONITOR) @@ -304,8 +303,7 @@ public abstract class ContextualTerrainProvider implements TerrainProvider, List { if(getTarget().isWorld(e.getPlayer().getWorld())) { - tick(); - onPlayerLeft(e.getPlayer()); + J.a(() -> onPlayerLeft(e.getPlayer())); } } @@ -314,8 +312,7 @@ public abstract class ContextualTerrainProvider implements TerrainProvider, List { if(getTarget().isWorld(e.getPlayer().getWorld())) { - tick(); - onPlayerJoin(e.getPlayer()); + J.a(() -> onPlayerJoin(e.getPlayer())); } } @@ -324,7 +321,6 @@ public abstract class ContextualTerrainProvider implements TerrainProvider, List { if(getTarget().isWorld(e.getWorld())) { - tick(); onChunkLoaded(e.getChunk()); } } @@ -334,7 +330,6 @@ public abstract class ContextualTerrainProvider implements TerrainProvider, List { if(getTarget().isWorld(e.getWorld())) { - tick(); onChunkUnloaded(e.getChunk()); } } diff --git a/src/main/java/com/volmit/iris/gen/IrisTerrainProvider.java b/src/main/java/com/volmit/iris/gen/IrisTerrainProvider.java index ea6e93250..5febc7ba9 100644 --- a/src/main/java/com/volmit/iris/gen/IrisTerrainProvider.java +++ b/src/main/java/com/volmit/iris/gen/IrisTerrainProvider.java @@ -506,67 +506,75 @@ public class IrisTerrainProvider extends PostBlockTerrainProvider implements Iri try { - if(isSpawnable()) + if(!IrisSettings.get().isSystemEntitySpawnOverrides()) { - if(!IrisSettings.get().isSystemEntitySpawnOverrides()) - { - return; - } - - int x = e.getEntity().getLocation().getBlockX(); - int y = e.getEntity().getLocation().getBlockY(); - int z = e.getEntity().getLocation().getBlockZ(); - IrisDimension dim = getDimension(); - IrisRegion region = sampleRegion(x, z); - IrisBiome above = sampleTrueBiome(x, z); - IrisBiome below = sampleTrueBiome(x, y, z); - - if(above.getLoadKey().equals(below.getLoadKey())) - { - below = null; - } - - IrisStructureResult res = getStructure(x, y, z); - - if(res != null && res.getTile() != null) - { - if(trySpawn(res.getTile().getEntitySpawnOverrides(), e)) - { - return; - } - } - - if(res != null && res.getStructure() != null) - { - if(trySpawn(res.getStructure().getEntitySpawnOverrides(), e)) - { - return; - } - } - - if(below != null) - { - if(trySpawn(below.getEntitySpawnOverrides(), e)) - { - return; - } - } - - if(trySpawn(above.getEntitySpawnOverrides(), e)) - { - return; - } - - if(trySpawn(region.getEntitySpawnOverrides(), e)) - { - return; - } - - if(trySpawn(dim.getEntitySpawnOverrides(), e)) - { - return; - } + return; } + + int x = e.getEntity().getLocation().getBlockX(); + int y = e.getEntity().getLocation().getBlockY(); + int z = e.getEntity().getLocation().getBlockZ(); + + J.a(() -> + { + if(isSpawnable()) + { + + IrisDimension dim = getDimension(); + IrisRegion region = sampleRegion(x, z); + IrisBiome above = sampleTrueBiome(x, z); + IrisBiome bbelow = sampleTrueBiome(x, y, z); + IrisStructureResult res = getStructure(x, y, z); + if(above.getLoadKey().equals(bbelow.getLoadKey())) + { + bbelow = null; + } + + IrisBiome below = bbelow; + + J.s(() -> + { + if(res != null && res.getTile() != null) + { + if(trySpawn(res.getTile().getEntitySpawnOverrides(), e)) + { + return; + } + } + + if(res != null && res.getStructure() != null) + { + if(trySpawn(res.getStructure().getEntitySpawnOverrides(), e)) + { + return; + } + } + + if(below != null) + { + if(trySpawn(below.getEntitySpawnOverrides(), e)) + { + return; + } + } + + if(trySpawn(above.getEntitySpawnOverrides(), e)) + { + return; + } + + if(trySpawn(region.getEntitySpawnOverrides(), e)) + { + return; + } + + if(trySpawn(dim.getEntitySpawnOverrides(), e)) + { + return; + } + }); + } + }); } catch(Throwable xe)