From f2dcbce4905309f219a50f04194b57e32aa3fd3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20S=C3=B6derberg?= Date: Sat, 25 Jul 2020 03:16:36 +0200 Subject: [PATCH 01/20] Fix problem where servers created in v5 (not converted from v4) would fail to start properly. This is a quite major issue and I hope this fix resolves it. Although, it should be tested with migration from v4 to v5 and then a fresh v5 server. --- .../main/java/com/plotsquared/core/PlotSquared.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Core/src/main/java/com/plotsquared/core/PlotSquared.java b/Core/src/main/java/com/plotsquared/core/PlotSquared.java index 1cab0ba4c..5355db56b 100644 --- a/Core/src/main/java/com/plotsquared/core/PlotSquared.java +++ b/Core/src/main/java/com/plotsquared/core/PlotSquared.java @@ -1735,10 +1735,11 @@ public class PlotSquared { if (this.worlds.contains("worlds")) { if (!this.worlds.contains("configuration_version") || ( - !this.worlds.getString("configuration_version") - .equalsIgnoreCase(LegacyConverter.CONFIGURATION_VERSION) && !this.worlds - .getString("configuration_version").equalsIgnoreCase("v5"))) { - // Conversion needed + !this.worlds.getString("configuration_version").equalsIgnoreCase(LegacyConverter.CONFIGURATION_VERSION) && + !this.worlds.getString("configuration_version").equalsIgnoreCase("v5"))) { + // This means that the server is updating from version 3 to version 5. For this to be possible, + // it must first go through v3->v4 (post_flattening), then on next restart + // it must do v4 (post_flattening) -> v5 log(Captions.LEGACY_CONFIG_FOUND.getTranslated()); try { com.google.common.io.Files @@ -1760,7 +1761,9 @@ public class PlotSquared { return false; } } else { - this.worlds.set("configuration_version", LegacyConverter.CONFIGURATION_VERSION); + // If the server does not have a worlds section in their + // worlds.yml, we assume they generated their database using v5 + this.setConfigurationVersion("v5"); } } catch (IOException ignored) { PlotSquared.log("Failed to save settings.yml"); From c745b99922a88e6c93fe6924eff0a5cec9c3113a Mon Sep 17 00:00:00 2001 From: Timon Date: Thu, 6 Aug 2020 12:01:43 +0200 Subject: [PATCH 02/20] Added UseFlag check at Roads --- .../com/plotsquared/core/util/EventDispatcher.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Core/src/main/java/com/plotsquared/core/util/EventDispatcher.java b/Core/src/main/java/com/plotsquared/core/util/EventDispatcher.java index 23d5dd15f..b495fb212 100644 --- a/Core/src/main/java/com/plotsquared/core/util/EventDispatcher.java +++ b/Core/src/main/java/com/plotsquared/core/util/EventDispatcher.java @@ -279,6 +279,12 @@ public class EventDispatcher { return true; case INTERACT_BLOCK: { if (plot == null) { + final List use = area.getRoadFlag(UseFlag.class); + for(final BlockTypeWrapper blockTypeWrapper : use) { + if (blockTypeWrapper.accepts(BlockTypes.AIR) || blockTypeWrapper.accepts(blockType)) { + return true; + } + } return Permissions.hasPermission(player, Captions.PERMISSION_ADMIN_INTERACT_ROAD.getTranslated(), notifyPerms); } @@ -301,6 +307,12 @@ public class EventDispatcher { } case TRIGGER_PHYSICAL: { if (plot == null) { + final List use = area.getRoadFlag(UseFlag.class); + for(final BlockTypeWrapper blockTypeWrapper : use) { + if (blockTypeWrapper.accepts(BlockTypes.AIR) || blockTypeWrapper.accepts(blockType)) { + return true; + } + } return Permissions.hasPermission(player, Captions.PERMISSION_ADMIN_INTERACT_ROAD.getTranslated(), false); } From 48d3c2105d71219948b55d2fe9f7d227e2b15049 Mon Sep 17 00:00:00 2001 From: MeFisto94 Date: Thu, 6 Aug 2020 13:56:58 +0200 Subject: [PATCH 03/20] Fixes an OfflinePlayerUtil breakage caused by NMS Changes --- .../bukkit/util/OfflinePlayerUtil.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/OfflinePlayerUtil.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/OfflinePlayerUtil.java index 41ae4dedd..197b05cd6 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/OfflinePlayerUtil.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/OfflinePlayerUtil.java @@ -97,6 +97,17 @@ public class OfflinePlayerUtil { return callConstructor(c, worldServer); } + public static Object getWorldServer116() { + Object server = getMinecraftServer(); + Class minecraftServerClass = getNmsClass("MinecraftServer"); + Class dimensionManager = getNmsClass("DimensionManager"); + Class genericResourceKey = getNmsClass("ResourceKey"); + Object overworld = getField(makeField(dimensionManager, "OVERWORLD"), null); + Method getWorldServer = + makeMethod(minecraftServerClass, "getWorldServer", genericResourceKey); + return callMethod(getWorldServer, server, overworld); + } + public static Object getWorldServerNew() { Object server = getMinecraftServer(); Class minecraftServerClass = getNmsClass("MinecraftServer"); @@ -115,7 +126,11 @@ public class OfflinePlayerUtil { try { o = callMethod(getWorldServer, server, 0); } catch (final RuntimeException e) { - o = getWorldServerNew(); + try { + o = getWorldServerNew(); + } catch (final RuntimeException f) { + o = getWorldServer116(); + } } return o; } From b46a19f5ca7255c6d6f4fef9cabbb4493b158930 Mon Sep 17 00:00:00 2001 From: EinDev Date: Sat, 8 Aug 2020 18:07:49 +0200 Subject: [PATCH 04/20] Keep player names, so they don't have to be looked up again. That way the lookup function MainUtil#getName won't get called which would throw an exception if called in the Bukkit Thread. As the player enters the Name, we don't have to look it up again. Fixes PS-96 --- .../com/plotsquared/core/command/Add.java | 39 +++++++++++-------- .../com/plotsquared/core/command/Deny.java | 30 +++++++------- .../com/plotsquared/core/command/Kick.java | 8 ++-- .../com/plotsquared/core/command/Remove.java | 36 ++++++++--------- .../com/plotsquared/core/command/Trust.java | 34 ++++++++-------- .../com/plotsquared/core/util/MainUtil.java | 27 ++++++------- 6 files changed, 88 insertions(+), 86 deletions(-) diff --git a/Core/src/main/java/com/plotsquared/core/command/Add.java b/Core/src/main/java/com/plotsquared/core/command/Add.java index 6d86f7532..f3e5015ca 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Add.java +++ b/Core/src/main/java/com/plotsquared/core/command/Add.java @@ -35,11 +35,11 @@ import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal3; +import com.plotsquared.core.uuid.UUIDMapping; import java.util.Collection; import java.util.Collections; import java.util.Iterator; -import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeoutException; @@ -79,44 +79,49 @@ public class Add extends Command { } else { try { checkTrue(!uuids.isEmpty(), Captions.INVALID_PLAYER, args[0]); - Iterator iterator = uuids.iterator(); + + Iterator iterator = uuids.iterator(); int size = plot.getTrusted().size() + plot.getMembers().size(); while (iterator.hasNext()) { - UUID uuid = iterator.next(); - if (uuid == DBFunc.EVERYONE && !( + UUIDMapping uuidMapping = iterator.next(); + if (uuidMapping.getUuid() == DBFunc.EVERYONE && !( Permissions.hasPermission(player, Captions.PERMISSION_TRUST_EVERYONE) || Permissions .hasPermission(player, Captions.PERMISSION_ADMIN_COMMAND_TRUST))) { - MainUtil.sendMessage(player, Captions.INVALID_PLAYER, MainUtil.getName(uuid)); + MainUtil.sendMessage(player, Captions.ALREADY_ADDED, uuidMapping.getUsername()); iterator.remove(); continue; } - if (plot.isOwner(uuid)) { - MainUtil.sendMessage(player, Captions.ALREADY_ADDED, MainUtil.getName(uuid)); + if (plot.isOwner(uuidMapping.getUuid())) { + new Thread(() -> + MainUtil.sendMessage(player, Captions.ALREADY_ADDED, uuidMapping.getUsername()) + ).start(); iterator.remove(); continue; } - if (plot.getMembers().contains(uuid)) { - MainUtil.sendMessage(player, Captions.ALREADY_ADDED, MainUtil.getName(uuid)); + if (plot.getMembers().contains(uuidMapping.getUuid())) { + new Thread(() -> + MainUtil.sendMessage(player, Captions.ALREADY_ADDED, uuidMapping.getUsername()) + ).start(); iterator.remove(); continue; } - size += plot.getTrusted().contains(uuid) ? 0 : 1; + size += plot.getTrusted().contains(uuidMapping.getUuid()) ? 0 : 1; } checkTrue(!uuids.isEmpty(), null); checkTrue(size <= plot.getArea().getMaxPlotMembers() || Permissions.hasPermission(player, Captions.PERMISSION_ADMIN_COMMAND_TRUST), Captions.PLOT_MAX_MEMBERS); // Success confirm.run(this, () -> { - for (UUID uuid : uuids) { - if (uuid != DBFunc.EVERYONE) { - if (!plot.removeTrusted(uuid)) { - if (plot.getDenied().contains(uuid)) { - plot.removeDenied(uuid); + for (UUIDMapping uuidMapping : uuids) { + if (uuidMapping.getUuid() != DBFunc.EVERYONE) { + if (!plot.removeTrusted(uuidMapping.getUuid())) { + if (plot.getDenied().contains(uuidMapping.getUuid())) { + plot.removeDenied(uuidMapping.getUuid()); } } } - plot.addMember(uuid); - PlotSquared.get().getEventDispatcher().callMember(player, plot, uuid, true); + plot.addMember(uuidMapping.getUuid()); + PlotSquared.get().getEventDispatcher().callMember(player, plot, uuidMapping.getUuid(), true); MainUtil.sendMessage(player, Captions.MEMBER_ADDED); } }, null); diff --git a/Core/src/main/java/com/plotsquared/core/command/Deny.java b/Core/src/main/java/com/plotsquared/core/command/Deny.java index 1cb862304..e1b2536f1 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Deny.java +++ b/Core/src/main/java/com/plotsquared/core/command/Deny.java @@ -35,11 +35,11 @@ import com.plotsquared.core.util.MainUtil; import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.WorldUtil; +import com.plotsquared.core.uuid.UUIDMapping; import com.sk89q.worldedit.world.gamemode.GameModes; import java.util.Collection; import java.util.Collections; -import java.util.UUID; import java.util.concurrent.TimeoutException; @CommandDeclaration(command = "deny", @@ -77,26 +77,26 @@ public class Deny extends SubCommand { } else if (throwable != null || uuids.isEmpty()) { MainUtil.sendMessage(player, Captions.INVALID_PLAYER, args[0]); } else { - for (UUID uuid : uuids) { - if (uuid == DBFunc.EVERYONE && !( + for (UUIDMapping uuidMapping : uuids) { + if (uuidMapping.getUuid() == DBFunc.EVERYONE && !( Permissions.hasPermission(player, Captions.PERMISSION_DENY_EVERYONE) || Permissions .hasPermission(player, Captions.PERMISSION_ADMIN_COMMAND_DENY))) { - MainUtil.sendMessage(player, Captions.INVALID_PLAYER, MainUtil.getName(uuid)); - } else if (plot.isOwner(uuid)) { - MainUtil.sendMessage(player, Captions.CANT_REMOVE_OWNER, MainUtil.getName(uuid)); + MainUtil.sendMessage(player, Captions.INVALID_PLAYER, uuidMapping.getUsername()); + } else if (plot.isOwner(uuidMapping.getUuid())) { + MainUtil.sendMessage(player, Captions.CANT_REMOVE_OWNER, uuidMapping.getUsername()); return; - } else if (plot.getDenied().contains(uuid)) { - MainUtil.sendMessage(player, Captions.ALREADY_ADDED, MainUtil.getName(uuid)); + } else if (plot.getDenied().contains(uuidMapping.getUuid())) { + MainUtil.sendMessage(player, Captions.ALREADY_ADDED, uuidMapping.getUsername()); return; } else { - if (uuid != DBFunc.EVERYONE) { - plot.removeMember(uuid); - plot.removeTrusted(uuid); + if (uuidMapping.getUuid() != DBFunc.EVERYONE) { + plot.removeMember(uuidMapping.getUuid()); + plot.removeTrusted(uuidMapping.getUuid()); } - plot.addDenied(uuid); - PlotSquared.get().getEventDispatcher().callDenied(player, plot, uuid, true); - if (!uuid.equals(DBFunc.EVERYONE)) { - handleKick(PlotSquared.imp().getPlayerManager().getPlayerIfExists(uuid), plot); + plot.addDenied(uuidMapping.getUuid()); + PlotSquared.get().getEventDispatcher().callDenied(player, plot, uuidMapping.getUuid(), true); + if (!uuidMapping.equals(DBFunc.EVERYONE)) { + handleKick(PlotSquared.imp().getPlayerManager().getPlayerIfExists(uuidMapping.getUuid()), plot); } else { for (PlotPlayer plotPlayer : plot.getPlayersInPlot()) { // Ignore plot-owners diff --git a/Core/src/main/java/com/plotsquared/core/command/Kick.java b/Core/src/main/java/com/plotsquared/core/command/Kick.java index 911ea9810..810051a4c 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Kick.java +++ b/Core/src/main/java/com/plotsquared/core/command/Kick.java @@ -35,12 +35,12 @@ import com.plotsquared.core.util.MainUtil; import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.WorldUtil; +import com.plotsquared.core.uuid.UUIDMapping; import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.Set; -import java.util.UUID; import java.util.concurrent.TimeoutException; @CommandDeclaration(command = "kick", @@ -75,8 +75,8 @@ public class Kick extends SubCommand { MainUtil.sendMessage(player, Captions.INVALID_PLAYER, args[0]); } else { Set> players = new HashSet<>(); - for (UUID uuid : uuids) { - if (uuid == DBFunc.EVERYONE) { + for (UUIDMapping uuidMapping : uuids) { + if (uuidMapping.getUuid() == DBFunc.EVERYONE) { for (PlotPlayer pp : plot.getPlayersInPlot()) { if (pp == player || Permissions .hasPermission(pp, Captions.PERMISSION_ADMIN_ENTRY_DENIED)) { @@ -86,7 +86,7 @@ public class Kick extends SubCommand { } continue; } - PlotPlayer pp = PlotSquared.imp().getPlayerManager().getPlayerIfExists(uuid); + PlotPlayer pp = PlotSquared.imp().getPlayerManager().getPlayerIfExists(uuidMapping.getUuid()); if (pp != null) { players.add(pp); } diff --git a/Core/src/main/java/com/plotsquared/core/command/Remove.java b/Core/src/main/java/com/plotsquared/core/command/Remove.java index 871bd2b60..1c2797941 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Remove.java +++ b/Core/src/main/java/com/plotsquared/core/command/Remove.java @@ -34,10 +34,10 @@ import com.plotsquared.core.plot.Plot; import com.plotsquared.core.util.MainUtil; import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.TabCompletions; +import com.plotsquared.core.uuid.UUIDMapping; import java.util.Collection; import java.util.Collections; -import java.util.UUID; import java.util.concurrent.TimeoutException; @CommandDeclaration(command = "remove", @@ -78,37 +78,37 @@ public class Remove extends SubCommand { MainUtil.sendMessage(player, Captions.INVALID_PLAYER, args[0]); return; } else if (!uuids.isEmpty()) { - for (UUID uuid : uuids) { - if (plot.getTrusted().contains(uuid)) { - if (plot.removeTrusted(uuid)) { + for (UUIDMapping uuidMapping : uuids) { + if (plot.getTrusted().contains(uuidMapping.getUuid())) { + if (plot.removeTrusted(uuidMapping.getUuid())) { PlotSquared.get().getEventDispatcher() - .callTrusted(player, plot, uuid, false); + .callTrusted(player, plot, uuidMapping.getUuid(), false); count++; } - } else if (plot.getMembers().contains(uuid)) { - if (plot.removeMember(uuid)) { + } else if (plot.getMembers().contains(uuidMapping.getUuid())) { + if (plot.removeMember(uuidMapping.getUuid())) { PlotSquared.get().getEventDispatcher() - .callMember(player, plot, uuid, false); + .callMember(player, plot, uuidMapping.getUuid(), false); count++; } - } else if (plot.getDenied().contains(uuid)) { - if (plot.removeDenied(uuid)) { + } else if (plot.getDenied().contains(uuidMapping.getUuid())) { + if (plot.removeDenied(uuidMapping.getUuid())) { PlotSquared.get().getEventDispatcher() - .callDenied(player, plot, uuid, false); + .callDenied(player, plot, uuidMapping.getUuid(), false); count++; } - } else if (uuid == DBFunc.EVERYONE) { - if (plot.removeTrusted(uuid)) { + } else if (uuidMapping.getUuid() == DBFunc.EVERYONE) { + if (plot.removeTrusted(uuidMapping.getUuid())) { PlotSquared.get().getEventDispatcher() - .callTrusted(player, plot, uuid, false); + .callTrusted(player, plot, uuidMapping.getUuid(), false); count++; - } else if (plot.removeMember(uuid)) { + } else if (plot.removeMember(uuidMapping.getUuid())) { PlotSquared.get().getEventDispatcher() - .callMember(player, plot, uuid, false); + .callMember(player, plot, uuidMapping.getUuid(), false); count++; - } else if (plot.removeDenied(uuid)) { + } else if (plot.removeDenied(uuidMapping.getUuid())) { PlotSquared.get().getEventDispatcher() - .callDenied(player, plot, uuid, false); + .callDenied(player, plot, uuidMapping.getUuid(), false); count++; } } diff --git a/Core/src/main/java/com/plotsquared/core/command/Trust.java b/Core/src/main/java/com/plotsquared/core/command/Trust.java index 1c4064543..066a02278 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Trust.java +++ b/Core/src/main/java/com/plotsquared/core/command/Trust.java @@ -35,11 +35,11 @@ import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.TabCompletions; import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal3; +import com.plotsquared.core.uuid.UUIDMapping; import java.util.Collection; import java.util.Collections; import java.util.Iterator; -import java.util.UUID; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeoutException; @@ -81,28 +81,28 @@ public class Trust extends Command { return; } else { checkTrue(!uuids.isEmpty(), Captions.INVALID_PLAYER, args[0]); - Iterator iterator = uuids.iterator(); + Iterator iterator = uuids.iterator(); int size = currentPlot.getTrusted().size() + currentPlot.getMembers().size(); while (iterator.hasNext()) { - UUID uuid = iterator.next(); - if (uuid == DBFunc.EVERYONE && !( + UUIDMapping uuidMapping = iterator.next(); + if (uuidMapping.getUuid() == DBFunc.EVERYONE && !( Permissions.hasPermission(player, Captions.PERMISSION_TRUST_EVERYONE) || Permissions .hasPermission(player, Captions.PERMISSION_ADMIN_COMMAND_TRUST))) { - MainUtil.sendMessage(player, Captions.INVALID_PLAYER, MainUtil.getName(uuid)); + MainUtil.sendMessage(player, Captions.INVALID_PLAYER, uuidMapping.getUsername()); iterator.remove(); continue; } - if (currentPlot.isOwner(uuid)) { - MainUtil.sendMessage(player, Captions.ALREADY_ADDED, MainUtil.getName(uuid)); + if (currentPlot.isOwner(uuidMapping.getUuid())) { + MainUtil.sendMessage(player, Captions.ALREADY_ADDED, uuidMapping.getUsername()); iterator.remove(); continue; } - if (currentPlot.getTrusted().contains(uuid)) { - MainUtil.sendMessage(player, Captions.ALREADY_ADDED, MainUtil.getName(uuid)); + if (currentPlot.getTrusted().contains(uuidMapping.getUuid())) { + MainUtil.sendMessage(player, Captions.ALREADY_ADDED, uuidMapping.getUsername()); iterator.remove(); continue; } - size += currentPlot.getMembers().contains(uuid) ? 0 : 1; + size += currentPlot.getMembers().contains(uuidMapping.getUuid()) ? 0 : 1; } checkTrue(!uuids.isEmpty(), null); checkTrue(size <= currentPlot.getArea().getMaxPlotMembers() || Permissions @@ -110,16 +110,16 @@ public class Trust extends Command { Captions.PLOT_MAX_MEMBERS); // Success confirm.run(this, () -> { - for (UUID uuid : uuids) { - if (uuid != DBFunc.EVERYONE) { - if (!currentPlot.removeMember(uuid)) { - if (currentPlot.getDenied().contains(uuid)) { - currentPlot.removeDenied(uuid); + for (UUIDMapping uuidMapping : uuids) { + if (uuidMapping.getUuid() != DBFunc.EVERYONE) { + if (!currentPlot.removeMember(uuidMapping.getUuid())) { + if (currentPlot.getDenied().contains(uuidMapping.getUuid())) { + currentPlot.removeDenied(uuidMapping.getUuid()); } } } - currentPlot.addTrusted(uuid); - PlotSquared.get().getEventDispatcher().callTrusted(player, currentPlot, uuid, true); + currentPlot.addTrusted(uuidMapping.getUuid()); + PlotSquared.get().getEventDispatcher().callTrusted(player, currentPlot, uuidMapping.getUuid(), true); MainUtil.sendMessage(player, Captions.TRUSTED_ADDED); } }, null); diff --git a/Core/src/main/java/com/plotsquared/core/util/MainUtil.java b/Core/src/main/java/com/plotsquared/core/util/MainUtil.java index 9f79f3273..a56e3e1b2 100644 --- a/Core/src/main/java/com/plotsquared/core/util/MainUtil.java +++ b/Core/src/main/java/com/plotsquared/core/util/MainUtil.java @@ -748,10 +748,9 @@ public class MainUtil { return ratings; } - public static void getUUIDsFromString(final String list, final BiConsumer, Throwable> consumer) { + public static void getUUIDsFromString(final String list, final BiConsumer, Throwable> consumer) { String[] split = list.split(","); - - final Set result = new HashSet<>(); + final Set result = new HashSet<>(); final List request = new LinkedList<>(); for (final String name : split) { @@ -759,10 +758,10 @@ public class MainUtil { consumer.accept(Collections.emptySet(), null); return; } else if ("*".equals(name)) { - result.add(DBFunc.EVERYONE); + result.add(new UUIDMapping(DBFunc.EVERYONE, "*")); } else if (name.length() > 16) { try { - result.add(UUID.fromString(name)); + result.add(new UUIDMapping(UUID.fromString(name), name)); } catch (IllegalArgumentException ignored) { consumer.accept(Collections.emptySet(), null); return; @@ -776,16 +775,14 @@ public class MainUtil { consumer.accept(result, null); } else { PlotSquared.get().getImpromptuUUIDPipeline().getUUIDs(request, Settings.UUID.NON_BLOCKING_TIMEOUT) - .whenComplete((uuids, throwable) -> { - if (throwable != null) { - consumer.accept(null, throwable); - } else { - for (final UUIDMapping uuid : uuids) { - result.add(uuid.getUuid()); - } - consumer.accept(result, null); - } - }); + .whenComplete((uuids, throwable) -> { + if (throwable != null) { + consumer.accept(null, throwable); + } else { + result.addAll(uuids); + consumer.accept(result, null); + } + }); } } From 7c756304b55f57f44d05a398eeedec4fbf8abb44 Mon Sep 17 00:00:00 2001 From: N0tMyFaultOG Date: Tue, 11 Aug 2020 16:20:33 +0200 Subject: [PATCH 05/20] 1.16.2 support - Bump EssentialsX version to the latest release --- Bukkit/build.gradle | 6 +++--- Bukkit/pom.xml | 6 +++--- Bukkit/src/main/java/com/plotsquared/bukkit/BukkitMain.java | 1 + .../plotsquared/bukkit/entity/ReplicatingEntityWrapper.java | 2 ++ build.gradle | 1 - 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Bukkit/build.gradle b/Bukkit/build.gradle index 61842d3ce..2a8fd96f2 100644 --- a/Bukkit/build.gradle +++ b/Bukkit/build.gradle @@ -23,8 +23,8 @@ dependencies { implementation(project(":PlotSquared-Core")) compile("org.bstats:bstats-bukkit:1.7") compile(project(":PlotSquared-Core")) - compile("com.destroystokyo.paper:paper-api:1.16.1-R0.1-SNAPSHOT") - implementation("org.spigotmc:spigot-api:1.16.1-R0.1-SNAPSHOT") + compile("com.destroystokyo.paper:paper-api:1.16.2-R0.1-SNAPSHOT") + implementation("org.spigotmc:spigot-api:1.16.2-R0.1-SNAPSHOT") compile(group: "com.sk89q.worldedit", name: "worldedit-bukkit", version: "7.1.0") { exclude(module: "bukkit") @@ -36,7 +36,7 @@ dependencies { } implementation("me.clip:placeholderapi:2.10.6") implementation("net.luckperms:api:5.1") - implementation("net.ess3:EssentialsX:2.17.2") { + implementation("net.ess3:EssentialsX:2.18.0") { exclude(group: "io.papermc", module: "paperlib") } implementation("net.alpenblock:BungeePerms:4.0-dev-106") diff --git a/Bukkit/pom.xml b/Bukkit/pom.xml index 26f8a6607..f52aab5f4 100644 --- a/Bukkit/pom.xml +++ b/Bukkit/pom.xml @@ -27,7 +27,7 @@ com.destroystokyo.paper paper-api - 1.16.1-R0.1-SNAPSHOT + 1.16.2-R0.1-SNAPSHOT compile @@ -149,7 +149,7 @@ org.spigotmc spigot-api - 1.16.1-R0.1-SNAPSHOT + 1.16.2-R0.1-SNAPSHOT runtime @@ -173,7 +173,7 @@ net.ess3 EssentialsX - 2.17.2 + 2.18.0 runtime diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitMain.java b/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitMain.java index f499f5d16..34cbcc5b3 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitMain.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitMain.java @@ -770,6 +770,7 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain< } continue; case "ZOMBIFIED_PIGLIN": + case "PIGLIN_BRUTE": case "LLAMA": case "DONKEY": case "MULE": diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/ReplicatingEntityWrapper.java b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/ReplicatingEntityWrapper.java index 83740e9db..d82c274e9 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/entity/ReplicatingEntityWrapper.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/entity/ReplicatingEntityWrapper.java @@ -310,6 +310,7 @@ public final class ReplicatingEntityWrapper extends EntityWrapper { case "HOGLIN": case "ZOMBIFIED_PIGLIN": case "PIGLIN": + case "PIGLIN_BRUTE": case "ZOMBIE": case "WITHER": case "WITCH": @@ -711,6 +712,7 @@ public final class ReplicatingEntityWrapper extends EntityWrapper { case "HOGLIN": case "PIGLIN": case "ZOMBIFIED_PIGLIN": + case "PIGLIN_BRUTE": case "ZOMBIE": case "WITHER": case "WITCH": diff --git a/build.gradle b/build.gradle index 40639372c..6ed92cdac 100644 --- a/build.gradle +++ b/build.gradle @@ -127,7 +127,6 @@ subprojects { relocate("org.json", "com.plotsquared.json") { exclude "org/json/simple/**" } - // relocate('org.mcstats', 'com.plotsquared.stats') archiveFileName = "${project.name}-${parent.version}.jar" destinationDirectory = file "../target" } From 6315b9ea52c5176354fd2c344d020c9e9ca34318 Mon Sep 17 00:00:00 2001 From: N0tMyFaultOG Date: Tue, 11 Aug 2020 17:43:24 +0200 Subject: [PATCH 06/20] gradle 6.6 --- gradle/wrapper/gradle-wrapper.jar | Bin 58694 -> 58910 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 2 ++ gradlew.bat | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 490fda8577df6c95960ba7077c43220e5bb2c0d9..62d4c053550b91381bbd28b1afc82d634bf73a8a 100644 GIT binary patch delta 6447 zcmY*dbyQSczlH%shY+L(kQ}C6ise@?c@F%#`dE9xT=qM=Dm?$VxD1hrECD1a#01Q8o zMyT3}z+1K>hPE%4doH=x5X;^NP(OFD5GByp;5FQ^bpzkBa(;eudMu7Iyv$DE+N=>p z{3Y5_BP>F3)tXW*Styc(Ji3jnK-giGA_&42fsbZ@#+e+ly3w0VmLC;LA)h1UY(ChA zfwqQ?-@}@S93F|exOv;Se;P|SrYvEG(8q&|ltqvQHO9KgCSwM!Y+#d5eIRq$Mi`pU__N$FTxW@KAWIw= zayY6@9EyxG<_tr&{Wi87m5*mf=u&=;eL1gf{Mt)q8Drick8CcxzLW>cG~TbW)|$*D zYMc|5eZNNzt7O_C1LqgaI`Z0B+2#;3yO;E7N4oMY@~7$4;MRonU+Ca z#*cD!7$u9pZ|3f!-_6rpN}XhAWd`1qiR{e*1CJK1dvBsjUyY@BuT|;EAz}*0uSwT_ zq(g0jXTAK4wsQ>kIKEfRQZw^GIKNRZmV)b;c*Kpc?IvNuq{+eCM4%IBoRUk!JeJ4IVH!pLl+5gQn^$0Fw(WROw~SclOYWbMmvR+x&lYa zrU`5lck*s2zl;n6HEa_E|Btu!_BeeF8T=~0Z-pdJsKtN8nr88*8loznbI`@@8U-bc zCE&MaHH#?LN;6&wU%>->{X&6n*c6ECkP#Bn{lafo9KW+AKK>>f)YfzG#t`XCsl$WX zeS|50l&G{J6yrdD0#njv3|C}K(~azN%1+c#*-JXtZd=Rs-zr)f{Mneaqpgewz^3OM5FaDaH3?RpqMyL}=5sFu_zcDc^E~=$H zp`mutZ0ahrf32c`6ROBh&lI`>vuFJE*(NVpjr~^d53MZ0v$G#mHqBLpZ_=3?pNjHc zq`Dn6xbc32BSg`U@YE?)%%`LvRRWt@NnS4GSj=p><<_-c6l`myAJE0fSp^QbBfdS( zl>BC`;EiMtvPQ^FVSL|sjTc(?b%8Qt@%U>rt&`4_cYT+R`OvMomf#104S~4%y%G=i zSF$4cuIxlIe>@1E=sfXhVt@RqP-*grJnW~;iWiY{&Bqh7J|{vYQ!^1x4cnyGk6Wb9 zO0~}ejH&5@bEj&`2?Wl*cf=IV=$oa9rzh+#gN?j{IY z{cFM?b1*TT+&S2rOIFFvy{`FvX}_js+9rw1O*1ySv8Q}r2b0@*h|1Di0R1v* zVt4yRX`%ac3xeH;(y!FJ1wfX0u z(vEffdladd}+qfb##M5s|vX#V+!&>>0;o_Le@c)+7jDwJJ(9>+3CRkGH z##M)o)xY%3-ifK*iFpo7NiBT`wYVc=lYIZtKF{pxNfod2V)Ml&<=??l)7w5)Glopn z8#scqBz@^rE2-5aVDT_~Q#A7m4S6@B{QM6c_oY?)xk>z8r!qnbkvnqHoIRTMZijQ5 zv*ir-hjrA??C7S({;peDbjO+Kk0=tpoYQr7VQMJ*cR43?@CVMwg=}e<87k-T@wQ2`}bwe-}AAk?H=&0Yz~Zbk~bc>EP@tV zZ}M>Z2br)mwHOaQS1^~;AVlgQS(~eqTT3cQ)Jq8?bKk~$>tZSLgMW6sF{Os2*%OD^ z#@G{w=c@536Pgy5n{C*b?yf@Kd`v9zOG*56432l!^U3K)m1;qIzM*3ZS)XJnJ4THC z^e*Y&BQ)hyIA?LzXpqWK1`GN&gr?{?;qw?0wZ2-3WO3HI;)oY4YL?q5>F9QpzV?jw z%Ae1D+te?r(`vL~!tzayt@-830@#ZS)-KyoF0$s!Vw0Vud%!J!?moY0m8#gODn9F+ zY?TnBMwOKomVz60?|&V3HO!Z!cH+<9qbk>I-tT86n9=X9g`Zr=G+ zeJZH~&WtV__tcQ~B#c3;HnlwX+UoXIT>zqV;hho> zm(S|vbkcOsiPJd5fwJn%e%@Z(YNs#TqQ-MTQNPf9zDS)^#q=x)hn0wzK&7Tn_|BdK zx}|&Y!FqT|pVs!!ayLJ%C$M2LMR|s6aQ%QUi>oqMG=a-^oPaKfKR>DyX9dBV*%R!+ z%FvBF>KN67w@!4Lj7{*vhaGWkP344{vG@LFna%+6y+SB#;an8bz1SAoZg)%>it7$I$^*bWXoT6hbhk;!C7 z5tAKrT@VO5N!8a8G3=U4NL5yNqYdEsc2}2^o5ctj;Hrf0Dk~jL|srk z+XuB%H@ROKFqLw>LUu0bqRXw}B*R!OLo6|5*Q4|0dPlcG;>@4(_wZ})Yf&doH+L*RE=D|Z6RxTU#a|+qO_A4p z2U{|br!ER>QqRY>(awtH6L-S8zx$EeC$o;?KH-zEE{_f%M55>lLD!d9KbLpEyv&z3 zOD}@>1Exq4C9v6urtETRrtB>6m;qqJfh)6o@&+S>@D45s~ccePF=|y`U z-f~hKH|y8x$ovl1NJi3Qqom;ERzIG#^&!~fFQcyl0+H+;`yV@UyA|P*R^h1K*<8h{ zZqjSxw79HGC?HMzs;UY)%J2b0gXnQ=OY;dHMi3-zr7BZ6SnFxTu8VCoySbgs>l^A8 zmN&kvh~36=TRu2B!zInA7+dp6$aaef-&PgtbENZDyV(2Qh!`{>wDfZGw=1SFg*E{+ z#RVlY)C{0iP0+Q52$nQXhK{cVx<)i;=tyb=4mRyl7vX}F8Q%QL>_d6O7MM}r2)$$y+>m{$P8lbYz;fZ z3QWqj-`0^M+YpnVm!KE9$7?qn-uiDEF=*G=DW84fhX*c2c78!Mp!igEq_TE#1gLe8 zl$ro$nqM(yq&C?t-G#o9^eY1)Q9PX&YrAtOX|lboS9pTS>3XVy+T*%QF@Dx%R! zi~z%gEL!?kG{Q%?*cWYwt#5W}g>qQ?$$RX%E0(03W7ZERFNIOjpM5e?6J0JAro(i1 zsQeyE7G{}iSZNnP(n4FwvEp+ztGzd?jYx+(7Mk46X^c!>`oO7{i_yo>FV+t|SvS!} zBkOPHlUb!OPh1Y-8duD(b2u@P=5b8soW*+wnMY4Q8Eq!-L)~5b=n{68|ISew8k>Nt zjw!awOP?W8P1$OO`+#?*f{M(%*J)%E_^tKqR(nv#swuRijXecgwQacnz4TE8 z=2-p0u+VG&&^ePGuUHKIgI+h>XY*ZqAI5N*4Wc%8CXbXf57?Mpl#k^M=OHx26*X=b z@XIHOwsp{@XZ?Foo*@>FnvH!0EQsZ*BR?l&zm|TjE+bDiqA$Y2SY>Copx~1PHa4js z_!C`yon1&oi{Kr00~T|`DcYfvr^uu*F03OLS>^N@6Zi4VhFx(|WVY7whxD`RzX@{a zbt^j09cW#7p^J^3)}YLkrHR`G;mbL@W6__7SC=}Xh$OzjG!>tu=ubtG%LthmSDE)Y zfp>6T8@qS6C@y(<;eHyUqHzM9+%$!LWjRr*z1Qw1s?bAYrK7*KD*C^qP{W=T31H#9%+CXSZ;mJdIE6lN%IxBUk0hr5P})$QDM>4>ow%muHv z-zVTS+rI9+PV|%56*~qa^GKRWwz;dLtoUR%*1M}RGh$LcGlrHaAh-`>BW&!A6mvv( zo}57{BhH+Bqiza~XoxEIpXk_BGR8GzhcQwT4ND>~ahppmV*4SGve=@GE0zZGn}Z_l zMJ~Bi7prl4W<5m=nXZVtIYs=mwv2O*-UXG(Y9#Tfu8=c%NzSja+#d#gJ}FZhj)shN zMhx$^a#S-Ji`_niAxIQ^8YN)tqqJ!k5S_*BUFNY4F-4u9`G(W0v9;O*=f94+)C?7x zvYptQhDL9z*Ef*V5;DWma#Kwl4duDaGW=wP;`7wCjpnvd1`SO#b!fM0%!1J-u}iOT zS`t%%#@E|EzErxcRQ`fYJ)?gm)spx4eAd0@1P(T8Pr4n}5d$L~0>gytVD-^eF2bLx zW3i^+7-f{_=5Zq77xY&vCpL~@OTUZ`^myD;mRijH9fO>_Qdw^gurX%)NhZcgCIxgN z4yJcYrgaS}O8U(X^mwaTnrkxmt*ni+Cdmv>X$)_K4fl)^GtOUWQ~h>K$_^s;h!1Dw z*q&qAD_pNCM3lb9=U3Af`-?xuwb62P12trTb=MXKaYoNRHZPDJv9*`Aw)QF0Tb@g}XFL;| zdJF}(@e5r%*LCQBK*U(pdQRDeKE!)FF+}k{9Fz>A6zUP@OV+3DhvOQ zm{2a0QrQ^kn~?Df`@q(xA(yDoo!~Q+;;_*@_h(a`J~*mJkCa@npgsiRZAQ#pqSOZK z!muT4MNvG*<^MYIQN0h-W#UtDprj`i7Xxq=bTN{>rHH}V?ZdT~kd!O-X zt5JI4SH&YHnn(%JNKh$z*YZsO#t%LLA680?$^5V~dE8Pl^cPrXu++@2D?!)`KkPkM zE{Jaq+MNaAl)!{f!@ID?j@Fh)p!zU~?G%ODNge-447;DM8a%=PGRAB#D&LD5-=atG zY9Y3SF$2Xq8v`e8Rvmy3(wxGi--=L0eqRV6KFsU+waZV(WuPT00CKK)a--{eLpmBy zcXLs^*FtPQfeF;&p!YXTs3p9?U8Q0nzxqE+bM#Y7^_TmK zsw$bo4WCokyvS6N_0(KUJ2!8X|5~{<8pDd7rDt;^sCOx&=RxoN<`o-B}EwumojPl2bzq!x}k%%W5t9nTM1xeXi zQv;z_icyd<$#$rBJk9nk)8!h|c`$y~+NUVUGMRKk0aIBHQxP%YPu#d}ntgv1C_my; zpbt9K?YSK7jR%!jIUz+E3dnfbRMkv&7^h$B&oh5Ae2U{ka*7&~Z|XGk#69p1c_G1FC{&L1hn#)ZCmqpbHXC6uk;Obwn7kSJKaZ`H?u#%dz%W!fJP&`<51T`RomXjQ_%* zZ6iKVWhSW(o;7GYUuAwQxLzZTMt^H4@rorBp`tprXq9xsaKz)V<&_~zzsbGC#J2xC zQqiFYS<^~7D^Pcs?HzZm78=|`Ql?|`KIZR%#&qOMAEpStCrEMl8R0iZLR|#8%!;8p z0VGG*J(7WAxG~ij`ISsxDD--ge}1Dh3vAj>!wtQtec=#YCHNFKz$`Il6fa~c`rYYD z(xqyH;ETfFb?fK!?^*s3`))*65xs|5*^u3Snz(6t59|0kESGze=0W7f>LL{K_sC3& z*ardr??S+*s+p>{8sni`20|xZQ#^D^AQTjp`=*)izGeFN$qoSHK6K7(lg#A*T_gM( zK|#q5@BmyU)j&wqjB*=s29ufgV)YL%VJRV>@1p)anJxE7WkARdZ36Lb~f2b6Q zlm7uK{1gU}2|U1INlYN^Cl9Dh;{WL3PjQf^)PE=rpfSw?($jsQrq#T^it69uKY15Tb~K=hm} zh{fw3iUZN>cmUlz1T^;!pw6KHjOL|4uKo}3i|5k^cjn$5g+E9&YZL(c0t7^Yyr*;k z{39mNJB|kkA^-oNpr8j6hJ*m~3oM}A&ow%Xk22_5P%a?j<^aqv(ILmiH2Q>4Owl^89`~3rMHp zp3(w1Yh0kR@38~4fWByT)-r6kJki5KxqsSQ->5QD8+n7Lblrq&rqbQu<4GcZbwU*DehL0!uF< zAtALa2-nN~-E+^Kf9CT%^Pcydcg~!dGjHY)VIP{X+Mk5X+Z1~yNkl;K;}!vd91tr< z3$)!P0ZK`15GdXAY=~6eS|ICMe*_|EtvP9boO{_-?eWIq(~Zo-^Ni?kUPq%Frv%84 zr)oV1Do+g^<-_H;g&&6jZW30jA}03FK{ok6%fnpg;T?i6z?Ni4>j&X84{fZopFMV_ zPgq3;2ochOBOr>*RYtVW6qFYa2RCa+Rij=CocWr`A#j^WVQcy=l`bl)`?rJh=2@6e z5{>%T3cj@IohTK=HSz{HCTuU>e9Jdy(opO40;jY>4CYhDaoW$2zlNl%@5(Qiu=y0y zcPW^JHHod;>lqb~jFKYaMy2xYMtqcZ)tr_RM@6k9lIwWE8QrU-RZ^X=V;RcRRkvfh zd1>Ux5k>B6Zog!6HSDMhQY$F;vke(i*FG4;(;LQ}mHEaN8B^s8K(WGkdBU85Nh-nw z3TtcD!M5Wr+_o`vA0(6W&{4w4+nrWDTW1^{ z`epH{pQuSybd8I*sYD3SJ~2ag z)Yl_lSuF&Mbw4X`D?Zu`D`om|Xx`05WdlZ9t=JoV-6wy-R)lz9Vmu3c>A*fG30~0(?uQ5FkJ%zGK6$qDU~&hJ-V3Gc6s?!hhw*e)&1k)r=FnmzLWcywDn{+ksed*I9(B{*s3K(%lJ)U)|9X0a^E2 z?>RlLCvy+s4faLC0}D1!+cYzr%>h-s0|&9TBc1a9Zj|0mYS(5 zrQ~xRl7za1>q_E^{8c1q74LqFM-}HUQKs z-HX=BqDsXVjC!$_)l0!SF$o_V=RXM+z&V&q6#jU#AuF*Ji7|_5#Z1IhRaGYUxFADf zpXVNXi^mIuN^VZCEy?r%N`o=v9TuU`3mG^fHWsJ7ia5E@h3U;R^8nN0<6mS@yNZ|*5X zjEnxhb4H)?Mxy|QSTBrESL0adG6`arE$lH-Quq8IpQfLyXQ6-~q4$o-rhCpAt($tI zaQa-ZZM^S!;$?}%kABf#XFUWGO|RZjOJYN?9`~l2FNCPG(y>&9>G2l#+5fWW;j7y+ zQId*;#2h|q8>}2c^sysZFYgKl&gLAc8b;;_h%M^v5(yp^hO`DU#mFTN zZo|S}wZuF&o_J(DA!5AX>d=y}Iw7%z*yBr$?F*l*`ncP=hjAJ8zx2t%b$OWhk#*>L zp`+b!2vJ%5!5Pm;TXyhUy>17398}g9$AA1ssrPvPv44N`QtuuEE{>Jfe<@nFgB5?k zeEE{>t*#8BJh%#1a}!~{TtS;f#A-UQO!fR1zuQA~$WHb8_sW<`I zOQt1l>b3%|CE-m#+H%q)ASiMAt&ke3SnvD{cC0Ff;U-w5o;8ioQdl~qkLfEQ-TaIu~%rf%rG#UXd z#FXb(La?+7@`V^U+FMI3**T4yDFF#ZXU;?IM6Bw#p@kx86Xq&q-1cybR(211`S}V* znO%<4o*ixUE0Pbh+Yz&y$*tl-EYXj4#@j5-Wj6CQ7slhaV>Bq)HZf-lb{<_}t>aYl z&=`I3F_+?^Q~lAB&dSS|O^qS%5er4X>)d^YqM{p>F_t3F+O*!(aZ;%_yJJ}DE$sT^ zD?V+F1o)k|;MJA7`df*pD~TA{i+^wLEi5h3gr(29e5~cw@g{21H}^GSsQD@#%k03a zK9?s{0JjBaTq z%7|3eul{k|8$TQf8qMtCiY(ub>dVMH!d3$^aEg9r8e~r>3sXIyah&#Of9~35eqFVQ>knQg8ZBr~gYpRT*COY|4$vZssNa2NxUeYfsm!1qND_;I$wR~eah0d%+M7?x^JA+$)Ce~Rg zeqN7OxBK8sNnuySGL7AXp>`pLB^Uz@)H+Fq#6*xz^WQ%C8FYh2c}ibM$objs+y-d? zrX=r$2HB8GQAT(a-w^I+Es60?fl37;e}5$RjTuFMKXp%mne_VmrD+=0@u#&VHEO>T z0+aDh{lgzr?z>~c5JWEZg`onQ5xvC~Pg`I34~`FcnLIpC<-1wExH5^!-;y8S-GaK$ zqV%<$D)?4;qGGHu8a=-ztvXSqxh#zCt;e8A_h?gwd4CR;I%At`%CO^gi0;$9($Z`nsRqjuU6#in|WCc2vnFl7_u}-ps18Z*4Id%R4g&)zX z=u-}T0Ym3Y-i-H&S?xF}yw?AdonDV+mwfb*odRY)h;UL3);X$Jjcc$Zn&D^A3CtT} z(yDV3RddXi$VJUPVhedH^S0)1&)Bbgt@+Paok?^h;$k*W0Cbh`vG2mpVU2}c99a5HuH!aSi! z`nGbfL^TymSO0$QBNCccZm*uW{Nh09Z~MGCeOOU2RMqHJ-N&DuF-2n_ObxbNZG*JV zbI(4ArNKZ@CUt-@eo_k@7Mxy(MarP*DVP^#5Z;ZCqEYjzxIeI@q|R4zFEvIRGSVU% z$duRe?0xKK+(*?VWjN^l{Is8>%$ zZ+M=HCS<3MQ`&8i7~}*7hNPrD|Jpj|yihO~({IdOBM?%{!ygU%^BJyBmS%6`!UkVo zL^v<&C;4Th7tx1l!)WXNrYFSMljXe=FPsxEl#gW6l0I%9R?<>^G5~ze5H_V;gf+ny zkoSHZ-~~LeKBBjvGOTE0$zT3w3P}2At4ce)1Y^c=mw9(lJ+3FzO|?53ToOlD?jbsQ z5vy<+b*YLnYm1m9*uo+Hv$3$6AsTswxYOo$!QDU1@_I;r+|0PE$m%;+gL_=h`{M0G z<%5f$DRD1rkyN$KcaWOd?Z>Vcr0Itq->o9Q2%tOr{?NT>&{g$V>kWg|J-0^vg*>mq zXDCk~jYn^7od`Ep|5+kxII7RTuS?Tx=nETO{85~G=6slBjlci%kz`5LkHx;b8HlZh zw*1dWnq*D}N{}lP?*^3Sl#PuDO{Q#n_};J|DU39cPe7s2pX@nCXO~n(FReYqJ3s!S zxpR+QJYxy(_V`@?XTfn8#(w-Z6!{lnk#x%5?42|OsX85_8tK`R_Ov3I#G8T%~|m5^dSLk z=E+zY@@x=EdFQ?R+(^!|Odf9!syD1W>9@W&hWlp@K0RyhEXqPgul#0a-Iymp?(Z8+ zedpt^fW(v;4&6%_BXA z4ML%iVq3UBLjtrypnLM(5fbb$$>*yu%nuPX34Rq^>h*W~m(1Af3XeCtwBOBnb(dcg z+c1f(KCz$tT8{k$O(PYvpV-y?HCzAn)o{Gqea*A+gt|&S*q!p*I7C$ro)~UpMuq~z zD|2*bHB0PErq1`Q`F1;cdmrI%ATwI3T;F3jc(Op`_q zG9GZ(b!$5`zCYFbU0gY*arcOL7%Z11HI8N< zcq<&EOTU~%Z3Q#_Ew?K+2p9%*Mv-*1Nf&fk%@LxhKX;1l5O|Iu>j}ovw{mq96>@dX zRyxG|0z=J$nFIqD!E-Q&?67!glaAo1mOtCUh7{Ar?dWVzC&DU-cGcQD zdZs=K!wc!qJbJ4aoRX@L zBRa?Q9N7R5#0tl=(2)H*61@~nW?QcNN)aonJBtDj!>d+B8l-Vjc1vu()AGLsOg;z= z3z>Lgn+88SWz5<$r*2$j5F6$glpX51lvo`8iT|m8vPVVVa|jx z&hfX2>kf%tAM?<=>xP+`#7lZs61$5|7J_%%!KyPj!t#T}j$H#+@?leTQwL&WsN$BN zuXS}6RGLD|V8HiN%M-zT^@+Hmns8IP+?%IVh@_upzIr!I+-a7r=-%NBXw*Op0`LK3 zG5fdG`C@Axy?d+8VQLq(qkUTD+FNVrN5Q|J6R&jh2Lv)Ole+5pGloEZZQ79>m7YGM zSPJ1GRDQtW?r9jb{g**e3Mr>PHrRWagZ|ku4kjL;JOdL~Id05kc*CA+ui@= zieS-e>hskR-1I9Sx7b4i6p>2LP#vgtG6;8vGL>E3$NPQ$J2r~XGQDNg;Sw=& zC}lz+3@Sq%I2q-97R&9|8Ij2^?^DGQK_oiqZS2$!-rzVqn=~d~TS{n&I+svxt4dWO zT?K0)JEx>9E7saW8h!5+MmAkC`g~v*@ z6VKn0>eZdon>BH(O$mACnxk3D?vSlCFFnvZ#+&hUs)Wr!aP{<@|oc^G>bJk59^xhmz!RA%|K_$o)V`D@gVs>@bSmXVID_PQXp znfja8U01+t3V!o{8ZKi~G@#q$KrAH-Ks3$G{Qo}H|N1ijJMsgZDgOmM1O$Fi0>0CX zpbAzXhYbP@PV;~=*nn7eQGjoT2b9nGFNg-PpHT$a@?7JL7I&pmkmclS7#Y#zRYg_`D0h47O z&|%88tXNh8{Yk$@@*HA-B9r#tDkY$>!U#Ie`j1TupjRn@;(ykyyld-zJ{@qm!UG~I zxR#ZxV8CEi5JXV?ANc~bS9*;MYtkTvifc5iynmg!XpIr%SN*R#E?|3&2QVs~N02d=N!1;GdfNGr)gc$|K#-y*M=Ra9B4#cmk-naoQuS*cWnE3C4 F{|nTN-B$nr diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index bb8b2fc26..6c9a22477 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 2fe81a7d9..fbd7c5158 100755 --- a/gradlew +++ b/gradlew @@ -82,6 +82,7 @@ esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then @@ -129,6 +130,7 @@ fi if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath diff --git a/gradlew.bat b/gradlew.bat index 62bd9b9cc..5093609d5 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -84,6 +84,7 @@ set CMD_LINE_ARGS=%* set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% From a1b10a2900ec15adead0146f7c98348b73c99aec Mon Sep 17 00:00:00 2001 From: N0tMyFaultOG Date: Tue, 11 Aug 2020 17:49:04 +0200 Subject: [PATCH 07/20] Remove dead files --- .github/ISSUE_TEMPLATE.md | 101 ------------------------------ .github/ISSUE_TEMPLATE/config.yml | 8 --- README.md | 2 +- 3 files changed, 1 insertion(+), 110 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE.md delete mode 100644 .github/ISSUE_TEMPLATE/config.yml diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index f1ee68845..000000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,101 +0,0 @@ ---- -name: Bug/Issue report for PlotSquared -about: Bug / Issue report about this plugin -title: '' -labels: "[?] Testing Required" -assignees: '' - ---- - - - - - - - -# Bug Report Template: - -## Required Information section: -> ALL FIELDS IN THIS SECTION ARE REQUIRED, and must contain appropriate information -### Server config info (/plot debugpaste / file paste links): - - - -**/plot debugpaste:** - -### Server type: -**Select one** - -- [] Spigot / Paper *(CraftBukkit should not be used, re-test with Spigot first!)* -- [] Sponge -- [] NukkitX - -### PlotSquared version: - -``` -Paste the output here, between the tick marks, replacing this text -``` - -### Minecraft Version: -**Select one** - -- [] Minecraft 1.15.2 -- [] Minecraft 1.14.4 -- [] Minecraft 1.13.2 -- [] Minecraft 1.12.2 -- [] Minecraft 1.11.2 -- [] Minecraft 1.10.2 -- [] Minecraft 1.9.4 -- [] Minecraft 1.8.8 -- [] Minecraft Java Edition *other versions, please specify*: -- [] Minecraft Bedrock Edition *specify version*: -- [] Minecraft Sponge *specify version*: - -### Server build info: - -``` -Paste the output here, between the tick marks, replacing this text -``` - -### WorldEdit/FAWE versions: - -- [] FAWE version: -- [] WorldEdit version: - -### Description of the problem: - - - -### How to replicate: - - -## Additional Information: -> The information here is optional for you to provide, however it may help us to more readily diagnose any compatibility and bug issues. - -### Other plugins being used on the server: - - -### Relevant console output, log lines, and/or screenshots: - - -### Additional relevant comments/remarks: - - -# AFFIRMATION OF COMPLETION: - -- [] I included all information required in the sections above -- [] I made sure there are no duplicates of this report [(Use Search)](https://github.com/IntellectualSites/PlotSquared/issues?utf8=%E2%9C%93&q=is%3Aissue) -- [] I made sure I am using an up-to-date version of PlotSquared -- [] I made sure the bug/error is not caused by any other plugin -- [x] I didn't read but checked everything above. \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index fd39e3738..000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,8 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: PlotSquared Issue Tracker - url: https://issues.intellectualsites.com/projects/ps - about: Click here to move to our new issue tracker - - name: PlotSquared Suggestions - url: https://github.com/IntellectualSites/PlotSquaredSuggestions - about: If you want to submit feature or suggestion ideas, do that here \ No newline at end of file diff --git a/README.md b/README.md index 4d5de20ef..7380ac78f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- +

--- From d6dfa9a0b9b5a06e233ca9cb0b762ac7caed0fb4 Mon Sep 17 00:00:00 2001 From: N0tMyFaultOG Date: Tue, 11 Aug 2020 20:12:31 +0200 Subject: [PATCH 08/20] https --- Bukkit/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Bukkit/build.gradle b/Bukkit/build.gradle index 2a8fd96f2..81ae0c3c0 100644 --- a/Bukkit/build.gradle +++ b/Bukkit/build.gradle @@ -6,7 +6,7 @@ repositories { maven { url = "https://oss.sonatype.org/content/repositories/snapshots/" } maven { url = "https://jitpack.io" } maven { url = "https://repo.codemc.org/repository/maven-public" } - maven { url = "http://repo.extendedclip.com/content/repositories/placeholderapi/" } + maven { url = "https://repo.extendedclip.com/content/repositories/placeholderapi/" } maven { name = "papermc" url = "https://papermc.io/repo/repository/maven-public/" From 808bddbfbb1d85473104b4040786dac53e3e8f6b Mon Sep 17 00:00:00 2001 From: NotMyFault Date: Wed, 12 Aug 2020 10:30:05 +0200 Subject: [PATCH 09/20] Apply scaling to image --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7380ac78f..a05b3ea21 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- +

--- From 8f1b2a9d2a82194c1e4077d25b6572656d424fc4 Mon Sep 17 00:00:00 2001 From: dordsor21 Date: Fri, 14 Aug 2020 14:21:45 +0100 Subject: [PATCH 10/20] fix pve against animals on other plots and roads --- .../com/plotsquared/bukkit/util/BukkitEntityUtil.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEntityUtil.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEntityUtil.java index d5ef32ba3..c11bcc234 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEntityUtil.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/BukkitEntityUtil.java @@ -272,11 +272,12 @@ public class BukkitEntityUtil { } } else if (roadFlags && (area.getRoadFlag(AnimalAttackFlag.class) || area .getFlag(PveFlag.class))) { - if (!Permissions.hasPermission(plotPlayer, "plots.admin.pve." + stub)) { - MainUtil.sendMessage(plotPlayer, Captions.NO_PERMISSION_EVENT, - "plots.admin.pve." + stub); - return false; - } + return true; + } + if (!Permissions.hasPermission(plotPlayer, "plots.admin.pve." + stub)) { + MainUtil.sendMessage(plotPlayer, Captions.NO_PERMISSION_EVENT, + "plots.admin.pve." + stub); + return false; } } else if (EntityCategories.VEHICLE .contains(entityType)) { // Vehicles are managed in vehicle destroy event From 78a6e72fe17efc1aae0878565ce29c8b8b96a267 Mon Sep 17 00:00:00 2001 From: NotMyFault Date: Fri, 14 Aug 2020 15:26:32 +0200 Subject: [PATCH 11/20] 5.13.2 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 40639372c..9db7e5b6f 100644 --- a/build.gradle +++ b/build.gradle @@ -30,7 +30,7 @@ ext { git = Grgit.open(dir: new File(rootDir.toString() + "/.git")) } -def ver = "5.13.1" +def ver = "5.13.2" def versuffix = "" ext { if (project.hasProperty("versionsuffix")) { From 6c9b73b100a5ae2cf175b19d6424e0cedbba8604 Mon Sep 17 00:00:00 2001 From: MeFisto94 Date: Sun, 16 Aug 2020 14:02:03 +0200 Subject: [PATCH 12/20] Apply patch by @SirYwell to construct the ResourceKey without consulting the DimensionManager --- .../bukkit/util/OfflinePlayerUtil.java | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/util/OfflinePlayerUtil.java b/Bukkit/src/main/java/com/plotsquared/bukkit/util/OfflinePlayerUtil.java index 197b05cd6..94a6acedf 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/util/OfflinePlayerUtil.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/util/OfflinePlayerUtil.java @@ -63,11 +63,11 @@ public class OfflinePlayerUtil { Object profile = newGameProfile(id, name); Class entityPlayerClass = getNmsClass("EntityPlayer"); Constructor entityPlayerConstructor = - makeConstructor(entityPlayerClass, getNmsClass("MinecraftServer"), - getNmsClass("WorldServer"), getUtilClass("com.mojang.authlib.GameProfile"), - getNmsClass("PlayerInteractManager")); + makeConstructor(entityPlayerClass, getNmsClass("MinecraftServer"), + getNmsClass("WorldServer"), getUtilClass("com.mojang.authlib.GameProfile"), + getNmsClass("PlayerInteractManager")); Object entityPlayer = - callConstructor(entityPlayerConstructor, server, worldServer, profile, interactManager); + callConstructor(entityPlayerConstructor, server, worldServer, profile, interactManager); return (Player) getBukkitEntity(entityPlayer); } @@ -100,12 +100,21 @@ public class OfflinePlayerUtil { public static Object getWorldServer116() { Object server = getMinecraftServer(); Class minecraftServerClass = getNmsClass("MinecraftServer"); - Class dimensionManager = getNmsClass("DimensionManager"); Class genericResourceKey = getNmsClass("ResourceKey"); - Object overworld = getField(makeField(dimensionManager, "OVERWORLD"), null); + Class minecraftKey = getNmsClass("MinecraftKey"); + // MinecraftKey + MinecraftKey -> ResourceKey + Method constructResourceKey = makeMethod(genericResourceKey, "a", minecraftKey, minecraftKey); + // MinecraftKey(String) + Constructor minecraftKeyConstructor = makeConstructor(minecraftKey, String.class); + // minecraft:overworld + Object overworldKey = callConstructor(minecraftKeyConstructor, "overworld"); + // minecraft:dimension + Object dimensionKey = callConstructor(minecraftKeyConstructor, "dimension"); + // ResourceKey[minecraft:dimension / minecraft:overworld] + Object resourceKey = callMethod(constructResourceKey, null, dimensionKey, overworldKey); Method getWorldServer = makeMethod(minecraftServerClass, "getWorldServer", genericResourceKey); - return callMethod(getWorldServer, server, overworld); + return callMethod(getWorldServer, server, resourceKey); } public static Object getWorldServerNew() { From 61d1dcc231b5e1657a7b0fdae5089e21bcaa317c Mon Sep 17 00:00:00 2001 From: MeFisto94 Date: Sun, 16 Aug 2020 14:09:32 +0200 Subject: [PATCH 13/20] Ignore Events if they are not caused by real players (i.e. citizens) --- .../bukkit/listener/PlayerEventListener.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java index c4d7c6d90..8392591b5 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java @@ -69,6 +69,7 @@ import com.plotsquared.core.util.MainUtil; import com.plotsquared.core.util.MathMan; import com.plotsquared.core.util.Permissions; import com.plotsquared.core.util.PremiumVerification; +import com.plotsquared.core.util.ReflectionUtils; import com.plotsquared.core.util.RegExUtil; import com.plotsquared.core.util.entity.EntityCategories; import com.plotsquared.core.util.task.TaskManager; @@ -139,6 +140,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.UUID; +import java.util.function.Predicate; import java.util.regex.Pattern; /** @@ -153,7 +155,15 @@ public class PlayerEventListener extends PlotListener implements Listener { private PlayerMoveEvent moveTmp; private String internalVersion; + private final Predicate isRealPlayerCheck; + { + Class playerImplementation = ReflectionUtils.getCbClass("entity.CraftPlayer"); + if (playerImplementation == null) { + isRealPlayerCheck = p -> true; + } else { + isRealPlayerCheck = p -> p.getClass() == playerImplementation; + } try { fieldPlayer = PlayerEvent.class.getDeclaredField("player"); fieldPlayer.setAccessible(true); @@ -346,6 +356,9 @@ public class PlayerEventListener extends PlotListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onTeleport(PlayerTeleportEvent event) { + if (!isRealPlayerCheck.test(event.getPlayer())) { + return; + } Player player = event.getPlayer(); BukkitPlayer pp = BukkitUtil.getPlayer(player); Plot lastPlot = pp.getMeta(PlotPlayer.META_LAST_PLOT); @@ -452,6 +465,9 @@ public class PlayerEventListener extends PlotListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void playerMove(PlayerMoveEvent event) { + if (!isRealPlayerCheck.test(event.getPlayer())) { + return; + } org.bukkit.Location from = event.getFrom(); org.bukkit.Location to = event.getTo(); int x2; @@ -643,6 +659,9 @@ public class PlayerEventListener extends PlotListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onWorldChanged(PlayerChangedWorldEvent event) { + if (!isRealPlayerCheck.test(event.getPlayer())) { + return; + } Player player = event.getPlayer(); BukkitPlayer pp = BukkitUtil.getPlayer(player); // Delete last location From 869a5796552796a2dfda0b637f61c505364a18ef Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Mon, 17 Aug 2020 09:08:30 +0000 Subject: [PATCH 14/20] Bump annotations from 19.0.0 to 20.0.0 Bumps [annotations](https://github.com/JetBrains/java-annotations) from 19.0.0 to 20.0.0. - [Release notes](https://github.com/JetBrains/java-annotations/releases) - [Changelog](https://github.com/JetBrains/java-annotations/blob/master/CHANGELOG.md) - [Commits](https://github.com/JetBrains/java-annotations/compare/19.0.0...20.0.0) Signed-off-by: dependabot-preview[bot] --- Core/build.gradle | 2 +- build.gradle | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Core/build.gradle b/Core/build.gradle index 51f56e187..4d7b74e18 100644 --- a/Core/build.gradle +++ b/Core/build.gradle @@ -16,7 +16,7 @@ dependencies { annotationProcessor("org.projectlombok:lombok:1.18.8") testAnnotationProcessor("org.projectlombok:lombok:1.18.8") implementation("org.jetbrains.kotlin:kotlin-stdlib:1.3.72") - implementation("org.jetbrains:annotations:19.0.0") + implementation("org.jetbrains:annotations:20.0.0") implementation("org.khelekore:prtree:1.7.0-SNAPSHOT") } diff --git a/build.gradle b/build.gradle index 9db7e5b6f..c5ec2e2fc 100644 --- a/build.gradle +++ b/build.gradle @@ -14,7 +14,7 @@ buildscript { configurations.all { resolutionStrategy { force("org.ow2.asm:asm:8.0.1") - force("org.jetbrains:annotations:19.0.0") + force("org.jetbrains:annotations:20.0.0") } } } @@ -106,7 +106,7 @@ subprojects { resolutionStrategy { force("junit:junit:4.12") force("com.google.guava:guava:21.0") - force("org.jetbrains:annotations:19.0.0") + force("org.jetbrains:annotations:20.0.0") force("com.google.code.findbugs:jsr305:3.0.2") } } From 62f675adbe1ed70d92efc7ef4532237290f0ee45 Mon Sep 17 00:00:00 2001 From: Hannes Greule Date: Fri, 21 Aug 2020 00:01:53 +0200 Subject: [PATCH 15/20] Allow visiting all owners of merged plots --- Core/src/main/java/com/plotsquared/core/command/Visit.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Core/src/main/java/com/plotsquared/core/command/Visit.java b/Core/src/main/java/com/plotsquared/core/command/Visit.java index 9d803f6e3..ae6b3947e 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Visit.java +++ b/Core/src/main/java/com/plotsquared/core/command/Visit.java @@ -180,7 +180,9 @@ public class Visit extends Command { Captions.COMMAND_SYNTAX.send(player, getUsage()); } else { final UUID uuid = uuids.toArray(new UUID[0])[0]; - this.visit(player, PlotQuery.newQuery().ownedBy(uuid).whereBasePlot(), finalSortByArea, confirm, whenDone, finalPage1); + this.visit(player, PlotQuery.newQuery() + .thatPasses(plot -> plot.isOwner(uuid)), + finalSortByArea, confirm, whenDone, finalPage1); } }); break; @@ -209,7 +211,7 @@ public class Visit extends Command { MainUtil.sendMessage(player, Captions.INVALID_PLAYER, finalArgs[0]); } } else { - this.visit(player, PlotQuery.newQuery().ownedBy(uuid).whereBasePlot(), null, confirm, whenDone, finalPage); + this.visit(player, PlotQuery.newQuery().thatPasses(plot -> plot.isOwner(uuid)).whereBasePlot(), null, confirm, whenDone, finalPage); } }); } else { From 1064d777c26ef39089e5ab1745a2c0b3f3e3bfcc Mon Sep 17 00:00:00 2001 From: Hannes Greule Date: Fri, 21 Aug 2020 00:02:07 +0200 Subject: [PATCH 16/20] Clean up unused code --- .../com/plotsquared/core/command/Visit.java | 23 ------------------- 1 file changed, 23 deletions(-) diff --git a/Core/src/main/java/com/plotsquared/core/command/Visit.java b/Core/src/main/java/com/plotsquared/core/command/Visit.java index ae6b3947e..c5f8b4b6d 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Visit.java +++ b/Core/src/main/java/com/plotsquared/core/command/Visit.java @@ -264,27 +264,4 @@ public class Visit extends Command { return completions; } - - private void completeNumbers(final List commands, final String arg, final int start) { - for (int i = 0; i < 100; i++) { - final String command = Integer.toString(start + 1); - if (!command.toLowerCase().startsWith(arg.toLowerCase())) { - continue; - } - commands.add(new Command(this, false, command, "", - RequiredType.NONE, CommandCategory.TELEPORT) {}); - } - } - - private void completeAreas(final List commands, final String arg) { - for (final PlotArea area : PlotSquared.get().getPlotAreas()) { - final String areaName = area.getWorldName() + ";" + area.getId(); - if (!areaName.toLowerCase().startsWith(arg.toLowerCase())) { - continue; - } - commands.add(new Command(this, false, area.getWorldName() + ";" + area.getId(), "", - RequiredType.NONE, CommandCategory.TELEPORT) {}); - } - } - } From e93d7feb2cbb6c2145df0342ebb1a3783fc05ef4 Mon Sep 17 00:00:00 2001 From: N0tMyFaultOG Date: Sat, 22 Aug 2020 11:48:03 +0200 Subject: [PATCH 17/20] Fixes PS-114 --- .../main/java/com/plotsquared/core/configuration/Captions.java | 2 +- .../com/plotsquared/core/plot/flag/GlobalFlagContainer.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/src/main/java/com/plotsquared/core/configuration/Captions.java b/Core/src/main/java/com/plotsquared/core/configuration/Captions.java index dbcf463ac..a9f264c2b 100644 --- a/Core/src/main/java/com/plotsquared/core/configuration/Captions.java +++ b/Core/src/main/java/com/plotsquared/core/configuration/Captions.java @@ -627,7 +627,7 @@ public enum Captions implements Caption { FLAG_DESCRIPTION_ANIMAL_CAP("Set to an integer value to limit the amount of animals on the plot.", "Flags"), FLAG_DESCRIPTION_ANIMAL_INTERACT("Set to `true` to allow animals to be interacted with in the plot.", "Flags"), FLAG_DESCRIPTION_BLOCK_BURN("Set to `true` to allow blocks to burn within the plot.", "Flags"), - FLAG_DESCRIPTION_BLOCK_IGNITION("Set to `false` to prevent blocks from igniting within the plot.", "Flags"), + FLAG_DESCRIPTION_BLOCK_IGNITION("Set to `true` to allow blocks getting ignited within the plot.", "Flags"), FLAG_DESCRIPTION_BREAK("Define a list of materials players should be able to break even when they aren't added to the plot.", "Flags"), FLAG_DESCRIPTION_DEVICE_INTERACT("Set to `true` to allow devices to be interacted with in the plot.", "Flags"), FLAG_DESCRIPTION_DISABLE_PHYSICS("Set to `true` to disable block physics in the plot.", "Flags"), diff --git a/Core/src/main/java/com/plotsquared/core/plot/flag/GlobalFlagContainer.java b/Core/src/main/java/com/plotsquared/core/plot/flag/GlobalFlagContainer.java index 3c44a8b5a..d8bccc2d1 100644 --- a/Core/src/main/java/com/plotsquared/core/plot/flag/GlobalFlagContainer.java +++ b/Core/src/main/java/com/plotsquared/core/plot/flag/GlobalFlagContainer.java @@ -143,7 +143,7 @@ public final class GlobalFlagContainer extends FlagContainer { this.addFlag(AnimalAttackFlag.ANIMAL_ATTACK_FALSE); this.addFlag(AnimalInteractFlag.ANIMAL_INTERACT_FALSE); this.addFlag(BlockBurnFlag.BLOCK_BURN_FALSE); - this.addFlag(BlockIgnitionFlag.BLOCK_IGNITION_TRUE); + this.addFlag(BlockIgnitionFlag.BLOCK_IGNITION_FALSE); this.addFlag(DeviceInteractFlag.DEVICE_INTERACT_FALSE); this.addFlag(DisablePhysicsFlag.DISABLE_PHYSICS_FALSE); this.addFlag(DropProtectionFlag.DROP_PROTECTION_FALSE); From 3a8fa9f5b6e119bf28a15fdf0dfd92976c45b9e5 Mon Sep 17 00:00:00 2001 From: N0tMyFaultOG Date: Sat, 22 Aug 2020 13:18:00 +0200 Subject: [PATCH 18/20] Update WorldEdit version That doesn't appear to break stuff :eyes: --- Bukkit/build.gradle | 2 +- Bukkit/pom.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Bukkit/build.gradle b/Bukkit/build.gradle index 81ae0c3c0..4fa93fbb6 100644 --- a/Bukkit/build.gradle +++ b/Bukkit/build.gradle @@ -25,7 +25,7 @@ dependencies { compile(project(":PlotSquared-Core")) compile("com.destroystokyo.paper:paper-api:1.16.2-R0.1-SNAPSHOT") implementation("org.spigotmc:spigot-api:1.16.2-R0.1-SNAPSHOT") - compile(group: "com.sk89q.worldedit", name: "worldedit-bukkit", version: "7.1.0") { + compile(group: "com.sk89q.worldedit", name: "worldedit-bukkit", version: "7.2.0-SNAPSHOT") { exclude(module: "bukkit") } diff --git a/Bukkit/pom.xml b/Bukkit/pom.xml index f52aab5f4..4119b792b 100644 --- a/Bukkit/pom.xml +++ b/Bukkit/pom.xml @@ -21,7 +21,7 @@ com.plotsquared PlotSquared-Core - 5.13.1 + 5.13.2 compile @@ -33,7 +33,7 @@ com.sk89q.worldedit worldedit-bukkit - 7.1.0 + 7.2.0-SNAPSHOT compile From c53cffb745657b07552e9566f05c521ab983120a Mon Sep 17 00:00:00 2001 From: Hannes Greule Date: Mon, 24 Aug 2020 12:47:17 +0200 Subject: [PATCH 19/20] Generate signs by default --- Core/src/main/java/com/plotsquared/core/plot/PlotArea.java | 2 +- .../java/com/plotsquared/core/plot/world/SinglePlotArea.java | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Core/src/main/java/com/plotsquared/core/plot/PlotArea.java b/Core/src/main/java/com/plotsquared/core/plot/PlotArea.java index 08ac2f962..704068a3d 100644 --- a/Core/src/main/java/com/plotsquared/core/plot/PlotArea.java +++ b/Core/src/main/java/com/plotsquared/core/plot/PlotArea.java @@ -1064,7 +1064,7 @@ public abstract class PlotArea { * @return true if plot signs are allow, false otherwise. */ public boolean allowSigns() { - return allowSigns && (this.plots.size() > 1) /* Do not generate signs for single plots */; + return allowSigns; } /** diff --git a/Core/src/main/java/com/plotsquared/core/plot/world/SinglePlotArea.java b/Core/src/main/java/com/plotsquared/core/plot/world/SinglePlotArea.java index a212a0506..5b0667f3a 100644 --- a/Core/src/main/java/com/plotsquared/core/plot/world/SinglePlotArea.java +++ b/Core/src/main/java/com/plotsquared/core/plot/world/SinglePlotArea.java @@ -191,6 +191,11 @@ public class SinglePlotArea extends GridPlotWorld { return super.addPlotIfAbsent(plot); } + @Override + public boolean allowSigns() { + return false; // do not create signs for single plots + } + protected Plot adapt(Plot p) { if (p instanceof SinglePlot) { return p; From c42d5390a4e3086dc3d78e4b9d5fbd735605bc83 Mon Sep 17 00:00:00 2001 From: Hannes Greule Date: Mon, 24 Aug 2020 13:37:12 +0200 Subject: [PATCH 20/20] Allow teleporting to merged plots with multiple owners using /p home --- .../main/java/com/plotsquared/core/command/HomeCommand.java | 2 +- Core/src/main/java/com/plotsquared/core/command/Visit.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Core/src/main/java/com/plotsquared/core/command/HomeCommand.java b/Core/src/main/java/com/plotsquared/core/command/HomeCommand.java index 38942ad11..42c4ff1c5 100644 --- a/Core/src/main/java/com/plotsquared/core/command/HomeCommand.java +++ b/Core/src/main/java/com/plotsquared/core/command/HomeCommand.java @@ -84,7 +84,7 @@ public class HomeCommand extends Command { @NotNull private PlotQuery query(@NotNull final PlotPlayer player) { // everything plots need to have in common here - return PlotQuery.newQuery().ownedBy(player); + return PlotQuery.newQuery().thatPasses(plot -> plot.isOwner(player.getUUID())); } @Override public CompletableFuture execute(PlotPlayer player, String[] args, diff --git a/Core/src/main/java/com/plotsquared/core/command/Visit.java b/Core/src/main/java/com/plotsquared/core/command/Visit.java index c5f8b4b6d..0108cc02d 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Visit.java +++ b/Core/src/main/java/com/plotsquared/core/command/Visit.java @@ -40,6 +40,7 @@ import com.plotsquared.core.util.query.PlotQuery; import com.plotsquared.core.util.query.SortingStrategy; import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal3; +import com.plotsquared.core.uuid.UUIDMapping; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -179,9 +180,9 @@ public class Visit extends Command { } else if (throwable != null || uuids.size() != 1) { Captions.COMMAND_SYNTAX.send(player, getUsage()); } else { - final UUID uuid = uuids.toArray(new UUID[0])[0]; + final UUIDMapping mapping = uuids.toArray(new UUIDMapping[0])[0]; this.visit(player, PlotQuery.newQuery() - .thatPasses(plot -> plot.isOwner(uuid)), + .thatPasses(plot -> plot.isOwner(mapping.getUuid())), finalSortByArea, confirm, whenDone, finalPage1); } });