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));
}