From b255c5db476053468bc8c17fd640e14c1c3195df Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 21 Feb 2016 23:29:33 -0500 Subject: [PATCH] Cleanup and Fixes Fixed StackOverflowError caused by c83378a --- .../com/intellectualcrafters/plot/PS.java | 122 +++++++++--------- .../plot/commands/Database.java | 24 ++-- .../plot/commands/DebugPaste.java | 8 +- .../plot/commands/Remove.java | 10 +- .../plot/database/SQLManager.java | 66 +++++----- .../plot/object/Plot.java | 56 ++++++-- .../plot/util/HastebinUtility.java | 12 +- .../bukkit/titles/DefaultTitle.java | 6 +- .../bukkit/titles/DefaultTitleManager.java | 15 ++- .../bukkit/titles/HackTitleManager.java | 2 +- .../com/plotsquared/listener/NullExtent.java | 75 ----------- .../plotsquared/listener/PlotListener.java | 27 ++-- .../listener/ProcessedWEExtent.java | 13 +- .../plotsquared/listener/WESubscriber.java | 30 ++--- .../sponge/listener/MainListener.java | 4 +- 15 files changed, 214 insertions(+), 256 deletions(-) delete mode 100644 src/main/java/com/plotsquared/listener/NullExtent.java diff --git a/src/main/java/com/intellectualcrafters/plot/PS.java b/src/main/java/com/intellectualcrafters/plot/PS.java index bef02243c..895c8d6b9 100644 --- a/src/main/java/com/intellectualcrafters/plot/PS.java +++ b/src/main/java/com/intellectualcrafters/plot/PS.java @@ -1,38 +1,5 @@ package com.intellectualcrafters.plot; -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.MalformedURLException; -import java.net.URISyntaxException; -import java.net.URL; -import java.net.URLConnection; -import java.nio.file.Files; -import java.sql.Connection; -import java.sql.SQLException; -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Objects; -import java.util.Set; -import java.util.UUID; -import java.util.regex.Pattern; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; - import com.intellectualcrafters.configuration.ConfigurationSection; import com.intellectualcrafters.configuration.MemorySection; import com.intellectualcrafters.configuration.file.YamlConfiguration; @@ -88,6 +55,39 @@ import com.intellectualcrafters.plot.util.area.QuadMap; import com.plotsquared.listener.WESubscriber; import com.sk89q.worldedit.WorldEdit; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.MalformedURLException; +import java.net.URISyntaxException; +import java.net.URL; +import java.net.URLConnection; +import java.nio.file.Files; +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayDeque; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Objects; +import java.util.Set; +import java.util.UUID; +import java.util.regex.Pattern; +import java.util.zip.ZipEntry; +import java.util.zip.ZipInputStream; + /** * An implementation of the core, * with a static getter for easy access @@ -1803,38 +1803,38 @@ public class PS { if (newFile.exists()) { return; } - final InputStream stream = IMP.getClass().getResourceAsStream(file); - final byte[] buffer = new byte[2048]; - if (stream == null) { - final ZipInputStream zis = new ZipInputStream(new FileInputStream(FILE)); - ZipEntry ze = zis.getNextEntry(); - while (ze != null) { - final String name = ze.getName(); - if (name.equals(file)) { - new File(newFile.getParent()).mkdirs(); - final FileOutputStream fos = new FileOutputStream(newFile); - int len; - while ((len = zis.read(buffer)) > 0) { - fos.write(buffer, 0, len); + try (InputStream stream = IMP.getClass().getResourceAsStream(file)) { + final byte[] buffer = new byte[2048]; + if (stream == null) { + try (ZipInputStream zis = new ZipInputStream(new FileInputStream(FILE))) { + ZipEntry ze = zis.getNextEntry(); + while (ze != null) { + final String name = ze.getName(); + if (name.equals(file)) { + new File(newFile.getParent()).mkdirs(); + try (FileOutputStream fos = new FileOutputStream(newFile)) { + int len; + while ((len = zis.read(buffer)) > 0) { + fos.write(buffer, 0, len); + } + } + ze = null; + } else { + ze = zis.getNextEntry(); + } } - fos.close(); - ze = null; - } else { - ze = zis.getNextEntry(); + zis.closeEntry(); + } + return; + } + newFile.createNewFile(); + try (FileOutputStream fos = new FileOutputStream(newFile)) { + int len; + while ((len = stream.read(buffer)) > 0) { + fos.write(buffer, 0, len); } } - zis.closeEntry(); - zis.close(); - return; } - newFile.createNewFile(); - final FileOutputStream fos = new FileOutputStream(newFile); - int len; - while ((len = stream.read(buffer)) > 0) { - fos.write(buffer, 0, len); - } - fos.close(); - stream.close(); } catch (IOException e) { e.printStackTrace(); log("&cCould not save " + file); diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Database.java b/src/main/java/com/intellectualcrafters/plot/commands/Database.java index 0d62f65b0..9d914b527 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Database.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Database.java @@ -1,11 +1,5 @@ package com.intellectualcrafters.plot.commands; -import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map.Entry; - import com.intellectualcrafters.plot.PS; import com.intellectualcrafters.plot.database.DBFunc; import com.intellectualcrafters.plot.database.MySQL; @@ -19,6 +13,13 @@ import com.intellectualcrafters.plot.util.MainUtil; import com.intellectualcrafters.plot.util.TaskManager; import com.plotsquared.general.commands.CommandDeclaration; +import java.io.File; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map.Entry; + @CommandDeclaration( command = "database", aliases = { "convert" }, @@ -93,7 +94,7 @@ public class Database extends SubCommand { implementation = new SQLite(file.getPath()); final SQLManager manager = new SQLManager(implementation, (args.length == 3) ? args[2] : "", true); final HashMap> map = manager.getPlots(); - plots = new ArrayList(); + plots = new ArrayList<>(); for (final Entry> entry : map.entrySet()) { String areaname = entry.getKey(); PlotArea pa = PS.get().getPlotAreaByString(areaname); @@ -107,15 +108,14 @@ public class Database extends SubCommand { PS.get().updatePlot(plot); plots.add(entry2.getValue()); } - } - else { + } else { HashMap plotmap = PS.get().plots_tmp.get(areaname); if (plotmap == null) { plotmap = new HashMap<>(); PS.get().plots_tmp.put(areaname, plotmap); } plotmap.putAll(entry.getValue()); - } + } } DBFunc.createPlotsAndData(plots, new Runnable() { @Override @@ -152,7 +152,7 @@ public class Database extends SubCommand { final SQLManager manager = new SQLManager(implementation, prefix, true); insertPlots(manager, plots, player); return true; - } catch (final Exception e) { + } catch (ClassNotFoundException | SQLException e) { MainUtil.sendMessage(player, "$1Failed to save plots, read stacktrace for info"); MainUtil.sendMessage(player, "&d==== Here is an ugly stacktrace, if you are interested in those things ==="); e.printStackTrace(); @@ -160,7 +160,7 @@ public class Database extends SubCommand { MainUtil.sendMessage(player, "$1Please make sure you are using the correct arguments!"); return false; } - } catch (final Exception e) { + } catch (ClassNotFoundException | SQLException e) { MainUtil.sendMessage(player, "$1Failed to open connection, read stacktrace for info"); MainUtil.sendMessage(player, "&d==== Here is an ugly stacktrace, if you are interested in those things ==="); e.printStackTrace(); diff --git a/src/main/java/com/intellectualcrafters/plot/commands/DebugPaste.java b/src/main/java/com/intellectualcrafters/plot/commands/DebugPaste.java index 6741b3498..aa428356e 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/DebugPaste.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/DebugPaste.java @@ -1,8 +1,5 @@ package com.intellectualcrafters.plot.commands; -import java.io.File; -import java.io.IOException; - import com.intellectualcrafters.plot.PS; import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.Settings; @@ -13,6 +10,9 @@ import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.UUIDHandler; import com.plotsquared.general.commands.CommandDeclaration; +import java.io.File; +import java.io.IOException; + @CommandDeclaration( command = "debugpaste", aliases = { "dp" }, @@ -32,7 +32,7 @@ public class DebugPaste extends SubCommand { String latestLOG; try { latestLOG = HastebinUtility.upload(new File(PS.get().IMP.getDirectory(), "../../logs/latest.log")); - } catch (final Exception e) { + } catch (IOException e) { MainUtil.sendMessage(plr, "&clatest.log is too big to be pasted, will ignore"); latestLOG = "too big :("; } diff --git a/src/main/java/com/intellectualcrafters/plot/commands/Remove.java b/src/main/java/com/intellectualcrafters/plot/commands/Remove.java index 5267ab7be..f29648600 100644 --- a/src/main/java/com/intellectualcrafters/plot/commands/Remove.java +++ b/src/main/java/com/intellectualcrafters/plot/commands/Remove.java @@ -20,10 +20,6 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// package com.intellectualcrafters.plot.commands; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.UUID; - import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.object.Location; import com.intellectualcrafters.plot.object.Plot; @@ -34,6 +30,10 @@ import com.intellectualcrafters.plot.util.UUIDHandler; import com.plotsquared.general.commands.Argument; import com.plotsquared.general.commands.CommandDeclaration; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.UUID; + @CommandDeclaration( command = "remove", aliases = { "r" }, @@ -59,7 +59,7 @@ public class Remove extends SubCommand { if (plot == null) { return !sendMessage(plr, C.NOT_IN_PLOT); } - if ((plot == null) || !plot.hasOwner()) { + if (!plot.hasOwner()) { MainUtil.sendMessage(plr, C.PLOT_UNOWNED); return false; } diff --git a/src/main/java/com/intellectualcrafters/plot/database/SQLManager.java b/src/main/java/com/intellectualcrafters/plot/database/SQLManager.java index 02e54128f..9576db609 100644 --- a/src/main/java/com/intellectualcrafters/plot/database/SQLManager.java +++ b/src/main/java/com/intellectualcrafters/plot/database/SQLManager.java @@ -115,7 +115,8 @@ public class SQLManager implements AbstractDB { * * @param database * @param p prefix - * @throws Exception + * @throws SQLException + * @throws ClassNotFoundException */ public SQLManager(final Database database, final String p, final boolean debug) throws SQLException, ClassNotFoundException { // Private final @@ -198,18 +199,18 @@ public class SQLManager implements AbstractDB { task = new UniqueStatement(plot.hashCode() + "") { @Override - public PreparedStatement get() throws SQLException { + public PreparedStatement get() { return null; } @Override - public void set(final PreparedStatement stmt) throws SQLException {} + public void set(final PreparedStatement stmt) {} @Override - public void addBatch(final PreparedStatement stmt) throws SQLException {} + public void addBatch(final PreparedStatement stmt) {} @Override - public void execute(final PreparedStatement stmt) throws SQLException {} + public void execute(final PreparedStatement stmt) {} }; } @@ -229,18 +230,18 @@ public class SQLManager implements AbstractDB { task = new UniqueStatement(uuid.hashCode() + "") { @Override - public PreparedStatement get() throws SQLException { + public PreparedStatement get() { return null; } @Override - public void set(final PreparedStatement stmt) throws SQLException {} + public void set(final PreparedStatement stmt) {} @Override - public void addBatch(final PreparedStatement stmt) throws SQLException {} + public void addBatch(final PreparedStatement stmt) {} @Override - public void execute(final PreparedStatement stmt) throws SQLException {} + public void execute(final PreparedStatement stmt) {} }; } @@ -257,18 +258,18 @@ public class SQLManager implements AbstractDB { task = new UniqueStatement(cluster.hashCode() + "") { @Override - public PreparedStatement get() throws SQLException { + public PreparedStatement get() { return null; } @Override - public void set(final PreparedStatement stmt) throws SQLException {} + public void set(final PreparedStatement stmt) {} @Override - public void addBatch(final PreparedStatement stmt) throws SQLException {} + public void addBatch(final PreparedStatement stmt) {} @Override - public void execute(final PreparedStatement stmt) throws SQLException {} + public void execute(final PreparedStatement stmt) {} }; } @@ -1010,7 +1011,7 @@ public class SQLManager implements AbstractDB { } @Override - public void execute(final PreparedStatement stmt) throws SQLException { + public void execute(final PreparedStatement stmt) { } @@ -1614,7 +1615,7 @@ public class SQLManager implements AbstractDB { final HashMap> newplots = new HashMap<>(); final HashMap plots = new HashMap<>(); try { - HashSet areas = new HashSet<>();; + HashSet areas = new HashSet<>(); if (PS.get().config.contains("worlds")) { ConfigurationSection worldSection = PS.get().config.getConfigurationSection("worlds"); if (worldSection != null) { @@ -2187,27 +2188,28 @@ public class SQLManager implements AbstractDB { } @Override - public void execute(final PreparedStatement stmt) throws SQLException {} + public void execute(final PreparedStatement stmt) {} @Override public void addBatch(final PreparedStatement statement) throws SQLException { final ArrayList comments = new ArrayList<>(); - final ResultSet set = statement.executeQuery(); - while (set.next()) { - final String sender = set.getString("sender"); - final String world = set.getString("world"); - final int hash = set.getInt("hashcode"); - PlotId id; - if (hash != 0) { - id = PlotId.unpair(hash); - } else { - id = null; + try (ResultSet set = statement.executeQuery()) { + while (set.next()) { + final String sender = set.getString("sender"); + final String world = set.getString("world"); + final int hash = set.getInt("hashcode"); + PlotId id; + if (hash != 0) { + id = PlotId.unpair(hash); + } else { + id = null; + } + final String msg = set.getString("comment"); + final long timestamp = set.getInt("timestamp") * 1000; + PlotComment comment = new PlotComment(world, id, msg, sender, inbox, timestamp); + comments.add(comment); + whenDone.value = comments; } - final String msg = set.getString("comment"); - final long timestamp = set.getInt("timestamp") * 1000; - PlotComment comment = new PlotComment(world, id, msg, sender, inbox, timestamp); - comments.add(comment); - whenDone.value = comments; } TaskManager.runTask(whenDone); } @@ -2773,7 +2775,7 @@ public class SQLManager implements AbstractDB { } @Override - public void execute(final PreparedStatement stmt) throws SQLException { + public void execute(final PreparedStatement stmt) { } diff --git a/src/main/java/com/intellectualcrafters/plot/object/Plot.java b/src/main/java/com/intellectualcrafters/plot/object/Plot.java index 0747d797b..af2e2c18f 100644 --- a/src/main/java/com/intellectualcrafters/plot/object/Plot.java +++ b/src/main/java/com/intellectualcrafters/plot/object/Plot.java @@ -697,7 +697,7 @@ public class Plot { if (current.getDenied().add(uuid)) { DBFunc.setDenied(current, uuid); } - }; + } } /** @@ -1570,14 +1570,24 @@ public class Plot { public boolean removeDenied(final UUID uuid) { if (uuid == DBFunc.everyone) { boolean result = false; - for (final UUID other : new HashSet<>(this.denied)) { - result = result || removeDenied(other); + for (final UUID other : getDenied()) { + result = result || rmvDenied(other); } return result; } - return removeDenied(uuid); + return rmvDenied(uuid); + } + + private boolean rmvDenied(UUID uuid) { + for (Plot current : this.getConnectedPlots()) { + if (current.getDenied().remove(uuid)) { + DBFunc.removeDenied(current, uuid); + } else { + return false; + } + } + return true; } - /** * Remove a helper (use DBFunc as well)
* Using the * uuid will remove all users @@ -1586,14 +1596,25 @@ public class Plot { public boolean removeTrusted(final UUID uuid) { if (uuid == DBFunc.everyone) { boolean result = false; - for (final UUID other : new HashSet<>(this.trusted)) { - result = result || removeTrusted(other); + for (final UUID other : getTrusted()) { + result = result || rmvTrusted(other); } return result; } - return removeTrusted(uuid); + return rmvTrusted(uuid); } - + + private boolean rmvTrusted(UUID uuid) { + for (Plot plot : this.getConnectedPlots()) { + if (plot.getTrusted().remove(uuid)) { + DBFunc.removeTrusted(plot, uuid); + } else { + return false; + } + } + return true; + } + /** * Remove a trusted user (use DBFunc as well)
* Using the * uuid will remove all users @@ -1606,13 +1627,24 @@ public class Plot { if (uuid == DBFunc.everyone) { boolean result = false; for (final UUID other : new HashSet<>(this.members)) { - result = result || removeMember(other); + result = result || rmvMember(other); } return result; } - return removeMember(uuid); + return rmvMember(uuid); } - + + private boolean rmvMember(UUID uuid) { + for (Plot current : this.getConnectedPlots()) { + if (current.getMembers().remove(uuid)) { + DBFunc.removeMember(current, uuid); + } else { + return false; + } + } + return true; + } + /** * Export the plot as a schematic to the configured output directory * @return diff --git a/src/main/java/com/intellectualcrafters/plot/util/HastebinUtility.java b/src/main/java/com/intellectualcrafters/plot/util/HastebinUtility.java index 2a2928ad7..8acddb621 100644 --- a/src/main/java/com/intellectualcrafters/plot/util/HastebinUtility.java +++ b/src/main/java/com/intellectualcrafters/plot/util/HastebinUtility.java @@ -49,13 +49,13 @@ public class HastebinUtility { public static String upload(final File file) throws IOException { final StringBuilder content = new StringBuilder(); - final BufferedReader reader = new BufferedReader(new FileReader(file)); - String line; - int i = 0; - while ((line = reader.readLine()) != null && i++ < 1000) { - content.append(line).append("\n"); + try (BufferedReader reader = new BufferedReader(new FileReader(file))) { + String line; + int i = 0; + while ((line = reader.readLine()) != null && i++ < 1000) { + content.append(line).append("\n"); + } } - reader.close(); return upload(content.toString()); } diff --git a/src/main/java/com/plotsquared/bukkit/titles/DefaultTitle.java b/src/main/java/com/plotsquared/bukkit/titles/DefaultTitle.java index 4de7d0281..9534b08d6 100644 --- a/src/main/java/com/plotsquared/bukkit/titles/DefaultTitle.java +++ b/src/main/java/com/plotsquared/bukkit/titles/DefaultTitle.java @@ -4,13 +4,17 @@ import com.intellectualcrafters.plot.object.PlotPlayer; import com.intellectualcrafters.plot.util.AbstractTitle; import com.plotsquared.bukkit.object.BukkitPlayer; +import java.lang.reflect.InvocationTargetException; + public class DefaultTitle extends AbstractTitle { + @Override public void sendTitle(final PlotPlayer player, final String head, final String sub, final int in, final int delay, final int out) { try { final DefaultTitleManager title = new DefaultTitleManager(head, sub, in, delay, out); title.send(((BukkitPlayer) player).player); - } catch (Exception e) { + } catch (ClassNotFoundException | InvocationTargetException | SecurityException | NoSuchMethodException | InstantiationException | + IllegalArgumentException | IllegalAccessException e) { AbstractTitle.TITLE_CLASS = new DefaultTitle_183(); AbstractTitle.TITLE_CLASS.sendTitle(player, head, sub, in, delay, out); } diff --git a/src/main/java/com/plotsquared/bukkit/titles/DefaultTitleManager.java b/src/main/java/com/plotsquared/bukkit/titles/DefaultTitleManager.java index 3398e3589..a0481190a 100644 --- a/src/main/java/com/plotsquared/bukkit/titles/DefaultTitleManager.java +++ b/src/main/java/com/plotsquared/bukkit/titles/DefaultTitleManager.java @@ -101,7 +101,8 @@ public class DefaultTitleManager { * Fade out time * @throws ClassNotFoundException */ - public DefaultTitleManager(final String title, final String subtitle, final int fadeInTime, final int stayTime, final int fadeOutTime) throws ClassNotFoundException { + public DefaultTitleManager(final String title, final String subtitle, final int fadeInTime, final int stayTime, final int fadeOutTime) + throws ClassNotFoundException { this.title = title; this.subtitle = subtitle; this.fadeInTime = fadeInTime; @@ -255,21 +256,22 @@ public class DefaultTitleManager { final Object connection = getField(handle.getClass(), "playerConnection").get(handle); final Object[] actions = packetActions.getEnumConstants(); final Method sendPacket = getMethod(connection.getClass(), "sendPacket"); - Object packet = packetTitle.getConstructor(packetActions, chatBaseComponent, Integer.TYPE, Integer.TYPE, Integer.TYPE).newInstance(actions[2], null, fadeInTime * (ticks ? 1 : 20), - stayTime * (ticks ? 1 : 20), fadeOutTime * (ticks ? 1 : 20)); + Object packet = packetTitle.getConstructor(packetActions, chatBaseComponent, Integer.TYPE, Integer.TYPE, Integer.TYPE) + .newInstance(actions[2], null, fadeInTime * (ticks ? 1 : 20), + stayTime * (ticks ? 1 : 20), fadeOutTime * (ticks ? 1 : 20)); // Send if set if (fadeInTime != -1 && fadeOutTime != -1 && stayTime != -1) { sendPacket.invoke(connection, packet); } // Send title Object serialized = getMethod(nmsChatSerializer, "a", String.class).invoke(null, - "{text:\"" + ChatColor.translateAlternateColorCodes('&', title) + "\",color:" + titleColor.name().toLowerCase() + "}"); + "{text:\"" + ChatColor.translateAlternateColorCodes('&', title) + "\",color:" + titleColor.name().toLowerCase() + "}"); packet = packetTitle.getConstructor(packetActions, chatBaseComponent).newInstance(actions[0], serialized); sendPacket.invoke(connection, packet); if (!subtitle.isEmpty()) { // Send subtitle if present serialized = getMethod(nmsChatSerializer, "a", String.class).invoke(null, - "{text:\"" + ChatColor.translateAlternateColorCodes('&', subtitle) + "\",color:" + subtitleColor.name().toLowerCase() + "}"); + "{text:\"" + ChatColor.translateAlternateColorCodes('&', subtitle) + "\",color:" + subtitleColor.name().toLowerCase() + "}"); packet = packetTitle.getConstructor(packetActions, chatBaseComponent).newInstance(actions[1], serialized); sendPacket.invoke(connection, packet); } @@ -278,7 +280,8 @@ public class DefaultTitleManager { /** * Broadcast the title to all players - * @throws Exception + * @throws IllegalArgumentException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException, + SecurityException */ public void broadcast() throws IllegalArgumentException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException, diff --git a/src/main/java/com/plotsquared/bukkit/titles/HackTitleManager.java b/src/main/java/com/plotsquared/bukkit/titles/HackTitleManager.java index e16cc24c2..02173497a 100644 --- a/src/main/java/com/plotsquared/bukkit/titles/HackTitleManager.java +++ b/src/main/java/com/plotsquared/bukkit/titles/HackTitleManager.java @@ -34,7 +34,7 @@ public class HackTitleManager { private int stayTime = -1; private int fadeOutTime = -1; private boolean ticks = false; - private static final Map, Class> CORRESPONDING_TYPES = new HashMap, Class>(); + private static final Map, Class> CORRESPONDING_TYPES = new HashMap<>(); /** * Create a new 1.8 title diff --git a/src/main/java/com/plotsquared/listener/NullExtent.java b/src/main/java/com/plotsquared/listener/NullExtent.java deleted file mode 100644 index 06d669fa1..000000000 --- a/src/main/java/com/plotsquared/listener/NullExtent.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.plotsquared.listener; - -import java.util.ArrayList; -import java.util.List; - -import com.sk89q.worldedit.Vector; -import com.sk89q.worldedit.Vector2D; -import com.sk89q.worldedit.WorldEditException; -import com.sk89q.worldedit.blocks.BaseBlock; -import com.sk89q.worldedit.entity.BaseEntity; -import com.sk89q.worldedit.entity.Entity; -import com.sk89q.worldedit.extent.Extent; -import com.sk89q.worldedit.function.operation.Operation; -import com.sk89q.worldedit.regions.Region; -import com.sk89q.worldedit.util.Location; -import com.sk89q.worldedit.world.biome.BaseBiome; - -public class NullExtent implements Extent { - - @Override - public BaseBiome getBiome(final Vector2D arg0) { - return null; - } - - @Override - public BaseBlock getBlock(final Vector arg0) { - return null; - } - - @Override - public BaseBlock getLazyBlock(final Vector arg0) { - return null; - } - - @Override - public Operation commit() { - return null; - } - - @Override - public boolean setBiome(final Vector2D arg0, final BaseBiome arg1) { - return false; - } - - @Override - public boolean setBlock(final Vector arg0, final BaseBlock arg1) throws WorldEditException { - return false; - } - - @Override - public Entity createEntity(final Location arg0, final BaseEntity arg1) { - return null; - } - - @Override - public List getEntities() { - return new ArrayList<>(); - } - - @Override - public List getEntities(final Region arg0) { - return new ArrayList<>(); - } - - @Override - public Vector getMaximumPoint() { - return new Vector(0, 0, 0); - } - - @Override - public Vector getMinimumPoint() { - return new Vector(0, 0, 0); - } - -} diff --git a/src/main/java/com/plotsquared/listener/PlotListener.java b/src/main/java/com/plotsquared/listener/PlotListener.java index 27fcd0baf..e2654efa0 100644 --- a/src/main/java/com/plotsquared/listener/PlotListener.java +++ b/src/main/java/com/plotsquared/listener/PlotListener.java @@ -20,10 +20,6 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// package com.plotsquared.listener; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - import com.intellectualcrafters.plot.config.C; import com.intellectualcrafters.plot.config.Settings; import com.intellectualcrafters.plot.flag.Flag; @@ -44,6 +40,10 @@ import com.intellectualcrafters.plot.util.StringMan; import com.intellectualcrafters.plot.util.TaskManager; import com.intellectualcrafters.plot.util.UUIDHandler; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + /** @@ -54,7 +54,7 @@ public class PlotListener { if (plot.isDenied(pp.getUUID()) && !Permissions.hasPermission(pp, "plots.admin.entry.denied")) { return false; } - final Plot last = (Plot) pp.getMeta("lastplot"); + final Plot last = pp.getMeta("lastplot"); if ((last != null) && !last.getId().equals(plot.getId())) { plotExit(pp, last); } @@ -82,12 +82,9 @@ public class PlotListener { }); } else { greeting = ""; - } - if (greeting != null) { - } final Flag enter = flags.get("notify-enter"); - if ((enter != null) && ((Boolean) enter.getValue())) { + if (enter != null && (Boolean) enter.getValue()) { if (!Permissions.hasPermission(pp, "plots.flag.notify-enter.bypass")) { for (final UUID uuid : plot.getOwners()) { final PlotPlayer owner = UUIDHandler.getPlayer(uuid); @@ -128,9 +125,9 @@ public class PlotListener { final Flag musicFlag = flags.get("music"); if (musicFlag != null) { final Integer id = (Integer) musicFlag.getValue(); - if (((id >= 2256) && (id <= 2267)) || (id == 0)) { + if ((id >= 2256 && id <= 2267) || (id == 0)) { final Location loc = pp.getLocation(); - final Location lastLoc = (Location) pp.getMeta("music"); + final Location lastLoc = pp.getMeta("music"); if (lastLoc != null) { pp.playMusic(lastLoc, 0); if (id == 0) { @@ -145,7 +142,7 @@ public class PlotListener { } } } else { - final Location lastLoc = (Location) pp.getMeta("music"); + final Location lastLoc = pp.getMeta("music"); if (lastLoc != null) { pp.deleteMeta("music"); pp.playMusic(lastLoc, 0); @@ -162,7 +159,7 @@ public class PlotListener { TaskManager.runTaskLaterAsync(new Runnable() { @Override public void run() { - final Plot lastPlot = (Plot) pp.getMeta("lastplot"); + final Plot lastPlot = pp.getMeta("lastplot"); if ((lastPlot != null) && plot.getId().equals(lastPlot.getId())) { final Map replacements = new HashMap<>(); replacements.put("%x%", lastPlot.getId().x + ""); @@ -223,7 +220,7 @@ public class PlotListener { } if (FlagManager.getPlotFlagRaw(plot, "fly") != null) { final PlotGamemode gamemode = pp.getGamemode(); - if ((gamemode == PlotGamemode.SURVIVAL) || (gamemode == PlotGamemode.ADVENTURE)) { + if (gamemode == PlotGamemode.SURVIVAL || (gamemode == PlotGamemode.ADVENTURE)) { pp.setFlight(false); } } @@ -233,7 +230,7 @@ public class PlotListener { if (FlagManager.getPlotFlagRaw(plot, "weather") != null) { pp.setWeather(PlotWeather.RESET); } - final Location lastLoc = (Location) pp.getMeta("music"); + final Location lastLoc = pp.getMeta("music"); if (lastLoc != null) { pp.deleteMeta("music"); pp.playMusic(lastLoc, 0); diff --git a/src/main/java/com/plotsquared/listener/ProcessedWEExtent.java b/src/main/java/com/plotsquared/listener/ProcessedWEExtent.java index dd0c27e8b..f97954925 100644 --- a/src/main/java/com/plotsquared/listener/ProcessedWEExtent.java +++ b/src/main/java/com/plotsquared/listener/ProcessedWEExtent.java @@ -1,8 +1,5 @@ package com.plotsquared.listener; -import java.lang.reflect.Field; -import java.util.HashSet; - import com.intellectualcrafters.plot.PS; import com.intellectualcrafters.plot.config.Settings; import com.intellectualcrafters.plot.object.PlotBlock; @@ -14,11 +11,13 @@ import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.blocks.BaseBlock; import com.sk89q.worldedit.entity.BaseEntity; import com.sk89q.worldedit.entity.Entity; -import com.sk89q.worldedit.extent.AbstractDelegateExtent; -import com.sk89q.worldedit.extent.Extent; +import com.sk89q.worldedit.extent.*; import com.sk89q.worldedit.util.Location; import com.sk89q.worldedit.world.biome.BaseBiome; +import java.lang.reflect.Field; +import java.util.HashSet; + public class ProcessedWEExtent extends AbstractDelegateExtent { private final HashSet mask; private final String world; @@ -95,7 +94,7 @@ public class ProcessedWEExtent extends AbstractDelegateExtent { try { final Field field = AbstractDelegateExtent.class.getDeclaredField("extent"); field.setAccessible(true); - field.set(parent, new NullExtent()); + field.set(parent, new com.sk89q.worldedit.extent.NullExtent()); } catch (final Exception e) { e.printStackTrace(); } @@ -117,7 +116,7 @@ public class ProcessedWEExtent extends AbstractDelegateExtent { try { final Field field = AbstractDelegateExtent.class.getDeclaredField("extent"); field.setAccessible(true); - field.set(parent, new NullExtent()); + field.set(parent, new com.sk89q.worldedit.extent.NullExtent()); } catch (final Exception e) { e.printStackTrace(); } diff --git a/src/main/java/com/plotsquared/listener/WESubscriber.java b/src/main/java/com/plotsquared/listener/WESubscriber.java index 717d82561..0fb1817d7 100644 --- a/src/main/java/com/plotsquared/listener/WESubscriber.java +++ b/src/main/java/com/plotsquared/listener/WESubscriber.java @@ -14,9 +14,7 @@ import com.sk89q.worldedit.command.tool.Tool; import com.sk89q.worldedit.entity.Player; import com.sk89q.worldedit.event.extent.EditSessionEvent; import com.sk89q.worldedit.extension.platform.Actor; -import com.sk89q.worldedit.extent.AbstractDelegateExtent; -import com.sk89q.worldedit.extent.ChangeSetExtent; -import com.sk89q.worldedit.extent.MaskingExtent; +import com.sk89q.worldedit.extent.*; import com.sk89q.worldedit.extent.reorder.MultiStageReorder; import com.sk89q.worldedit.extent.world.FastModeExtent; import com.sk89q.worldedit.util.eventbus.EventHandler.Priority; @@ -50,7 +48,7 @@ public class WESubscriber { MainUtil.sendMessage(pp, C.WORLDEDIT_BYPASS); } if (PS.get().hasPlotArea(world)) { - event.setExtent(new NullExtent()); + event.setExtent(new com.sk89q.worldedit.extent.NullExtent()); } return; } @@ -99,22 +97,20 @@ public class WESubscriber { final ExtentWrapper wrapper = new ExtentWrapper(event.getExtent()); event.setExtent(wrapper); field.set(extent, new ProcessedWEExtent(world, mask, max, new FastModeExtent(worldObj, true), wrapper)); + } else if (fast) { + event.setExtent(new ExtentWrapper(extent)); } else { - if (fast) { - event.setExtent(new ExtentWrapper(extent)); + ExtentWrapper wrapper; + if (maskextent != null) { + wrapper = new ExtentWrapper(maskextent); + field.set(maskextent, history); + event.setExtent(wrapper); } else { - ExtentWrapper wrapper; - if (maskextent != null) { - wrapper = new ExtentWrapper(maskextent); - field.set(maskextent, history); - event.setExtent(wrapper); - } else { - wrapper = new ExtentWrapper(history); - event.setExtent(wrapper); - } - field.set(history, reorder); - field.set(reorder, new ProcessedWEExtent(world, mask, max, new FastModeExtent(worldObj, true), wrapper)); + wrapper = new ExtentWrapper(history); + event.setExtent(wrapper); } + field.set(history, reorder); + field.set(reorder, new ProcessedWEExtent(world, mask, max, new FastModeExtent(worldObj, true), wrapper)); } return; } catch (IllegalAccessException | SecurityException | NoSuchFieldException | IllegalArgumentException e) { diff --git a/src/main/java/com/plotsquared/sponge/listener/MainListener.java b/src/main/java/com/plotsquared/sponge/listener/MainListener.java index 61b4fbef5..a6e3808de 100644 --- a/src/main/java/com/plotsquared/sponge/listener/MainListener.java +++ b/src/main/java/com/plotsquared/sponge/listener/MainListener.java @@ -783,7 +783,7 @@ public class MainListener { if (plotworld == null) { return; } - final PlotManager plotManager = PS.get().getPlotManager(PS.get().getPlot(plotworld, plotworld.getMin())); + final PlotManager plotManager = PS.get().getPlot(plotworld, plotworld.getMin()).getManager(); final PlotId id = plotManager.getPlotId(plotworld, x2, 0, getInt(to.getZ())); final Plot lastPlot = pp.getMeta("lastplot"); if (id == null) { @@ -839,7 +839,7 @@ public class MainListener { if (plotworld == null) { return; } - final PlotManager plotManager = PS.get().getPlotManager(PS.get().getPlot(plotworld, plotworld.getMin())); + final PlotManager plotManager = PS.get().getPlot(plotworld, plotworld.getMin()).getManager(); final PlotId id = plotManager.getPlotId(plotworld, x2, 0, z2); final Plot lastPlot = pp.getMeta("lastplot"); if (id == null) {