SteamWar/SpigotCore
Archiviert
13
0

Standalone Schematic Node Impl #171

Zusammengeführt
Lixfel hat 3 Commits von standalone_schematicsystem nach standalone 2022-02-11 22:02:03 +01:00 zusammengeführt
4 geänderte Dateien mit 12 neuen und 26 gelöschten Zeilen
Nur Änderungen aus Commit bc1f268022 werden angezeigt - Alle Commits anzeigen

Datei anzeigen

@ -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;

Datei anzeigen

@ -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
Veraltet
Review

Code schaut absolut gleich aus (auch voraussichtlich mit gleichen Klassenstellen): D.h. keine Versionsabhängige Unterscheidung notwendig! (Bitte ausbauen, Komplexitätsverringerung)

Code schaut absolut gleich aus (auch voraussichtlich mit gleichen Klassenstellen): D.h. keine Versionsabhängige Unterscheidung notwendig! (Bitte ausbauen, Komplexitätsverringerung)

Datei anzeigen

@ -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() {

Datei anzeigen

@ -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
Review

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?
Review

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
Veraltet
Review

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
Review

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