mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-06-25 10:14:42 +02:00
Fix some issues I caused with Guice
This commit is contained in:
@ -33,6 +33,7 @@ import com.plotsquared.core.plot.world.PlotAreaManager;
|
||||
import com.plotsquared.core.util.MainUtil;
|
||||
import com.plotsquared.core.util.RegionManager;
|
||||
import com.plotsquared.core.util.StringMan;
|
||||
import com.plotsquared.core.util.WorldUtil;
|
||||
import com.plotsquared.core.util.entity.EntityCategories;
|
||||
import com.plotsquared.core.util.entity.EntityCategory;
|
||||
import com.plotsquared.core.util.query.PlotQuery;
|
||||
@ -57,12 +58,12 @@ public class Debug extends SubCommand {
|
||||
private static final Logger logger = LoggerFactory.getLogger("P2/" + Debug.class.getSimpleName());
|
||||
|
||||
private final PlotAreaManager plotAreaManager;
|
||||
private final RegionManager regionManager;
|
||||
private final WorldUtil worldUtil;
|
||||
|
||||
@Inject public Debug(@Nonnull final PlotAreaManager plotAreaManager,
|
||||
@Nonnull final RegionManager regionManager) {
|
||||
@Nonnull final WorldUtil worldUtil) {
|
||||
this.plotAreaManager = plotAreaManager;
|
||||
this.regionManager = regionManager;
|
||||
this.worldUtil = worldUtil;
|
||||
}
|
||||
|
||||
@Override public boolean onCommand(PlotPlayer<?> player, String[] args) {
|
||||
@ -78,7 +79,7 @@ public class Debug extends SubCommand {
|
||||
final long start = System.currentTimeMillis();
|
||||
MainUtil.sendMessage(player, "Fetching loaded chunks...");
|
||||
TaskManager.runTaskAsync(() -> MainUtil.sendMessage(player,
|
||||
"Loaded chunks: " + this.regionManager.getChunkChunks(player.getLocation().getWorldName()).size() + "(" + (
|
||||
"Loaded chunks: " + this.worldUtil.getChunkChunks(player.getLocation().getWorldName()).size() + "(" + (
|
||||
System.currentTimeMillis() - start) + "ms) using thread: " + Thread
|
||||
.currentThread().getName()));
|
||||
return true;
|
||||
|
@ -98,7 +98,7 @@ public class Trim extends SubCommand {
|
||||
if (ExpireManager.IMP != null) {
|
||||
plots.removeAll(ExpireManager.IMP.getPendingExpired());
|
||||
}
|
||||
result.value1 = new HashSet<>(PlotSquared.platform().getRegionManager().getChunkChunks(world));
|
||||
result.value1 = new HashSet<>(PlotSquared.platform().getWorldUtil().getChunkChunks(world));
|
||||
result.value2 = new HashSet<>();
|
||||
MainUtil.sendMessage(null, " - MCA #: " + result.value1.size());
|
||||
MainUtil.sendMessage(null, " - CHUNKS: " + (result.value1.size() * 1024) + " (max)");
|
||||
|
@ -406,7 +406,7 @@ public class HybridUtils {
|
||||
return false;
|
||||
}
|
||||
HybridUtils.UPDATE = true;
|
||||
Set<BlockVector2> regions = this.regionManager.getChunkChunks(area.getWorldName());
|
||||
Set<BlockVector2> regions = this.worldUtil.getChunkChunks(area.getWorldName());
|
||||
return scheduleRoadUpdate(area, regions, extend, new HashSet<>());
|
||||
}
|
||||
|
||||
|
@ -78,31 +78,6 @@ public abstract class RegionManager {
|
||||
*/
|
||||
public abstract int[] countEntities(Plot plot);
|
||||
|
||||
public Set<BlockVector2> getChunkChunks(String world) {
|
||||
File folder =
|
||||
new File(PlotSquared.platform().getWorldContainer(), world + File.separator + "region");
|
||||
File[] regionFiles = folder.listFiles();
|
||||
if (regionFiles == null) {
|
||||
throw new RuntimeException(
|
||||
"Could not find worlds folder: " + folder + " ? (no read access?)");
|
||||
}
|
||||
HashSet<BlockVector2> chunks = new HashSet<>();
|
||||
for (File file : regionFiles) {
|
||||
String name = file.getName();
|
||||
if (name.endsWith("mca")) {
|
||||
String[] split = name.split("\\.");
|
||||
try {
|
||||
int x = Integer.parseInt(split[1]);
|
||||
int z = Integer.parseInt(split[2]);
|
||||
BlockVector2 loc = BlockVector2.at(x, z);
|
||||
chunks.add(loc);
|
||||
} catch (NumberFormatException ignored) {
|
||||
}
|
||||
}
|
||||
}
|
||||
return chunks;
|
||||
}
|
||||
|
||||
public void deleteRegionFiles(final String world, final Collection<BlockVector2> chunks,
|
||||
final Runnable whenDone) {
|
||||
TaskManager.runTaskAsync(() -> {
|
||||
|
@ -53,6 +53,7 @@ import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.net.URL;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
@ -65,20 +66,14 @@ import java.util.zip.ZipOutputStream;
|
||||
|
||||
public abstract class WorldUtil {
|
||||
|
||||
private final RegionManager regionManager;
|
||||
|
||||
public WorldUtil(@Nonnull final RegionManager regionManager) {
|
||||
this.regionManager = regionManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the biome in a region
|
||||
*
|
||||
* @param world World name
|
||||
* @param p1x Min X
|
||||
* @param p1z Min Z
|
||||
* @param p2x Max X
|
||||
* @param p2z Max Z
|
||||
* @param p1x Min X
|
||||
* @param p1z Min Z
|
||||
* @param p2x Max X
|
||||
* @param p2z Max Z
|
||||
* @param biome Biome
|
||||
*/
|
||||
public static void setBiome(String world, int p1x, int p1z, int p2x, int p2z, BiomeType biome) {
|
||||
@ -196,8 +191,8 @@ public abstract class WorldUtil {
|
||||
* @return Result
|
||||
* @deprecated Use {@link #getHighestBlock(String, int, int, IntConsumer)}
|
||||
*/
|
||||
@Deprecated @Nonnegative
|
||||
public abstract int getHighestBlockSynchronous(@Nonnull String world, int x, int z);
|
||||
@Deprecated @Nonnegative public abstract int getHighestBlockSynchronous(@Nonnull String world,
|
||||
int x, int z);
|
||||
|
||||
/**
|
||||
* Set the text in a sign
|
||||
@ -232,81 +227,82 @@ public abstract class WorldUtil {
|
||||
/**
|
||||
* Refresh (resend) chunk to player. Usually after setting the biome
|
||||
*
|
||||
* @param x Chunk x location
|
||||
* @param z Chunk z location
|
||||
* @param x Chunk x location
|
||||
* @param z Chunk z location
|
||||
* @param world World of the chunk
|
||||
*/
|
||||
public abstract void refreshChunk(int x, int z, String world);
|
||||
|
||||
public void upload(@Nonnull final Plot plot, @Nullable final UUID uuid,
|
||||
@Nullable final String file, @Nonnull final RunnableVal<URL> whenDone) {
|
||||
plot.getHome(home -> SchematicHandler.upload(uuid, file, "zip", new RunnableVal<OutputStream>() {
|
||||
@Override public void run(OutputStream output) {
|
||||
try (final ZipOutputStream zos = new ZipOutputStream(output)) {
|
||||
File dat = getDat(plot.getWorldName());
|
||||
Location spawn = getSpawn(plot.getWorldName());
|
||||
if (dat != null) {
|
||||
ZipEntry ze = new ZipEntry("world" + File.separator + dat.getName());
|
||||
zos.putNextEntry(ze);
|
||||
try (NBTInputStream nis = new NBTInputStream(
|
||||
new GZIPInputStream(new FileInputStream(dat)))) {
|
||||
CompoundTag tag = (CompoundTag) nis.readNamedTag().getTag();
|
||||
CompoundTag data = (CompoundTag) tag.getValue().get("Data");
|
||||
Map<String, Tag> map = ReflectionUtils.getMap(data.getValue());
|
||||
map.put("SpawnX", new IntTag(home.getX()));
|
||||
map.put("SpawnY", new IntTag(home.getY()));
|
||||
map.put("SpawnZ", new IntTag(home.getZ()));
|
||||
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
|
||||
try (NBTOutputStream out = new NBTOutputStream(
|
||||
new GZIPOutputStream(baos, true))) {
|
||||
//TODO Find what this should be called
|
||||
out.writeNamedTag("Schematic????", tag);
|
||||
}
|
||||
zos.write(baos.toByteArray());
|
||||
}
|
||||
}
|
||||
}
|
||||
setSpawn(spawn);
|
||||
byte[] buffer = new byte[1024];
|
||||
for (Plot current : plot.getConnectedPlots()) {
|
||||
Location bot = current.getBottomAbs();
|
||||
Location top = current.getTopAbs();
|
||||
int brx = bot.getX() >> 9;
|
||||
int brz = bot.getZ() >> 9;
|
||||
int trx = top.getX() >> 9;
|
||||
int trz = top.getZ() >> 9;
|
||||
Set<BlockVector2> files = regionManager.getChunkChunks(bot.getWorldName());
|
||||
for (BlockVector2 mca : files) {
|
||||
if (mca.getX() >= brx && mca.getX() <= trx && mca.getZ() >= brz
|
||||
&& mca.getZ() <= trz) {
|
||||
final File file =
|
||||
getMcr(plot.getWorldName(), mca.getX(), mca.getZ());
|
||||
if (file != null) {
|
||||
//final String name = "r." + (x - cx) + "." + (z - cz) + ".mca";
|
||||
String name = file.getName();
|
||||
final ZipEntry ze = new ZipEntry(
|
||||
"world" + File.separator + "region" + File.separator
|
||||
+ name);
|
||||
zos.putNextEntry(ze);
|
||||
try (FileInputStream in = new FileInputStream(file)) {
|
||||
int len;
|
||||
while ((len = in.read(buffer)) > 0) {
|
||||
zos.write(buffer, 0, len);
|
||||
}
|
||||
plot.getHome(
|
||||
home -> SchematicHandler.upload(uuid, file, "zip", new RunnableVal<OutputStream>() {
|
||||
@Override public void run(OutputStream output) {
|
||||
try (final ZipOutputStream zos = new ZipOutputStream(output)) {
|
||||
File dat = getDat(plot.getWorldName());
|
||||
Location spawn = getSpawn(plot.getWorldName());
|
||||
if (dat != null) {
|
||||
ZipEntry ze = new ZipEntry("world" + File.separator + dat.getName());
|
||||
zos.putNextEntry(ze);
|
||||
try (NBTInputStream nis = new NBTInputStream(
|
||||
new GZIPInputStream(new FileInputStream(dat)))) {
|
||||
CompoundTag tag = (CompoundTag) nis.readNamedTag().getTag();
|
||||
CompoundTag data = (CompoundTag) tag.getValue().get("Data");
|
||||
Map<String, Tag> map = ReflectionUtils.getMap(data.getValue());
|
||||
map.put("SpawnX", new IntTag(home.getX()));
|
||||
map.put("SpawnY", new IntTag(home.getY()));
|
||||
map.put("SpawnZ", new IntTag(home.getZ()));
|
||||
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
|
||||
try (NBTOutputStream out = new NBTOutputStream(
|
||||
new GZIPOutputStream(baos, true))) {
|
||||
//TODO Find what this should be called
|
||||
out.writeNamedTag("Schematic????", tag);
|
||||
}
|
||||
zos.closeEntry();
|
||||
zos.write(baos.toByteArray());
|
||||
}
|
||||
}
|
||||
}
|
||||
setSpawn(spawn);
|
||||
byte[] buffer = new byte[1024];
|
||||
for (Plot current : plot.getConnectedPlots()) {
|
||||
Location bot = current.getBottomAbs();
|
||||
Location top = current.getTopAbs();
|
||||
int brx = bot.getX() >> 9;
|
||||
int brz = bot.getZ() >> 9;
|
||||
int trx = top.getX() >> 9;
|
||||
int trz = top.getZ() >> 9;
|
||||
Set<BlockVector2> files = getChunkChunks(bot.getWorldName());
|
||||
for (BlockVector2 mca : files) {
|
||||
if (mca.getX() >= brx && mca.getX() <= trx && mca.getZ() >= brz
|
||||
&& mca.getZ() <= trz) {
|
||||
final File file =
|
||||
getMcr(plot.getWorldName(), mca.getX(), mca.getZ());
|
||||
if (file != null) {
|
||||
//final String name = "r." + (x - cx) + "." + (z - cz) + ".mca";
|
||||
String name = file.getName();
|
||||
final ZipEntry ze = new ZipEntry(
|
||||
"world" + File.separator + "region" + File.separator
|
||||
+ name);
|
||||
zos.putNextEntry(ze);
|
||||
try (FileInputStream in = new FileInputStream(file)) {
|
||||
int len;
|
||||
while ((len = in.read(buffer)) > 0) {
|
||||
zos.write(buffer, 0, len);
|
||||
}
|
||||
}
|
||||
zos.closeEntry();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
zos.closeEntry();
|
||||
zos.flush();
|
||||
zos.finish();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
zos.closeEntry();
|
||||
zos.flush();
|
||||
zos.finish();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}, whenDone));
|
||||
}, whenDone));
|
||||
}
|
||||
|
||||
@Nullable final File getDat(@Nonnull final String world) {
|
||||
@ -328,6 +324,32 @@ public abstract class WorldUtil {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public Set<BlockVector2> getChunkChunks(String world) {
|
||||
File folder =
|
||||
new File(PlotSquared.platform().getWorldContainer(), world + File.separator + "region");
|
||||
File[] regionFiles = folder.listFiles();
|
||||
if (regionFiles == null) {
|
||||
throw new RuntimeException(
|
||||
"Could not find worlds folder: " + folder + " ? (no read access?)");
|
||||
}
|
||||
HashSet<BlockVector2> chunks = new HashSet<>();
|
||||
for (File file : regionFiles) {
|
||||
String name = file.getName();
|
||||
if (name.endsWith("mca")) {
|
||||
String[] split = name.split("\\.");
|
||||
try {
|
||||
int x = Integer.parseInt(split[1]);
|
||||
int z = Integer.parseInt(split[2]);
|
||||
BlockVector2 loc = BlockVector2.at(x, z);
|
||||
chunks.add(loc);
|
||||
} catch (NumberFormatException ignored) {
|
||||
}
|
||||
}
|
||||
}
|
||||
return chunks;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if two blocks are the same type)
|
||||
*
|
||||
|
Reference in New Issue
Block a user