diff --git a/SpigotCore_14/src/de/steamwar/core/WorldEditWrapper14.java b/SpigotCore_14/src/de/steamwar/core/WorldEditWrapper14.java index 78a6be9..f23e7fc 100644 --- a/SpigotCore_14/src/de/steamwar/core/WorldEditWrapper14.java +++ b/SpigotCore_14/src/de/steamwar/core/WorldEditWrapper14.java @@ -115,11 +115,6 @@ public class WorldEditWrapper14 implements WorldEditWrapper.IWorldEditWrapper { } } - @Override - public File getWorldEditSchematicFolder() { - return WorldEditWrapper.getWorldEditPlugin().getWorldEdit().getWorkingDirectoryFile(WorldEditWrapper.getWorldEditPlugin().getWorldEdit().getConfiguration().saveDir); - } - private static class MCEditSchematicReader extends NBTSchematicReader { private final NBTInputStream inputStream; diff --git a/SpigotCore_8/src/de/steamwar/core/WorldEditWrapper8.java b/SpigotCore_8/src/de/steamwar/core/WorldEditWrapper8.java index d08383f..2b1cb0e 100644 --- a/SpigotCore_8/src/de/steamwar/core/WorldEditWrapper8.java +++ b/SpigotCore_8/src/de/steamwar/core/WorldEditWrapper8.java @@ -88,11 +88,6 @@ public class WorldEditWrapper8 implements WorldEditWrapper.IWorldEditWrapper { return new SchematicReader(new NBTInputStream(is)).read(WorldEdit.getInstance().getServer().getWorlds().get(0).getWorldData()); } - @Override - public File getWorldEditSchematicFolder() { - return WorldEditWrapper.getWorldEditPlugin().getWorldEdit().getWorkingDirectoryFile(WorldEditWrapper.getWorldEditPlugin().getWorldEdit().getConfiguration().saveDir); - } - private static class SpongeSchematicReader implements ClipboardReader { private final NBTInputStream inputStream; diff --git a/SpigotCore_Main/src/de/steamwar/core/WorldEditWrapper.java b/SpigotCore_Main/src/de/steamwar/core/WorldEditWrapper.java index 8cb80e4..58d5ee1 100644 --- a/SpigotCore_Main/src/de/steamwar/core/WorldEditWrapper.java +++ b/SpigotCore_Main/src/de/steamwar/core/WorldEditWrapper.java @@ -18,7 +18,9 @@ public class WorldEditWrapper { InputStream getPlayerClipboard(Player player, boolean schemFormat); void setPlayerClipboard(Player player, InputStream is, boolean schemFormat); Clipboard getClipboard(InputStream is, boolean schemFormat) throws IOException; - File getWorldEditSchematicFolder(); + default File getWorldEditSchematicFolder() { + return WorldEditWrapper.getWorldEditPlugin().getWorldEdit().getWorkingDirectoryFile(WorldEditWrapper.getWorldEditPlugin().getWorldEdit().getConfiguration().saveDir); + } } static WorldEditPlugin getWorldEditPlugin() { diff --git a/SpigotCore_Main/src/de/steamwar/sql/StandaloneProvider.java b/SpigotCore_Main/src/de/steamwar/sql/StandaloneProvider.java index 4b6cde9..97f810a 100644 --- a/SpigotCore_Main/src/de/steamwar/sql/StandaloneProvider.java +++ b/SpigotCore_Main/src/de/steamwar/sql/StandaloneProvider.java @@ -25,10 +25,7 @@ import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; +import java.io.*; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; @@ -38,8 +35,13 @@ import java.util.*; import java.util.function.Consumer; import java.util.stream.Collectors; import java.util.stream.Stream; +import java.util.zip.GZIPInputStream; public class StandaloneProvider implements Provider { + public StandaloneProvider() { + nodesToPath.put(-1, schematicDir.toPath()); + } + @Override public BauweltMember getBauMember(int ownerID, int memberID) { OfflinePlayer player = Bukkit.getOfflinePlayer(SteamwarUser.get(memberID).getUUID()); @@ -206,10 +208,6 @@ public class StandaloneProvider implements Provider { private final Map> nodesByParent = new HashMap<>(); private final Map nodesToPath = new HashMap<>(); - { - nodesToPath.put(-1, schematicDir.toPath()); - } - private List mapDir(Integer id) { try (Stream stream = Files.list(id==null?schematicDir.toPath():nodesToPath.get(id))) { List list = stream.map(path -> { @@ -342,22 +340,18 @@ public class StandaloneProvider implements Provider { @Override public InputStream getSchematicData(SchematicNode node) throws IOException { - return Files.newInputStream(nodesToPath.get(node.getId())); + return new GZIPInputStream(Files.newInputStream(nodesToPath.get(node.getId()))); } @Override public void saveSchematicNode(SchematicNode node, InputStream blob, boolean newFormat) { - try { - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + try (FileOutputStream stream = new FileOutputStream(nodesToPath.get(node.getId()).toFile())) { byte[] bucket = new byte[1024]; int nReadBytes; while((nReadBytes = blob.read(bucket, 0, bucket.length)) !=-1){ - byteArrayOutputStream.write(bucket, 0, nReadBytes); + stream.write(bucket, 0, nReadBytes); } - - byte[] bytes = byteArrayOutputStream.toByteArray(); - Files.write(nodesToPath.get(node.getId()), bytes, StandardOpenOption.TRUNCATE_EXISTING); } catch (IOException e) { throw new SecurityException(e); }