mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-11-29 13:05:41 +01:00
Scripting stuff + remove PlotSquared-Null
This commit is contained in:
parent
858d1453f2
commit
0a3ec5dcd8
17
pom.xml
17
pom.xml
@ -8,7 +8,7 @@
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
<artifactId>PlotSquared</artifactId>
|
||||
<version>3.0.4</version>
|
||||
<version>3.0.5</version>
|
||||
<name>PlotSquared</name>
|
||||
<packaging>jar</packaging>
|
||||
<build>
|
||||
@ -67,21 +67,6 @@
|
||||
</excludes>
|
||||
</configuration>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>api</id>
|
||||
<goals>
|
||||
<goal>jar</goal>
|
||||
</goals>
|
||||
<phase>package</phase>
|
||||
<configuration>
|
||||
<finalName>PlotSquared-Null</finalName>
|
||||
<excludes>
|
||||
<exclude>**/com/plotsquared/bukkit/**</exclude>
|
||||
<exclude>**/com/intellectualcrafters/plot/api/*</exclude>
|
||||
<exclude>**/com/plotsquared/sponge/**</exclude>
|
||||
</excludes>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<plugin>
|
||||
|
@ -7,6 +7,7 @@ import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.URI;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.nio.file.Files;
|
||||
@ -117,6 +118,7 @@ public class PS {
|
||||
private LinkedHashMap<String, HashMap<PlotId, Plot>> plots;
|
||||
private Database database;
|
||||
private Connection connection;
|
||||
private Thread thread;
|
||||
|
||||
/**
|
||||
* Initialize PlotSquared with the desired Implementation class
|
||||
@ -125,14 +127,22 @@ public class PS {
|
||||
public PS(final IPlotMain imp_class) {
|
||||
try {
|
||||
instance = this;
|
||||
this.thread = Thread.currentThread();
|
||||
SetupUtils.generators = new HashMap<>();
|
||||
IMP = imp_class;
|
||||
URL url;
|
||||
try {
|
||||
FILE = new File(PS.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
|
||||
url = PS.class.getProtectionDomain().getCodeSource().getLocation();
|
||||
FILE = new File(new URL(url.toURI().toString().split("\\!")[0].replaceAll("jar:file", "file")).toURI().getPath());
|
||||
} catch (Exception e) {
|
||||
FILE = new File(IMP.getDirectory().getParentFile(), "PlotSquared.jar");
|
||||
e.printStackTrace();
|
||||
log("Could not determine file path");
|
||||
FILE = new File(IMP.getDirectory().getParentFile(), "PlotSquared.jar");
|
||||
if (!FILE.exists()) {
|
||||
FILE = new File(IMP.getDirectory().getParentFile(), "PlotSquared-Bukkit.jar");
|
||||
if (!FILE.exists()) {
|
||||
FILE = new File(IMP.getDirectory().getParentFile(), "PlotSquared-Sponge.jar");
|
||||
}
|
||||
}
|
||||
}
|
||||
VERSION = IMP.getPluginVersion();
|
||||
EconHandler.manager = IMP.getEconomyHandler();
|
||||
@ -268,6 +278,10 @@ public class PS {
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isMainThread(Thread thread) {
|
||||
return this.thread == thread;
|
||||
}
|
||||
|
||||
public boolean checkVersion(int[] version, int major, int minor, int minor2) {
|
||||
return (version[0] > major) || ((version[0] == major) && (version[1] > minor)) || ((version[0] == major) && (version[1] == minor) && (version[2] >= minor2));
|
||||
}
|
||||
|
@ -22,31 +22,53 @@ package com.intellectualcrafters.plot.commands;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.sql.Timestamp;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import javax.script.Bindings;
|
||||
import javax.script.ScriptContext;
|
||||
import javax.script.ScriptEngine;
|
||||
import javax.script.ScriptEngineManager;
|
||||
import javax.script.ScriptException;
|
||||
import javax.script.SimpleScriptContext;
|
||||
|
||||
import com.google.common.io.Files;
|
||||
import com.intellectualcrafters.plot.PS;
|
||||
import com.intellectualcrafters.plot.config.C;
|
||||
import com.intellectualcrafters.plot.config.Settings;
|
||||
import com.intellectualcrafters.plot.database.DBFunc;
|
||||
import com.intellectualcrafters.plot.flag.FlagManager;
|
||||
import com.intellectualcrafters.plot.generator.HybridUtils;
|
||||
import com.intellectualcrafters.plot.object.ChunkLoc;
|
||||
import com.intellectualcrafters.plot.object.ConsolePlayer;
|
||||
import com.intellectualcrafters.plot.object.Location;
|
||||
import com.intellectualcrafters.plot.object.OfflinePlotPlayer;
|
||||
import com.intellectualcrafters.plot.object.Plot;
|
||||
import com.intellectualcrafters.plot.object.PlotAnalysis;
|
||||
import com.intellectualcrafters.plot.object.PlotBlock;
|
||||
import com.intellectualcrafters.plot.object.PlotId;
|
||||
import com.intellectualcrafters.plot.object.PlotPlayer;
|
||||
import com.intellectualcrafters.plot.object.RunnableVal;
|
||||
import com.intellectualcrafters.plot.util.AbstractTitle;
|
||||
import com.intellectualcrafters.plot.util.BlockManager;
|
||||
import com.intellectualcrafters.plot.util.ChunkManager;
|
||||
import com.intellectualcrafters.plot.util.EventUtil;
|
||||
import com.intellectualcrafters.plot.util.ExpireManager;
|
||||
import com.intellectualcrafters.plot.util.MainUtil;
|
||||
import com.intellectualcrafters.plot.util.MathMan;
|
||||
import com.intellectualcrafters.plot.util.Permissions;
|
||||
import com.intellectualcrafters.plot.util.SchematicHandler;
|
||||
import com.intellectualcrafters.plot.util.SetupUtils;
|
||||
import com.intellectualcrafters.plot.util.StringMan;
|
||||
import com.intellectualcrafters.plot.util.TaskManager;
|
||||
import com.intellectualcrafters.plot.util.UUIDHandler;
|
||||
import com.plotsquared.bukkit.util.BukkitHybridUtils;
|
||||
import com.plotsquared.general.commands.CommandDeclaration;
|
||||
@ -60,11 +82,71 @@ import com.plotsquared.general.commands.CommandDeclaration;
|
||||
)
|
||||
public class DebugExec extends SubCommand {
|
||||
|
||||
private ScriptEngine engine;
|
||||
private Bindings scope;
|
||||
|
||||
public void init() {
|
||||
if (engine != null) {
|
||||
return;
|
||||
}
|
||||
engine = (new ScriptEngineManager()).getEngineByName("JavaScript");
|
||||
ScriptContext context = new SimpleScriptContext();
|
||||
scope = context.getBindings(ScriptContext.ENGINE_SCOPE);
|
||||
|
||||
// stuff
|
||||
scope.put("MainUtil", new MainUtil());
|
||||
scope.put("Settings", new Settings());
|
||||
scope.put("StringMan", new StringMan());
|
||||
scope.put("MathMan", new MathMan());
|
||||
|
||||
// Classes
|
||||
scope.put("Location", Location.class);
|
||||
scope.put("PlotBlock", PlotBlock.class);
|
||||
scope.put("Plot", Plot.class);
|
||||
scope.put("PlotId", PlotId.class);
|
||||
scope.put("Runnable", Runnable.class);
|
||||
scope.put("RunnableVal", RunnableVal.class);
|
||||
|
||||
// Instances
|
||||
scope.put("PS", PS.get());
|
||||
scope.put("TaskManager", PS.get().TASK);
|
||||
scope.put("TitleManager", AbstractTitle.TITLE_CLASS);
|
||||
scope.put("ConsolePlayer", ConsolePlayer.getConsole());
|
||||
scope.put("SchematicHandler", SchematicHandler.manager);
|
||||
scope.put("ChunkManager", ChunkManager.manager);
|
||||
scope.put("BlockManager", BlockManager.manager);
|
||||
scope.put("SetupUtils", SetupUtils.manager);
|
||||
scope.put("EventUtil", EventUtil.manager);
|
||||
scope.put("UUIDHandler", UUIDHandler.implementation);
|
||||
scope.put("DBFunc", DBFunc.dbManager);
|
||||
scope.put("HybridUtils", HybridUtils.manager);
|
||||
scope.put("HybridUtils", HybridUtils.manager);
|
||||
scope.put("IMP", PS.get().IMP);
|
||||
scope.put("MainCommand", MainCommand.getInstance());
|
||||
|
||||
// enums
|
||||
for (Enum value : C.values()) {
|
||||
scope.put("C_" + value.name(), value);
|
||||
}
|
||||
for (Enum value : Permissions.values()) {
|
||||
scope.put("Permissions_" + value.name(), value);
|
||||
}
|
||||
addEnums(scope, C.values());
|
||||
}
|
||||
|
||||
|
||||
private void addEnums(Bindings scope2, C[] values) {
|
||||
// TODO Auto-generated method stub
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onCommand(final PlotPlayer player, String[] args) {
|
||||
final List<String> allowed_params = Arrays.asList("calibrate-analysis", "remove-flag", "stop-expire", "start-expire", "show-expired", "update-expired", "seen", "trim-check");
|
||||
if (args.length > 0) {
|
||||
final String arg = args[0].toLowerCase();
|
||||
String script;
|
||||
boolean async = false;
|
||||
switch (arg) {
|
||||
case "analyze": {
|
||||
Plot plot = MainUtil.getPlot(player.getLocation());
|
||||
@ -113,7 +195,7 @@ public class DebugExec extends SubCommand {
|
||||
}
|
||||
case "stop-expire": {
|
||||
if (ExpireManager.task != -1) {
|
||||
Bukkit.getScheduler().cancelTask(ExpireManager.task);
|
||||
PS.get().TASK.cancelTask(ExpireManager.task);
|
||||
} else {
|
||||
return MainUtil.sendMessage(player, "Task already halted");
|
||||
}
|
||||
@ -161,7 +243,7 @@ public class DebugExec extends SubCommand {
|
||||
return false;
|
||||
}
|
||||
((BukkitHybridUtils)(HybridUtils.manager)).task = 0;
|
||||
Bukkit.getScheduler().cancelTask(((BukkitHybridUtils)(HybridUtils.manager)).task);
|
||||
PS.get().TASK.cancelTask(((BukkitHybridUtils)(HybridUtils.manager)).task);
|
||||
MainUtil.sendMessage(player, "&cCancelling task...");
|
||||
while (BukkitHybridUtils.chunks.size() > 0) {
|
||||
ChunkLoc chunk = BukkitHybridUtils.chunks.get(0);
|
||||
@ -272,9 +354,66 @@ public class DebugExec extends SubCommand {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
case "h":
|
||||
case "he":
|
||||
case "?":
|
||||
case "help": {
|
||||
MainUtil.sendMessage(player, "Possible sub commands: /plot debugexec <" + StringMan.join(allowed_params, "|") + ">");
|
||||
return false;
|
||||
}
|
||||
case "runasync": {
|
||||
async = true;
|
||||
}
|
||||
case "run": {
|
||||
try {
|
||||
script = StringMan.join(Files.readLines(new File(PS.get().IMP.getDirectory(), args[1]), StandardCharsets.UTF_8), "");
|
||||
if (args.length > 2) {
|
||||
HashMap<String, String> replacements = new HashMap<>();
|
||||
for (int i = 2; i < args.length; i++) {
|
||||
replacements.put("%s" + (i-2), args[i]);
|
||||
}
|
||||
script = StringMan.replaceFromMap(script, replacements);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
script = StringMan.join(args, " ");
|
||||
}
|
||||
}
|
||||
init();
|
||||
scope.put("PlotPlayer", player);
|
||||
PS.log("> " + script);
|
||||
try {
|
||||
if (async) {
|
||||
final String toExec = script;
|
||||
TaskManager.runTaskAsync(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
long start = System.currentTimeMillis();
|
||||
try {
|
||||
engine.eval(toExec, scope);
|
||||
} catch (ScriptException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
PS.log("> " + (System.currentTimeMillis() - start) + "ms");
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
long start = System.currentTimeMillis();
|
||||
engine.eval(script, scope);
|
||||
PS.log("> " + (System.currentTimeMillis() - start) + "ms");
|
||||
}
|
||||
return true;
|
||||
} catch (ScriptException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,77 @@
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// PlotSquared - A plot manager and world generator for the Bukkit API /
|
||||
// Copyright (c) 2014 IntellectualSites/IntellectualCrafters /
|
||||
// /
|
||||
// This program is free software; you can redistribute it and/or modify /
|
||||
// it under the terms of the GNU General Public License as published by /
|
||||
// the Free Software Foundation; either version 3 of the License, or /
|
||||
// (at your option) any later version. /
|
||||
// /
|
||||
// This program is distributed in the hope that it will be useful, /
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of /
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /
|
||||
// GNU General Public License for more details. /
|
||||
// /
|
||||
// You should have received a copy of the GNU General Public License /
|
||||
// along with this program; if not, write to the Free Software Foundation, /
|
||||
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA /
|
||||
// /
|
||||
// You can contact us via: support@intellectualsites.com /
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
package com.intellectualcrafters.plot.commands;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.util.ArrayList;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.intellectualcrafters.plot.PS;
|
||||
import com.intellectualcrafters.plot.config.C;
|
||||
import com.intellectualcrafters.plot.object.OfflinePlotPlayer;
|
||||
import com.intellectualcrafters.plot.object.PlotPlayer;
|
||||
import com.intellectualcrafters.plot.util.EconHandler;
|
||||
import com.intellectualcrafters.plot.util.MainUtil;
|
||||
import com.intellectualcrafters.plot.util.StringMan;
|
||||
import com.intellectualcrafters.plot.util.TaskManager;
|
||||
import com.intellectualcrafters.plot.util.UUIDHandler;
|
||||
import com.plotsquared.general.commands.Argument;
|
||||
import com.plotsquared.general.commands.CommandDeclaration;
|
||||
|
||||
@CommandDeclaration(
|
||||
command = "limit",
|
||||
permission = "plots.limit",
|
||||
description = "Set or increment player plot claim limits",
|
||||
aliases = {"setlimit"},
|
||||
usage = "/plot limit <player> <expression>",
|
||||
category = CommandCategory.DEBUG
|
||||
)
|
||||
public class Limit extends SubCommand {
|
||||
|
||||
public Limit() {
|
||||
requiredArguments = new Argument[] {
|
||||
Argument.String,
|
||||
Argument.String
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(final PlotPlayer plr, final String[] args) {
|
||||
UUID uuid = UUIDHandler.getUUID(args[0], null);
|
||||
if (uuid == null) {
|
||||
MainUtil.sendMessage(plr, C.INVALID_PLAYER, args[0]);
|
||||
return false;
|
||||
}
|
||||
OfflinePlotPlayer op = UUIDHandler.getUUIDWrapper().getOfflinePlayer(uuid);
|
||||
|
||||
// get current plot limit
|
||||
// increase
|
||||
|
||||
// EconHandler.manager.setPermission(op, perm, value);
|
||||
plr.sendMessage("TODO");
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
@ -60,6 +60,7 @@ public class MainCommand extends CommandManager<PlotPlayer> {
|
||||
|
||||
private MainCommand() {
|
||||
super(null, new ArrayList<Command<PlotPlayer>>());
|
||||
instance = this;
|
||||
createCommand(new Buy());
|
||||
createCommand(new Save());
|
||||
createCommand(new Load());
|
||||
|
@ -27,12 +27,16 @@ import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.annotation.concurrent.ThreadSafe;
|
||||
|
||||
import com.intellectualcrafters.plot.PS;
|
||||
import com.intellectualcrafters.plot.config.Configuration;
|
||||
import com.intellectualcrafters.plot.database.DBFunc;
|
||||
import com.intellectualcrafters.plot.flag.Flag;
|
||||
import com.intellectualcrafters.plot.util.BlockManager;
|
||||
import com.intellectualcrafters.plot.util.ChunkManager;
|
||||
import com.intellectualcrafters.plot.util.MainUtil;
|
||||
import com.intellectualcrafters.plot.util.TaskManager;
|
||||
|
||||
/**
|
||||
* The plot class
|
||||
@ -310,7 +314,7 @@ public class Plot {
|
||||
* Clear a plot
|
||||
* @see MainUtil#clear(Plot, boolean, Runnable)
|
||||
* @see MainUtil#clearAsPlayer(Plot, boolean, Runnable)
|
||||
* @see #delete() to clear and delete a plot
|
||||
* @see #deletePlot() to clear and delete a plot
|
||||
* @param whenDone A runnable to execute when clearing finishes, or null
|
||||
*/
|
||||
public void clear(Runnable whenDone) {
|
||||
@ -334,13 +338,14 @@ public class Plot {
|
||||
* @see PS#removePlot(String, PlotId, boolean)
|
||||
* @see #clear(Runnable) to simply clear a plot
|
||||
*/
|
||||
public void delete() {
|
||||
public void deletePlot(final Runnable whenDone) {
|
||||
MainUtil.removeSign(this);
|
||||
MainUtil.clear(this, true, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (PS.get().removePlot(world, id, true)) {
|
||||
DBFunc.delete(Plot.this);
|
||||
TaskManager.runTask(whenDone);
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -483,6 +488,22 @@ public class Plot {
|
||||
MainUtil.setBiome(this, biome, whenDone);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set components such as border, wall, floor
|
||||
* (components are generator specific)
|
||||
*/
|
||||
public void setComponent(String component, PlotBlock... blocks) {
|
||||
MainUtil.setComponent(this, component, blocks);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set components such as border, wall, floor
|
||||
* (components are generator specific)
|
||||
*/
|
||||
public void setComponent(String component, String blocks) {
|
||||
MainUtil.setComponent(this, component, Configuration.BLOCKLIST.parseString(blocks));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the biome (String)
|
||||
*/
|
||||
|
@ -17,4 +17,6 @@ public abstract class EconHandler {
|
||||
public abstract void depositMoney(PlotPlayer player, double amount);
|
||||
public abstract void depositMoney(OfflinePlotPlayer player, double amount);
|
||||
public abstract void setPermission(PlotPlayer player, String perm, boolean value);
|
||||
// public abstract void setPermission(OfflinePlotPlayer player, String perm, boolean value);
|
||||
// public abstract void getPermission(OfflinePlotPlayer player, String perm);
|
||||
}
|
||||
|
@ -132,7 +132,7 @@ public class ExpireManager {
|
||||
if (plot.isMerged()) {
|
||||
MainUtil.unlinkPlot(plot);
|
||||
}
|
||||
plot.delete();
|
||||
plot.deletePlot(null);
|
||||
expiredPlots.get(world).remove(plot);
|
||||
int complexity = changed == null ? 0 : changed.getComplexity();
|
||||
int modified = changed == null ? 0 : changed.changes;
|
||||
|
@ -29,6 +29,7 @@ import java.util.UUID;
|
||||
|
||||
import com.intellectualcrafters.plot.PS;
|
||||
import com.intellectualcrafters.plot.config.C;
|
||||
import com.intellectualcrafters.plot.config.Configuration;
|
||||
import com.intellectualcrafters.plot.config.Settings;
|
||||
import com.intellectualcrafters.plot.database.DBFunc;
|
||||
import com.intellectualcrafters.plot.object.BlockLoc;
|
||||
@ -765,6 +766,15 @@ public class MainUtil {
|
||||
}
|
||||
|
||||
public static void removeSign(final Plot p) {
|
||||
if (!PS.get().isMainThread(Thread.currentThread())) {
|
||||
TaskManager.runTask(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
removeSign(p);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
final String world = p.world;
|
||||
final PlotManager manager = PS.get().getPlotManager(world);
|
||||
final PlotWorld plotworld = PS.get().getPlotWorld(world);
|
||||
@ -783,16 +793,23 @@ public class MainUtil {
|
||||
setSign(UUIDHandler.getName(p.owner), p);
|
||||
}
|
||||
|
||||
public static void setSign(String name, final Plot p) {
|
||||
if (name == null) {
|
||||
name = "unknown";
|
||||
public static void setSign(final String name, final Plot p) {
|
||||
if (!PS.get().isMainThread(Thread.currentThread())) {
|
||||
TaskManager.runTask(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
setSign(name, p);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
String rename = name == null ? "unknown" : name;
|
||||
final PlotManager manager = PS.get().getPlotManager(p.world);
|
||||
final PlotWorld plotworld = PS.get().getPlotWorld(p.world);
|
||||
if (plotworld.ALLOW_SIGNS) {
|
||||
final Location loc = manager.getSignLoc(plotworld, p);
|
||||
final String id = p.id.x + ";" + p.id.y;
|
||||
final String[] lines = new String[] { C.OWNER_SIGN_LINE_1.formatted().replaceAll("%id%", id), C.OWNER_SIGN_LINE_2.formatted().replaceAll("%id%", id).replaceAll("%plr%", name), C.OWNER_SIGN_LINE_3.formatted().replaceAll("%id%", id).replaceAll("%plr%", name), C.OWNER_SIGN_LINE_4.formatted().replaceAll("%id%", id).replaceAll("%plr%", name) };
|
||||
final String[] lines = new String[] { C.OWNER_SIGN_LINE_1.formatted().replaceAll("%id%", id), C.OWNER_SIGN_LINE_2.formatted().replaceAll("%id%", id).replaceAll("%plr%", rename), C.OWNER_SIGN_LINE_3.formatted().replaceAll("%id%", id).replaceAll("%plr%", rename), C.OWNER_SIGN_LINE_4.formatted().replaceAll("%id%", id).replaceAll("%plr%", rename) };
|
||||
BlockManager.setSign(p.world, loc.getX(), loc.getY(), loc.getZ(), lines);
|
||||
}
|
||||
}
|
||||
@ -1762,4 +1779,8 @@ public class MainUtil {
|
||||
}
|
||||
return ratings;
|
||||
}
|
||||
|
||||
public static void setComponent(Plot plot, String component, PlotBlock[] blocks) {
|
||||
PS.get().getPlotManager(plot.world).setComponent(PS.get().getPlotWorld(plot.world), plot.id, component, blocks);
|
||||
}
|
||||
}
|
||||
|
@ -1619,7 +1619,7 @@ public class PlayerEvents extends com.plotsquared.listener.PlotListener implemen
|
||||
if (Settings.DELETE_PLOTS_ON_BAN && event.getPlayer().isBanned()) {
|
||||
final Collection<Plot> plots = PS.get().getPlots(pp.getName()).values();
|
||||
for (final Plot plot : plots) {
|
||||
plot.delete();
|
||||
plot.deletePlot(null);
|
||||
PS.debug(String.format("&cPlot &6%s &cwas deleted + cleared due to &6%s&c getting banned", plot.getId(), event.getPlayer().getName()));
|
||||
}
|
||||
}
|
||||
|
@ -98,6 +98,9 @@ public class SpongeBlockManager extends BlockManager {
|
||||
@Override
|
||||
public int getHeighestBlock(String worldname, int x, int z) {
|
||||
World world = SpongeUtil.getWorld(worldname);
|
||||
if (world == null) {
|
||||
return 64;
|
||||
}
|
||||
for (int y = 255; y > 0; y--) {
|
||||
BlockState block = world.getBlock(x, y, z);
|
||||
if (block != null && block.getType() != BlockTypes.AIR) {
|
||||
|
Loading…
Reference in New Issue
Block a user