From 4622f4b51de7f1ab034c1f5cf22eca5d483cf922 Mon Sep 17 00:00:00 2001 From: N0tMyFaultOG Date: Fri, 9 Oct 2020 20:21:02 +0200 Subject: [PATCH 01/11] Fix plot leave --- Core/src/main/java/com/plotsquared/core/command/Leave.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/src/main/java/com/plotsquared/core/command/Leave.java b/Core/src/main/java/com/plotsquared/core/command/Leave.java index 7afa25ff7..afb65e8d9 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Leave.java +++ b/Core/src/main/java/com/plotsquared/core/command/Leave.java @@ -58,7 +58,7 @@ public class Leave extends Command { RunnableVal2 whenDone) throws CommandException { final Plot plot = check(player.getCurrentPlot(), TranslatableCaption.of("errors.not_in_plot")); checkTrue(plot.hasOwner(), TranslatableCaption.of("info.plot_unowned")); - checkTrue(plot.isAdded(player.getUUID()), TranslatableCaption.of("member.not_added_trusted")); + checkTrue(plot.isAdded(player.getUUID()), TranslatableCaption.of("members.not_added_trusted")); if (args.length == 0) { sendUsage(player); return CompletableFuture.completedFuture(false); From 209f25a5cf9f459fee619d420b7a399787889f81 Mon Sep 17 00:00:00 2001 From: N0tMyFaultOG Date: Fri, 9 Oct 2020 20:21:57 +0200 Subject: [PATCH 02/11] Update default branch --- .github/workflows/gradle.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 1f19a8e80..0f27827f9 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -4,11 +4,11 @@ on: push: branches: - 'v5' - - 'v6' + - 'main' pull_request: branches: - 'v5' - - 'v6' + - 'main' jobs: test: From 29b92659c7143ac17ae70088761386dd4e77cb7f Mon Sep 17 00:00:00 2001 From: N0tMyFaultOG Date: Fri, 9 Oct 2020 20:50:12 +0200 Subject: [PATCH 03/11] Fix typos --- .../com/plotsquared/core/permissions/PermissionHolder.java | 2 +- .../src/main/java/com/plotsquared/core/player/PlotPlayer.java | 4 ++-- Core/src/main/java/com/plotsquared/core/util/Permissions.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Core/src/main/java/com/plotsquared/core/permissions/PermissionHolder.java b/Core/src/main/java/com/plotsquared/core/permissions/PermissionHolder.java index 2f5aff9a9..ce0596eb2 100644 --- a/Core/src/main/java/com/plotsquared/core/permissions/PermissionHolder.java +++ b/Core/src/main/java/com/plotsquared/core/permissions/PermissionHolder.java @@ -47,7 +47,7 @@ public interface PermissionHolder { } /** - * Check the the highest permission a PlotPlayer has within a specified range.
+ * Check the highest permission a PlotPlayer has within a specified range.
* - Excessively high values will lag
* - The default range that is checked is {@link Settings.Limit#MAX_PLOTS}
* diff --git a/Core/src/main/java/com/plotsquared/core/player/PlotPlayer.java b/Core/src/main/java/com/plotsquared/core/player/PlotPlayer.java index 5624f8ad8..b225546d1 100644 --- a/Core/src/main/java/com/plotsquared/core/player/PlotPlayer.java +++ b/Core/src/main/java/com/plotsquared/core/player/PlotPlayer.java @@ -799,12 +799,12 @@ public abstract class PlotPlayer

implements CommandCaller, OfflinePlotPlayer, } /** - * Send a title to to the player + * Send a title to the player * * @param title Title * @param subtitle Subtitle * @param fadeIn Fade in time (in ticks) - * @param stay The the title stays for (in ticks) + * @param stay The title stays for (in ticks) * @param fadeOut Fade out time (in ticks) * @param replacements Variable replacements */ diff --git a/Core/src/main/java/com/plotsquared/core/util/Permissions.java b/Core/src/main/java/com/plotsquared/core/util/Permissions.java index dd897ffc4..bdd7b9289 100644 --- a/Core/src/main/java/com/plotsquared/core/util/Permissions.java +++ b/Core/src/main/java/com/plotsquared/core/util/Permissions.java @@ -93,7 +93,7 @@ public class Permissions { } /** - * Check the the highest permission a PlotPlayer has within a specified range.
+ * Check the highest permission a PlotPlayer has within a specified range.
* - Excessively high values will lag
* - The default range that is checked is {@link Settings.Limit#MAX_PLOTS}
* From 08c7d4d15e16078bc028f9898d601d61bcf30f99 Mon Sep 17 00:00:00 2001 From: N0tMyFaultOG Date: Fri, 9 Oct 2020 21:03:23 +0200 Subject: [PATCH 04/11] Remove dead imports --- Core/src/main/java/com/plotsquared/core/command/Template.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/Core/src/main/java/com/plotsquared/core/command/Template.java b/Core/src/main/java/com/plotsquared/core/command/Template.java index 71e81ffd8..b511f7f88 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Template.java +++ b/Core/src/main/java/com/plotsquared/core/command/Template.java @@ -60,10 +60,8 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Collection; -import java.util.Locale; import java.util.Set; import java.util.stream.Collectors; -import java.util.stream.Stream; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; From aeeae7c16757f8ca1c970c79b235bf8e2d417cd0 Mon Sep 17 00:00:00 2001 From: N0tMyFaultOG Date: Sun, 11 Oct 2020 12:47:49 +0200 Subject: [PATCH 05/11] Fix links not being clickable --- .github/workflows/gradle.yml | 4 ++-- .../main/java/com/plotsquared/core/command/PluginCmd.java | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 0f27827f9..1f19a8e80 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -4,11 +4,11 @@ on: push: branches: - 'v5' - - 'main' + - 'v6' pull_request: branches: - 'v5' - - 'main' + - 'v6' jobs: test: diff --git a/Core/src/main/java/com/plotsquared/core/command/PluginCmd.java b/Core/src/main/java/com/plotsquared/core/command/PluginCmd.java index 695b045f6..4184a57fb 100644 --- a/Core/src/main/java/com/plotsquared/core/command/PluginCmd.java +++ b/Core/src/main/java/com/plotsquared/core/command/PluginCmd.java @@ -45,10 +45,11 @@ public class PluginCmd extends SubCommand { StaticCaption.of(">> " + PlotSquared.platform().getPluginName() + " (Version: )"), Template.of("version", String.valueOf(PlotSquared.get().getVersion())) ); - player.sendMessage(StaticCaption.of(" >> Authors: Citymonstret & Empire92 & MattBDev & dordsor21 & NotMyFault & SirYwell")); - player.sendMessage(StaticCaption.of(" >> Wiki: https://wiki.intellectualsites.com/plotsquared/home")); + player.sendMessage(StaticCaption.of(">> Authors: Citymonstret & Empire92 & MattBDev & dordsor21 & NotMyFault & SirYwell")); + player.sendMessage(StaticCaption.of(">> Wiki: https://wiki.intellectualsites.com/plotsquared/home")); + player.sendMessage(StaticCaption.of(">> Discord: https://discord.gg/KxkjDVg")); player.sendMessage( - StaticCaption.of(" >> Premium: "), + StaticCaption.of(">> Premium: "), Template.of("value", String.valueOf(PremiumVerification.isPremium())) ); }); From 191666a2f2aed76822fac977ca081630b77d5cb9 Mon Sep 17 00:00:00 2001 From: N0tMyFaultOG Date: Sun, 11 Oct 2020 13:03:22 +0200 Subject: [PATCH 06/11] Fix logo --- README.md | 2 +- plotsquared-logo.png | Bin 0 -> 36956 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 plotsquared-logo.png diff --git a/README.md b/README.md index a05b3ea21..b7cf695b4 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- +

--- diff --git a/plotsquared-logo.png b/plotsquared-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3ba26fe7f2994740164f346a446d6e07a00998ed GIT binary patch literal 36956 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 Date: Sun, 11 Oct 2020 19:24:50 +0100 Subject: [PATCH 07/11] correctly handle road flags --- .../com/plotsquared/core/plot/PlotArea.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) 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 93545c0b6..69c4d2d53 100644 --- a/Core/src/main/java/com/plotsquared/core/plot/PlotArea.java +++ b/Core/src/main/java/com/plotsquared/core/plot/PlotArea.java @@ -388,17 +388,14 @@ public abstract class PlotArea { this.spawnCustom = config.getBoolean("event.spawn.custom"); this.spawnBreeding = config.getBoolean("event.spawn.breeding"); - List roadflags = config.getStringList("flags.default"); + List roadflags = config.getStringList("road.flags"); if (roadflags.isEmpty()) { - roadflags = config.getStringList("road.flags"); - if (roadflags.isEmpty()) { - roadflags = new ArrayList<>(); - ConfigurationSection section = config.getConfigurationSection("road.flags"); - Set keys = section.getKeys(false); - for (String key : keys) { - if (!"default".equals(key)) { - roadflags.add(key + ';' + section.get(key)); - } + roadflags = new ArrayList<>(); + ConfigurationSection section = config.getConfigurationSection("road.flags"); + Set keys = section.getKeys(false); + for (String key : keys) { + if (!"default".equals(key)) { + roadflags.add(key + ';' + section.get(key)); } } } From 38333a6d111768722d05e8a6d8255f414218f8ce Mon Sep 17 00:00:00 2001 From: Mariell Hoversholm Date: Sat, 17 Oct 2020 21:41:16 +0200 Subject: [PATCH 08/11] Update to Gradle 6.7 --- gradle/wrapper/gradle-wrapper.jar | Bin 58910 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 2 +- gradlew.bat | 21 +++------------------ 4 files changed, 5 insertions(+), 20 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 62d4c053550b91381bbd28b1afc82d634bf73a8a..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f 100644 GIT binary patch delta 6656 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 Yte!%o?r4GTrVtxD61Ym!|5fq-1K$0e!T1w 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 88fe4c8a2..be52383ef 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.7-rc-3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index fbd7c5158..4f906e0c8 100755 --- a/gradlew +++ b/gradlew @@ -130,7 +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 5093609d5..107acd32c 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if "%ERRORLEVEL%" == "0" goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -54,7 +54,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -64,21 +64,6 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line @@ -86,7 +71,7 @@ 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% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell From 333493f35107d61ed1fd84645fc2f99e9e5df5a6 Mon Sep 17 00:00:00 2001 From: Mariell Hoversholm Date: Sat, 17 Oct 2020 21:45:43 +0200 Subject: [PATCH 09/11] adventure v4.1.0; project now compiles --- .../plotsquared/bukkit/listener/PlayerEventListener.java | 5 +++-- Core/build.gradle.kts | 2 +- .../main/java/com/plotsquared/core/command/Debug.java | 2 +- .../src/main/java/com/plotsquared/core/command/Help.java | 9 +++++---- .../main/java/com/plotsquared/core/command/Inbox.java | 2 +- .../java/com/plotsquared/core/player/PlotPlayer.java | 2 +- 6 files changed, 12 insertions(+), 10 deletions(-) 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 496d19482..bdf51d45a 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/listener/PlayerEventListener.java @@ -82,6 +82,7 @@ import com.sk89q.worldedit.WorldEdit; import com.sk89q.worldedit.bukkit.BukkitAdapter; import com.sk89q.worldedit.world.block.BlockType; import io.papermc.lib.PaperLib; +import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.minimessage.Template; import org.bukkit.Bukkit; @@ -685,7 +686,7 @@ public class PlayerEventListener extends PlotListener implements Listener { .of("msg", BukkitUtil.LEGACY_COMPONENT_SERIALIZER.deserialize(ChatColor.translateAlternateColorCodes('&', message))); } else { msgTemplate = Template.of("msg", BukkitUtil.MINI_MESSAGE.deserialize( - ChatColor.stripColor(BukkitUtil.LEGACY_COMPONENT_SERIALIZER.serialize(TextComponent.builder(message).build())))); + ChatColor.stripColor(BukkitUtil.LEGACY_COMPONENT_SERIALIZER.serialize(Component.text(message))))); } for (PlotPlayer receiver : plotRecipients) { receiver.sendMessage(msg, msgTemplate, plotTemplate, senderTemplate); @@ -694,7 +695,7 @@ public class PlayerEventListener extends PlotListener implements Listener { Caption spymsg = TranslatableCaption.of("chat.plot_chat_spy_format"); Template plotidTemplate = Template.of("plot_id", id.getX() + ";" + id.getY()); Template spysenderTemplate = Template.of("sender", sender); - Template spymessageTemplate = Template.of("msg", TextComponent.builder(message).build()); + Template spymessageTemplate = Template.of("msg", Component.text(message)); for (PlotPlayer player : spies) { player.sendMessage(spymsg, plotidTemplate, spysenderTemplate, spymessageTemplate); } diff --git a/Core/build.gradle.kts b/Core/build.gradle.kts index b886a9407..423aca3ac 100644 --- a/Core/build.gradle.kts +++ b/Core/build.gradle.kts @@ -12,7 +12,7 @@ dependencies { compileOnlyApi("org.yaml:snakeyaml:1.26") // Some platforms provide this // Adventure stuff - api("net.kyori:adventure-api:4.0.0-SNAPSHOT") + api("net.kyori:adventure-api:4.1.0") api("net.kyori:adventure-text-minimessage:4.0.0-SNAPSHOT") // Guice diff --git a/Core/src/main/java/com/plotsquared/core/command/Debug.java b/Core/src/main/java/com/plotsquared/core/command/Debug.java index 67eb61d3f..b0d77dcbb 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Debug.java +++ b/Core/src/main/java/com/plotsquared/core/command/Debug.java @@ -147,7 +147,7 @@ public class Debug extends SubCommand { player.sendMessage(StaticCaption.of(msg.toString())); return true; } - TextComponent.Builder information = TextComponent.builder(); + TextComponent.Builder information = Component.text(); Component header = MINI_MESSAGE.parse(TranslatableCaption.of("debug.debug_header").getComponent(player) + "\n"); String line = TranslatableCaption.of("debug.debug_line").getComponent(player) + "\n"; String section = TranslatableCaption.of("debug.debug_section").getComponent(player) + "\n"; diff --git a/Core/src/main/java/com/plotsquared/core/command/Help.java b/Core/src/main/java/com/plotsquared/core/command/Help.java index 8ec4f7e40..dc291b43f 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Help.java +++ b/Core/src/main/java/com/plotsquared/core/command/Help.java @@ -33,6 +33,7 @@ import com.plotsquared.core.util.StringMan; import com.plotsquared.core.util.helpmenu.HelpMenu; import com.plotsquared.core.util.task.RunnableVal2; import com.plotsquared.core.util.task.RunnableVal3; +import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.minimessage.Template; @@ -105,17 +106,17 @@ public class Help extends Command { } } if (cat == null && page == 0) { - TextComponent.Builder builder = TextComponent.builder(); + TextComponent.Builder builder = Component.text(); builder.append(MINI_MESSAGE.parse(TranslatableCaption.of("help.help_header").getComponent(player))); for (CommandCategory c : CommandCategory.values()) { - builder.append("\n").append(MINI_MESSAGE + builder.append(Component.newline()).append(MINI_MESSAGE .parse(TranslatableCaption.of("help.help_info_item").getComponent(player), Template.of("category", c.name().toLowerCase()), Template.of("category_desc", c.getComponent(player)))); } - builder.append("\n").append(MINI_MESSAGE + builder.append(Component.newline()).append(MINI_MESSAGE .parse(TranslatableCaption.of("help.help_info_item").getComponent(player), Template.of("category", "all"), Template.of("category_desc", "Display all commands"))); - builder.append("\n").append(MINI_MESSAGE.parse(TranslatableCaption.of("help.help_footer").getComponent(player))); + builder.append(Component.newline()).append(MINI_MESSAGE.parse(TranslatableCaption.of("help.help_footer").getComponent(player))); player.sendMessage(StaticCaption.of(MINI_MESSAGE.serialize(builder.asComponent()))); return true; } diff --git a/Core/src/main/java/com/plotsquared/core/command/Inbox.java b/Core/src/main/java/com/plotsquared/core/command/Inbox.java index b722c2caa..33ff92b33 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Inbox.java +++ b/Core/src/main/java/com/plotsquared/core/command/Inbox.java @@ -70,7 +70,7 @@ public class Inbox extends SubCommand { if (max > comments.length) { max = comments.length; } - TextComponent.Builder builder = TextComponent.builder(); + TextComponent.Builder builder = Component.text(); builder.append(MINI_MESSAGE.parse(TranslatableCaption.of("list.comment_list_header_paged").getComponent(player) + '\n', Template.of("amount", String.valueOf(comments.length)), Template.of("cur", String.valueOf(page + 1)), Template.of("max", String.valueOf(totalPages + 1)), Template.of("word", "all"))); diff --git a/Core/src/main/java/com/plotsquared/core/player/PlotPlayer.java b/Core/src/main/java/com/plotsquared/core/player/PlotPlayer.java index b225546d1..fe17a7899 100644 --- a/Core/src/main/java/com/plotsquared/core/player/PlotPlayer.java +++ b/Core/src/main/java/com/plotsquared/core/player/PlotPlayer.java @@ -818,7 +818,7 @@ public abstract class PlotPlayer

implements CommandCaller, OfflinePlotPlayer, Duration.of(stay * 50, ChronoUnit.MILLIS), Duration.of(fadeOut * 50, ChronoUnit.MILLIS)); getAudience().showTitle(Title - .of(titleComponent, subtitleComponent, times)); + .title(titleComponent, subtitleComponent, times)); } @Override public void sendMessage(@Nonnull final Caption caption, From 7e9a9e14c71c4f2e8036b74b4e77c3bfdc86255e Mon Sep 17 00:00:00 2001 From: dordsor21 Date: Mon, 19 Oct 2020 17:59:04 +0100 Subject: [PATCH 10/11] Fix various instances where Adventure is being used incorrectly --- Core/build.gradle.kts | 2 +- .../com/plotsquared/core/command/Area.java | 403 +++++++----------- .../com/plotsquared/core/command/Command.java | 6 +- .../com/plotsquared/core/command/ListCmd.java | 144 +++---- .../configuration/caption/CaptionHolder.java | 11 + .../java/com/plotsquared/core/plot/Plot.java | 16 +- .../plotsquared/core/util/PlayerManager.java | 10 +- Core/src/main/resources/lang/messages_en.json | 146 +++---- 8 files changed, 313 insertions(+), 425 deletions(-) diff --git a/Core/build.gradle.kts b/Core/build.gradle.kts index 423aca3ac..aee1b3d4f 100644 --- a/Core/build.gradle.kts +++ b/Core/build.gradle.kts @@ -12,7 +12,7 @@ dependencies { compileOnlyApi("org.yaml:snakeyaml:1.26") // Some platforms provide this // Adventure stuff - api("net.kyori:adventure-api:4.1.0") + api("net.kyori:adventure-api:4.1.1") api("net.kyori:adventure-text-minimessage:4.0.0-SNAPSHOT") // Guice diff --git a/Core/src/main/java/com/plotsquared/core/command/Area.java b/Core/src/main/java/com/plotsquared/core/command/Area.java index 8d1bc9a75..c2a6103c1 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Area.java +++ b/Core/src/main/java/com/plotsquared/core/command/Area.java @@ -29,9 +29,7 @@ import com.google.inject.Inject; import com.plotsquared.core.PlotSquared; import com.plotsquared.core.configuration.ConfigurationSection; import com.plotsquared.core.configuration.ConfigurationUtil; -import com.plotsquared.core.configuration.caption.Caption; import com.plotsquared.core.configuration.caption.CaptionHolder; -import com.plotsquared.core.configuration.caption.StaticCaption; import com.plotsquared.core.configuration.caption.Templates; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.configuration.file.YamlConfiguration; @@ -110,11 +108,13 @@ public class Area extends SubCommand { private final Map> metaData = new HashMap<>(); @Inject public Area(@Nonnull final PlotAreaManager plotAreaManager, - @WorldConfig @Nonnull final YamlConfiguration worldConfiguration, - @WorldFile @Nonnull final File worldFile, - @Nonnull final HybridPlotWorldFactory hybridPlotWorldFactory, - @Nonnull final SetupUtils setupUtils, @Nonnull final WorldUtil worldUtil, - @Nonnull final RegionManager regionManager, @Nonnull final GlobalBlockQueue blockQueue) { + @WorldConfig @Nonnull final YamlConfiguration worldConfiguration, + @WorldFile @Nonnull final File worldFile, + @Nonnull final HybridPlotWorldFactory hybridPlotWorldFactory, + @Nonnull final SetupUtils setupUtils, + @Nonnull final WorldUtil worldUtil, + @Nonnull final RegionManager regionManager, + @Nonnull final GlobalBlockQueue blockQueue) { this.plotAreaManager = plotAreaManager; this.worldConfiguration = worldConfiguration; this.worldFile = worldFile; @@ -137,31 +137,26 @@ public class Area extends SubCommand { return false; } if (!Permissions.hasPermission(player, "plots.area.create")) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Template.of("node", "plots.area.create")); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Template.of("node", "plots.area.create")); return false; } if (args.length < 2) { - player.sendMessage(TranslatableCaption.of("single.single_area_needs_name"), - Template.of("command", "/plot area single ")); + player.sendMessage(TranslatableCaption.of("single.single_area_needs_name"), Template.of("command", "/plot area single ")); return false; } - final PlotArea existingArea = - this.plotAreaManager.getPlotArea(player.getLocation().getWorldName(), args[1]); + final PlotArea existingArea = this.plotAreaManager.getPlotArea(player.getLocation().getWorldName(), args[1]); if (existingArea != null && existingArea.getId().equalsIgnoreCase(args[1])) { player.sendMessage(TranslatableCaption.of("single.single_area_name_taken")); return false; } - final LocalSession localSession = - WorldEdit.getInstance().getSessionManager().getIfPresent(player.toActor()); + final LocalSession localSession = WorldEdit.getInstance().getSessionManager().getIfPresent(player.toActor()); if (localSession == null) { player.sendMessage(TranslatableCaption.of("single.single_area_missing_selection")); return false; } Region playerSelectedRegion = null; try { - playerSelectedRegion = - localSession.getSelection(((Player) player.toActor()).getWorld()); + playerSelectedRegion = localSession.getSelection(((Player) player.toActor()).getWorld()); } catch (final Exception ignored) { } if (playerSelectedRegion == null) { @@ -172,8 +167,8 @@ public class Area extends SubCommand { player.sendMessage(TranslatableCaption.of("single.single_area_not_square")); return false; } - if (this.plotAreaManager.getPlotAreas( - Objects.requireNonNull(playerSelectedRegion.getWorld()).getName(), CuboidRegion.makeCuboid(playerSelectedRegion)).length != 0) { + if (this.plotAreaManager.getPlotAreas(Objects.requireNonNull(playerSelectedRegion.getWorld()).getName(), + CuboidRegion.makeCuboid(playerSelectedRegion)).length != 0) { player.sendMessage(TranslatableCaption.of("single.single_area_overlapping")); } // Alter the region @@ -181,18 +176,15 @@ public class Area extends SubCommand { final BlockVector3 playerSelectionMax = playerSelectedRegion.getMaximumPoint(); // Create a new selection that spans the entire vertical range of the world final CuboidRegion selectedRegion = - new CuboidRegion(playerSelectedRegion.getWorld(), - BlockVector3.at(playerSelectionMin.getX(), 0, playerSelectionMin.getZ()), + new CuboidRegion(playerSelectedRegion.getWorld(), BlockVector3.at(playerSelectionMin.getX(), 0, playerSelectionMin.getZ()), BlockVector3.at(playerSelectionMax.getX(), 255, playerSelectionMax.getZ())); // There's only one plot in the area... final PlotId plotId = PlotId.of(1, 1); final HybridPlotWorld hybridPlotWorld = this.hybridPlotWorldFactory - .create(player.getLocation().getWorldName(), args[1], - Objects.requireNonNull(PlotSquared.platform()).getDefaultGenerator(), + .create(player.getLocation().getWorldName(), args[1], Objects.requireNonNull(PlotSquared.platform()).getDefaultGenerator(), plotId, plotId); // Plot size is the same as the region width - hybridPlotWorld.PLOT_WIDTH = - hybridPlotWorld.SIZE = (short) selectedRegion.getWidth(); + hybridPlotWorld.PLOT_WIDTH = hybridPlotWorld.SIZE = (short) selectedRegion.getWidth(); // We use a schematic generator hybridPlotWorld.setTerrain(PlotAreaTerrainType.NONE); // It is always a partial plot world @@ -200,30 +192,24 @@ public class Area extends SubCommand { // We save the schematic :D hybridPlotWorld.PLOT_SCHEMATIC = true; // Set the road width to 0 - hybridPlotWorld.ROAD_WIDTH = - hybridPlotWorld.ROAD_OFFSET_X = hybridPlotWorld.ROAD_OFFSET_Z = 0; + hybridPlotWorld.ROAD_WIDTH = hybridPlotWorld.ROAD_OFFSET_X = hybridPlotWorld.ROAD_OFFSET_Z = 0; // Set the plot height to the selection height - hybridPlotWorld.PLOT_HEIGHT = hybridPlotWorld.ROAD_HEIGHT = - hybridPlotWorld.WALL_HEIGHT = playerSelectionMin.getBlockY(); + hybridPlotWorld.PLOT_HEIGHT = hybridPlotWorld.ROAD_HEIGHT = hybridPlotWorld.WALL_HEIGHT = playerSelectionMin.getBlockY(); // No sign plz hybridPlotWorld.setAllowSigns(false); final File parentFile = FileUtils.getFile(PlotSquared.platform().getDirectory(), - "schematics" + File.separator + "GEN_ROAD_SCHEMATIC" + File.separator - + hybridPlotWorld.getWorldName() + File.separator + hybridPlotWorld - .getId()); + "schematics" + File.separator + "GEN_ROAD_SCHEMATIC" + File.separator + hybridPlotWorld.getWorldName() + File.separator + + hybridPlotWorld.getId()); if (!parentFile.exists() && !parentFile.mkdirs()) { player.sendMessage(TranslatableCaption.of("single.single_area_could_not_make_directories")); return false; } final File file = new File(parentFile, "plot.schem"); - try (final ClipboardWriter clipboardWriter = BuiltInClipboardFormat.SPONGE_SCHEMATIC - .getWriter(new FileOutputStream(file))) { + try (final ClipboardWriter clipboardWriter = BuiltInClipboardFormat.SPONGE_SCHEMATIC.getWriter(new FileOutputStream(file))) { final BlockArrayClipboard clipboard = new BlockArrayClipboard(selectedRegion); - final EditSession editSession = WorldEdit.getInstance().getEditSessionFactory() - .getEditSession(selectedRegion.getWorld(), -1); + final EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(selectedRegion.getWorld(), -1); final ForwardExtentCopy forwardExtentCopy = - new ForwardExtentCopy(editSession, selectedRegion, clipboard, - selectedRegion.getMinimumPoint()); + new ForwardExtentCopy(editSession, selectedRegion, clipboard, selectedRegion.getMinimumPoint()); forwardExtentCopy.setCopyingBiomes(true); forwardExtentCopy.setCopyingEntities(true); Operations.complete(forwardExtentCopy); @@ -245,15 +231,12 @@ public class Area extends SubCommand { final BlockVector3 singlePos1 = selectedRegion.getMinimumPoint(); // Now the schematic is saved, which is wonderful! - PlotAreaBuilder singleBuilder = PlotAreaBuilder.ofPlotArea(hybridPlotWorld) - .plotManager(PlotSquared.platform().getPluginName()) - .generatorName(PlotSquared.platform().getPluginName()).maximumId(plotId) - .minimumId(plotId); + PlotAreaBuilder singleBuilder = PlotAreaBuilder.ofPlotArea(hybridPlotWorld).plotManager(PlotSquared.platform().getPluginName()) + .generatorName(PlotSquared.platform().getPluginName()).maximumId(plotId).minimumId(plotId); Runnable singleRun = () -> { final String path = - "worlds." + hybridPlotWorld.getWorldName() + ".areas." + hybridPlotWorld - .getId() + '-' + singleBuilder.minimumId() + '-' + singleBuilder - .maximumId(); + "worlds." + hybridPlotWorld.getWorldName() + ".areas." + hybridPlotWorld.getId() + '-' + singleBuilder.minimumId() + '-' + + singleBuilder.maximumId(); final int offsetX = singlePos1.getX(); final int offsetZ = singlePos1.getZ(); if (offsetX != 0) { @@ -267,10 +250,7 @@ public class Area extends SubCommand { PlotSquared.get().loadWorld(world, null); player.sendMessage(TranslatableCaption.of("single.single_area_created")); } else { - player.sendMessage( - TranslatableCaption.of("errors.error_create"), - Template.of("world", hybridPlotWorld.getWorldName()) - ); + player.sendMessage(TranslatableCaption.of("errors.error_create"), Template.of("world", hybridPlotWorld.getWorldName())); } }; singleRun.run(); @@ -279,8 +259,7 @@ public class Area extends SubCommand { case "setup": case "create": if (!Permissions.hasPermission(player, "plots.area.create")) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Template.of("node", "plots.area.create")); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Template.of("node", "plots.area.create")); return false; } switch (args.length) { @@ -291,103 +270,82 @@ public class Area extends SubCommand { case 2: switch (args[1].toLowerCase()) { case "pos1": { // Set position 1 - HybridPlotWorld area = (HybridPlotWorld) metaData - .computeIfAbsent(player.getUUID(), - missingUUID -> new HashMap<>()).get("area_create_area"); + HybridPlotWorld area = (HybridPlotWorld) metaData.computeIfAbsent(player.getUUID(), missingUUID -> new HashMap<>()) + .get("area_create_area"); if (area == null) { player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax"), Templates.of("value", "/plot area create [world[:id]] [=]...")); return false; } Location location = player.getLocation(); - metaData.computeIfAbsent(player.getUUID(), missingUUID -> new HashMap<>()) - .put("area_pos1", location); - player.sendMessage(TranslatableCaption.of("set.set_attribute"), - Template.of("attribute", "area_pos1"), - Template.of("value", location.getX() + "," + location.getZ())); - player.sendMessage(TranslatableCaption.of("area.set_pos2"), - Template.of("command", "/plot area create pos2")); + metaData.computeIfAbsent(player.getUUID(), missingUUID -> new HashMap<>()).put("area_pos1", location); + player.sendMessage(TranslatableCaption.of("set.set_attribute"), Template.of("attribute", "area_pos1"), + Template.of("value", location.getX() + "," + location.getZ())); + player.sendMessage(TranslatableCaption.of("area.set_pos2"), Template.of("command", "/plot area create pos2")); return true; } case "pos2": // Set position 2 and finish creation for type=2 (partial) - final HybridPlotWorld area = (HybridPlotWorld) metaData - .computeIfAbsent(player.getUUID(), - missingUUID -> new HashMap<>()).get("area_create_area"); + final HybridPlotWorld area = + (HybridPlotWorld) metaData.computeIfAbsent(player.getUUID(), missingUUID -> new HashMap<>()) + .get("area_create_area"); if (area == null) { player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax"), Templates.of("value", "/plot area create [world[:id]] [=]...")); return false; } Location pos1 = player.getLocation(); - Location pos2 = (Location) metaData - .computeIfAbsent(player.getUUID(), - missingUUID -> new HashMap<>()).get("area_pos1"); + Location pos2 = + (Location) metaData.computeIfAbsent(player.getUUID(), missingUUID -> new HashMap<>()).get("area_pos1"); int dx = Math.abs(pos1.getX() - pos2.getX()); int dz = Math.abs(pos1.getZ() - pos2.getZ()); - int numX = Math.max(1, - (dx + 1 + area.ROAD_WIDTH + area.SIZE / 2) / area.SIZE); - int numZ = Math.max(1, - (dz + 1 + area.ROAD_WIDTH + area.SIZE / 2) / area.SIZE); + int numX = Math.max(1, (dx + 1 + area.ROAD_WIDTH + area.SIZE / 2) / area.SIZE); + int numZ = Math.max(1, (dz + 1 + area.ROAD_WIDTH + area.SIZE / 2) / area.SIZE); int ddx = dx - (numX * area.SIZE - area.ROAD_WIDTH); int ddz = dz - (numZ * area.SIZE - area.ROAD_WIDTH); int bx = Math.min(pos1.getX(), pos2.getX()) + ddx; int bz = Math.min(pos1.getZ(), pos2.getZ()) + ddz; int tx = Math.max(pos1.getX(), pos2.getX()) - ddx; int tz = Math.max(pos1.getZ(), pos2.getZ()) - ddz; - int lower = (area.ROAD_WIDTH & 1) == 0 ? - area.ROAD_WIDTH / 2 - 1 : - area.ROAD_WIDTH / 2; + int lower = (area.ROAD_WIDTH & 1) == 0 ? area.ROAD_WIDTH / 2 - 1 : area.ROAD_WIDTH / 2; final int offsetX = bx - (area.ROAD_WIDTH == 0 ? 0 : lower); final int offsetZ = bz - (area.ROAD_WIDTH == 0 ? 0 : lower); final CuboidRegion region = RegionUtil.createRegion(bx, tx, bz, tz); - final Set areas = this.plotAreaManager - .getPlotAreasSet(area.getWorldName(), region); + final Set areas = this.plotAreaManager.getPlotAreasSet(area.getWorldName(), region); if (!areas.isEmpty()) { player.sendMessage(TranslatableCaption.of("cluster.cluster_intersection"), - Template.of("cluster", areas.iterator().next().toString())); + Template.of("cluster", areas.iterator().next().toString())); return false; } - PlotAreaBuilder builder = PlotAreaBuilder.ofPlotArea(area) - .plotManager(PlotSquared.platform().getPluginName()) - .generatorName(PlotSquared.platform().getPluginName()) - .minimumId(PlotId.of(1, 1)).maximumId(PlotId.of(numX, numZ)); + PlotAreaBuilder builder = PlotAreaBuilder.ofPlotArea(area).plotManager(PlotSquared.platform().getPluginName()) + .generatorName(PlotSquared.platform().getPluginName()).minimumId(PlotId.of(1, 1)) + .maximumId(PlotId.of(numX, numZ)); final String path = - "worlds." + area.getWorldName() + ".areas." + area.getId() + '-' - + builder.minimumId() + '-' + builder.maximumId(); + "worlds." + area.getWorldName() + ".areas." + area.getId() + '-' + builder.minimumId() + '-' + builder + .maximumId(); Runnable run = () -> { if (offsetX != 0) { - this.worldConfiguration - .set(path + ".road.offset.x", offsetX); + this.worldConfiguration.set(path + ".road.offset.x", offsetX); } if (offsetZ != 0) { - this.worldConfiguration - .set(path + ".road.offset.z", offsetZ); + this.worldConfiguration.set(path + ".road.offset.z", offsetZ); } final String world = this.setupUtils.setupWorld(builder); if (this.worldUtil.isWorld(world)) { PlotSquared.get().loadWorld(world, null); player.sendMessage(TranslatableCaption.of("setup.setup_finished")); - player.teleport(this.worldUtil.getSpawn(world), - TeleportCause.COMMAND); + player.teleport(this.worldUtil.getSpawn(world), TeleportCause.COMMAND); if (area.getTerrain() != PlotAreaTerrainType.ALL) { - QueueCoordinator queue = - blockQueue.getNewQueue(worldUtil.getWeWorld(world)); - queue.setChunkConsumer(chunk -> AugmentedUtils - .generate(null, world, chunk.getX(), chunk.getZ(), - null)); + QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(world)); + queue.setChunkConsumer(chunk -> AugmentedUtils.generate(null, world, chunk.getX(), chunk.getZ(), null)); queue.addReadChunks(region.getChunks()); queue.enqueue(); } } else { - player.sendMessage( - TranslatableCaption.of("errors.error_create"), - Template.of("world", area.getWorldName()) - ); + player.sendMessage(TranslatableCaption.of("errors.error_create"), Template.of("world", area.getWorldName())); } }; if (hasConfirmation(player)) { - CmdConfirm.addPending(player, - getCommandString() + " create pos2 (Creates world)", run); + CmdConfirm.addPending(player, getCommandString() + " create pos2 (Creates world)", run); } else { run.run(); } @@ -403,17 +361,14 @@ public class Area extends SubCommand { } PlotAreaBuilder builder = PlotAreaBuilder.newBuilder(); builder.worldName(split[0]); - final HybridPlotWorld pa = this.hybridPlotWorldFactory - .create(builder.worldName(), id, - PlotSquared.platform().getDefaultGenerator(), null, null); + final HybridPlotWorld pa = + this.hybridPlotWorldFactory.create(builder.worldName(), id, PlotSquared.platform().getDefaultGenerator(), null, null); PlotArea other = this.plotAreaManager.getPlotArea(pa.getWorldName(), id); if (other != null && Objects.equals(pa.getId(), other.getId())) { - player.sendMessage(TranslatableCaption.of("setup.setup_world_taken"), - Template.of("value", pa.toString())); + player.sendMessage(TranslatableCaption.of("setup.setup_world_taken"), Template.of("value", pa.toString())); return false; } - Set areas = - this.plotAreaManager.getPlotAreasSet(pa.getWorldName()); + Set areas = this.plotAreaManager.getPlotAreasSet(pa.getWorldName()); if (!areas.isEmpty()) { PlotArea area = areas.iterator().next(); pa.setType(area.getType()); @@ -422,11 +377,9 @@ public class Area extends SubCommand { for (int i = 2; i < args.length; i++) { String[] pair = args[i].split("="); if (pair.length != 2) { - player.sendMessage( - TranslatableCaption.of("commandconfig.command_syntax_extended"), - Template.of("value1,", getCommandString()), - Template.of("value2", " create [world[:id]] [=]...") - ); + player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax_extended"), + Template.of("value1,", getCommandString()), + Template.of("value2", " create [world[:id]] [=]...")); return false; } switch (pair[0].toLowerCase()) { @@ -449,49 +402,40 @@ public class Area extends SubCommand { break; case "f": case "floor": - pa.TOP_BLOCK = - ConfigurationUtil.BLOCK_BUCKET.parseString(pair[1]); + pa.TOP_BLOCK = ConfigurationUtil.BLOCK_BUCKET.parseString(pair[1]); break; case "m": case "main": - pa.MAIN_BLOCK = - ConfigurationUtil.BLOCK_BUCKET.parseString(pair[1]); + pa.MAIN_BLOCK = ConfigurationUtil.BLOCK_BUCKET.parseString(pair[1]); break; case "w": case "wall": - pa.WALL_FILLING = - ConfigurationUtil.BLOCK_BUCKET.parseString(pair[1]); + pa.WALL_FILLING = ConfigurationUtil.BLOCK_BUCKET.parseString(pair[1]); break; case "b": case "border": - pa.WALL_BLOCK = - ConfigurationUtil.BLOCK_BUCKET.parseString(pair[1]); + pa.WALL_BLOCK = ConfigurationUtil.BLOCK_BUCKET.parseString(pair[1]); break; case "terrain": pa.setTerrain(PlotAreaTerrainType.fromString(pair[1]) - .orElseThrow(() -> new IllegalArgumentException( - pair[1] + " is not a valid terrain."))); + .orElseThrow(() -> new IllegalArgumentException(pair[1] + " is not a valid terrain."))); builder.terrainType(pa.getTerrain()); break; case "type": - pa.setType(PlotAreaType.fromString(pair[1]).orElseThrow( - () -> new IllegalArgumentException( - pair[1] + " is not a valid type."))); + pa.setType(PlotAreaType.fromString(pair[1]) + .orElseThrow(() -> new IllegalArgumentException(pair[1] + " is not a valid type."))); builder.plotAreaType(pa.getType()); break; default: - player.sendMessage( - TranslatableCaption.of("commandconfig.command_syntax_extended"), - Template.of("value1", getCommandString()), - Template.of("value2", " create [world[:id]] [=]...") - ); + player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax_extended"), + Template.of("value1", getCommandString()), + Template.of("value2", " create [world[:id]] [=]...")); return false; } } if (pa.getType() != PlotAreaType.PARTIAL) { if (this.worldUtil.isWorld(pa.getWorldName())) { - player.sendMessage(TranslatableCaption.of("setup.setup_world_taken"), - Template.of("value", pa.getWorldName())); + player.sendMessage(TranslatableCaption.of("setup.setup_world_taken"), Template.of("value", pa.getWorldName())); return false; } Runnable run = () -> { @@ -499,8 +443,7 @@ public class Area extends SubCommand { if (!this.worldConfiguration.contains(path)) { this.worldConfiguration.createSection(path); } - ConfigurationSection section = - this.worldConfiguration.getConfigurationSection(path); + ConfigurationSection section = this.worldConfiguration.getConfigurationSection(path); pa.saveConfiguration(section); pa.loadConfiguration(section); builder.plotManager(PlotSquared.platform().getPluginName()); @@ -508,13 +451,9 @@ public class Area extends SubCommand { String world = this.setupUtils.setupWorld(builder); if (this.worldUtil.isWorld(world)) { player.sendMessage(TranslatableCaption.of("setup.setup_finished")); - player.teleport(this.worldUtil.getSpawn(world), - TeleportCause.COMMAND); + player.teleport(this.worldUtil.getSpawn(world), TeleportCause.COMMAND); } else { - player.sendMessage( - TranslatableCaption.of("errors.error_create"), - Template.of("world", pa.getWorldName()) - ); + player.sendMessage(TranslatableCaption.of("errors.error_create"), Template.of("world", pa.getWorldName())); } try { this.worldConfiguration.save(this.worldFile); @@ -523,49 +462,37 @@ public class Area extends SubCommand { } }; if (hasConfirmation(player)) { - CmdConfirm.addPending(player, - getCommandString() + ' ' + StringMan.join(args, " "), run); + CmdConfirm.addPending(player, getCommandString() + ' ' + StringMan.join(args, " "), run); } else { run.run(); } return true; } if (pa.getId() == null) { - player.sendMessage( - TranslatableCaption.of("commandconfig.command_syntax"), - Template.of("value", getUsage())); - player.sendMessage( - TranslatableCaption.of("commandconfig.command_syntax_extended"), - Template.of("value1", getCommandString()), - Template.of("value2", " create [world[:id]] [=]...") - ); + player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax"), Template.of("value", getUsage())); + player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax_extended"), + Template.of("value1", getCommandString()), Template.of("value2", " create [world[:id]] [=]...")); return false; } if (this.worldUtil.isWorld(pa.getWorldName())) { if (!player.getLocation().getWorldName().equals(pa.getWorldName())) { - player.teleport(this.worldUtil.getSpawn(pa.getWorldName()), - TeleportCause.COMMAND); + player.teleport(this.worldUtil.getSpawn(pa.getWorldName()), TeleportCause.COMMAND); } } else { builder.terrainType(PlotAreaTerrainType.NONE); builder.plotAreaType(PlotAreaType.NORMAL); this.setupUtils.setupWorld(builder); - player.teleport(this.worldUtil.getSpawn(pa.getWorldName()), - TeleportCause.COMMAND); + player.teleport(this.worldUtil.getSpawn(pa.getWorldName()), TeleportCause.COMMAND); } metaData.computeIfAbsent(player.getUUID(), missingUUID -> new HashMap<>()).put("area_create_area", pa); - player.sendMessage( - TranslatableCaption.of("single.get_position"), - Template.of("command", getCommandString()) - ); + player.sendMessage(TranslatableCaption.of("single.get_position"), Template.of("command", getCommandString())); break; } return true; case "i": case "info": { if (!Permissions.hasPermission(player, "plots.area.info")) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Template.of("node", "plots.area.info")); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Template.of("node", "plots.area.info")); return false; } PlotArea area; @@ -577,17 +504,13 @@ public class Area extends SubCommand { area = this.plotAreaManager.getPlotAreaByString(args[1]); break; default: - player.sendMessage( - TranslatableCaption.of("commandconfig.command_syntax_extended"), - Template.of("value1", getCommandString()), - Template.of("value2", " info [area]") - ); + player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax_extended"), Template.of("value1", getCommandString()), + Template.of("value2", " info [area]")); return false; } if (area == null) { if (args.length == 2) { - player.sendMessage(TranslatableCaption.of("errors.not_valid_plot_world"), - Template.of("value", args[1])); + player.sendMessage(TranslatableCaption.of("errors.not_valid_plot_world"), Template.of("value", args[1])); } else { player.sendMessage(TranslatableCaption.of("errors.not_in_plot_world")); } @@ -616,11 +539,11 @@ public class Area extends SubCommand { Template typeTemplate = Template.of("type", area.getType().name()); Template terrainTemplate = Template.of("terrain", area.getTerrain().name()); Template usageTemplate = Template.of("usage", String.format("%.2f", percent)); - Template claimedTemplate = Template.of("name", String.valueOf(claimed)); - Template clustersTemplate = Template.of("name", String.valueOf(clusters)); - Template regionTemplate = Template.of("name", region); - Template generatorTemplate = Template.of("name", generator); - Template footerTemplate = Template.of("name", TranslatableCaption.of("info.plot_info_footer").getComponent(player)); + Template claimedTemplate = Template.of("claimed", String.valueOf(claimed)); + Template clustersTemplate = Template.of("clusters", String.valueOf(clusters)); + Template regionTemplate = Template.of("region", region); + Template generatorTemplate = Template.of("generator", generator); + Template footerTemplate = Template.of("footer", TranslatableCaption.of("info.plot_info_footer").getComponent(player)); player.sendMessage(TranslatableCaption.of("info.area_info_format"), headerTemplate, nameTemplate, typeTemplate, terrainTemplate, usageTemplate, claimedTemplate, clustersTemplate, regionTemplate, generatorTemplate, footerTemplate); return true; @@ -628,8 +551,7 @@ public class Area extends SubCommand { case "l": case "list": if (!Permissions.hasPermission(player, "plots.area.list")) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Template.of("node", "plots.area.list")); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Template.of("node", "plots.area.list")); return false; } int page; @@ -643,86 +565,71 @@ public class Area extends SubCommand { break; } default: - player.sendMessage( - TranslatableCaption.of("commandconfig.command_syntax_extended"), - Template.of("value1", getCommandString()), - Template.of("value2", " list [#]") - ); + player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax_extended"), Template.of("value1", getCommandString()), + Template.of("value2", " list [#]")); return false; } - final List areas = - new ArrayList<>(Arrays.asList(this.plotAreaManager.getAllPlotAreas())); - paginate(player, areas, 8, page, - new RunnableVal3() { - @Override public void run(Integer i, PlotArea area, CaptionHolder caption) { - String name; - double percent; - int claimed = area.getPlotCount(); - int clusters = area.getClusters().size(); - String region; - String generator = String.valueOf(area.getGenerator()); - if (area.getType() == PlotAreaType.PARTIAL) { - PlotId min = area.getMin(); - PlotId max = area.getMax(); - name = area.getWorldName() + ';' + area.getId() + ';' + min + ';' - + max; - int size = - (max.getX() - min.getX() + 1) * (max.getY() - min.getY() + 1); - percent = claimed == 0 ? 0 : size / (double) claimed; - region = area.getRegion().toString(); - } else { - name = area.getWorldName(); - percent = claimed == 0 ? 0 : Short.MAX_VALUE * Short.MAX_VALUE / (double) claimed; - region = "N/A"; - } - Template claimedTemplate = Template.of("claimed", String.valueOf(claimed)); - Template usageTemplate = Template.of("usage", String.format("%.2f", percent) + "%"); - Template clustersTemplate = Template.of("clusters", String.valueOf(clusters)); - Template regionTemplate = Template.of("region", region); - Template generatorTemplate = Template.of("generator", generator); - String tooltip = MINI_MESSAGE.serialize(MINI_MESSAGE - .parse(TranslatableCaption.of("info.area_list_tooltip").getComponent(player), claimedTemplate, usageTemplate, - clustersTemplate, regionTemplate, generatorTemplate)); - Template tooltipTemplate = Template.of("hover_info", tooltip); - Template visitcmdTemplate = Template.of("command_tp", "/plot area tp " + area.toString()); - Template numberTemplate = Template.of("number", String.valueOf(i)); - Template nameTemplate = Template.of("area_name", name); - Template typeTemplate = Template.of("area_type", area.getType().name()); - Template terrainTemplate = Template.of("area_terrain", area.getTerrain().name()); - Caption item = TranslatableCaption.of("info.area_list_item"); - caption.set(StaticCaption.of(MINI_MESSAGE.serialize(MINI_MESSAGE - .parse(item.getComponent(player), tooltipTemplate, visitcmdTemplate, numberTemplate, nameTemplate, typeTemplate, - terrainTemplate)))); + final List areas = new ArrayList<>(Arrays.asList(this.plotAreaManager.getAllPlotAreas())); + paginate(player, areas, 8, page, new RunnableVal3() { + @Override public void run(Integer i, PlotArea area, CaptionHolder caption) { + String name; + double percent; + int claimed = area.getPlotCount(); + int clusters = area.getClusters().size(); + String region; + String generator = String.valueOf(area.getGenerator()); + if (area.getType() == PlotAreaType.PARTIAL) { + PlotId min = area.getMin(); + PlotId max = area.getMax(); + name = area.getWorldName() + ';' + area.getId() + ';' + min + ';' + max; + int size = (max.getX() - min.getX() + 1) * (max.getY() - min.getY() + 1); + percent = claimed == 0 ? 0 : claimed / (double) size; + region = area.getRegion().toString(); + } else { + name = area.getWorldName(); + percent = claimed == 0 ? 0 : (double) claimed / Short.MAX_VALUE * Short.MAX_VALUE; + region = "N/A"; } - }, "/plot area list", TranslatableCaption.of("list.area_list_header_paged")); + Template claimedTemplate = Template.of("claimed", String.valueOf(claimed)); + Template usageTemplate = Template.of("usage", String.format("%.2f", percent) + "%"); + Template clustersTemplate = Template.of("clusters", String.valueOf(clusters)); + Template regionTemplate = Template.of("region", region); + Template generatorTemplate = Template.of("generator", generator); + String tooltip = MINI_MESSAGE.serialize(MINI_MESSAGE + .parse(TranslatableCaption.of("info.area_list_tooltip").getComponent(player), claimedTemplate, usageTemplate, + clustersTemplate, regionTemplate, generatorTemplate)); + Template tooltipTemplate = Template.of("hover_info", tooltip); + Template visitcmdTemplate = Template.of("command_tp", "/plot area tp " + area.toString()); + Template infocmdTemplate = Template.of("command_info", "/plot area info " + area.toString()); + Template numberTemplate = Template.of("number", String.valueOf(i)); + Template nameTemplate = Template.of("area_name", name); + Template typeTemplate = Template.of("area_type", area.getType().name()); + Template terrainTemplate = Template.of("area_terrain", area.getTerrain().name()); + caption.set(TranslatableCaption.of("info.area_list_item")); + caption.setTemplates(tooltipTemplate, visitcmdTemplate, numberTemplate, nameTemplate, typeTemplate, terrainTemplate, + infocmdTemplate); + } + }, "/plot area list", TranslatableCaption.of("list.area_list_header_paged")); return true; case "regen": case "clear": case "reset": case "regenerate": { if (!Permissions.hasPermission(player, "plots.area.regen")) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Template.of("node", "plots.area.regen")); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Template.of("node", "plots.area.regen")); return false; } final PlotArea area = player.getApplicablePlotArea(); if (area == null) { - player.sendMessage( - TranslatableCaption.of("errors.not_in_plot_world") - ); + player.sendMessage(TranslatableCaption.of("errors.not_in_plot_world")); return false; } if (area.getType() != PlotAreaType.PARTIAL) { - player.sendMessage( - TranslatableCaption.of("single.delete_world_region"), - Template.of("world", area.getWorldName()) - ); + player.sendMessage(TranslatableCaption.of("single.delete_world_region"), Template.of("world", area.getWorldName())); return false; } - QueueCoordinator queue = - blockQueue.getNewQueue(worldUtil.getWeWorld(area.getWorldName())); - queue.setChunkConsumer(chunk -> AugmentedUtils - .generate(null, area.getWorldName(), chunk.getX(), chunk.getZ(), null)); + QueueCoordinator queue = blockQueue.getNewQueue(worldUtil.getWeWorld(area.getWorldName())); + queue.setChunkConsumer(chunk -> AugmentedUtils.generate(null, area.getWorldName(), chunk.getX(), chunk.getZ(), null)); queue.addReadChunks(area.getRegion().getChunks()); queue.setCompleteTask(() -> player.sendMessage(TranslatableCaption.of("single.regeneration_complete"))); queue.enqueue(); @@ -734,21 +641,16 @@ public class Area extends SubCommand { case "visit": case "tp": if (!Permissions.hasPermission(player, "plots.area.tp")) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Template.of("node", "plots.area.tp")); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Template.of("node", "plots.area.tp")); return false; } if (args.length != 2) { - player.sendMessage( - TranslatableCaption.of("commandconfig.command_syntax"), - Template.of("value", "/plot visit [area]") - ); + player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax"), Template.of("value", "/plot visit [area]")); return false; } PlotArea area = this.plotAreaManager.getPlotAreaByString(args[1]); if (area == null) { - player.sendMessage(TranslatableCaption.of("errors.not_valid_plot_world"), - Template.of("value", args[1])); + player.sendMessage(TranslatableCaption.of("errors.not_valid_plot_world"), Template.of("value", args[1])); return false; } Location center; @@ -757,14 +659,11 @@ public class Area extends SubCommand { player.teleport(center, TeleportCause.COMMAND); } else { CuboidRegion region = area.getRegion(); - center = Location.at(area.getWorldName(), region.getMinimumPoint().getX() - + (region.getMaximumPoint().getX() - region.getMinimumPoint().getX()) / 2, - 0, region.getMinimumPoint().getZ() - + (region.getMaximumPoint().getZ() - region.getMinimumPoint().getZ()) - / 2); - this.worldUtil - .getHighestBlock(area.getWorldName(), center.getX(), center.getZ(), - y -> player.teleport(center.withY(1 + y), TeleportCause.COMMAND)); + center = Location.at(area.getWorldName(), + region.getMinimumPoint().getX() + (region.getMaximumPoint().getX() - region.getMinimumPoint().getX()) / 2, 0, + region.getMinimumPoint().getZ() + (region.getMaximumPoint().getZ() - region.getMinimumPoint().getZ()) / 2); + this.worldUtil.getHighestBlock(area.getWorldName(), center.getX(), center.getZ(), + y -> player.teleport(center.withY(1 + y), TeleportCause.COMMAND)); } return true; case "delete": diff --git a/Core/src/main/java/com/plotsquared/core/command/Command.java b/Core/src/main/java/com/plotsquared/core/command/Command.java index 006b93433..ef325eec0 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Command.java +++ b/Core/src/main/java/com/plotsquared/core/command/Command.java @@ -248,7 +248,7 @@ public abstract class Command { if (page < 0) { page = 0; } - int totalPages = (int) Math.ceil((double) c.size() / size); + int totalPages = (int) Math.floor((double) c.size() / size); if (page > totalPages) { page = totalPages; } @@ -266,9 +266,9 @@ public abstract class Command { int i = page * size; for (T obj : subList) { i++; - CaptionHolder msg = new CaptionHolder(); + final CaptionHolder msg = new CaptionHolder(); add.run(i, obj, msg); - player.sendMessage(msg.get()); + player.sendMessage(msg.get(), msg.getTemplates()); } // Send the footer if (page < totalPages && page > 0) { // Back | Next diff --git a/Core/src/main/java/com/plotsquared/core/command/ListCmd.java b/Core/src/main/java/com/plotsquared/core/command/ListCmd.java index a396b010e..5aac7a27a 100644 --- a/Core/src/main/java/com/plotsquared/core/command/ListCmd.java +++ b/Core/src/main/java/com/plotsquared/core/command/ListCmd.java @@ -27,13 +27,12 @@ package com.plotsquared.core.command; import com.google.inject.Inject; import com.plotsquared.core.PlotSquared; -import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.configuration.Settings; import com.plotsquared.core.configuration.caption.Caption; import com.plotsquared.core.configuration.caption.CaptionHolder; -import com.plotsquared.core.configuration.caption.StaticCaption; import com.plotsquared.core.configuration.caption.Templates; import com.plotsquared.core.configuration.caption.TranslatableCaption; +import com.plotsquared.core.permissions.Permission; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.PlotArea; @@ -52,10 +51,11 @@ import com.plotsquared.core.util.query.PlotQuery; import com.plotsquared.core.util.query.SortingStrategy; import com.plotsquared.core.util.task.RunnableVal3; import com.plotsquared.core.uuid.UUIDMapping; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.minimessage.Template; import javax.annotation.Nonnull; -import javax.annotation.Nullable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -80,16 +80,14 @@ public class ListCmd extends SubCommand { private final PlotAreaManager plotAreaManager; private final EconHandler econHandler; - @Inject public ListCmd(@Nonnull final PlotAreaManager plotAreaManager, - @Nonnull final EconHandler econHandler) { + @Inject public ListCmd(@Nonnull final PlotAreaManager plotAreaManager, @Nonnull final EconHandler econHandler) { this.plotAreaManager = plotAreaManager; this.econHandler = econHandler; } private String[] getArgumentList(PlotPlayer player) { List args = new ArrayList<>(); - if (this.econHandler != null && Permissions - .hasPermission(player, Permission.PERMISSION_LIST_FOR_SALE)) { + if (this.econHandler != null && Permissions.hasPermission(player, Permission.PERMISSION_LIST_FOR_SALE)) { args.add("forsale"); } if (Permissions.hasPermission(player, Permission.PERMISSION_LIST_MINE)) { @@ -130,7 +128,7 @@ public class ListCmd extends SubCommand { public void noArgs(PlotPlayer player) { player.sendMessage(TranslatableCaption.of("commandconfig.subcommand_set_options_header"), - Templates.of("values", Arrays.toString(getArgumentList(player)))); + Templates.of("values", Arrays.toString(getArgumentList(player)))); } @Override public boolean onCommand(PlotPlayer player, String[] args) { @@ -162,11 +160,8 @@ public class ListCmd extends SubCommand { final Consumer plotConsumer = query -> { if (query == null) { - player.sendMessage( - TranslatableCaption.of("commandconfig.did_you_mean"), - Template.of("value", new StringComparison<>(args[0], new String[] {"mine", "shared", "world", "all"}) - .getBestMatch()) - ); + player.sendMessage(TranslatableCaption.of("commandconfig.did_you_mean"), + Template.of("value", new StringComparison<>(args[0], new String[] {"mine", "shared", "world", "all"}).getBestMatch())); return; } @@ -190,8 +185,7 @@ public class ListCmd extends SubCommand { switch (arg) { case "mine": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_MINE)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Templates.of("node", "plots.list.mine")); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.mine")); return false; } sort[0] = false; @@ -199,29 +193,25 @@ public class ListCmd extends SubCommand { break; case "shared": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_SHARED)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Templates.of("node", "plots.list.shared")); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.shared")); return false; } plotConsumer.accept(PlotQuery.newQuery().withMember(player.getUUID()).thatPasses(plot -> !plot.isOwnerAbs(player.getUUID()))); break; case "world": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_WORLD)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Templates.of("node", "plots.list.world")); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.world")); return false; } if (!Permissions.hasPermission(player, "plots.list.world." + world)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Templates.of("node", "plots.list.world" + world)); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.world" + world)); return false; } plotConsumer.accept(PlotQuery.newQuery().inWorld(world)); break; case "expired": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_EXPIRED)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Templates.of("node", "plots.list.expired")); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.expired")); return false; } if (ExpireManager.IMP == null) { @@ -232,13 +222,11 @@ public class ListCmd extends SubCommand { break; case "area": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_AREA)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Templates.of("node", "plots.list.area")); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.area")); return false; } if (!Permissions.hasPermission(player, "plots.list.world." + world)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Templates.of("node", "plots.list.world" + world)); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.world" + world)); return false; } if (area == null) { @@ -249,16 +237,14 @@ public class ListCmd extends SubCommand { break; case "all": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_ALL)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Templates.of("node", "plots.list.all")); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.all")); return false; } plotConsumer.accept(PlotQuery.newQuery().allPlots()); break; case "done": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_DONE)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Templates.of("node", "plots.list.done")); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.done")); return false; } sort[0] = false; @@ -266,8 +252,7 @@ public class ListCmd extends SubCommand { break; case "top": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_TOP)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Templates.of("node", "plots.list.top")); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.top")); return false; } sort[0] = false; @@ -275,8 +260,7 @@ public class ListCmd extends SubCommand { break; case "forsale": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_FOR_SALE)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Templates.of("node", "plots.list.forsale")); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.forsale")); return false; } if (this.econHandler.isSupported()) { @@ -286,21 +270,19 @@ public class ListCmd extends SubCommand { break; case "unowned": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_UNOWNED)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Templates.of("node", "plots.list.unowned")); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.unowned")); return false; } plotConsumer.accept(PlotQuery.newQuery().allPlots().thatPasses(plot -> plot.getOwner() == null)); break; case "fuzzy": if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_FUZZY)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Templates.of("node", "plots.list.fuzzy")); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.fuzzy")); return false; } if (args.length < (page == -1 ? 2 : 3)) { player.sendMessage(TranslatableCaption.of("commandconfig.command_syntax"), - Templates.of("value", "/plot list fuzzy [#]")); + Templates.of("value", "/plot list fuzzy [#]")); return false; } String term; @@ -315,45 +297,39 @@ public class ListCmd extends SubCommand { default: if (this.plotAreaManager.hasPlotArea(args[0])) { if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_WORLD)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Templates.of("node", "plots.list.world")); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.world")); return false; } if (!Permissions.hasPermission(player, "plots.list.world." + args[0])) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Templates.of("node", "plots.list.world." + args[0])); + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.world." + args[0])); return false; } plotConsumer.accept(PlotQuery.newQuery().inWorld(args[0])); break; } - PlotSquared.get().getImpromptuUUIDPipeline() - .getSingle(args[0], (uuid, throwable) -> { - if (throwable instanceof TimeoutException) { - player.sendMessage(TranslatableCaption.of("players.fetching_players_timeout")); - } else if (throwable != null) { - if (uuid == null) { - try { - uuid = UUID.fromString(args[0]); - } catch (Exception ignored) { - } - } - } + PlotSquared.get().getImpromptuUUIDPipeline().getSingle(args[0], (uuid, throwable) -> { + if (throwable instanceof TimeoutException) { + player.sendMessage(TranslatableCaption.of("players.fetching_players_timeout")); + } else if (throwable != null) { if (uuid == null) { - player.sendMessage(TranslatableCaption.of("errors.invalid_player"), - Templates.of("value", args[0])); - } else { - if (!Permissions - .hasPermission(player, Permission.PERMISSION_LIST_PLAYER)) { - player.sendMessage(TranslatableCaption.of("permission.no_permission"), - Templates.of("node", "plots.list.player")); - } else { - sort[0] = false; - plotConsumer.accept(PlotQuery.newQuery().ownedBy(uuid).withSortingStrategy(SortingStrategy.SORT_BY_TEMP)); + try { + uuid = UUID.fromString(args[0]); + } catch (Exception ignored) { } } - }); + } + if (uuid == null) { + player.sendMessage(TranslatableCaption.of("errors.invalid_player"), Templates.of("value", args[0])); + } else { + if (!Permissions.hasPermission(player, Permission.PERMISSION_LIST_PLAYER)) { + player.sendMessage(TranslatableCaption.of("permission.no_permission"), Templates.of("node", "plots.list.player")); + } else { + sort[0] = false; + plotConsumer.accept(PlotQuery.newQuery().ownedBy(uuid).withSortingStrategy(SortingStrategy.SORT_BY_TEMP)); + } + } + }); } return true; @@ -376,32 +352,32 @@ public class ListCmd extends SubCommand { } else { color = TranslatableCaption.of("info.plot_list_default"); } - String trusted = MINI_MESSAGE.serialize(MINI_MESSAGE.parse(TranslatableCaption.of("info.plot_info_trusted").getComponent(player), - Template.of("trusted", PlayerManager.getPlayerList(plot.getTrusted())))); - String members = MINI_MESSAGE.serialize(MINI_MESSAGE.parse(TranslatableCaption.of("info.plot_info_members").getComponent(player), - Template.of("members", PlayerManager.getPlayerList(plot.getMembers())))); + Component trusted = MINI_MESSAGE.parse(TranslatableCaption.of("info.plot_info_trusted").getComponent(player), + Template.of("trusted", PlayerManager.getPlayerList(plot.getTrusted()))); + Component members = MINI_MESSAGE.parse(TranslatableCaption.of("info.plot_info_members").getComponent(player), + Template.of("members", PlayerManager.getPlayerList(plot.getMembers()))); Template command_tp = Template.of("command_tp", "/plot visit " + plot.getArea() + ";" + plot.getId()); Template command_info = Template.of("command_info", "/plot info " + plot.getArea() + ";" + plot.getId()); - Template hover_info = Template.of("hover_info", trusted + "\n" + members); + Template hover_info = + Template.of("hover_info", MINI_MESSAGE.serialize(Component.text().append(trusted).append(Component.newline()).append(members).asComponent())); Template numberTemplate = Template.of("number", String.valueOf(i)); - Template plotTemplate = - Template.of("plot", MINI_MESSAGE.serialize(MINI_MESSAGE.parse(color.getComponent(player), Template.of("plot", plot.toString())))); + Template plotTemplate = Template.of("plot", MINI_MESSAGE.parse(color.getComponent(player), Template.of("plot", plot.toString()))); + String prefix = ""; String online = TranslatableCaption.of("info.plot_list_player_online").getComponent(player); String offline = TranslatableCaption.of("info.plot_list_player_offline").getComponent(player); - StringBuilder builder = new StringBuilder(); - + TextComponent.Builder builder = Component.text(); try { final List names = PlotSquared.get().getImpromptuUUIDPipeline().getNames(plot.getOwners()) .get(Settings.UUID.BLOCKING_TIMEOUT, TimeUnit.MILLISECONDS); for (final UUIDMapping uuidMapping : names) { PlotPlayer pp = PlotSquared.platform().getPlayerManager().getPlayerIfExists(uuidMapping.getUuid()); Template prefixTemplate = Template.of("prefix", prefix); - Template playerTemplate = Template.of("prefix", uuidMapping.getUsername()); + Template playerTemplate = Template.of("player", uuidMapping.getUsername()); if (pp != null) { - builder.append(MINI_MESSAGE.serialize(MINI_MESSAGE.parse(online, prefixTemplate, playerTemplate))); + builder.append(MINI_MESSAGE.parse(online, prefixTemplate, playerTemplate)); } else { - builder.append(MINI_MESSAGE.serialize(MINI_MESSAGE.parse(offline, prefixTemplate, playerTemplate))); + builder.append(MINI_MESSAGE.parse(offline, prefixTemplate, playerTemplate)); } prefix = ", "; } @@ -419,18 +395,16 @@ public class ListCmd extends SubCommand { } catch (TimeoutException e) { player.sendMessage(TranslatableCaption.of("players.fetching_players_timeout")); } - Template players = Template.of("players", builder.toString()); - caption.set(StaticCaption.of(MINI_MESSAGE.serialize(MINI_MESSAGE - .parse(TranslatableCaption.of("info.plot_list_item").getComponent(player), command_tp, command_info, hover_info, numberTemplate, - plotTemplate, players)))); + Template players = Template.of("players", builder.asComponent()); + caption.set(TranslatableCaption.of("info.plot_list_item")); + caption.setTemplates(command_tp, command_info, hover_info, numberTemplate, plotTemplate, players); } }, "/plot list " + args[0], TranslatableCaption.of("list.plot_list_header_paged")); } @Override public Collection tab(PlotPlayer player, String[] args, boolean space) { final List completions = new LinkedList<>(); - if (this.econHandler.isSupported() && Permissions - .hasPermission(player, Permission.PERMISSION_LIST_FOR_SALE)) { + if (this.econHandler.isSupported() && Permissions.hasPermission(player, Permission.PERMISSION_LIST_FOR_SALE)) { completions.add("forsale"); } if (Permissions.hasPermission(player, Permission.PERMISSION_LIST_MINE)) { diff --git a/Core/src/main/java/com/plotsquared/core/configuration/caption/CaptionHolder.java b/Core/src/main/java/com/plotsquared/core/configuration/caption/CaptionHolder.java index 347c8e0fb..f2161e13b 100644 --- a/Core/src/main/java/com/plotsquared/core/configuration/caption/CaptionHolder.java +++ b/Core/src/main/java/com/plotsquared/core/configuration/caption/CaptionHolder.java @@ -25,9 +25,12 @@ */ package com.plotsquared.core.configuration.caption; +import net.kyori.adventure.text.minimessage.Template; + public class CaptionHolder { private Caption caption = StaticCaption.of(""); + private Template[] templates = new Template[0]; public void set(Caption caption) { this.caption = caption; @@ -37,4 +40,12 @@ public class CaptionHolder { return this.caption; } + public Template[] getTemplates() { + return this.templates; + } + + public void setTemplates(Template... templates) { + this.templates = templates; + } + } diff --git a/Core/src/main/java/com/plotsquared/core/plot/Plot.java b/Core/src/main/java/com/plotsquared/core/plot/Plot.java index c2689461e..0400c1e8a 100644 --- a/Core/src/main/java/com/plotsquared/core/plot/Plot.java +++ b/Core/src/main/java/com/plotsquared/core/plot/Plot.java @@ -76,6 +76,7 @@ import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.regions.CuboidRegion; import com.sk89q.worldedit.world.biome.BiomeType; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.Template; import org.slf4j.Logger; @@ -2663,9 +2664,9 @@ public class Plot { String alias = !this.getAlias().isEmpty() ? this.getAlias() : TranslatableCaption.of("info.none").getComponent(player); Location bot = this.getCorners()[0]; PlotSquared.platform().getWorldUtil().getBiome(Objects.requireNonNull(this.getWorldName()), bot.getX(), bot.getZ(), biome -> { - String trusted = PlayerManager.getPlayerList(this.getTrusted()); - String members = PlayerManager.getPlayerList(this.getMembers()); - String denied = PlayerManager.getPlayerList(this.getDenied()); + Component trusted = PlayerManager.getPlayerList(this.getTrusted()); + Component members = PlayerManager.getPlayerList(this.getMembers()); + Component denied = PlayerManager.getPlayerList(this.getDenied()); String seen; if (Settings.Enabled_Components.PLOT_EXPIRY && ExpireManager.IMP != null) { if (this.isOnline()) { @@ -2712,7 +2713,7 @@ public class Plot { } } boolean build = this.isAdded(player.getUUID()); - String owner = this.getOwners().isEmpty() ? "unowned" : PlayerManager.getPlayerList(this.getOwners()); + Component owner = this.getOwners().isEmpty() ? Component.text("unowned") : PlayerManager.getPlayerList(this.getOwners()); Template headerTemplate = Template.of("header", TranslatableCaption.of("info.plot_info_header").getComponent(player)); Template footerTemplate = Template.of("footer", TranslatableCaption.of("info.plot_info_footer").getComponent(player)); Template areaTemplate; @@ -2748,13 +2749,14 @@ public class Plot { } if (full && Settings.Ratings.CATEGORIES != null && Settings.Ratings.CATEGORIES.size() > 1) { double[] ratings = this.getAverageRatings(); - String rating = ""; + StringBuilder rating = new StringBuilder(); String prefix = ""; for (int i = 0; i < ratings.length; i++) { - rating += prefix + Settings.Ratings.CATEGORIES.get(i) + '=' + String.format("%.1f", ratings[i]); + rating.append(prefix).append(Settings.Ratings.CATEGORIES.get(i)).append('=') + .append(String.format("%.1f", ratings[i])); prefix = ","; } - ratingTemplate = Template.of("rating", rating); + ratingTemplate = Template.of("rating", rating.toString()); } else { ratingTemplate = Template.of("rating", String.format("%.1f", this.getAverageRating()) + '/' + max); } diff --git a/Core/src/main/java/com/plotsquared/core/util/PlayerManager.java b/Core/src/main/java/com/plotsquared/core/util/PlayerManager.java index b3a265f15..bc8375cf4 100644 --- a/Core/src/main/java/com/plotsquared/core/util/PlayerManager.java +++ b/Core/src/main/java/com/plotsquared/core/util/PlayerManager.java @@ -27,6 +27,7 @@ package com.plotsquared.core.util; import com.plotsquared.core.PlotSquared; import com.plotsquared.core.configuration.Settings; +import com.plotsquared.core.configuration.caption.Caption; import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.database.DBFunc; import com.plotsquared.core.player.ConsolePlayer; @@ -34,6 +35,7 @@ import com.plotsquared.core.player.OfflinePlotPlayer; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.uuid.UUIDMapping; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.Template; @@ -110,9 +112,9 @@ public abstract class PlayerManager

, T> { * - Uses the format {@link TranslatableCaption#of(String)} of "info.plot_user_list" for the returned string * * @param uuids UUIDs - * @return Name list + * @return Component of name list */ - @Nonnull public static String getPlayerList(@Nonnull final Collection uuids) { + @Nonnull public static Component getPlayerList(@Nonnull final Collection uuids) { if (uuids.size() < 1) { TranslatableCaption.of("info.none"); } @@ -141,7 +143,7 @@ public abstract class PlayerManager

, T> { } String c = TranslatableCaption.of("info.plot_user_list").getComponent(ConsolePlayer.getConsole()); - Component list = MINI_MESSAGE.deserialize(""); + TextComponent.Builder list = Component.text(); for (int x = 0; x < users.size(); x++) { if (x + 1 == uuids.size()) { list.append(MINI_MESSAGE.parse(c, Template.of("user", users.get(x)))); @@ -149,7 +151,7 @@ public abstract class PlayerManager

, T> { list.append(MINI_MESSAGE.parse(c + ", ", Template.of("user", users.get(x)))); } } - return list.toString(); + return list.asComponent(); } /** diff --git a/Core/src/main/resources/lang/messages_en.json b/Core/src/main/resources/lang/messages_en.json index 19d38d09f..7ea0fa700 100644 --- a/Core/src/main/resources/lang/messages_en.json +++ b/Core/src/main/resources/lang/messages_en.json @@ -2,12 +2,12 @@ "confirm.expired_confirm": "Confirmation has expired, please run the command again!", "confirm.failed_confirm": "You have no pending actions to confirm!", "confirm.requires_confirm": "Are you sure you wish to execute: ?\nThis cannot be undone! If you are sure: ", - + "move.move_success": "Successfully moved plot.", "move.move_merged": "Merged plots may not be moved. Please unmerge the plot before performing the move.", "move.copy_success": "Successfully copied plot.", "move.requires_unowned": "The location specified is already occupied.", - + "debug.requires_unmerged": "The plot cannot be merged.", "debug.debug_header": " Debug Information\n", "debug.debug_section": ">> &l", @@ -18,11 +18,11 @@ "debug.player_in_debugmode": "Player(s) in debug mode: ", "debug.player_in_debugmode_list": "- \n", "debug.entity_categories": "Entity categories:", - + "set.set_attribute": "Successfully set to .", "area.set_pos2": "You will now set pos2: . Note: The chosen plot size may result in the created area not exactly matching your second position.", - + "web.generating_link": "Processing plot...", "web.generating_link_failed": "Failed to generate download link!", "web.generation_link_success": ">", @@ -31,9 +31,9 @@ "web.load_failed": "Failed to load schematic.", "web.load_list": "To load a schematic, use .", "web.save_success": "Successfully saved!", - + "compass.compass_target": "Successfully targeted plot with your compass.", - + "cluster.cluster_available_args": "The following sub commands are available: list, create, delete, resize, invite, kick, leave, members, info, tp, sethome", "cluster.cluster_list_heading": "There are clusters in this world.", "cluster.cluster_list_element": " - \n", @@ -60,21 +60,21 @@ "cluster.cluster_info": "Current cluster: \nName: \nOwner: \nSize: \nRights: ", "border.border": "You are outside the current map border.", - + "worldedit.worldedit_bypass": "To bypass your restrictions use ", "worldedit.worldedit_bypassed": "Currently bypassing WorldEdit restriction.", - + "gamemode.gamemode_was_bypassed": "You bypassed the gamemode () set for .", - + "height.height_limit": "This plot area has a height limit of .", - + "notification.notify_enter": " entered your plot ().", "notification.notify_leave": " left your plot ().", - + "swap.swap_overlap": "The proposed areas are not allowed to overlap.", "swap.swap_success": "Successfully swapped plots.", "swap.swap_merged": "Merged plots may not be swapped. Please unmerge the plots before performing the swap.", - + "comment.inbox_notification": " unread messages. Use .", "comment.not_valid_inbox_index": "No comment at index .", "comment.inbox_item": " - ", @@ -87,23 +87,23 @@ "comment.comment_removed_failure": "Failed to delete comment!", "comment.comment_added": "A comment has been left.", "comment.inbox_empty": "No comments.", - + "console.not_console": "For safety reasons, this command can only be executed by console.", "console.is_console": "This command can only be executed by a player.", - + "clipboard.paste_failed": "Failed to paste the selection. Reason: ", - + "toggle.toggle_enabled": "Enabled setting: ", "toggle.toggle_disabled": "Disabled setting: ", - + "blockedcmds.command_blocked": "That command is not allowed in this plot.", - + "done.done_already_done": "This plot is already marked as done.", "done.done_not_done": "This plot is not marked as done.", "done.done_insufficient_complexity": "This plot is too simple. Please add more detail before using this command.", "done.done_success": "Successfully marked this plot as done.", "done.done_removed": "You may now continue building in this plot.", - + "ratings.ratings_purged": "Purged ratings for this plot.", "ratings.rating_not_valid": "You need to specify a number between 1 and 10.", "ratings.rating_already_exists": "You have already rated plot .", @@ -113,10 +113,10 @@ "ratings.rating_not_your_own": "You cannot rate your own plot.", "ratings.rating_not_done": "You can only rate finished plots.", "ratings.rating_not_owned": "You cannot rate a plot that is not claimed by anyone.", - + "tutorial.rate_this": "Rate this plot!", "tutorial.comment_this": "Leave some feedback on this plot: .", - + "economy.econ_disabled": "Economy is not enabled.", "economy.cannot_afford_plot": "You cannot afford to buy this plot. It costs .", "economy.not_for_sale": "This plot is not for sale.", @@ -126,7 +126,7 @@ "economy.added_balance": " has been added to your balance.", "economy.removed_balance": " has been taken from your balance.", "economy.removed_granted_plot": "You used plot grant(s), you've got left.", - + "setup.setup_not_started": "No setup started.", "setup.setup_init": "Usage: /plot setup ", "setup.setup_step": "[Step ] - Expecting: Default: ", @@ -152,7 +152,7 @@ "setup.setup_area_max_plot_id": "What should be the maximum Plot ID?", "setup.setup_area_max_plot_id_error": "You must choose a valid maximum Plot ID!", "setup.setup_area_plot_id_greater_than_minimum": "The maximum Plot ID must be greater than the minimum!", - + "plotareatype.plot_area_type_normal": "Standard plot generation", "plotareatype.plot_area_type_augmented": "Plot generation with vanilla terrain", "plotareatype.plot_area_type_partial": "Vanilla with clusters of plots", @@ -171,30 +171,30 @@ "schematics.schematic_exportall_single_finished": "Finished export.", "schematic.schematic_exportall_world": "Invalid world.", "schematics.plot_to_schem": "Plot->Schematic: Found plots...", - + "error.task_in_process": "Task is already running.", - + "titles.title_entered_plot": "Plot: ;;", "titles.title_entered_plot_sub": "Owned by ", "titles.prefix_greeting": ">", "titles.prefix_farewell": ">", - + "core.prefix": "[P2] ", "core.enabled": " is now enabled.", "placeholder.hooked": "PlotSquared hooked into MVdWPlaceholderAPI", - + "reload.reloaded_configs": "Translations and world settings have been reloaded successfully.", "reload.reload_failed": "Failed to reload file configurations.", - + "desc.desc_set": "Plot description set.", "desc.desc_unset": "Plot description unset.", - + "alias.alias_set_to": "Plot alias set to .", "alias.alias_removed": "Plot alias removed.", "alias.alias_too_long": "The alias must have less than 50 characters in length.", "alias.alias_is_taken": "That alias is already taken.", - + "position.position_set": "Home position set to your current location.", "position.position_unset": "Home position reset to the default location.", @@ -206,7 +206,7 @@ "permission.cant_claim_more_clusters": "You can't claim more clusters.", "permission.cant_transfer_more_plots": "You can't send more plots to that user.", "permission.cant_claim_more_plots_num": "You can't claim more than plots at once.", - + "merge.merge_request_confirm": "Merge request from .", "merge.merge_not_valid": "This merge request is no longer valid.", "merge.merge_accepted": "The merge request has been accepted.", @@ -216,7 +216,7 @@ "merge.unlink_impossible": "You can only unlink a mega-plot.", "merge.unmerge_cancelled": "Unlink has been cancelled.", "merge.unlink_success": "Successfully unlinked plots.", - + "commandconfig.not_valid_subcommand": "That is not a valid subcommand.", "commandconfig.did_you_mean": "Did you mean: ", "commandconfig.subcommand_set_options_header": "Possible Values: ", @@ -224,7 +224,7 @@ "commandconfig.command_syntax": "Usage: ", "commandconfig.command_syntax_extended": "Usage: ", "commandconfig.flag_tutorial_usage": "Have an admin set the flag: ", - + "invalid.component_illegal_block": "You are not allowed to generate a component containing the block ", "invalid.not_valid_block": "That's not a valid block: ", "invalid.not_allowed_block": "That block is not allowed: ", @@ -287,7 +287,7 @@ "debugexec.script_list_item": "[] ", "debugexec.analyze_done": "Done. Use for more information. ", - "expiry.expired_options_clicky": " expired: >>\n - >>Delete this ()\n - >>Remind later ()\n - >>Keep this ()\n - >>Don't show me this ()", + "expiry.expired_options_clicky": " expired: >\">\n - >\">Delete this ()\n - >\">Remind later ()\n - >\">Keep this ()\n - >\">Don't show me this ()", "debugimportworlds.single_plot_area": "Must be a single plot area.", "debugimportworlds.world_container": "World container must be configured to be a separate directory to your base files.", @@ -333,37 +333,37 @@ "debugsavetest.starting": "Starting debugsavetest.", "debugsavetest.done": "Database sync finished.", - + "purge.purge_success": "Successfully purged plots.", - + "players.fetching_player": "PlotSquared is attempting to find the specified player from your argument(s). This may take a while.", "players.fetching_players_timeout": "The specified users did not exist in the cache and will be fetched in the background. Please wait a couple of minutes.", - + "trim.trim_in_progress": "A world trim task is already in progress!", "trim.trim_done": "Trim done.", "trim.trim_starting": "Collecting region data...", "blocklist.block_list_separator": ", ", - + "biome.need_biome": "You need to specify a valid biome.", "biome.biome_set_to": "Plot biome set to ", - + "teleport.teleported_to_plot": "You have been teleported.", "teleport.teleported_to_road": "You got teleported to the road.", "teleport.teleport_in_seconds": "Teleporting in seconds. Do not move...", "teleport.teleport_failed": "Teleportation cancelled due to movement or damage.", - + "setblock.set_block_action_finished": "The last setblock action is now finished.", - + "unsafe.debugallowunsafe_on": "Unsafe actions enabled.", "unsafe.debugallowunsafe_off": "Unsafe actions disabled.", - + "need.need_block": "You've got to specify a block.", - + "near.plot_near": "Players: ", "scripts.script_list": "--------- SCRIPTS ---------", - + "info.none": "None", "info.now": "Now", "info.never": "Never", @@ -374,16 +374,16 @@ "info.plot_info_unclaimed": "Plot is not yet claimed.", "info.plot_info_header": "--------- INFO ---------", "info.plot_info_hidden": "You cannot view the information about this plot.", - "info.plot_info_format": "

\nID: \nArea: \nAlias:\nOwner:\nBiome: \nCan Build: \nRating: \nSeen: \nTrusted:\nMembers:\nDenied:\nFlags:\nDescription: \n