mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-25 06:36:44 +01:00
Fix #3127
This commit is contained in:
parent
da3fb1abec
commit
8e5e33eec2
@ -139,7 +139,7 @@ public class Download extends SubCommand {
|
|||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
player.sendMessage(TranslatableCaption.of("web.generation_link_success"), Template.of("url", url.toString()));
|
player.sendMessage(TranslatableCaption.of("web.generation_link_success_legacy_world"), Template.of("url", url.toString()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -28,7 +28,6 @@ package com.plotsquared.core.util;
|
|||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author DPOH-VAR
|
* @author DPOH-VAR
|
||||||
@ -52,18 +51,6 @@ public class ReflectionUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static <T, V> Map<T, V> getMap(Map<T, V> map) {
|
|
||||||
try {
|
|
||||||
Class<? extends Map> clazz = map.getClass();
|
|
||||||
Field m = clazz.getDeclaredField("m");
|
|
||||||
m.setAccessible(true);
|
|
||||||
return (Map<T, V>) m.get(map);
|
|
||||||
} catch (Throwable e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
return map;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Class<?> getClass(String name) {
|
public static Class<?> getClass(String name) {
|
||||||
try {
|
try {
|
||||||
return Class.forName(name);
|
return Class.forName(name);
|
||||||
|
@ -55,6 +55,7 @@ import java.io.IOException;
|
|||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -245,7 +246,7 @@ public abstract class WorldUtil {
|
|||||||
final @Nullable String file,
|
final @Nullable String file,
|
||||||
final @NonNull RunnableVal<URL> whenDone
|
final @NonNull RunnableVal<URL> whenDone
|
||||||
) {
|
) {
|
||||||
plot.getHome(home -> SchematicHandler.upload(uuid, file, "zip", new RunnableVal<OutputStream>() {
|
plot.getHome(home -> SchematicHandler.upload(uuid, file, "zip", new RunnableVal<>() {
|
||||||
@Override
|
@Override
|
||||||
public void run(OutputStream output) {
|
public void run(OutputStream output) {
|
||||||
try (final ZipOutputStream zos = new ZipOutputStream(output)) {
|
try (final ZipOutputStream zos = new ZipOutputStream(output)) {
|
||||||
@ -255,16 +256,23 @@ public abstract class WorldUtil {
|
|||||||
ZipEntry ze = new ZipEntry("world" + File.separator + dat.getName());
|
ZipEntry ze = new ZipEntry("world" + File.separator + dat.getName());
|
||||||
zos.putNextEntry(ze);
|
zos.putNextEntry(ze);
|
||||||
try (NBTInputStream nis = new NBTInputStream(new GZIPInputStream(new FileInputStream(dat)))) {
|
try (NBTInputStream nis = new NBTInputStream(new GZIPInputStream(new FileInputStream(dat)))) {
|
||||||
CompoundTag tag = (CompoundTag) nis.readNamedTag().getTag();
|
Map<String, Tag> tag = ((CompoundTag) nis.readNamedTag().getTag()).getValue();
|
||||||
CompoundTag data = (CompoundTag) tag.getValue().get("Data");
|
Map<String, Tag> newMap = new HashMap<>();
|
||||||
Map<String, Tag> map = ReflectionUtils.getMap(data.getValue());
|
for (Map.Entry<String, Tag> entry : tag.entrySet()) {
|
||||||
map.put("SpawnX", new IntTag(home.getX()));
|
if (!entry.getKey().equals("Data")) {
|
||||||
map.put("SpawnY", new IntTag(home.getY()));
|
newMap.put(entry.getKey(), entry.getValue());
|
||||||
map.put("SpawnZ", new IntTag(home.getZ()));
|
continue;
|
||||||
|
}
|
||||||
|
Map<String, Tag> data = new HashMap<>(((CompoundTag) entry.getValue()).getValue());
|
||||||
|
data.put("SpawnX", new IntTag(home.getX()));
|
||||||
|
data.put("SpawnY", new IntTag(home.getY()));
|
||||||
|
data.put("SpawnZ", new IntTag(home.getZ()));
|
||||||
|
newMap.put("Data", new CompoundTag(data));
|
||||||
|
}
|
||||||
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
|
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
|
||||||
try (NBTOutputStream out = new NBTOutputStream(new GZIPOutputStream(baos, true))) {
|
try (NBTOutputStream out = new NBTOutputStream(new GZIPOutputStream(baos, true))) {
|
||||||
//TODO Find what this should be called
|
//TODO Find what this should be called
|
||||||
out.writeNamedTag("Schematic????", tag);
|
out.writeNamedTag("Schematic????", new CompoundTag(newMap));
|
||||||
}
|
}
|
||||||
zos.write(baos.toByteArray());
|
zos.write(baos.toByteArray());
|
||||||
}
|
}
|
||||||
@ -272,6 +280,7 @@ public abstract class WorldUtil {
|
|||||||
}
|
}
|
||||||
setSpawn(spawn);
|
setSpawn(spawn);
|
||||||
byte[] buffer = new byte[1024];
|
byte[] buffer = new byte[1024];
|
||||||
|
Set<BlockVector2> added = new HashSet<>();
|
||||||
for (Plot current : plot.getConnectedPlots()) {
|
for (Plot current : plot.getConnectedPlots()) {
|
||||||
Location bot = current.getBottomAbs();
|
Location bot = current.getBottomAbs();
|
||||||
Location top = current.getTopAbs();
|
Location top = current.getTopAbs();
|
||||||
@ -281,13 +290,14 @@ public abstract class WorldUtil {
|
|||||||
int trz = top.getZ() >> 9;
|
int trz = top.getZ() >> 9;
|
||||||
Set<BlockVector2> files = getChunkChunks(bot.getWorldName());
|
Set<BlockVector2> files = getChunkChunks(bot.getWorldName());
|
||||||
for (BlockVector2 mca : files) {
|
for (BlockVector2 mca : files) {
|
||||||
if (mca.getX() >= brx && mca.getX() <= trx && mca.getZ() >= brz && mca.getZ() <= trz) {
|
if (mca.getX() >= brx && mca.getX() <= trx && mca.getZ() >= brz && mca.getZ() <= trz && !added.contains(mca)) {
|
||||||
final File file = getMcr(plot.getWorldName(), mca.getX(), mca.getZ());
|
final File file = getMcr(plot.getWorldName(), mca.getX(), mca.getZ());
|
||||||
if (file != null) {
|
if (file != null) {
|
||||||
//final String name = "r." + (x - cx) + "." + (z - cz) + ".mca";
|
//final String name = "r." + (x - cx) + "." + (z - cz) + ".mca";
|
||||||
String name = file.getName();
|
String name = file.getName();
|
||||||
final ZipEntry ze = new ZipEntry("world" + File.separator + "region" + File.separator + name);
|
final ZipEntry ze = new ZipEntry("world" + File.separator + "region" + File.separator + name);
|
||||||
zos.putNextEntry(ze);
|
zos.putNextEntry(ze);
|
||||||
|
added.add(mca);
|
||||||
try (FileInputStream in = new FileInputStream(file)) {
|
try (FileInputStream in = new FileInputStream(file)) {
|
||||||
int len;
|
int len;
|
||||||
while ((len = in.read(buffer)) > 0) {
|
while ((len = in.read(buffer)) > 0) {
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
"web.plot_merged": "<prefix><red>This plot is merged and therefore cannot be downloaded</red>",
|
"web.plot_merged": "<prefix><red>This plot is merged and therefore cannot be downloaded</red>",
|
||||||
"web.generating_link_failed": "<prefix><red>Failed to generate download link for plot <plot>!</red>",
|
"web.generating_link_failed": "<prefix><red>Failed to generate download link for plot <plot>!</red>",
|
||||||
"web.generation_link_success": "<prefix><gold>Download: <gray><click:open_url:<download>><download></click></gray> \n Deletion: <gray><click:open_url:<delete>><delete></click></gray>\n<red>Attention: Opening the deletion link will delete the file immediately.</red></gold>",
|
"web.generation_link_success": "<prefix><gold>Download: <gray><click:open_url:<download>><download></click></gray> \n Deletion: <gray><click:open_url:<delete>><delete></click></gray>\n<red>Attention: Opening the deletion link will delete the file immediately.</red></gold>",
|
||||||
|
"web.generation_link_success_legacy_world": "<prefix><gold>Download: <gray><click:open_url:<url>><url></click></gray>",
|
||||||
"web.save_failed": "<prefix><red>Failed to save.</red>",
|
"web.save_failed": "<prefix><red>Failed to save.</red>",
|
||||||
"web.load_null": "<prefix><gray>Please use </gray><dark_aqua><command> </dark_aqua><gray>to get a list of schematics.</gray>",
|
"web.load_null": "<prefix><gray>Please use </gray><dark_aqua><command> </dark_aqua><gray>to get a list of schematics.</gray>",
|
||||||
"web.load_failed": "<prefix><red>Failed to load schematic.</red>",
|
"web.load_failed": "<prefix><red>Failed to load schematic.</red>",
|
||||||
|
Loading…
Reference in New Issue
Block a user