mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2024-09-10 01:39:27 +02:00
parent
ec204bb4c4
commit
31eee609a6
2
pom.xml
2
pom.xml
@ -8,7 +8,7 @@
|
|||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
</properties>
|
</properties>
|
||||||
<artifactId>PlotSquared</artifactId>
|
<artifactId>PlotSquared</artifactId>
|
||||||
<version>2.12.11</version>
|
<version>2.12.12</version>
|
||||||
<name>PlotSquared</name>
|
<name>PlotSquared</name>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<build>
|
<build>
|
||||||
|
@ -5,8 +5,12 @@ import java.io.IOException;
|
|||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.net.URLClassLoader;
|
import java.net.URLClassLoader;
|
||||||
|
import java.nio.file.Files;
|
||||||
import java.util.ArrayDeque;
|
import java.util.ArrayDeque;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Stack;
|
import java.util.Stack;
|
||||||
@ -133,18 +137,6 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
|
|||||||
} else {
|
} else {
|
||||||
log("&dUsing metrics will allow us to improve the plugin, please consider it :)");
|
log("&dUsing metrics will allow us to improve the plugin, please consider it :)");
|
||||||
}
|
}
|
||||||
// File file = new File(this.getDirectory() + File.separator + "disabled.yml");
|
|
||||||
// if (file.exists()) {
|
|
||||||
// file.delete();
|
|
||||||
// try {
|
|
||||||
// String[] split = new String(Files.readAllBytes(file.toPath())).split(",");
|
|
||||||
// for (String plugin : split) {
|
|
||||||
// loadPlugin(plugin);
|
|
||||||
// }
|
|
||||||
// } catch (IOException e) {
|
|
||||||
// e.printStackTrace();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
List<World> worlds = Bukkit.getWorlds();
|
List<World> worlds = Bukkit.getWorlds();
|
||||||
if (worlds.size() > 0) {
|
if (worlds.size() > 0) {
|
||||||
UUIDHandler.cacheAll(worlds.get(0).getName());
|
UUIDHandler.cacheAll(worlds.get(0).getName());
|
||||||
@ -162,12 +154,6 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
|
|||||||
@Override
|
@Override
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
PS.get().disable();
|
PS.get().disable();
|
||||||
try {
|
|
||||||
unloadRecursively(this);
|
|
||||||
}
|
|
||||||
catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
};
|
|
||||||
THIS = null;
|
THIS = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,7 +178,9 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void disable() {
|
public void disable() {
|
||||||
onDisable();
|
if (THIS != null) {
|
||||||
|
onDisable();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -420,163 +408,6 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
|
|||||||
}, 20);
|
}, 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean unloadPlugin(Plugin plugin) {
|
|
||||||
try {
|
|
||||||
plugin.getClass().getClassLoader().getResources("*");
|
|
||||||
} catch (IOException e1) {
|
|
||||||
e1.printStackTrace();
|
|
||||||
}
|
|
||||||
PluginManager pm = Bukkit.getServer().getPluginManager();
|
|
||||||
Map<String, Plugin> ln;
|
|
||||||
List<Plugin> pl;
|
|
||||||
try {
|
|
||||||
Field lnF = pm.getClass().getDeclaredField("lookupNames");
|
|
||||||
lnF.setAccessible(true);
|
|
||||||
ln = (Map) lnF.get(pm);
|
|
||||||
|
|
||||||
Field plF = pm.getClass().getDeclaredField("plugins");
|
|
||||||
plF.setAccessible(true);
|
|
||||||
pl = (List) plF.get(pm);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
pm.disablePlugin(plugin);
|
|
||||||
synchronized (pm) {
|
|
||||||
ln.remove(plugin.getName());
|
|
||||||
pl.remove(plugin);
|
|
||||||
}
|
|
||||||
JavaPluginLoader jpl = (JavaPluginLoader) plugin.getPluginLoader();
|
|
||||||
Field loadersF = null;
|
|
||||||
try {
|
|
||||||
loadersF = jpl.getClass().getDeclaredField("loaders");
|
|
||||||
loadersF.setAccessible(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
Map<String, ?> loaderMap = (Map) loadersF.get(jpl);
|
|
||||||
loaderMap.remove(plugin.getDescription().getName());
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
closeClassLoader(plugin);
|
|
||||||
System.gc();
|
|
||||||
System.gc();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean closeClassLoader(Plugin plugin) {
|
|
||||||
try {
|
|
||||||
((URLClassLoader) plugin.getClass().getClassLoader()).close();
|
|
||||||
return true;
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean unloadRecursively(Plugin plugin) {
|
|
||||||
try {
|
|
||||||
Stack<String> pluginFiles = unloadRecursively(plugin.getName(), plugin, new Stack());
|
|
||||||
File file = new File(this.getDirectory() + File.separator + "disabled.yml");
|
|
||||||
file.createNewFile();
|
|
||||||
String prefix = "";
|
|
||||||
String all = "";
|
|
||||||
while (pluginFiles.size() > 0) {
|
|
||||||
String pop = pluginFiles.pop();
|
|
||||||
all += prefix + pop.substring(0, pop.length() - 4);
|
|
||||||
prefix = ",";
|
|
||||||
}
|
|
||||||
if (all.length() != 0) {
|
|
||||||
PrintWriter out = new PrintWriter(this.getDirectory() + File.separator + "disabled.yml");
|
|
||||||
out.write(all);
|
|
||||||
out.close();
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadPlugin(String name) {
|
|
||||||
try {
|
|
||||||
PluginManager manager = Bukkit.getServer().getPluginManager();
|
|
||||||
Plugin plugin = manager.getPlugin(name);
|
|
||||||
if (plugin != null) {
|
|
||||||
manager.enablePlugin(plugin);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
plugin = manager.loadPlugin(new File("plugins" + File.separator + name + (name.endsWith(".jar") ? "" : ".jar")));
|
|
||||||
plugin.onLoad();
|
|
||||||
manager.enablePlugin(plugin);
|
|
||||||
} catch (Exception e) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public File getFile() {
|
|
||||||
return getFile(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public File getFile(JavaPlugin p) {
|
|
||||||
try {
|
|
||||||
Field f = JavaPlugin.class.getDeclaredField("file");
|
|
||||||
f.setAccessible(true);
|
|
||||||
return (File) f.get(p);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Stack<String> unloadRecursively(String doNotLoad, Plugin plugin, Stack<String> pluginFiles) {
|
|
||||||
if (!plugin.getName().equals(doNotLoad)) {
|
|
||||||
File file = getFile((JavaPlugin) plugin);
|
|
||||||
pluginFiles.push(file.getName());
|
|
||||||
}
|
|
||||||
PluginManager pm = Bukkit.getPluginManager();
|
|
||||||
for (Plugin p : pm.getPlugins()) {
|
|
||||||
List<String> depend = p.getDescription().getDepend();
|
|
||||||
if (depend != null) {
|
|
||||||
for (String s : depend) {
|
|
||||||
if (s.equals(plugin.getName())) {
|
|
||||||
unloadRecursively(doNotLoad, p, pluginFiles);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
List<String> softDepend = p.getDescription().getSoftDepend();
|
|
||||||
if (softDepend != null) {
|
|
||||||
for (String s : softDepend) {
|
|
||||||
if (s.equals(plugin.getName())) {
|
|
||||||
unloadRecursively(doNotLoad, p, pluginFiles);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (unloadPlugin(plugin)) {
|
|
||||||
List<String> depend = plugin.getDescription().getDepend();
|
|
||||||
if (depend != null) {
|
|
||||||
for (String s : depend) {
|
|
||||||
Plugin p = pm.getPlugin(s);
|
|
||||||
if (p != null) {
|
|
||||||
unloadRecursively(doNotLoad, p, pluginFiles);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
List<String> softDepend = plugin.getDescription().getSoftDepend();
|
|
||||||
if (softDepend != null) {
|
|
||||||
for (String s : softDepend) {
|
|
||||||
Plugin p = pm.getPlugin(s);
|
|
||||||
if (p != null) {
|
|
||||||
unloadRecursively(doNotLoad, p, pluginFiles);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return pluginFiles;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
final public ChunkGenerator getDefaultWorldGenerator(final String world, final String id) {
|
final public ChunkGenerator getDefaultWorldGenerator(final String world, final String id) {
|
||||||
WorldEvents.lastWorld = world;
|
WorldEvents.lastWorld = world;
|
||||||
|
@ -24,8 +24,6 @@ public interface IPlotMain {
|
|||||||
|
|
||||||
public File getDirectory();
|
public File getDirectory();
|
||||||
|
|
||||||
public File getFile();
|
|
||||||
|
|
||||||
public void disable();
|
public void disable();
|
||||||
|
|
||||||
public String getVersion();
|
public String getVersion();
|
||||||
@ -81,6 +79,4 @@ public interface IPlotMain {
|
|||||||
public PlayerManager initPlayerManager();
|
public PlayerManager initPlayerManager();
|
||||||
|
|
||||||
public boolean checkVersion(int major, int minor, int minor2);
|
public boolean checkVersion(int major, int minor, int minor2);
|
||||||
|
|
||||||
public void loadPlugin(String plugin);
|
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,6 @@ import java.io.InputStreamReader;
|
|||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLConnection;
|
import java.net.URLConnection;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.StandardCopyOption;
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.DatabaseMetaData;
|
import java.sql.DatabaseMetaData;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
@ -32,8 +31,6 @@ import java.util.regex.Pattern;
|
|||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipInputStream;
|
import java.util.zip.ZipInputStream;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
|
|
||||||
import com.intellectualcrafters.configuration.file.YamlConfiguration;
|
import com.intellectualcrafters.configuration.file.YamlConfiguration;
|
||||||
import com.intellectualcrafters.plot.config.C;
|
import com.intellectualcrafters.plot.config.C;
|
||||||
import com.intellectualcrafters.plot.config.Configuration;
|
import com.intellectualcrafters.plot.config.Configuration;
|
||||||
@ -919,15 +916,14 @@ public class PS {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean update(URL url) {
|
public boolean update(PlotPlayer sender, URL url) {
|
||||||
if (url == null) {
|
if (url == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
File jar = PS.get().IMP.getFile();
|
|
||||||
File newJar = new File("plugins/update/PlotSquared.jar");
|
File newJar = new File("plugins/update/PlotSquared.jar");
|
||||||
PS.log("&6Downloading from provided URL: &7" + url);
|
MainUtil.sendMessage(sender, "$1Downloading from provided URL: &7" + url);
|
||||||
PS.log("&7 - User-Agent: " + "Mozilla/4.0");
|
MainUtil.sendMessage(sender, "$2 - User-Agent: " + "Mozilla/4.0");
|
||||||
URLConnection con = url.openConnection();
|
URLConnection con = url.openConnection();
|
||||||
con.addRequestProperty("User-Agent", "Mozilla/4.0");
|
con.addRequestProperty("User-Agent", "Mozilla/4.0");
|
||||||
InputStream stream = con.getInputStream();
|
InputStream stream = con.getInputStream();
|
||||||
@ -935,31 +931,16 @@ public class PS {
|
|||||||
if (!parent.exists()) {
|
if (!parent.exists()) {
|
||||||
parent.mkdirs();
|
parent.mkdirs();
|
||||||
}
|
}
|
||||||
PS.log("&7 - Output: " + newJar);
|
MainUtil.sendMessage(sender, "$2 - Output: " + newJar);
|
||||||
newJar.delete();
|
newJar.delete();
|
||||||
Files.copy(stream, newJar.toPath());
|
Files.copy(stream, newJar.toPath());
|
||||||
stream.close();
|
stream.close();
|
||||||
PS.log("&6Disabling PlotSquared");
|
MainUtil.sendMessage(sender, "$1The update will take effect when the server is restarted next");
|
||||||
PS.get().IMP.disable();
|
|
||||||
System.out.println("Deleting file: " + jar);
|
|
||||||
jar.delete();
|
|
||||||
System.out.println("Copying: " + jar + " >> " + newJar);
|
|
||||||
try {
|
|
||||||
Files.move(newJar.toPath(), jar.toPath(), StandardCopyOption.REPLACE_EXISTING);
|
|
||||||
} catch (IOException e) {
|
|
||||||
System.out.println("Failed to reload PlotSquared");
|
|
||||||
System.out.println(" - Restart the server manually");
|
|
||||||
System.out.println("============ Stacktrace ============");
|
|
||||||
e.printStackTrace();
|
|
||||||
System.out.println("====================================");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
Bukkit.reload();
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
System.out.println("Failed to update PlotSquared");
|
MainUtil.sendMessage(sender, "Failed to update PlotSquared");
|
||||||
System.out.println(" - Please update manually");
|
MainUtil.sendMessage(sender, " - Please update manually");
|
||||||
System.out.println("============ Stacktrace ============");
|
System.out.println("============ Stacktrace ============");
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
System.out.println("====================================");
|
System.out.println("====================================");
|
||||||
@ -1114,7 +1095,6 @@ public class PS {
|
|||||||
for (final String flag : intFlags) {
|
for (final String flag : intFlags) {
|
||||||
FlagManager.addFlag(new AbstractFlag(flag, new FlagValue.UnsignedIntegerValue()));
|
FlagManager.addFlag(new AbstractFlag(flag, new FlagValue.UnsignedIntegerValue()));
|
||||||
}
|
}
|
||||||
FlagManager.addFlag(new AbstractFlag("modified-blocks", new FlagValue.IntegerValue()), true);
|
|
||||||
FlagManager.addFlag(new AbstractFlag("analysis", new FlagValue.IntegerListValue()), true);
|
FlagManager.addFlag(new AbstractFlag("analysis", new FlagValue.IntegerListValue()), true);
|
||||||
FlagManager.addFlag(new AbstractFlag("disable-physics", new FlagValue.BooleanValue()));
|
FlagManager.addFlag(new AbstractFlag("disable-physics", new FlagValue.BooleanValue()));
|
||||||
FlagManager.addFlag(new AbstractFlag("fly", new FlagValue.BooleanValue()));
|
FlagManager.addFlag(new AbstractFlag("fly", new FlagValue.BooleanValue()));
|
||||||
@ -1277,6 +1257,7 @@ public class PS {
|
|||||||
options.put("chunk-processor.enabled", Settings.CHUNK_PROCESSOR);
|
options.put("chunk-processor.enabled", Settings.CHUNK_PROCESSOR);
|
||||||
options.put("chunk-processor.max-blockstates", Settings.CHUNK_PROCESSOR_MAX_BLOCKSTATES);
|
options.put("chunk-processor.max-blockstates", Settings.CHUNK_PROCESSOR_MAX_BLOCKSTATES);
|
||||||
options.put("chunk-processor.max-entities", Settings.CHUNK_PROCESSOR_MAX_ENTITIES);
|
options.put("chunk-processor.max-entities", Settings.CHUNK_PROCESSOR_MAX_ENTITIES);
|
||||||
|
options.put("chunk-processor.disable-physics", Settings.CHUNK_PROCESSOR_DISABLE_PHYSICS);
|
||||||
|
|
||||||
// Comments
|
// Comments
|
||||||
options.put("comments.notifications.enabled", Settings.COMMENT_NOTIFICATIONS);
|
options.put("comments.notifications.enabled", Settings.COMMENT_NOTIFICATIONS);
|
||||||
@ -1378,7 +1359,8 @@ public class PS {
|
|||||||
// Chunk processor
|
// Chunk processor
|
||||||
Settings.CHUNK_PROCESSOR = config.getBoolean("chunk-processor.enabled");
|
Settings.CHUNK_PROCESSOR = config.getBoolean("chunk-processor.enabled");
|
||||||
Settings.CHUNK_PROCESSOR_MAX_BLOCKSTATES = config.getInt("chunk-processor.max-blockstates");
|
Settings.CHUNK_PROCESSOR_MAX_BLOCKSTATES = config.getInt("chunk-processor.max-blockstates");
|
||||||
Settings.CHUNK_PROCESSOR_MAX_ENTITIES= config.getInt("chunk-processor.max-entities");
|
Settings.CHUNK_PROCESSOR_MAX_ENTITIES = config.getInt("chunk-processor.max-entities");
|
||||||
|
Settings.CHUNK_PROCESSOR_DISABLE_PHYSICS = config.getBoolean("chunk-processor.disable-physics");
|
||||||
|
|
||||||
// Comments
|
// Comments
|
||||||
Settings.COMMENT_NOTIFICATIONS = config.getBoolean("comments.notifications.enabled");
|
Settings.COMMENT_NOTIFICATIONS = config.getBoolean("comments.notifications.enabled");
|
||||||
|
@ -51,10 +51,6 @@ public class Update extends SubCommand {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(final PlotPlayer plr, final String... args) {
|
public boolean execute(final PlotPlayer plr, final String... args) {
|
||||||
if (plr != null) {
|
|
||||||
MainUtil.sendMessage(plr, C.NOT_CONSOLE);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
URL url;
|
URL url;
|
||||||
if (args.length == 0) {
|
if (args.length == 0) {
|
||||||
url = PS.get().update;
|
url = PS.get().update;
|
||||||
@ -77,7 +73,9 @@ public class Update extends SubCommand {
|
|||||||
MainUtil.sendMessage(plr, "&cTo manually specify an update URL: /plot update <url>");
|
MainUtil.sendMessage(plr, "&cTo manually specify an update URL: /plot update <url>");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
PS.get().update(url);
|
if (PS.get().update(plr, url) && url == PS.get().update) {
|
||||||
|
PS.get().update = null;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,6 +65,7 @@ public class Settings {
|
|||||||
public static boolean CHUNK_PROCESSOR = false;
|
public static boolean CHUNK_PROCESSOR = false;
|
||||||
public static int CHUNK_PROCESSOR_MAX_BLOCKSTATES = 4096;
|
public static int CHUNK_PROCESSOR_MAX_BLOCKSTATES = 4096;
|
||||||
public static int CHUNK_PROCESSOR_MAX_ENTITIES = 512;
|
public static int CHUNK_PROCESSOR_MAX_ENTITIES = 512;
|
||||||
|
public static boolean CHUNK_PROCESSOR_DISABLE_PHYSICS = false;
|
||||||
/**
|
/**
|
||||||
* TNT listener
|
* TNT listener
|
||||||
*/
|
*/
|
||||||
|
@ -62,19 +62,11 @@ public class ChunkListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority=EventPriority.LOWEST)
|
@EventHandler(priority=EventPriority.HIGHEST, ignoreCancelled=true)
|
||||||
public void onBlockPhysics(BlockPhysicsEvent event) {
|
public void onBlockPhysics(BlockPhysicsEvent event) {
|
||||||
long now = System.currentTimeMillis();
|
if (Settings.CHUNK_PROCESSOR_DISABLE_PHYSICS) {
|
||||||
if (now - last < 20) {
|
event.setCancelled(true);
|
||||||
if (count > Settings.CHUNK_PROCESSOR_MAX_ENTITIES) {
|
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
|
||||||
count++;
|
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
count = 0;
|
|
||||||
}
|
|
||||||
last = now;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority=EventPriority.LOWEST)
|
@EventHandler(priority=EventPriority.LOWEST)
|
||||||
|
@ -292,7 +292,7 @@ public class PlayerEvents extends com.intellectualcrafters.plot.listeners.PlotLi
|
|||||||
if (cmd != null) {
|
if (cmd != null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (split[0].equals("plotme") || split[0].equals("ap")) {
|
if (split[0].equals("plotme") || split[0].equals("ap") || split[0].equals("plotz")) {
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
if (Settings.USE_PLOTME_ALIAS) {
|
if (Settings.USE_PLOTME_ALIAS) {
|
||||||
player.performCommand("plots " + StringUtils.join(Arrays.copyOfRange(split, 1, split.length), " "));
|
player.performCommand("plots " + StringUtils.join(Arrays.copyOfRange(split, 1, split.length), " "));
|
||||||
@ -317,7 +317,7 @@ public class PlayerEvents extends com.intellectualcrafters.plot.listeners.PlotLi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
public void onJoin(final PlayerJoinEvent event) {
|
public void onJoin(final PlayerJoinEvent event) {
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
BukkitUtil.removePlayer(player.getName());
|
BukkitUtil.removePlayer(player.getName());
|
||||||
@ -336,7 +336,12 @@ public class PlayerEvents extends com.intellectualcrafters.plot.listeners.PlotLi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (PS.get().update != null && pp.hasPermission("plots.admin")) {
|
if (PS.get().update != null && pp.hasPermission("plots.admin")) {
|
||||||
MainUtil.sendMessage(pp, "&6An update for PlotSquared is available: &7/plot update");
|
TaskManager.runTaskLater(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
MainUtil.sendMessage(pp, "&6An update for PlotSquared is available: &7/plot update");
|
||||||
|
}
|
||||||
|
}, 20);
|
||||||
}
|
}
|
||||||
final Location loc = BukkitUtil.getLocation(player.getLocation());
|
final Location loc = BukkitUtil.getLocation(player.getLocation());
|
||||||
final Plot plot = MainUtil.getPlot(loc);
|
final Plot plot = MainUtil.getPlot(loc);
|
||||||
|
Loading…
Reference in New Issue
Block a user