diff --git a/src/main/java/com/volmit/iris/gen/ParallaxTerrainProvider.java b/src/main/java/com/volmit/iris/gen/ParallaxTerrainProvider.java index 82d7f3457..8b6748667 100644 --- a/src/main/java/com/volmit/iris/gen/ParallaxTerrainProvider.java +++ b/src/main/java/com/volmit/iris/gen/ParallaxTerrainProvider.java @@ -173,6 +173,20 @@ public abstract class ParallaxTerrainProvider extends TopographicTerrainProvider { try { + if(getParallaxMap() == null) + { + if(getTarget() == null) + { + Iris.warn("Parallax map was accessed before init! Serving a dummy chunk!"); + return new AtomicSliverMap(); + } + + else + { + setParallaxMap(new AtomicWorldData(getTarget())); + } + } + return getParallaxMap().loadChunk(x, z); } diff --git a/src/main/java/com/volmit/iris/manager/ConversionManager.java b/src/main/java/com/volmit/iris/manager/ConversionManager.java index ca42f6ebd..bb9e8f3bb 100644 --- a/src/main/java/com/volmit/iris/manager/ConversionManager.java +++ b/src/main/java/com/volmit/iris/manager/ConversionManager.java @@ -1,26 +1,17 @@ package com.volmit.iris.manager; import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.IOException; import org.bukkit.Bukkit; import com.minelazz.epicworldgenerator.structures.StructureObject; -import com.sk89q.worldedit.bukkit.BukkitAdapter; -import com.sk89q.worldedit.extent.clipboard.Clipboard; -import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat; -import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats; -import com.sk89q.worldedit.extent.clipboard.io.ClipboardReader; -import com.sk89q.worldedit.math.BlockVector3; import com.volmit.iris.Iris; -import com.volmit.iris.object.IrisObject; import com.volmit.iris.util.Converter; -import com.volmit.iris.util.FastBlockData; import com.volmit.iris.util.J; import com.volmit.iris.util.KList; import com.volmit.iris.util.MortarSender; +import com.volmit.iris.util.SKConversion; public class ConversionManager { @@ -34,50 +25,53 @@ public class ConversionManager J.s(() -> { - if(Bukkit.getPluginManager().isPluginEnabled("WorldEdit")) + J.attemptAsync(() -> { - converters.add(new Converter() + if(Bukkit.getPluginManager().isPluginEnabled("WorldEdit")) { - @Override - public String getOutExtension() + converters.add(new Converter() { - return "iob"; - } + @Override + public String getOutExtension() + { + return "iob"; + } - @Override - public String getInExtension() - { - return "schem"; - } + @Override + public String getInExtension() + { + return "schem"; + } - @Override - public void convert(File in, File out) - { - convertSchematic(in, out); - } - }); + @Override + public void convert(File in, File out) + { + SKConversion.convertSchematic(in, out); + } + }); - converters.add(new Converter() - { - @Override - public String getOutExtension() + converters.add(new Converter() { - return "iob"; - } + @Override + public String getOutExtension() + { + return "iob"; + } - @Override - public String getInExtension() - { - return "schematic"; - } + @Override + public String getInExtension() + { + return "schematic"; + } - @Override - public void convert(File in, File out) - { - convertSchematic(in, out); - } - }); - } + @Override + public void convert(File in, File out) + { + SKConversion.convertSchematic(in, out); + } + }); + } + }); }, 5); converters.add(new Converter() @@ -110,38 +104,6 @@ public class ConversionManager }); } - public void convertSchematic(File in, File out) - { - ClipboardFormat format = ClipboardFormats.findByFile(in); - try(ClipboardReader reader = format.getReader(new FileInputStream(in))) - { - Clipboard clipboard = reader.read(); - BlockVector3 size = clipboard.getMaximumPoint().subtract(clipboard.getMinimumPoint()); - IrisObject o = new IrisObject(size.getBlockX() + 1, size.getBlockY() + 1, size.getBlockZ() + 1); - - for(int i = clipboard.getMinimumPoint().getBlockX(); i <= clipboard.getMaximumPoint().getBlockX(); i++) - { - for(int j = clipboard.getMinimumPoint().getBlockY(); j <= clipboard.getMaximumPoint().getBlockY(); j++) - { - for(int k = clipboard.getMinimumPoint().getBlockZ(); k <= clipboard.getMaximumPoint().getBlockZ(); k++) - { - o.setUnsigned(i - clipboard.getMinimumPoint().getBlockX(), j - clipboard.getMinimumPoint().getBlockY(), k - clipboard.getMinimumPoint().getBlockZ(), FastBlockData.of(BukkitAdapter.adapt(clipboard.getFullBlock(BlockVector3.at(i, j, k))))); - } - } - } - - o.write(out); - } - catch(FileNotFoundException e) - { - e.printStackTrace(); - } - catch(IOException e) - { - e.printStackTrace(); - } - } - public void check(MortarSender s) { int m = 0; diff --git a/src/main/java/com/volmit/iris/util/SKConversion.java b/src/main/java/com/volmit/iris/util/SKConversion.java new file mode 100644 index 000000000..5a94a183c --- /dev/null +++ b/src/main/java/com/volmit/iris/util/SKConversion.java @@ -0,0 +1,49 @@ +package com.volmit.iris.util; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; + +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldedit.extent.clipboard.Clipboard; +import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat; +import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats; +import com.sk89q.worldedit.extent.clipboard.io.ClipboardReader; +import com.sk89q.worldedit.math.BlockVector3; +import com.volmit.iris.object.IrisObject; + +public class SKConversion +{ + public static void convertSchematic(File in, File out) + { + ClipboardFormat format = ClipboardFormats.findByFile(in); + try(ClipboardReader reader = format.getReader(new FileInputStream(in))) + { + Clipboard clipboard = reader.read(); + BlockVector3 size = clipboard.getMaximumPoint().subtract(clipboard.getMinimumPoint()); + IrisObject o = new IrisObject(size.getBlockX() + 1, size.getBlockY() + 1, size.getBlockZ() + 1); + + for(int i = clipboard.getMinimumPoint().getBlockX(); i <= clipboard.getMaximumPoint().getBlockX(); i++) + { + for(int j = clipboard.getMinimumPoint().getBlockY(); j <= clipboard.getMaximumPoint().getBlockY(); j++) + { + for(int k = clipboard.getMinimumPoint().getBlockZ(); k <= clipboard.getMaximumPoint().getBlockZ(); k++) + { + o.setUnsigned(i - clipboard.getMinimumPoint().getBlockX(), j - clipboard.getMinimumPoint().getBlockY(), k - clipboard.getMinimumPoint().getBlockZ(), FastBlockData.of(BukkitAdapter.adapt(clipboard.getFullBlock(BlockVector3.at(i, j, k))))); + } + } + } + + o.write(out); + } + catch(FileNotFoundException e) + { + e.printStackTrace(); + } + catch(IOException e) + { + e.printStackTrace(); + } + } +}