diff --git a/src/main/java/com/volmit/iris/engine/IrisEngine.java b/src/main/java/com/volmit/iris/engine/IrisEngine.java index d8f06649d..e6e20bfcf 100644 --- a/src/main/java/com/volmit/iris/engine/IrisEngine.java +++ b/src/main/java/com/volmit/iris/engine/IrisEngine.java @@ -122,7 +122,6 @@ public class IrisEngine extends BlockPopulator implements Engine { lastGPS = new AtomicLong(M.ms()); generated = new AtomicInteger(0); execution = new IrisExecutionEnvironment(this); - mantle = new IrisEngineMantle(this); // TODO: HEIGHT ------------------------------------------------------------------------------------------------------> Iris.info("Initializing Engine: " + target.getWorld().name() + "/" + target.getDimension().getLoadKey() + " (" + 256+ " height)"); metrics = new EngineMetrics(32); @@ -151,7 +150,7 @@ public class IrisEngine extends BlockPopulator implements Engine { cleaning = new AtomicBoolean(false); cleanLatch = new ChronoLatch(Math.max(10000, Math.min(IrisSettings.get().getParallax() .getParallaxChunkEvictionMS(), IrisSettings.get().getParallax().getParallaxRegionEvictionMS()))); - + mantle = new IrisEngineMantle(this); } @Override @@ -329,14 +328,16 @@ public class IrisEngine extends BlockPopulator implements Engine { cleaning.set(true); - try { - getMantle().trim(); - getData().getObjectLoader().clean(); - } catch (Throwable e) { - Iris.reportError(e); - Iris.error("Cleanup failed!"); - e.printStackTrace(); - } + J.a(() -> { + try { + getMantle().trim(); + getData().getObjectLoader().clean(); + } catch (Throwable e) { + Iris.reportError(e); + Iris.error("Cleanup failed!"); + e.printStackTrace(); + } + }); cleaning.lazySet(false); } @@ -388,6 +389,7 @@ public class IrisEngine extends BlockPopulator implements Engine { getMetrics().getTotal().put(p.getMilliseconds()); generated.incrementAndGet(); + recycle(); } catch (Throwable e) { Iris.reportError(e); fail("Failed to generate " + x + ", " + z, e); diff --git a/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java b/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java index 4c3120b6a..f051e5f9c 100644 --- a/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java +++ b/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java @@ -51,7 +51,6 @@ import java.util.Random; import java.util.concurrent.atomic.AtomicBoolean; public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChunkGenerator { - private static final BlockData ERROR_BLOCK = Material.RED_GLAZED_TERRACOTTA.createBlockData(); private final EngineProvider provider; private final IrisWorld world; private final File dataLocation; @@ -150,7 +149,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun for (int i = 0; i < 16; i++) { for (int j = 0; j < 16; j++) { - d.setBlock(i, 0, j, ERROR_BLOCK); + d.setBlock(i, 0, j, Material.RED_GLAZED_TERRACOTTA.createBlockData()); } } diff --git a/src/main/java/com/volmit/iris/engine/platform/EngineProvider.java b/src/main/java/com/volmit/iris/engine/platform/EngineProvider.java index c3996af3f..76c70ed23 100644 --- a/src/main/java/com/volmit/iris/engine/platform/EngineProvider.java +++ b/src/main/java/com/volmit/iris/engine/platform/EngineProvider.java @@ -54,14 +54,21 @@ public class EngineProvider { public Engine getEngine() { try { - return engine.get().get(); + Engine e = engine.get().get(); + + if(e == null) + { + throw new RuntimeException("NULL"); + } + + return e; } catch (InterruptedException e) { e.printStackTrace(); + throw new RuntimeException("INTERRUPTED"); } catch (ExecutionException e) { e.printStackTrace(); + throw new RuntimeException("EXECUTION ERROR"); } - - return null; } public void close() {