Standalone Schematic Node Impl #171
@ -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;
|
||||
|
@ -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;
|
||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
|
||||
|
@ -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() {
|
||||
|
@ -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<Integer, List<SchematicNode>> nodesByParent = new HashMap<>();
|
||||
private final Map<Integer, Path> nodesToPath = new HashMap<>();
|
||||
Chaoscaot markierte diese Unterhaltung als gelöst
Lixfel
hat
WTF? Fehlt da nicht ein static? Oder funktioniert das auch für normale Konstruktoren? WTF? Fehlt da nicht ein static? Oder funktioniert das auch für normale Konstruktoren?
YoyoNow
hat
Das funktioniert auch so. Das funktioniert auch so.
|
||||
|
||||
{
|
||||
nodesToPath.put(-1, schematicDir.toPath());
|
||||
}
|
||||
|
||||
private List<SchematicNode> mapDir(Integer id) {
|
||||
try (Stream<Path> stream = Files.list(id==null?schematicDir.toPath():nodesToPath.get(id))) {
|
||||
List<SchematicNode> 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())));
|
||||
}
|
||||
|
||||
Chaoscaot markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Ich glaube, hier musst du noch einen new GZipInputStream drumherum packen, bitte einmal überprüfen, ob das danach noch gemacht wird oder nicht! Ich glaube, hier musst du noch einen new GZipInputStream drumherum packen, bitte einmal überprüfen, ob das danach noch gemacht wird oder nicht!
|
||||
@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;
|
||||
|
||||
Chaoscaot markierte diese Unterhaltung als gelöst
Lixfel
hat
Wie wäre es stattdessen einfach mit einem FileOutputStream? Wie wäre es stattdessen einfach mit einem FileOutputStream?
|
||||
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);
|
||||
}
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren
Code schaut absolut gleich aus (auch voraussichtlich mit gleichen Klassenstellen): D.h. keine Versionsabhängige Unterscheidung notwendig! (Bitte ausbauen, Komplexitätsverringerung)