diff --git a/pom.xml b/pom.xml index b931ef344..8ca35728d 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 bytecode.ninja Iris - 1.0.12 + 1.0.13 Iris false diff --git a/src/main/java/com/volmit/iris/Iris.java b/src/main/java/com/volmit/iris/Iris.java index 60a39e9dd..c0a6c81bd 100644 --- a/src/main/java/com/volmit/iris/Iris.java +++ b/src/main/java/com/volmit/iris/Iris.java @@ -81,6 +81,20 @@ public class Iris extends MortarPlugin lowMemoryMode = Runtime.getRuntime().maxMemory() < 4000000000L; // 4 * 1000 * 1000 * 1000 // 4gb } + public static int getThreadCount() + { + int tc = IrisSettings.get().forceThreadCount; + + if(tc <= 0) + { + int p = Runtime.getRuntime().availableProcessors(); + + return p > 16 ? 16 : p < 4 ? 4 : p; + } + + return tc; + } + private static String findNMSTag() { try @@ -253,7 +267,7 @@ public class Iris extends MortarPlugin public ChunkGenerator getDefaultWorldGenerator(String worldName, String id) { // @NoArgsConstructor - return createProvisionBukkit(IrisGenConfiguration.builder().threads(IrisSettings.get().threads).target(TerrainTarget.builder().environment(Environment.NORMAL).folder(new File(worldName)).name(worldName).seed(worldName.hashCode()).build()).build()); + return createProvisionBukkit(IrisGenConfiguration.builder().threads(getThreadCount()).target(TerrainTarget.builder().environment(Environment.NORMAL).folder(new File(worldName)).name(worldName).seed(worldName.hashCode()).build()).build()); //@done } diff --git a/src/main/java/com/volmit/iris/IrisSettings.java b/src/main/java/com/volmit/iris/IrisSettings.java index 0d88d4a11..6919f28d5 100644 --- a/src/main/java/com/volmit/iris/IrisSettings.java +++ b/src/main/java/com/volmit/iris/IrisSettings.java @@ -20,7 +20,7 @@ public class IrisSettings @DontObfuscate @Desc("Iris generator threads (must be 2 or higher). Threads in iris are not a perfect scale for performance as a lot of data has to be shared. 16 Threads is a good rule of thumb. Use 8 threads on a quad core processor.") - public int threads = 16; + public int forceThreadCount = -1; @DontObfuscate @Desc("The default world type incase iris doesnt have a dimension to use.") diff --git a/src/main/java/com/volmit/iris/command/CommandIrisCreate.java b/src/main/java/com/volmit/iris/command/CommandIrisCreate.java index 79432e6d0..d84ea18a6 100644 --- a/src/main/java/com/volmit/iris/command/CommandIrisCreate.java +++ b/src/main/java/com/volmit/iris/command/CommandIrisCreate.java @@ -8,7 +8,6 @@ import org.bukkit.WorldCreator; import org.bukkit.WorldType; import com.volmit.iris.Iris; -import com.volmit.iris.IrisSettings; import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.nms.NMSCreator; import com.volmit.iris.gen.provisions.ProvisionBukkit; @@ -56,13 +55,13 @@ public class CommandIrisCreate extends MortarCommand seed = i.startsWith("seed=") ? Long.valueOf(i.split("\\Q=\\E")[1]) : seed; pregen = i.startsWith("pregen=") ? Integer.parseInt(i.split("\\Q=\\E")[1]) : pregen; } - + IrisDimension dim = Iris.proj.installIntoWorld(sender, type, folder); //@builder ProvisionBukkit gen = Iris.instance.createProvisionBukkit( IrisGenConfiguration.builder() - .threads(IrisSettings.get().threads) + .threads(Iris.getThreadCount()) .dimension(dim.getLoadKey()) .target(TerrainTarget .builder() @@ -74,7 +73,7 @@ public class CommandIrisCreate extends MortarCommand ).build()); //@done - sender.sendMessage("Generating with " + IrisSettings.get().threads + " threads per chunk"); + sender.sendMessage("Generating with " + Iris.getThreadCount() + " threads per chunk"); O done = new O(); done.set(false); diff --git a/src/main/java/com/volmit/iris/gen/DimensionalTerrainProvider.java b/src/main/java/com/volmit/iris/gen/DimensionalTerrainProvider.java index 720a1ce64..14e177969 100644 --- a/src/main/java/com/volmit/iris/gen/DimensionalTerrainProvider.java +++ b/src/main/java/com/volmit/iris/gen/DimensionalTerrainProvider.java @@ -126,11 +126,6 @@ public abstract class DimensionalTerrainProvider extends ContextualTerrainProvid { IrisDimension d = loadDimension(getDimensionName()); - if(d == null) - { - Iris.error("Can't find dimension: " + getDimensionName()); - } - return d; } diff --git a/src/main/java/com/volmit/iris/gen/ParallaxTerrainProvider.java b/src/main/java/com/volmit/iris/gen/ParallaxTerrainProvider.java index 16ca78755..9f61e3b16 100644 --- a/src/main/java/com/volmit/iris/gen/ParallaxTerrainProvider.java +++ b/src/main/java/com/volmit/iris/gen/ParallaxTerrainProvider.java @@ -9,6 +9,7 @@ import org.bukkit.block.data.BlockData; import org.bukkit.entity.Player; import org.bukkit.generator.BlockPopulator; +import com.volmit.iris.Iris; import com.volmit.iris.IrisSettings; import com.volmit.iris.gen.atomics.AtomicSliver; import com.volmit.iris.gen.atomics.AtomicSliverMap; @@ -353,6 +354,16 @@ public abstract class ParallaxTerrainProvider extends TopographicTerrainProvider placeObject(k, i, j, random.nextParallelRNG((34 * ((i * 30) + (j * 30) + g++) * i * j) + i - j + 3566522)); } + if(r == null) + { + Iris.error("R Null"); + } + + if(r.getSurfaceObjects() == null) + { + Iris.error("Surface objects null"); + } + if(r != null) { for(IrisObjectPlacement k : r.getSurfaceObjects()) diff --git a/src/main/java/com/volmit/iris/gen/provisions/ProvisionBukkit.java b/src/main/java/com/volmit/iris/gen/provisions/ProvisionBukkit.java index dfdaea5d7..2c474e5de 100644 --- a/src/main/java/com/volmit/iris/gen/provisions/ProvisionBukkit.java +++ b/src/main/java/com/volmit/iris/gen/provisions/ProvisionBukkit.java @@ -15,7 +15,6 @@ import org.bukkit.generator.BlockPopulator; import org.bukkit.generator.ChunkGenerator; import com.volmit.iris.Iris; -import com.volmit.iris.IrisSettings; import com.volmit.iris.gen.IrisTerrainProvider; import com.volmit.iris.gen.scaffold.HeightedFakeWorld; import com.volmit.iris.gen.scaffold.Provisioned; @@ -38,7 +37,7 @@ public class ProvisionBukkit extends ChunkGenerator implements Provisioned private final TerrainProvider provider; private final KMap precache; private KList regenerated = new KList(); - private Executor e = Executors.newFixedThreadPool(IrisSettings.get().getThreads()); + private Executor e = Executors.newFixedThreadPool(Iris.getThreadCount()); private World cachedWorld; public ProvisionBukkit(TerrainProvider provider) diff --git a/src/main/java/com/volmit/iris/manager/IrisProject.java b/src/main/java/com/volmit/iris/manager/IrisProject.java index bc13d8a87..4cc3a0fa0 100644 --- a/src/main/java/com/volmit/iris/manager/IrisProject.java +++ b/src/main/java/com/volmit/iris/manager/IrisProject.java @@ -131,7 +131,7 @@ public class IrisProject //@builder ProvisionBukkit gen = Iris.instance .createProvisionBukkit(IrisGenConfiguration.builder() - .threads(IrisSettings.get().threads) + .threads(Iris.getThreadCount()) .dimension(getName()) .target(TerrainTarget.builder() .environment(d.getEnvironment()) @@ -144,7 +144,7 @@ public class IrisProject IrisTerrainProvider gx = (IrisTerrainProvider) gen.getProvider(); gx.setDev(true); - sender.sendMessage("Generating with " + IrisSettings.get().threads + " threads per chunk"); + sender.sendMessage("Generating with " + Iris.getThreadCount() + " threads per chunk"); O done = new O(); done.set(false); activeProvider = gx; diff --git a/src/main/java/com/volmit/iris/object/IrisRegion.java b/src/main/java/com/volmit/iris/object/IrisRegion.java index a8db01bdc..91107db6b 100644 --- a/src/main/java/com/volmit/iris/object/IrisRegion.java +++ b/src/main/java/com/volmit/iris/object/IrisRegion.java @@ -229,8 +229,8 @@ public class IrisRegion extends IrisRegistrant implements IRare @Desc("Generate rivers in this region") private double riverThickness = 0.1; - private final transient AtomicCache> surfaceObjectsCache = new AtomicCache<>(true); - private final transient AtomicCache> carveObjectsCache = new AtomicCache<>(true); + private final transient AtomicCache> surfaceObjectsCache = new AtomicCache<>(); + private final transient AtomicCache> carveObjectsCache = new AtomicCache<>(); private final transient AtomicCache> cacheRidge = new AtomicCache<>(); private final transient AtomicCache> cacheSpot = new AtomicCache<>(); private final transient AtomicCache shoreHeightGenerator = new AtomicCache<>(); @@ -412,7 +412,7 @@ public class IrisRegion extends IrisRegistrant implements IRare { continue; } - + names.add(biome.getCarvingBiome()); b.put(biome.getLoadKey(), biome); names.addAll(biome.getChildren()); diff --git a/src/main/java/com/volmit/iris/util/ResourceLoader.java b/src/main/java/com/volmit/iris/util/ResourceLoader.java index 08c2e9a39..97827fa8d 100644 --- a/src/main/java/com/volmit/iris/util/ResourceLoader.java +++ b/src/main/java/com/volmit/iris/util/ResourceLoader.java @@ -185,7 +185,7 @@ public class ResourceLoader } } - if(warn) + if(warn && !resourceTypeName.equals("Dimension")) { J.a(() -> Iris.warn("Couldn't find " + resourceTypeName + ": " + name)); }