From 1ed4c6fd5e14ba5d2d200738209cee010e72bc91 Mon Sep 17 00:00:00 2001 From: James Mortemore Date: Sun, 12 Apr 2026 13:15:07 +0100 Subject: [PATCH] feat!: update for BanManager v8 compatibility - Bump all BanManager dependencies from 7.11.0-SNAPSHOT to 8.0.0-SNAPSHOT - Bump Java target from 1.8 to 17 across CommonConfig, LibsConfig, sponge-api7 - Migrate PinCommand from message.toString() to message.sendTo(sender) - Update CommonPlayerDeniedListener to use getRawTemplate() and tag - Update tests for MiniMessage template format - Add null template test case for handlePin --- buildSrc/src/main/kotlin/CommonConfig.kt | 6 +- buildSrc/src/main/kotlin/LibsConfig.kt | 8 +- bukkit/build.gradle.kts | 2 +- bungee/build.gradle.kts | 2 +- common/build.gradle.kts | 4 +- .../common/commands/PinCommand.java | 4 +- .../listeners/CommonPlayerDeniedListener.java | 4 +- common/src/main/resources/messages.yml | 6 +- .../CommonPlayerDeniedListenerTest.java | 22 +- .../banmanager-webenhancer/messages.yml | 6 +- .../bukkit/configs/banmanager/messages.yml | 537 +++++++++------ .../banmanager-webenhancer/messages.yml | 5 +- .../bungee/configs/banmanager/messages.yml | 618 ++++++++++-------- .../banmanager-webenhancer/messages.yml | 6 +- .../fabric/configs/banmanager/messages.yml | 462 +++++++------ .../banmanager-webenhancer/messages.yml | 6 +- .../sponge/configs/banmanager/messages.yml | 537 +++++++++------ .../banmanager-webenhancer/messages.yml | 6 +- .../sponge7/configs/banmanager/messages.yml | 537 +++++++++------ .../banmanager-webenhancer/messages.yml | 5 +- .../velocity/configs/banmanager/messages.yml | 618 ++++++++++-------- fabric/build.gradle.kts | 2 +- sponge-api7/build.gradle.kts | 4 +- sponge/build.gradle.kts | 4 +- velocity/build.gradle.kts | 2 +- 25 files changed, 1962 insertions(+), 1451 deletions(-) diff --git a/buildSrc/src/main/kotlin/CommonConfig.kt b/buildSrc/src/main/kotlin/CommonConfig.kt index 897697a..43d7167 100644 --- a/buildSrc/src/main/kotlin/CommonConfig.kt +++ b/buildSrc/src/main/kotlin/CommonConfig.kt @@ -30,12 +30,12 @@ fun Project.applyCommonConfiguration() { } } - // Only set Java 1.8 for non-Fabric modules + // Only set Java 17 for non-Fabric modules // Fabric uses toolchain configuration in its build.gradle.kts plugins.withId("java") { if (!plugins.hasPlugin("fabric-loom")) { - the().setSourceCompatibility("1.8") - the().setTargetCompatibility("1.8") + the().setSourceCompatibility("17") + the().setTargetCompatibility("17") } } } diff --git a/buildSrc/src/main/kotlin/LibsConfig.kt b/buildSrc/src/main/kotlin/LibsConfig.kt index 8a306be..b19b260 100644 --- a/buildSrc/src/main/kotlin/LibsConfig.kt +++ b/buildSrc/src/main/kotlin/LibsConfig.kt @@ -35,8 +35,8 @@ fun Project.applyLibrariesConfiguration() { } plugins.withId("java") { - the().setSourceCompatibility("1.8") - the().setTargetCompatibility("1.8") + the().setSourceCompatibility("17") + the().setTargetCompatibility("17") } group = "${rootProject.group}.BanManagerWebEnhancerLibs" @@ -89,7 +89,7 @@ fun Project.applyLibrariesConfiguration() { attribute(Category.CATEGORY_ATTRIBUTE, project.objects.named(Category.LIBRARY)) attribute(Bundling.BUNDLING_ATTRIBUTE, project.objects.named(Bundling.SHADOWED)) attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, project.objects.named(LibraryElements.JAR)) - attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 8) + attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 17) } outgoing.artifact(tasks.named("jar")) } @@ -104,7 +104,7 @@ fun Project.applyLibrariesConfiguration() { attribute(Category.CATEGORY_ATTRIBUTE, project.objects.named(Category.LIBRARY)) attribute(Bundling.BUNDLING_ATTRIBUTE, project.objects.named(Bundling.SHADOWED)) attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, project.objects.named(LibraryElements.JAR)) - attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 8) + attribute(TargetJvmVersion.TARGET_JVM_VERSION_ATTRIBUTE, 17) } outgoing.artifact(tasks.named("jar")) } diff --git a/bukkit/build.gradle.kts b/bukkit/build.gradle.kts index 40b174c..9ed2cf5 100644 --- a/bukkit/build.gradle.kts +++ b/bukkit/build.gradle.kts @@ -26,7 +26,7 @@ dependencies { api(project(":BanManagerWebEnhancerCommon")) { isTransitive = true } - compileOnly("me.confuser.banmanager:BanManagerBukkit:7.11.0-SNAPSHOT") + compileOnly("me.confuser.banmanager:BanManagerBukkit:8.0.0-SNAPSHOT") compileOnly("org.spigotmc:spigot-api:1.17.1-R0.1-SNAPSHOT") { exclude("junit", "junit") diff --git a/bungee/build.gradle.kts b/bungee/build.gradle.kts index 41c678a..1b78531 100644 --- a/bungee/build.gradle.kts +++ b/bungee/build.gradle.kts @@ -26,7 +26,7 @@ dependencies { api(project(":BanManagerWebEnhancerCommon")) { isTransitive = true } - compileOnly("me.confuser.banmanager:BanManagerBungee:7.11.0-SNAPSHOT") + compileOnly("me.confuser.banmanager:BanManagerBungee:8.0.0-SNAPSHOT") compileOnly("net.md-5:bungeecord-api:1.21-R0.4") "shadeOnly"("org.bstats:bstats-bungeecord:2.2.1") diff --git a/common/build.gradle.kts b/common/build.gradle.kts index ae9bf02..4d0ea62 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -8,8 +8,8 @@ applyPlatformAndCoreConfiguration() dependencies { api(project(":BanManagerWebEnhancerLibs")) - api("me.confuser.banmanager:BanManagerCommon:7.11.0-SNAPSHOT") - api("me.confuser.banmanager.BanManagerLibs:BanManagerLibs:7.11.0-SNAPSHOT") + api("me.confuser.banmanager:BanManagerCommon:8.0.0-SNAPSHOT") + api("me.confuser.banmanager.BanManagerLibs:BanManagerLibs:8.0.0-SNAPSHOT") // Test dependencies testImplementation("junit:junit:4.13") diff --git a/common/src/main/java/me/confuser/banmanager/webenhancer/common/commands/PinCommand.java b/common/src/main/java/me/confuser/banmanager/webenhancer/common/commands/PinCommand.java index 16944c7..42d3543 100644 --- a/common/src/main/java/me/confuser/banmanager/webenhancer/common/commands/PinCommand.java +++ b/common/src/main/java/me/confuser/banmanager/webenhancer/common/commands/PinCommand.java @@ -42,7 +42,7 @@ public boolean onCommand(CommonSender sender, CommandParser parser) { try { player = getPlugin().getPlayerStorage().queryForId(sender.getData().getId()); } catch (SQLException e) { - sender.sendMessage(Message.get("sender.error.exception").toString()); + Message.get("sender.error.exception").sendTo(sender); e.printStackTrace(); return; } @@ -50,7 +50,7 @@ public boolean onCommand(CommonSender sender, CommandParser parser) { PlayerPinData pin = plugin.getPlayerPinStorage().getValidPin(player); if (pin == null) { - sender.sendMessage(Message.get("sender.error.exception").toString()); + Message.get("sender.error.exception").sendTo(sender); return; } diff --git a/common/src/main/java/me/confuser/banmanager/webenhancer/common/listeners/CommonPlayerDeniedListener.java b/common/src/main/java/me/confuser/banmanager/webenhancer/common/listeners/CommonPlayerDeniedListener.java index 5640166..cee7fa8 100644 --- a/common/src/main/java/me/confuser/banmanager/webenhancer/common/listeners/CommonPlayerDeniedListener.java +++ b/common/src/main/java/me/confuser/banmanager/webenhancer/common/listeners/CommonPlayerDeniedListener.java @@ -13,11 +13,11 @@ public CommonPlayerDeniedListener(WebEnhancerPlugin plugin) { } public void handlePin(PlayerData player, Message message) { - if (!message.toString().contains("[pin]")) return; + String template = message.getRawTemplate(); + if (template == null || !template.contains("")) return; PlayerPinData pin = plugin.getPlayerPinStorage().getValidPin(player); - if (pin != null) { message.set("pin", String.valueOf(pin.getGeneratedPin())); } diff --git a/common/src/main/resources/messages.yml b/common/src/main/resources/messages.yml index 023dec2..4ea98a0 100644 --- a/common/src/main/resources/messages.yml +++ b/common/src/main/resources/messages.yml @@ -1,5 +1,5 @@ messages: pin: - notify: '&6Your pin expires in [expires]' - pin: '[pin]' - rateLimited: '&cPlease wait [seconds] seconds before generating a new pin' + notify: 'Your pin expires in ' + pin: '' + rateLimited: 'Please wait seconds before generating a new pin' diff --git a/common/src/test/java/me/confuser/banmanager/webenhancer/common/listeners/CommonPlayerDeniedListenerTest.java b/common/src/test/java/me/confuser/banmanager/webenhancer/common/listeners/CommonPlayerDeniedListenerTest.java index 04aeaee..1f3840e 100644 --- a/common/src/test/java/me/confuser/banmanager/webenhancer/common/listeners/CommonPlayerDeniedListenerTest.java +++ b/common/src/test/java/me/confuser/banmanager/webenhancer/common/listeners/CommonPlayerDeniedListenerTest.java @@ -39,13 +39,11 @@ public void setUp() { @Test public void handlePin_replacesPlaceholderWithPin() { - // Setup when(playerPinStorage.getValidPin(player)).thenReturn(pinData); when(pinData.getGeneratedPin()).thenReturn(123456); - // Create a mocked message with [pin] placeholder Message message = mock(Message.class); - when(message.toString()).thenReturn("Your login pin is: [pin]"); + when(message.getRawTemplate()).thenReturn("Your login pin is: "); listener.handlePin(player, message); @@ -54,9 +52,8 @@ public void handlePin_replacesPlaceholderWithPin() { @Test public void handlePin_ignoresMessagesWithoutPlaceholder() { - // Create a mocked message without [pin] placeholder Message message = mock(Message.class); - when(message.toString()).thenReturn("You have been banned!"); + when(message.getRawTemplate()).thenReturn("You have been banned!"); listener.handlePin(player, message); @@ -66,15 +63,24 @@ public void handlePin_ignoresMessagesWithoutPlaceholder() { @Test public void handlePin_handlesNullPinGracefully() { - // Setup - getValidPin returns null when(playerPinStorage.getValidPin(player)).thenReturn(null); - // Create a mocked message with [pin] placeholder Message message = mock(Message.class); - when(message.toString()).thenReturn("Your login pin is: [pin]"); + when(message.getRawTemplate()).thenReturn("Your login pin is: "); listener.handlePin(player, message); verify(message, never()).set(anyString(), anyString()); } + + @Test + public void handlePin_handlesNullTemplateGracefully() { + Message message = mock(Message.class); + when(message.getRawTemplate()).thenReturn(null); + + listener.handlePin(player, message); + + verify(playerPinStorage, never()).getValidPin(any()); + verify(message, never()).set(anyString(), anyString()); + } } diff --git a/e2e/platforms/bukkit/configs/banmanager-webenhancer/messages.yml b/e2e/platforms/bukkit/configs/banmanager-webenhancer/messages.yml index 5738200..4ea98a0 100644 --- a/e2e/platforms/bukkit/configs/banmanager-webenhancer/messages.yml +++ b/e2e/platforms/bukkit/configs/banmanager-webenhancer/messages.yml @@ -1,5 +1,5 @@ messages: pin: - notify: '&6Your pin expires in [expires]' - pin: '[pin]' - + notify: 'Your pin expires in ' + pin: '' + rateLimited: 'Please wait seconds before generating a new pin' diff --git a/e2e/platforms/bukkit/configs/banmanager/messages.yml b/e2e/platforms/bukkit/configs/banmanager/messages.yml index 459dab6..ec9a8a6 100644 --- a/e2e/platforms/bukkit/configs/banmanager/messages.yml +++ b/e2e/platforms/bukkit/configs/banmanager/messages.yml @@ -1,16 +1,22 @@ -# BanManager messages configuration for E2E testing -# Modified to include [pin] placeholder for WebEnhancer testing +# Message templates use MiniMessage formatting: https://docs.advntr.dev/minimessage/format.html +# Placeholders use angle brackets, e.g. , , , , + +tokens: + appealUrl: 'https://yourdomain.com/appeal' + serverName: 'My Server' + discordUrl: 'https://discord.gg/example' + rulesUrl: 'https://yourdomain.com/rules' messages: - duplicateIP: '&cWarning: [player] has the same IP as the following banned players:\n&6[players]' - duplicateIPAlts: '&cWarning: [player] has the same IP as the following players:\n&6[players]' - configReloaded: '&aConfiguration reloaded successfully!' + duplicateIP: 'Warning: has the same IP as the following banned players:\n' + duplicateIPAlts: 'Warning: has the same IP as the following players:\n' + configReloaded: 'Configuration reloaded successfully!' deniedNotify: - player: '&cWarning: [player] attempted to join the server but was denied due to &4[reason]' - ip: '&cWarning: [ip] attempted to join the server but was denied due to &4[reason]' - deniedMaxIp: '&cToo many players with your ip address online' - deniedMultiaccounts: '&cToo many players with your ip address logged in recently' - deniedCountry: '&cYou may not connect from your region' + player: 'Warning: attempted to join the server but was denied due to ' + ip: 'Warning: attempted to join the server but was denied due to ' + deniedMaxIp: 'Too many players with your ip address online' + deniedMultiaccounts: 'Too many players with your ip address logged in recently' + deniedCountry: 'You may not connect from your region' time: now: 'now' @@ -30,337 +36,442 @@ messages: seconds: 'seconds' never: 'never' error: - invalid: '&cYour time length is invalid' - limit: '&cYou cannot perform this action for that length of time' + invalid: 'Your time length is invalid' + limit: 'You cannot perform this action for that length of time' none: 'none' + # General command text sender: error: - notFound: '&c[player] not found, are you sure they exist?' - offline: '&c[player] is offline' - noSelf: '&cYou cannot perform that action on yourself!' - exception: '&cAn error occured whilst attempting to perform this command. Please check the console for further details.' - invalidIp: '&cInvalid IP address, expecting w.x.y.z format' - offlinePermission: '&cYou are not allowed to perform this action on an offline player' - exempt: '&c[player] is exempt from that action' - noPermission: '&cYou do not have permission to perform that action' - invalidReason: '&c[reason] is no valid reason.' - + notFound: ' not found, are you sure they exist?' + offline: ' is offline' + noSelf: 'You cannot perform that action on yourself!' + exception: 'An error occured whilst attempting to perform this command. Please check the console for further details.' + invalidIp: 'Invalid IP address, expecting w.x.y.z format' + offlinePermission: 'You are not allowed to perform this action on an offline player' + ambiguousPlayer: 'Multiple players match "". Please use their full name.' + exempt: ' is exempt from that action' + noPermission: 'You do not have permission to perform that action' + invalidReason: ' is no valid reason.' + # Commands alts: header: 'Possible alts found:' + entry: '">' + separator: ', ' + + names: + header: 'Known names for :' + row: ' (first: , last: )' + interactive: ' (first: , last: )">">' + separator: ', ' + dateTimeFormat: 'dd-MM-yyyy' + none: 'No name history found' export: error: - inProgress: '&cAn export is already in progress, please wait' + inProgress: 'An export is already in progress, please wait' player: - started: '&aPlayer ban export started' - finished: '&aPlayer ban export finished, file [file] created' + started: 'Player ban export started' + finished: 'Player ban export finished, file created' ip: - started: '&aIP ban export started' - finished: '&aIP ban export finished, file [file] created' + started: 'IP ban export started' + finished: 'IP ban export finished, file created' import: error: - inProgress: '&cAn import is already in progress, please wait' + inProgress: 'An import is already in progress, please wait' player: - started: '&aPlayer ban import started' - finished: '&aPlayer ban import finished' + started: 'Player ban import started' + finished: 'Player ban import finished' ip: - started: '&aIP ban import started' - finished: '&aIP ban import finished' + started: 'IP ban import started' + finished: 'IP ban import finished' advancedban: - started: '&aAdvancedBan import started' - finished: '&aAdvancedBan import finished' + started: 'AdvancedBan import started' + finished: 'AdvancedBan import finished' h2: - started: '&aH2 import started' - finished: '&aH2 import finished, please restart the server' + started: 'H2 import started' + finished: 'H2 import finished, please restart the server' + litebans: + started: 'LiteBans import started' + finished: 'LiteBans import finished' info: error: - invalidIndex: '&cInvalid player option used' - indexRequired: '&cMultiple players named [name] found, please select a player by providing an index between 1 and [size], e.g. /bminfo [name] 1' - index: '&7#[index] - &6[name] - &4[uuid]' + invalidIndex: 'Invalid player option used' + indexRequired: 'Multiple players named found, please select a player by providing an index between 1 and , e.g. /bminfo 1' + index: '# - - ' stats: - player: '&6[player] has been banned [bans] times, muted [mutes] times, kicked [kicks] times and warned [warns] times ([warnPoints] Points), has [notes] notes and been reported [reports] times' - ip: '&6This ip has been banned [bans] times, muted [mutes] times and range banned [rangebans] times' - connection: '&6Their last connection was with [ip] on [lastSeen]' - geoip: 'Country: [country] City: [city]' + player: ' has been banned times, muted times, kicked times and warned + times ( Points), has notes and been reported times' + ip: 'This ip has been banned times, muted times and range banned times' + connection: 'Their last connection was with on ' + geoip: 'Country: City: ' ban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: 'Currently banned for by at ' + temporary: 'Currently banned for by at which expires in ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' ipban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: 'Currently banned for by at ' + temporary: 'Currently banned for by at which expires in ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' iprangeban: - permanent: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: ' - banned for by at ' + temporary: ' - banned for by at which expires in ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' ipmute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: 'Currently muted for by at ' + temporary: 'Currently muted for by at which expires in ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' mute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: 'Currently muted for by at ' + temporary: 'Currently muted for by at which expires in ' + temporaryOnline: 'Currently muted for by at which expires in (online time)' + temporaryOnlinePaused: 'Currently muted for by at with remaining (online time, paused)' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' website: - player: 'https://yourdomain.com/player/[uuid]' - ip: 'http://yourdomain.com/index.php?action=viewip&ip=[ip]&server=0' + player: 'https://yourdomain.com/player/' + ip: 'http://yourdomain.com/index.php?action=viewip&ip=&server=0' history: - row: '&7#[id] &a[&f[type]&a] &6[actor]&f [meta] [reason] - &e[created]' + row: '# [] - ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - noResults: '&cNo results found' + noResults: 'No results found' ips: - row: '&e[ip] - &6[join] - [leave]' + row: ' - - ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' kick: player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' + noReason: 'You have been kicked' + reason: 'You have been kicked for ' notify: - noReason: '&6[player] has been kicked by [actor]' - reason: '&6[player] has been kicked by [actor] for &4[reason]' + noReason: ' has been kicked by ' + reason: ' has been kicked by for ' kickall: player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' + noReason: 'You have been kicked' + reason: 'You have been kicked for ' notify: - noReason: 'All players have been kicked by [actor]' - reason: 'All players have been kicked by [actor] for &4[reason]' + noReason: 'All players have been kicked by ' + reason: 'All players have been kicked by for ' - # Modified for WebEnhancer E2E testing - includes [pin] placeholder ban: player: - disallowed: '&6You have been banned from this server for &4[reason]&6. Your appeal pin is [pin]' - kick: '&6You have been banned permanently for &4[reason]&6. Your appeal pin is [pin]' + disallowed: 'You are banned from this server\n \nReason: \nBanned by: \nDate: \n \nAppeal at ' + kick: 'You have been banned\n \nReason: \nBanned by: ' dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been permanently banned by [actor] for &4[reason]' + notify: ' has been permanently banned by for ''>View player info''>[Info] ''>Unban player''>[Unban]' error: - exists: '&c[player] is already banned' - cooldown: '&cThis player was banned too recently, try again later' + exists: ' is already banned' + cooldown: 'This player was banned too recently, try again later' banall: - notify: '&6[player] will be permanently banned by [actor] for &4[reason]' + notify: ' will be permanently banned by for ' tempban: player: - disallowed: '&6You have been temporarily banned from this server for &4[reason] \n&6It expires in [expires]. Your appeal pin is [pin]' - kick: '&6You have been temporarily banned for &4[reason]&6. Your appeal pin is [pin]' + disallowed: 'You are temporarily banned from this server\n \nReason: \nBanned by: \nExpires: \nDate: \n \nAppeal at ' + kick: 'You have been temporarily banned\n \nReason: \nBanned by: \nExpires: ' dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been temporarily banned for [expires] by [actor] for &4[reason]' + notify: ' has been temporarily banned for by for ''>View player info''>[Info] ''>Unban player''>[Unban]' tempbanall: - notify: '&6[player] will be temporarily banned for [expires] by [actor] for &4[reason]' + notify: ' will be temporarily banned for by for ' unban: - notify: '&6[player] has been unbanned by [actor]' + notify: ' has been unbanned by ' error: - noExists: '&c[player] is not banned' - notOwn: '&c[player] was not banned by you, unable to unban' + noExists: ' is not banned' + notOwn: ' was not banned by you, unable to unban' unbanall: - notify: '&6[player] will be unbanned by [actor]' + notify: ' will be unbanned by ' mute: player: - blocked: '&cYou may not use the [command] command whilst muted!' - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[player] has been permanently muted by [actor] for &4[reason]' + blocked: 'You may not use the command whilst muted!' + disallowed: 'You have been permanently muted for by ' + broadcast: '[Muted] ' + notify: ' has been permanently muted by for ''>View player info''>[Info] ''>Unmute player''>[Unmute]' error: - exists: '&c[player] is already muted' - cooldown: '&cThis player was muted too recently, try again later' + exists: ' is already muted' + cooldown: 'This player was muted too recently, try again later' muteip: ip: - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[ip] ([players]) have been permanently muted by [actor] for &4[reason]' + disallowed: 'You have been permanently muted for by ' + broadcast: '[Muted] ' + notify: ' () have been permanently muted by for ' error: - exists: '&c[ip] is already muted' + exists: ' is already muted' muteall: - notify: '&6[player] will be permanently muted by [actor] for &4[reason]' + notify: ' will be permanently muted by for ' tempmute: player: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - notify: '&6[player] has been temporarily muted for [expires] by [actor] for &4[reason]' + disallowed: 'You have been temporarily muted for by which expires in ' + disallowedOnline: 'You have been temporarily muted for by which expires in (online time)' + notify: ' has been temporarily muted for by for ''>View player info''>[Info] ''>Unmute player''>[Unmute]' + notifyOnline: ' has been temporarily muted for (online time) by for ' error: - exists: '&c[player] is already muted' + exists: ' is already muted' tempmuteip: ip: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - notify: '&6[ip] ([players]) have been temporarily muted for [expires] by [actor] for &4[reason]' + disallowed: 'You have been temporarily muted for by which expires in ' + notify: ' () have been temporarily muted for by for ' error: - exists: '&c[ip] is already muted' + exists: ' is already muted' tempmuteall: - notify: '&6[player] will be temporarily muted for [expires] by [actor] for &4[reason]' + notify: ' will be temporarily muted for by for ' unmute: - notify: '&6[player] has been unmuted by [actor]' + notify: ' has been unmuted by ' + player: 'You have been unmuted by ' error: - noExists: '&c[player] is not muted' - notOwn: '&c[player] was not muted by you, unable to unmute' - - unmuteall: - notify: '&6[player] will be unmuted by [actor]' + noExists: ' is not muted' + notOwn: ' was not muted by you, unable to unmute' unmuteip: - notify: '&6[ip] ([players]) have been unmuted by [actor]' + notify: ' has been unmuted by ' error: - noExists: '&c[ip] is not muted' - notOwn: '&c[ip] was not muted by you, unable to unmute' + noExists: ' is not muted' + notOwn: ' was not muted by you, unable to unmute' - warn: - player: - warned: '&cYou have been warned for &4[reason] &cby [actor]' - notify: '&6[player] has been warned by [actor] for &4[reason]' - error: - exists: '&c[player] has already been warned for that reason' - cooldown: '&cThis player was warned too recently, try again later' + unmuteall: + notify: ' will be unmuted by ' - tempwarn: - player: - warned: '&cYou have been warned for &4[reason] &cby [actor] which expires in [expires]' - notify: '&6[player] has been warned for [expires] by [actor] for &4[reason]' + banname: + name: + disallowed: 'You have been banned from this server for ' + kick: 'You have been banned permanently for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: 'Name has been permanently banned by for ' error: - exists: '&c[player] has already been warned for that reason' + exists: 'Name is already banned' - warnall: - notify: '&6[player] will be warned by [actor] for &4[reason]' + tempbanname: + name: + disallowed: 'You have been banned from this server for \nIt expires in ' + kick: 'You have been temporarily banned for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: 'Name has been temporarily banned for by for ' - addnote: - notify: '&6Note added for [player] by [actor]' + unbanname: + notify: 'Name has been unbanned by ' error: - cooldown: '&cA note was added for this player too recently, try again later' + noExists: 'Name is not banned' - notes: + banip: + ip: + disallowed: 'You have been banned from this server for ' + kick: 'You have been banned permanently for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: ' () has been permanently banned by for ' error: - noResults: '&cNo notes for [player]' - noResults.uuid: '&cNo notes for player' - header: '&6Notes for [player]' - row: '&6[created] &f[message]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + exists: ' is already banned' + cooldown: 'This ip was banned too recently, try again later' - bmactivity: + baniprange: error: - noResults: '&cNo activity found' - header: '&6Activity for [player]' - row: '&7#[id] &a[&f[type]&a] &6[player]&f [meta] [reason] - &e[created]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + invalid: 'Invalid range, please use cidr notation 192.168.0.1/16 or wildcard 192.168.*.*' + minMax: 'Range must be lowest to highest' + exists: 'A ban containing those ranges already exists' + ip: + disallowed: 'You have been banned from this server for ' + kick: 'You have been banned permanently for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: ' - have been banned by ' - banip: + tempbaniprange: + notify: ' - has been temporarily banned for by ' ip: - disallowed: '&6You have been banned from this server for &4[reason]&6. Your appeal pin is [pin]' - kick: '&6You have been banned permanently for &4[reason]' - notify: '&6[ip] has been permanently banned by [actor] for &4[reason]' - error: - exists: '&c[ip] is already banned' - cooldown: '&cThis ip was banned too recently, try again later' + disallowed: 'You have been banned from this server for \nIt expires in ' + kick: 'You have been temporarily banned for by for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + + unbaniprange: + notify: ' - has been unbanned by ' + + banipall: + notify: ' will be permanently banned by for ' tempbanip: ip: - disallowed: '&6You have been temporarily banned from this server for &4[reason] \n&6It expires in [expires]. Your appeal pin is [pin]' - kick: '&6You have been temporarily banned for &4[reason]' - notify: '&6[ip] has been temporarily banned for [expires] by [actor] for &4[reason]' + disallowed: 'You have been banned from this server for \nIt expires in ' + kick: 'You have been temporarily banned for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: ' () has been temporarily banned for by for ' + + tempbanipall: + notify: ' will be temporarily banned for by for ' unbanip: - notify: '&6[ip] has been unbanned by [actor]' + notify: ' has been unbanned by ' error: - noExists: '&c[ip] is not banned' - notOwn: '&c[ip] was not banned by you, unable to unban' + noExists: ' is not banned' + notOwn: ' was not banned by you, unable to unban' - baniprange: - notify: '&6[from] - [to] has been permanently banned by [actor] for &4[reason]' + unbanipall: + notify: ' will be unbanned by ' + + warn: + player: + warned: 'You have been warned by for ' + disallowed: + header: 'You may not speak until you have accepted your most recent warning. Please type the following:' + reason: '' + removed: 'Thank you for your understanding, you may now speak again' + notify: ' has been warned by for ''>View player info''>[Info]' error: - exists: '&c[from] - [to] is already banned' - cooldown: '&cThis ip range was banned too recently, try again later' + cooldown: 'This player was warned too recently, try again later' - tempbaniprange: - notify: '&6[from] - [to] has been temporarily banned for [expires] by [actor] for &4[reason]' + tempwarn: + player: + warned: 'You have been warned for by for ' + notify: ' has been warned for by for ''>View player info''>[Info]' - unbaniprange: - notify: '&6[from] - [to] has been unbanned by [actor]' + dwarn: + player: + notify: 'Your most recent warning has been deleted by ' + notify: 'The most recent warning for has been deleted' error: - noExists: '&c[from] - [to] is not banned' - notOwn: '&c[from] - [to] was not banned by you, unable to unban' + noWarnings: ' has no warnings to delete' - banname: - disallowed: '&6You may not use the name [name] on this server' - notify: '&6[name] has been permanently banned by [actor] for &4[reason]' + bmclear: + notify: ' has had their cleared' + error: + invalid: 'Invalid type, please choose between banrecords, muterecords, kicks, notes or warnings' + + bmutils: + missingplayers: + notify: ' missing players added' + noneFound: '0 missing players found' + found: ' missing player data found. Fixing...' + error: + failedLookup: 'Failed to lookup player , check server logs' + complete: ' players resolved, please restart your server for failed punishments to take affect' + duplicates: + lookup: + notFound: 'No duplicate player names found' + error: + invalidName: 'Invalid name, must be 16 characters or less and contain only letters, numbers and an underscore' + nameExists: 'A player with that name already exists' + success: 'Player name set to successfully' + + bmrollback: + notify: ' has had their actions undone' error: - exists: '&c[name] is already banned' + invalid: 'Invalid type , please choose between [types]' - tempbanname: - notify: '&6[name] has been temporarily banned for [expires] by [actor] for &4[reason]' + sync: + player: + started: 'Starting force synchronisation' + finished: 'Forced synchronisation complete' - unbanname: - notify: '&6[name] has been unbanned by [actor]' - error: - noExists: '&c[name] is not banned' - notOwn: '&c[name] was not banned by you, unable to unban' + update: + notify: '[BanManager] An update is available' - report: + notes: + header: ' has the following notes:' + joinAmount: '"> has notes, click to view them' + note: '[] - ' + playerNote: '[] [] - ' + dateTimeFormat: 'dd-MM-yyyy' + notify: ' has a new note attached by : ' error: - notOnline: '&cPlayer must be online to report' - cooldown: '&cToo many reports, please wait a while' - notify: '&6[player] has been reported by [actor] for &4[reason]' - success: '&a[player] has been reported' - created: '&6[actor] has reported [player] for &4[reason]' + noNotes: ' has no notes' + noOnlineNotes: 'No online players have notes' - reports: + report: + notify: ' has been reported by for ' error: - noResults: '&cNo reports for [player]' - header: '&6Reports for [player]' + cooldown: 'This player was reported too recently, try again later' + assign: + player: 'Report assigned to ' + notify: 'You have been assigned report by ' + unassign: + player: 'Report unassigned' + close: + notify: + closed: 'Report closed by ' + command: 'Report closed by with ' + comment: 'Report closed by with ' + dispatch: 'Executing command ' list: - row: '&e[id] [player] &6[reason] [created] &e[actor]' + noResults: 'No reports found' + error: + invalidState: 'Report state not found' + row: + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + header: '-- Reports () -- Page (/)' + all: '">Click to view details"># [] - - ' + tp: + error: + notFound: 'Report not found' + worldNotFound: 'World could not be found' + invalidId: ' is not a valid report id' dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: + report: '# reported for at ' + location: ' - , , ' + info: + error: + notFound: 'Report not found' + invalidId: ' is not a valid report id' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: + report: '# reported for at ' + location: ' - , , ' - deleterecord: - error: - noExists: '&c[id] does not exist' - deleted: '&a[id] has been deleted' + addnoteall: + notify: ' will have a new attached by : ' - clear: - header: - all: '&6Clearing [type] for [player]' - single: '&6Clearing [type]' - error: - noResults: '&cNothing found to delete' - notifyDelete: '&6Deleted [sum] [type] for [player]' + banlist: + header: 'There are bans:' - sync: - error: - inProgress: '&cA sync is already in progress, please wait' - started: '&aSync started' - finished: '&aSync finished' + bmactivity: + row: + all: '[] - - ' + player: '[] - ' + dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' + noResults: 'No results found' - external: + bmdelete: + notify: ' rows deleted' error: - notAllowed: '&cExternally synced servers cannot perform this action' + invalid: 'Invalid type, please choose between banrecords, muterecords, kicks, notes or warnings' + invalidId: ' is not a valid number' - rollback: - error: - inProgress: '&cA rollback is already in progress, please wait' - noResults: '&cNo results found to rollback' - started: '&aRollback started' - finished: '&aRollback finished, [sum] rows affected' + denyalts: + player: + disallowed: 'The IP address you are joining from is linked to a banned player' - dwarn: - notOwn: '&c[id] was not created by you, unable to delete' - noExists: '&c[id] does not exist' - deleted: '&aWarning deleted' + reasons: + row: ' = ' - findAlts: - header: 'Possible alts found:' - noResults: 'No possible alts found' + confirmation: + prompt: 'Are you sure you want to ? Click to confirm''>[Confirm] Click to cancel''>[Cancel]' + confirmed: 'Action confirmed.' + cancelled: 'Action cancelled.' + expired: 'No pending action found. It may have expired.' - update: - notify: 'A new version of BanManager is now available' + dashboard: + header: ' Staff Dashboard ' + activeBans: 'Active Bans: ' + activeMutes: 'Active Mutes: ' + openReports: 'Open Reports: View reports''>[View]' + recentActivity: 'Recent Activity (24h): ' + footer: ' ' + + report: + actions: + assign: '''>Assign to yourself''>[Assign]' + close: '''>Close this report''>[Close]' + tp: '''>Teleport to location''>[TP]' + feedback: + assigned: 'Your report # has been assigned to ' + closed: 'Your report # has been closed by ' diff --git a/e2e/platforms/bungee/configs/banmanager-webenhancer/messages.yml b/e2e/platforms/bungee/configs/banmanager-webenhancer/messages.yml index 59fdb26..4ea98a0 100644 --- a/e2e/platforms/bungee/configs/banmanager-webenhancer/messages.yml +++ b/e2e/platforms/bungee/configs/banmanager-webenhancer/messages.yml @@ -1,4 +1,5 @@ messages: pin: - notify: '&6Your pin expires in [expires]' - pin: '[pin]' + notify: 'Your pin expires in ' + pin: '' + rateLimited: 'Please wait seconds before generating a new pin' diff --git a/e2e/platforms/bungee/configs/banmanager/messages.yml b/e2e/platforms/bungee/configs/banmanager/messages.yml index 5bacf5c..ec9a8a6 100644 --- a/e2e/platforms/bungee/configs/banmanager/messages.yml +++ b/e2e/platforms/bungee/configs/banmanager/messages.yml @@ -1,413 +1,477 @@ -# Variables -# [reason] = Ban/Mute reason -# [player] = The name of the player -# [ip] = The banned ip -# [actor] = Who banned/muted -# [expires] = How long until the ban/mute ends +# Message templates use MiniMessage formatting: https://docs.advntr.dev/minimessage/format.html +# Placeholders use angle brackets, e.g. , , , , + +tokens: + appealUrl: 'https://yourdomain.com/appeal' + serverName: 'My Server' + discordUrl: 'https://discord.gg/example' + rulesUrl: 'https://yourdomain.com/rules' messages: - duplicateIP: '&cWarning: [player] has the same IP as the following banned players:\n&6[players]' - duplicateIPAlts: '&cWarning: [player] has the same IP as the following players:\n&6[players]' - configReloaded: '&aConfiguration reloaded successfully!' + duplicateIP: 'Warning: has the same IP as the following banned players:\n' + duplicateIPAlts: 'Warning: has the same IP as the following players:\n' + configReloaded: 'Configuration reloaded successfully!' deniedNotify: - player: '&cWarning: [player] attempted to join the server but was denied due to - &4[reason]' - ip: '&cWarning: [ip] attempted to join the server but was denied due to &4[reason]' - deniedMaxIp: '&cToo many players with your ip address online' - deniedMultiaccounts: '&cToo many players with your ip address logged in recently' - deniedCountry: '&cYou may not connect from your region' + player: 'Warning: attempted to join the server but was denied due to ' + ip: 'Warning: attempted to join the server but was denied due to ' + deniedMaxIp: 'Too many players with your ip address online' + deniedMultiaccounts: 'Too many players with your ip address logged in recently' + deniedCountry: 'You may not connect from your region' + time: - now: now - year: year - years: years - month: month - months: months - week: week - weeks: weeks - day: day - days: days - hour: hour - hours: hours - minute: minute - minutes: minutes - second: second - seconds: seconds - never: never + now: 'now' + year: 'year' + years: 'years' + month: 'month' + months: 'months' + week: 'week' + weeks: 'weeks' + day: 'day' + days: 'days' + hour: 'hour' + hours: 'hours' + minute: 'minute' + minutes: 'minutes' + second: 'second' + seconds: 'seconds' + never: 'never' error: - invalid: '&cYour time length is invalid' - limit: '&cYou cannot perform this action for that length of time' - none: none + invalid: 'Your time length is invalid' + limit: 'You cannot perform this action for that length of time' + + none: 'none' + # General command text sender: error: - notFound: '&c[player] not found, are you sure they exist?' - offline: '&c[player] is offline' - noSelf: '&cYou cannot perform that action on yourself!' - exception: '&cAn error occured whilst attempting to perform this command. Please - check the console for further details.' - invalidIp: '&cInvalid IP address, expecting w.x.y.z format' - offlinePermission: '&cYou are not allowed to perform this action on an offline - player' - exempt: '&c[player] is exempt from that action' - noPermission: '&cYou do not have permission to perform that action' - invalidReason: '&c[reason] is no valid reason.' + notFound: ' not found, are you sure they exist?' + offline: ' is offline' + noSelf: 'You cannot perform that action on yourself!' + exception: 'An error occured whilst attempting to perform this command. Please check the console for further details.' + invalidIp: 'Invalid IP address, expecting w.x.y.z format' + offlinePermission: 'You are not allowed to perform this action on an offline player' + ambiguousPlayer: 'Multiple players match "". Please use their full name.' + exempt: ' is exempt from that action' + noPermission: 'You do not have permission to perform that action' + invalidReason: ' is no valid reason.' + # Commands alts: header: 'Possible alts found:' + entry: '">' + separator: ', ' + + names: + header: 'Known names for :' + row: ' (first: , last: )' + interactive: ' (first: , last: )">">' + separator: ', ' + dateTimeFormat: 'dd-MM-yyyy' + none: 'No name history found' + export: error: - inProgress: '&cAn export is already in progress, please wait' + inProgress: 'An export is already in progress, please wait' player: - started: '&aPlayer ban export started' - finished: '&aPlayer ban export finished, file [file] created' + started: 'Player ban export started' + finished: 'Player ban export finished, file created' ip: - started: '&aIP ban export started' - finished: '&aIP ban export finished, file [file] created' + started: 'IP ban export started' + finished: 'IP ban export finished, file created' + import: error: - inProgress: '&cAn import is already in progress, please wait' + inProgress: 'An import is already in progress, please wait' player: - started: '&aPlayer ban import started' - finished: '&aPlayer ban import finished' + started: 'Player ban import started' + finished: 'Player ban import finished' ip: - started: '&aIP ban import started' - finished: '&aIP ban import finished' + started: 'IP ban import started' + finished: 'IP ban import finished' advancedban: - started: '&aAdvancedBan import started' - finished: '&aAdvancedBan import finished' + started: 'AdvancedBan import started' + finished: 'AdvancedBan import finished' h2: - started: '&aH2 import started' - finished: '&aH2 import finished, please restart the server' + started: 'H2 import started' + finished: 'H2 import finished, please restart the server' + litebans: + started: 'LiteBans import started' + finished: 'LiteBans import finished' + info: error: - invalidIndex: '&cInvalid player option used' - indexRequired: '&cMultiple players named [name] found, please select a player - by providing an index between 1 and [size], e.g. /bminfo [name] 1' - index: '&7#[index] - &6[name] - &4[uuid]' + invalidIndex: 'Invalid player option used' + indexRequired: 'Multiple players named found, please select a player by providing an index between 1 and , e.g. /bminfo 1' + index: '# - - ' stats: - player: '&6[player] has been banned [bans] times, muted [mutes] times, kicked - [kicks] times and warned [warns] times ([warnPoints] Points), has [notes] - notes and been reported [reports] times' - ip: '&6This ip has been banned [bans] times, muted [mutes] times and range banned - [rangebans] times' - connection: '&6Their last connection was with [ip] on [lastSeen]' - geoip: 'Country: [country] City: [city]' + player: ' has been banned times, muted times, kicked times and warned + times ( Points), has notes and been reported times' + ip: 'This ip has been banned times, muted times and range banned times' + connection: 'Their last connection was with on ' + geoip: 'Country: City: ' ban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which - expires in [expires]' - dateTimeFormat: dd-MM-yyyy HH:mm:ss + permanent: 'Currently banned for by at ' + temporary: 'Currently banned for by at which expires in ' + dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' ipban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which - expires in [expires]' - dateTimeFormat: dd-MM-yyyy HH:mm:ss + permanent: 'Currently banned for by at ' + temporary: 'Currently banned for by at which expires in ' + dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' iprangeban: - permanent: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created] - which expires in [expires]' - dateTimeFormat: dd-MM-yyyy HH:mm:ss + permanent: ' - banned for by at ' + temporary: ' - banned for by at which expires in ' + dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' ipmute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which - expires in [expires]' - dateTimeFormat: dd-MM-yyyy HH:mm:ss + permanent: 'Currently muted for by at ' + temporary: 'Currently muted for by at which expires in ' + dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' mute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which - expires in [expires]' - dateTimeFormat: dd-MM-yyyy HH:mm:ss + permanent: 'Currently muted for by at ' + temporary: 'Currently muted for by at which expires in ' + temporaryOnline: 'Currently muted for by at which expires in (online time)' + temporaryOnlinePaused: 'Currently muted for by at with remaining (online time, paused)' + dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' website: - player: https://yourdomain.com/player/[uuid] - ip: http://yourdomain.com/index.php?action=viewip&ip=[ip]&server=0 + player: 'https://yourdomain.com/player/' + ip: 'http://yourdomain.com/index.php?action=viewip&ip=&server=0' history: - row: '&7#[id] &a[&f[type]&a] &6[actor]&f [meta] [reason] - &e[created]' - dateTimeFormat: dd-MM-yyyy HH:mm:ss - noResults: '&cNo results found' + row: '# [] - ' + dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' + noResults: 'No results found' ips: - row: '&e[ip] - &6[join] - [leave]' - dateTimeFormat: dd-MM-yyyy HH:mm:ss + row: ' - - ' + dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' + kick: player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' + noReason: 'You have been kicked' + reason: 'You have been kicked for ' notify: - noReason: '&6[player] has been kicked by [actor]' - reason: '&6[player] has been kicked by [actor] for &4[reason]' + noReason: ' has been kicked by ' + reason: ' has been kicked by for ' + kickall: player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' + noReason: 'You have been kicked' + reason: 'You have been kicked for ' notify: - noReason: All players have been kicked by [actor] - reason: All players have been kicked by [actor] for &4[reason] + noReason: 'All players have been kicked by ' + reason: 'All players have been kicked by for ' + ban: player: - disallowed: '&6You have been banned from this server for &4[reason]&6. Your - appeal pin is [pin]' - kick: '&6You have been banned permanently for &4[reason]&6. Your appeal pin is [pin]' - dateTimeFormat: yyyy-MM-dd HH:mm:ss - notify: '&6[player] has been permanently banned by [actor] for &4[reason]' + disallowed: 'You are banned from this server\n \nReason: \nBanned by: \nDate: \n \nAppeal at ' + kick: 'You have been banned\n \nReason: \nBanned by: ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: ' has been permanently banned by for ''>View player info''>[Info] ''>Unban player''>[Unban]' error: - exists: '&c[player] is already banned' - cooldown: '&cThis player was banned too recently, try again later' + exists: ' is already banned' + cooldown: 'This player was banned too recently, try again later' + banall: - notify: '&6[player] will be permanently banned by [actor] for &4[reason]' + notify: ' will be permanently banned by for ' + tempban: player: - disallowed: '&6You have been temporarily banned from this server for &4[reason] - \n&6It expires in [expires]. Your appeal pin is [pin]' - kick: '&6You have been temporarily banned for &4[reason]&6. Your appeal pin is [pin]' - dateTimeFormat: yyyy-MM-dd HH:mm:ss - notify: '&6[player] has been temporarily banned for [expires] by [actor] for &4[reason]' + disallowed: 'You are temporarily banned from this server\n \nReason: \nBanned by: \nExpires: \nDate: \n \nAppeal at ' + kick: 'You have been temporarily banned\n \nReason: \nBanned by: \nExpires: ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: ' has been temporarily banned for by for ''>View player info''>[Info] ''>Unban player''>[Unban]' + tempbanall: - notify: '&6[player] will be temporarily banned for [expires] by [actor] for &4[reason]' + notify: ' will be temporarily banned for by for ' + unban: - notify: '&6[player] has been unbanned by [actor]' + notify: ' has been unbanned by ' error: - noExists: '&c[player] is not banned' - notOwn: '&c[player] was not banned by you, unable to unban' + noExists: ' is not banned' + notOwn: ' was not banned by you, unable to unban' + unbanall: - notify: '&6[player] will be unbanned by [actor]' + notify: ' will be unbanned by ' + mute: player: - blocked: '&cYou may not use the [command] command whilst muted!' - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[player] has been permanently muted by [actor] for &4[reason]' + blocked: 'You may not use the command whilst muted!' + disallowed: 'You have been permanently muted for by ' + broadcast: '[Muted] ' + notify: ' has been permanently muted by for ''>View player info''>[Info] ''>Unmute player''>[Unmute]' error: - exists: '&c[player] is already muted' - cooldown: '&cThis player was muted too recently, try again later' + exists: ' is already muted' + cooldown: 'This player was muted too recently, try again later' + muteip: ip: - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[ip] ([players]) have been permanently muted by [actor] for &4[reason]' + disallowed: 'You have been permanently muted for by ' + broadcast: '[Muted] ' + notify: ' () have been permanently muted by for ' error: - exists: '&c[ip] is already muted' + exists: ' is already muted' + muteall: - notify: '&6[player] will be permanently muted by [actor] for &4[reason]' + notify: ' will be permanently muted by for ' + tempmute: player: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which - expires in [expires]' - notify: '&6[player] has been temporarily muted for [expires] by [actor] for &4[reason]' + disallowed: 'You have been temporarily muted for by which expires in ' + disallowedOnline: 'You have been temporarily muted for by which expires in (online time)' + notify: ' has been temporarily muted for by for ''>View player info''>[Info] ''>Unmute player''>[Unmute]' + notifyOnline: ' has been temporarily muted for (online time) by for ' error: - exists: '&c[player] is already muted' + exists: ' is already muted' + tempmuteip: ip: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which - expires in [expires]' - notify: '&6[ip] ([players]) have been temporarily muted for [expires] by [actor] - for &4[reason]' + disallowed: 'You have been temporarily muted for by which expires in ' + notify: ' () have been temporarily muted for by for ' error: - exists: '&c[ip] is already muted' + exists: ' is already muted' + tempmuteall: - notify: '&6[player] will be temporarily muted for [expires] by [actor] for &4[reason]' + notify: ' will be temporarily muted for by for ' + unmute: - notify: '&6[player] has been unmuted by [actor]' - player: '&6You have been unmuted by [actor]' + notify: ' has been unmuted by ' + player: 'You have been unmuted by ' error: - noExists: '&c[player] is not muted' - notOwn: '&c[player] was not muted by you, unable to unmute' + noExists: ' is not muted' + notOwn: ' was not muted by you, unable to unmute' + unmuteip: - notify: '&6[ip] has been unmuted by [actor]' + notify: ' has been unmuted by ' error: - noExists: '&c[ip] is not muted' - notOwn: '&c[ip] was not muted by you, unable to unmute' + noExists: ' is not muted' + notOwn: ' was not muted by you, unable to unmute' + unmuteall: - notify: '&6[player] will be unmuted by [actor]' + notify: ' will be unmuted by ' + banname: name: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: yyyy-MM-dd HH:mm:ss - notify: '&6Name [name] has been permanently banned by [actor] for &4[reason]' + disallowed: 'You have been banned from this server for ' + kick: 'You have been banned permanently for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: 'Name has been permanently banned by for ' error: - exists: '&cName [name] is already banned' + exists: 'Name is already banned' + tempbanname: name: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires - in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: yyyy-MM-dd HH:mm:ss - notify: '&6Name [name] has been temporarily banned for [expires] by [actor] for - &4[reason]' + disallowed: 'You have been banned from this server for \nIt expires in ' + kick: 'You have been temporarily banned for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: 'Name has been temporarily banned for by for ' + unbanname: - notify: '&6Name [name] has been unbanned by [actor]' + notify: 'Name has been unbanned by ' error: - noExists: '&cName [name] is not banned' + noExists: 'Name is not banned' + banip: ip: - disallowed: '&6You have been banned from this server for &4[reason]&6. Your - appeal pin is [pin]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: yyyy-MM-dd HH:mm:ss - notify: '&6[ip] has been permanently banned by [actor] for &4[reason]' + disallowed: 'You have been banned from this server for ' + kick: 'You have been banned permanently for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: ' () has been permanently banned by for ' error: - exists: '&c[ip] is already banned' - cooldown: '&cThis ip was banned too recently, try again later' + exists: ' is already banned' + cooldown: 'This ip was banned too recently, try again later' + baniprange: error: - invalid: '&cInvalid range, please use cidr notation 192.168.0.1/16 or wildcard - 192.168.*.*' - minMax: '&cRange must be lowest to highest' - exists: '&cA ban containing those ranges already exists' + invalid: 'Invalid range, please use cidr notation 192.168.0.1/16 or wildcard 192.168.*.*' + minMax: 'Range must be lowest to highest' + exists: 'A ban containing those ranges already exists' ip: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: yyyy-MM-dd HH:mm:ss - notify: '&6[from] - [to] have been banned by [actor]' + disallowed: 'You have been banned from this server for ' + kick: 'You have been banned permanently for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: ' - have been banned by ' + tempbaniprange: - notify: '&6[from] - [to] has been temporarily banned for [expires] by [actor]' + notify: ' - has been temporarily banned for by ' ip: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires - in [expires]' - kick: '&6You have been temporarily banned for [expires] by [actor] for &4[reason]' - dateTimeFormat: yyyy-MM-dd HH:mm:ss + disallowed: 'You have been banned from this server for \nIt expires in ' + kick: 'You have been temporarily banned for by for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + unbaniprange: - notify: '&6[from] - [to] has been unbanned by [actor]' + notify: ' - has been unbanned by ' + banipall: - notify: '&6[ip] will be permanently banned by [actor] for &4[reason]' + notify: ' will be permanently banned by for ' + tempbanip: ip: - disallowed: '&6You have been temporarily banned from this server for &4[reason] - \n&6It expires in [expires]. Your appeal pin is [pin]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: yyyy-MM-dd HH:mm:ss - notify: '&6[ip] has been temporarily banned for [expires] by [actor] for &4[reason]' + disallowed: 'You have been banned from this server for \nIt expires in ' + kick: 'You have been temporarily banned for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: ' () has been temporarily banned for by for ' + tempbanipall: - notify: '&6[ip] will be temporarily banned for [expires] by [actor] for &4[reason]' + notify: ' will be temporarily banned for by for ' + unbanip: - notify: '&6[ip] has been unbanned by [actor]' + notify: ' has been unbanned by ' error: - noExists: '&c[ip] is not banned' - notOwn: '&c[ip] was not banned by you, unable to unban' + noExists: ' is not banned' + notOwn: ' was not banned by you, unable to unban' + unbanipall: - notify: '&6[ip] will be unbanned by [actor]' + notify: ' will be unbanned by ' + warn: player: - warned: '&cYou have been warned for &4[reason] &cby [actor]' + warned: 'You have been warned by for ' disallowed: - header: '&cYou may not speak until you have accepted your most recent warning. - Please type the following:' - reason: '&6[reason]' - removed: '&aThank you for your understanding, you may now speak again' - notify: '&6[player] has been warned by [actor] for &4[reason]' + header: 'You may not speak until you have accepted your most recent warning. Please type the following:' + reason: '' + removed: 'Thank you for your understanding, you may now speak again' + notify: ' has been warned by for ''>View player info''>[Info]' error: - cooldown: '&cThis player was warned too recently, try again later' - exists: '&c[player] has already been warned for that reason' + cooldown: 'This player was warned too recently, try again later' + tempwarn: player: - warned: '&6You have been warned for [expires] by [actor] for &4[reason]' - notify: '&6[player] has been warned for [expires] by [actor] for &4[reason]' + warned: 'You have been warned for by for ' + notify: ' has been warned for by for ''>View player info''>[Info]' + dwarn: player: - notify: '&6Your most recent warning has been deleted by &4[actor]' - notify: '&cThe most recent warning for [player] has been deleted' + notify: 'Your most recent warning has been deleted by ' + notify: 'The most recent warning for has been deleted' error: - noWarnings: '&c[player] has no warnings to delete' + noWarnings: ' has no warnings to delete' + bmclear: - notify: '&c[player] has had their [type] cleared' + notify: ' has had their cleared' error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, - notes or warnings' + invalid: 'Invalid type, please choose between banrecords, muterecords, kicks, notes or warnings' + bmutils: missingplayers: - notify: '&c[amount] missing players added' - noneFound: '&a0 missing players found' - found: '&c[amount] missing player data found. Fixing...' + notify: ' missing players added' + noneFound: '0 missing players found' + found: ' missing player data found. Fixing...' error: - failedLookup: '&cFailed to lookup player [uuid], check server logs' - complete: '&a[amount] players resolved, please restart your server for failed - punishments to take affect' + failedLookup: 'Failed to lookup player , check server logs' + complete: ' players resolved, please restart your server for failed punishments to take affect' duplicates: lookup: - notFound: '&aNo duplicate player names found' + notFound: 'No duplicate player names found' error: - invalidName: '&cInvalid name, must be 16 characters or less and contain only - letters, numbers and an underscore' - nameExists: '&cA player with that name already exists' - success: '&aPlayer name set to [player] successfully' + invalidName: 'Invalid name, must be 16 characters or less and contain only letters, numbers and an underscore' + nameExists: 'A player with that name already exists' + success: 'Player name set to successfully' + bmrollback: - notify: '&c[player] has had their [type] actions undone' + notify: ' has had their actions undone' error: - invalid: '&cInvalid type [type], please choose between [types]' + invalid: 'Invalid type , please choose between [types]' + sync: player: - started: '&aStarting force [type] synchronisation' - finished: '&aForced [type] synchronisation complete' + started: 'Starting force synchronisation' + finished: 'Forced synchronisation complete' + update: - notify: '&6[BanManager] &aAn update is available' + notify: '[BanManager] An update is available' + notes: - header: '&6[player] has the following notes:' - joinAmount: '&6[player] has &e[amount] &6notes, click to view them' - note: '&6[[player]] &e[message] - &e[created]' - playerNote: '&a[[player]] &6[[actor]] &e[message] - &e[created]' - dateTimeFormat: dd-MM-yyyy - notify: '[player] has a new note attached by [actor]: [message]' + header: ' has the following notes:' + joinAmount: '"> has notes, click to view them' + note: '[] - ' + playerNote: '[] [] - ' + dateTimeFormat: 'dd-MM-yyyy' + notify: ' has a new note attached by : ' error: - noNotes: '&c[player] has no notes' - noOnlineNotes: '&cNo online players have notes' + noNotes: ' has no notes' + noOnlineNotes: 'No online players have notes' + report: - notify: '&6[player] has been reported by [actor] for &4[reason]' + notify: ' has been reported by for ' error: - cooldown: '&cToo many reports, please wait a while' - notOnline: '&cPlayer must be online to report' + cooldown: 'This player was reported too recently, try again later' assign: - player: '&aReport [id] assigned to [player]' - notify: '&aYou have been assigned report [id] by [actor]' + player: 'Report assigned to ' + notify: 'You have been assigned report by ' unassign: - player: '&aReport [id] unassigned' + player: 'Report unassigned' close: notify: - closed: '&aReport [id] closed by [actor]' - command: '&aReport [id] closed by [actor] with [command]' - comment: '&aReport [id] closed by [actor] with [comment]' - dispatch: Executing command [command] + closed: 'Report closed by ' + command: 'Report closed by with ' + comment: 'Report closed by with ' + dispatch: 'Executing command ' list: - noResults: '&cNo reports found' + noResults: 'No reports found' error: - invalidState: '&cReport state [state] not found' + invalidState: 'Report state not found' row: - dateTimeFormat: yyyy-MM-dd HH:mm:ss - header: '&e-- Reports ([count]) -- Page ([page]/[maxPage])' - all: '&7#[id] &e[[state]] &6- [created] - [player]' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + header: '-- Reports () -- Page (/)' + all: '">Click to view details"># [] - - ' tp: error: - notFound: '&cReport not found' - worldNotFound: '&cWorld [world] could not be found' - invalidId: '&c[id] is not a valid report id' - dateTimeFormat: yyyy-MM-dd HH:mm:ss + notFound: 'Report not found' + worldNotFound: 'World could not be found' + invalidId: ' is not a valid report id' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' + report: '# reported for at ' + location: ' - , , ' info: error: - notFound: '&cReport not found' - invalidId: '&c[id] is not a valid report id' - dateTimeFormat: yyyy-MM-dd HH:mm:ss + notFound: 'Report not found' + invalidId: ' is not a valid report id' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' - success: '&a[player] has been reported' - created: '&6[actor] has reported [player] for &4[reason]' + report: '# reported for at ' + location: ' - , , ' + addnoteall: - notify: '&c[player] will have a new attached by [actor]: [message]' + notify: ' will have a new attached by : ' + banlist: - header: '&6There are [bans] [type] bans:' + header: 'There are bans:' + bmactivity: row: - all: '&a[&f[type]&a] &6[player]&f - &6[actor]&f - &e[created]' - player: '&a[&f[type]&a] &6[player]&f - &e[created]' - dateTimeFormat: dd-MM-yyyy HH:mm:ss - noResults: '&cNo results found' + all: '[] - - ' + player: '[] - ' + dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' + noResults: 'No results found' + bmdelete: - notify: '&a[rows] rows deleted' + notify: ' rows deleted' error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, - notes or warnings' - invalidId: '&c[id] is not a valid number' + invalid: 'Invalid type, please choose between banrecords, muterecords, kicks, notes or warnings' + invalidId: ' is not a valid number' + denyalts: player: - disallowed: '&cThe IP address you are joining from is linked to a banned player' + disallowed: 'The IP address you are joining from is linked to a banned player' + reasons: - row: '[hashtag] = [reason]' + row: ' = ' + + confirmation: + prompt: 'Are you sure you want to ? Click to confirm''>[Confirm] Click to cancel''>[Cancel]' + confirmed: 'Action confirmed.' + cancelled: 'Action cancelled.' + expired: 'No pending action found. It may have expired.' + + dashboard: + header: ' Staff Dashboard ' + activeBans: 'Active Bans: ' + activeMutes: 'Active Mutes: ' + openReports: 'Open Reports: View reports''>[View]' + recentActivity: 'Recent Activity (24h): ' + footer: ' ' + + report: + actions: + assign: '''>Assign to yourself''>[Assign]' + close: '''>Close this report''>[Close]' + tp: '''>Teleport to location''>[TP]' + feedback: + assigned: 'Your report # has been assigned to ' + closed: 'Your report # has been closed by ' diff --git a/e2e/platforms/fabric/configs/banmanager-webenhancer/messages.yml b/e2e/platforms/fabric/configs/banmanager-webenhancer/messages.yml index 5738200..4ea98a0 100644 --- a/e2e/platforms/fabric/configs/banmanager-webenhancer/messages.yml +++ b/e2e/platforms/fabric/configs/banmanager-webenhancer/messages.yml @@ -1,5 +1,5 @@ messages: pin: - notify: '&6Your pin expires in [expires]' - pin: '[pin]' - + notify: 'Your pin expires in ' + pin: '' + rateLimited: 'Please wait seconds before generating a new pin' diff --git a/e2e/platforms/fabric/configs/banmanager/messages.yml b/e2e/platforms/fabric/configs/banmanager/messages.yml index 8a833ce..ec9a8a6 100644 --- a/e2e/platforms/fabric/configs/banmanager/messages.yml +++ b/e2e/platforms/fabric/configs/banmanager/messages.yml @@ -1,20 +1,22 @@ -# Variables -# [reason] = Ban/Mute reason -# [player] = The name of the player -# [ip] = The banned ip -# [actor] = Who banned/muted -# [expires] = How long until the ban/mute ends +# Message templates use MiniMessage formatting: https://docs.advntr.dev/minimessage/format.html +# Placeholders use angle brackets, e.g. , , , , + +tokens: + appealUrl: 'https://yourdomain.com/appeal' + serverName: 'My Server' + discordUrl: 'https://discord.gg/example' + rulesUrl: 'https://yourdomain.com/rules' messages: - duplicateIP: '&cWarning: [player] has the same IP as the following banned players:\n&6[players]' - duplicateIPAlts: '&cWarning: [player] has the same IP as the following players:\n&6[players]' - configReloaded: '&aConfiguration reloaded successfully!' + duplicateIP: 'Warning: has the same IP as the following banned players:\n' + duplicateIPAlts: 'Warning: has the same IP as the following players:\n' + configReloaded: 'Configuration reloaded successfully!' deniedNotify: - player: '&cWarning: [player] attempted to join the server but was denied due to &4[reason]' - ip: '&cWarning: [ip] attempted to join the server but was denied due to &4[reason]' - deniedMaxIp: '&cToo many players with your ip address online' - deniedMultiaccounts: '&cToo many players with your ip address logged in recently' - deniedCountry: '&cYou may not connect from your region' + player: 'Warning: attempted to join the server but was denied due to ' + ip: 'Warning: attempted to join the server but was denied due to ' + deniedMaxIp: 'Too many players with your ip address online' + deniedMultiaccounts: 'Too many players with your ip address logged in recently' + deniedCountry: 'You may not connect from your region' time: now: 'now' @@ -34,402 +36,442 @@ messages: seconds: 'seconds' never: 'never' error: - invalid: '&cYour time length is invalid' - limit: '&cYou cannot perform this action for that length of time' + invalid: 'Your time length is invalid' + limit: 'You cannot perform this action for that length of time' none: 'none' # General command text sender: error: - notFound: '&c[player] not found, are you sure they exist?' - offline: '&c[player] is offline' - noSelf: '&cYou cannot perform that action on yourself!' - exception: '&cAn error occured whilst attempting to perform this command. Please check the console for further details.' - invalidIp: '&cInvalid IP address, expecting w.x.y.z format' - offlinePermission: '&cYou are not allowed to perform this action on an offline player' - exempt: '&c[player] is exempt from that action' - noPermission: '&cYou do not have permission to perform that action' - invalidReason: '&c[reason] is no valid reason.' + notFound: ' not found, are you sure they exist?' + offline: ' is offline' + noSelf: 'You cannot perform that action on yourself!' + exception: 'An error occured whilst attempting to perform this command. Please check the console for further details.' + invalidIp: 'Invalid IP address, expecting w.x.y.z format' + offlinePermission: 'You are not allowed to perform this action on an offline player' + ambiguousPlayer: 'Multiple players match "". Please use their full name.' + exempt: ' is exempt from that action' + noPermission: 'You do not have permission to perform that action' + invalidReason: ' is no valid reason.' # Commands alts: header: 'Possible alts found:' + entry: '">' + separator: ', ' + + names: + header: 'Known names for :' + row: ' (first: , last: )' + interactive: ' (first: , last: )">">' + separator: ', ' + dateTimeFormat: 'dd-MM-yyyy' + none: 'No name history found' export: error: - inProgress: '&cAn export is already in progress, please wait' + inProgress: 'An export is already in progress, please wait' player: - started: '&aPlayer ban export started' - finished: '&aPlayer ban export finished, file [file] created' + started: 'Player ban export started' + finished: 'Player ban export finished, file created' ip: - started: '&aIP ban export started' - finished: '&aIP ban export finished, file [file] created' + started: 'IP ban export started' + finished: 'IP ban export finished, file created' import: error: - inProgress: '&cAn import is already in progress, please wait' + inProgress: 'An import is already in progress, please wait' player: - started: '&aPlayer ban import started' - finished: '&aPlayer ban import finished' + started: 'Player ban import started' + finished: 'Player ban import finished' ip: - started: '&aIP ban import started' - finished: '&aIP ban import finished' + started: 'IP ban import started' + finished: 'IP ban import finished' advancedban: - started: '&aAdvancedBan import started' - finished: '&aAdvancedBan import finished' + started: 'AdvancedBan import started' + finished: 'AdvancedBan import finished' h2: - started: '&aH2 import started' - finished: '&aH2 import finished, please restart the server' + started: 'H2 import started' + finished: 'H2 import finished, please restart the server' + litebans: + started: 'LiteBans import started' + finished: 'LiteBans import finished' info: error: - invalidIndex: '&cInvalid player option used' - indexRequired: '&cMultiple players named [name] found, please select a player by providing an index between 1 and [size], e.g. /bminfo [name] 1' - index: '&7#[index] - &6[name] - &4[uuid]' + invalidIndex: 'Invalid player option used' + indexRequired: 'Multiple players named found, please select a player by providing an index between 1 and , e.g. /bminfo 1' + index: '# - - ' stats: - player: '&6[player] has been banned [bans] times, muted [mutes] times, kicked [kicks] times and warned [warns] - times ([warnPoints] Points), has [notes] notes and been reported [reports] times' - ip: '&6This ip has been banned [bans] times, muted [mutes] times and range banned [rangebans] times' - connection: '&6Their last connection was with [ip] on [lastSeen]' - geoip: 'Country: [country] City: [city]' + player: ' has been banned times, muted times, kicked times and warned + times ( Points), has notes and been reported times' + ip: 'This ip has been banned times, muted times and range banned times' + connection: 'Their last connection was with on ' + geoip: 'Country: City: ' ban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: 'Currently banned for by at ' + temporary: 'Currently banned for by at which expires in ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' ipban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: 'Currently banned for by at ' + temporary: 'Currently banned for by at which expires in ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' iprangeban: - permanent: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: ' - banned for by at ' + temporary: ' - banned for by at which expires in ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' ipmute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: 'Currently muted for by at ' + temporary: 'Currently muted for by at which expires in ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' mute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: 'Currently muted for by at ' + temporary: 'Currently muted for by at which expires in ' + temporaryOnline: 'Currently muted for by at which expires in (online time)' + temporaryOnlinePaused: 'Currently muted for by at with remaining (online time, paused)' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' website: - player: 'https://yourdomain.com/player/[uuid]' - ip: 'http://yourdomain.com/index.php?action=viewip&ip=[ip]&server=0' + player: 'https://yourdomain.com/player/' + ip: 'http://yourdomain.com/index.php?action=viewip&ip=&server=0' history: - row: '&7#[id] &a[&f[type]&a] &6[actor]&f [meta] [reason] - &e[created]' + row: '# [] - ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - noResults: '&cNo results found' + noResults: 'No results found' ips: - row: '&e[ip] - &6[join] - [leave]' + row: ' - - ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' kick: player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' + noReason: 'You have been kicked' + reason: 'You have been kicked for ' notify: - noReason: '&6[player] has been kicked by [actor]' - reason: '&6[player] has been kicked by [actor] for &4[reason]' + noReason: ' has been kicked by ' + reason: ' has been kicked by for ' kickall: player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' + noReason: 'You have been kicked' + reason: 'You have been kicked for ' notify: - noReason: 'All players have been kicked by [actor]' - reason: 'All players have been kicked by [actor] for &4[reason]' + noReason: 'All players have been kicked by ' + reason: 'All players have been kicked by for ' - # Modified for WebEnhancer E2E testing - includes [pin] placeholder ban: player: - disallowed: '&6You have been banned from this server for &4[reason]&6. Your appeal pin is [pin]' - kick: '&6You have been banned permanently for &4[reason]&6. Your appeal pin is [pin]' + disallowed: 'You are banned from this server\n \nReason: \nBanned by: \nDate: \n \nAppeal at ' + kick: 'You have been banned\n \nReason: \nBanned by: ' dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been permanently banned by [actor] for &4[reason]' + notify: ' has been permanently banned by for ''>View player info''>[Info] ''>Unban player''>[Unban]' error: - exists: '&c[player] is already banned' - cooldown: '&cThis player was banned too recently, try again later' + exists: ' is already banned' + cooldown: 'This player was banned too recently, try again later' banall: - notify: '&6[player] will be permanently banned by [actor] for &4[reason]' + notify: ' will be permanently banned by for ' tempban: player: - disallowed: '&6You have been temporarily banned from this server for &4[reason] \n&6It expires in [expires]. Your appeal pin is [pin]' - kick: '&6You have been temporarily banned for &4[reason]&6. Your appeal pin is [pin]' + disallowed: 'You are temporarily banned from this server\n \nReason: \nBanned by: \nExpires: \nDate: \n \nAppeal at ' + kick: 'You have been temporarily banned\n \nReason: \nBanned by: \nExpires: ' dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been temporarily banned for [expires] by [actor] for &4[reason]' + notify: ' has been temporarily banned for by for ''>View player info''>[Info] ''>Unban player''>[Unban]' tempbanall: - notify: '&6[player] will be temporarily banned for [expires] by [actor] for &4[reason]' + notify: ' will be temporarily banned for by for ' unban: - notify: '&6[player] has been unbanned by [actor]' + notify: ' has been unbanned by ' error: - noExists: '&c[player] is not banned' - notOwn: '&c[player] was not banned by you, unable to unban' + noExists: ' is not banned' + notOwn: ' was not banned by you, unable to unban' unbanall: - notify: '&6[player] will be unbanned by [actor]' + notify: ' will be unbanned by ' mute: player: - blocked: '&cYou may not use the [command] command whilst muted!' - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[player] has been permanently muted by [actor] for &4[reason]' + blocked: 'You may not use the command whilst muted!' + disallowed: 'You have been permanently muted for by ' + broadcast: '[Muted] ' + notify: ' has been permanently muted by for ''>View player info''>[Info] ''>Unmute player''>[Unmute]' error: - exists: '&c[player] is already muted' - cooldown: '&cThis player was muted too recently, try again later' + exists: ' is already muted' + cooldown: 'This player was muted too recently, try again later' muteip: ip: - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[ip] ([players]) have been permanently muted by [actor] for &4[reason]' + disallowed: 'You have been permanently muted for by ' + broadcast: '[Muted] ' + notify: ' () have been permanently muted by for ' error: - exists: '&c[ip] is already muted' + exists: ' is already muted' muteall: - notify: '&6[player] will be permanently muted by [actor] for &4[reason]' + notify: ' will be permanently muted by for ' tempmute: player: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - notify: '&6[player] has been temporarily muted for [expires] by [actor] for &4[reason]' + disallowed: 'You have been temporarily muted for by which expires in ' + disallowedOnline: 'You have been temporarily muted for by which expires in (online time)' + notify: ' has been temporarily muted for by for ''>View player info''>[Info] ''>Unmute player''>[Unmute]' + notifyOnline: ' has been temporarily muted for (online time) by for ' error: - exists: '&c[player] is already muted' + exists: ' is already muted' tempmuteip: ip: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - notify: '&6[ip] ([players]) have been temporarily muted for [expires] by [actor] for &4[reason]' + disallowed: 'You have been temporarily muted for by which expires in ' + notify: ' () have been temporarily muted for by for ' error: - exists: '&c[ip] is already muted' + exists: ' is already muted' tempmuteall: - notify: '&6[player] will be temporarily muted for [expires] by [actor] for &4[reason]' + notify: ' will be temporarily muted for by for ' unmute: - notify: '&6[player] has been unmuted by [actor]' - player: '&6You have been unmuted by [actor]' + notify: ' has been unmuted by ' + player: 'You have been unmuted by ' error: - noExists: '&c[player] is not muted' - notOwn: '&c[player] was not muted by you, unable to unmute' + noExists: ' is not muted' + notOwn: ' was not muted by you, unable to unmute' unmuteip: - notify: '&6[ip] has been unmuted by [actor]' + notify: ' has been unmuted by ' error: - noExists: '&c[ip] is not muted' - notOwn: '&c[ip] was not muted by you, unable to unmute' + noExists: ' is not muted' + notOwn: ' was not muted by you, unable to unmute' unmuteall: - notify: '&6[player] will be unmuted by [actor]' + notify: ' will be unmuted by ' banname: name: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' + disallowed: 'You have been banned from this server for ' + kick: 'You have been banned permanently for ' dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6Name [name] has been permanently banned by [actor] for &4[reason]' + notify: 'Name has been permanently banned by for ' error: - exists: '&cName [name] is already banned' + exists: 'Name is already banned' tempbanname: name: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' + disallowed: 'You have been banned from this server for \nIt expires in ' + kick: 'You have been temporarily banned for ' dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6Name [name] has been temporarily banned for [expires] by [actor] for &4[reason]' + notify: 'Name has been temporarily banned for by for ' unbanname: - notify: '&6Name [name] has been unbanned by [actor]' + notify: 'Name has been unbanned by ' error: - noExists: '&cName [name] is not banned' + noExists: 'Name is not banned' banip: ip: - disallowed: '&6You have been banned from this server for &4[reason]&6. Your appeal pin is [pin]' - kick: '&6You have been banned permanently for &4[reason]' + disallowed: 'You have been banned from this server for ' + kick: 'You have been banned permanently for ' dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[ip] ([players]) has been permanently banned by [actor] for &4[reason]' + notify: ' () has been permanently banned by for ' error: - exists: '&c[ip] is already banned' - cooldown: '&cThis ip was banned too recently, try again later' + exists: ' is already banned' + cooldown: 'This ip was banned too recently, try again later' baniprange: error: - invalid: '&cInvalid range, please use cidr notation 192.168.0.1/16 or wildcard 192.168.*.*' - minMax: '&cRange must be lowest to highest' - exists: '&cA ban containing those ranges already exists' + invalid: 'Invalid range, please use cidr notation 192.168.0.1/16 or wildcard 192.168.*.*' + minMax: 'Range must be lowest to highest' + exists: 'A ban containing those ranges already exists' ip: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' + disallowed: 'You have been banned from this server for ' + kick: 'You have been banned permanently for ' dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[from] - [to] have been banned by [actor]' + notify: ' - have been banned by ' tempbaniprange: - notify: '&6[from] - [to] has been temporarily banned for [expires] by [actor]' + notify: ' - has been temporarily banned for by ' ip: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]' - kick: '&6You have been temporarily banned for [expires] by [actor] for &4[reason]' + disallowed: 'You have been banned from this server for \nIt expires in ' + kick: 'You have been temporarily banned for by for ' dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' unbaniprange: - notify: '&6[from] - [to] has been unbanned by [actor]' + notify: ' - has been unbanned by ' banipall: - notify: '&6[ip] will be permanently banned by [actor] for &4[reason]' + notify: ' will be permanently banned by for ' tempbanip: ip: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires in [expires]. Your appeal pin is [pin]' - kick: '&6You have been temporarily banned for &4[reason]' + disallowed: 'You have been banned from this server for \nIt expires in ' + kick: 'You have been temporarily banned for ' dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[ip] ([players]) has been temporarily banned for [expires] by [actor] for &4[reason]' + notify: ' () has been temporarily banned for by for ' tempbanipall: - notify: '&6[ip] will be temporarily banned for [expires] by [actor] for &4[reason]' + notify: ' will be temporarily banned for by for ' unbanip: - notify: '&6[ip] has been unbanned by [actor]' + notify: ' has been unbanned by ' error: - noExists: '&c[ip] is not banned' - notOwn: '&c[ip] was not banned by you, unable to unban' + noExists: ' is not banned' + notOwn: ' was not banned by you, unable to unban' unbanipall: - notify: '&6[ip] will be unbanned by [actor]' + notify: ' will be unbanned by ' warn: player: - warned: '&6You have been warned by [actor] for &4[reason]' + warned: 'You have been warned by for ' disallowed: - header: '&cYou may not speak until you have accepted your most recent warning. Please type the following:' - reason: '&6[reason]' - removed: '&aThank you for your understanding, you may now speak again' - notify: '&6[player] has been warned by [actor] for &4[reason]' + header: 'You may not speak until you have accepted your most recent warning. Please type the following:' + reason: '' + removed: 'Thank you for your understanding, you may now speak again' + notify: ' has been warned by for ''>View player info''>[Info]' error: - cooldown: '&cThis player was warned too recently, try again later' + cooldown: 'This player was warned too recently, try again later' tempwarn: player: - warned: '&6You have been warned for [expires] by [actor] for &4[reason]' - notify: '&6[player] has been warned for [expires] by [actor] for &4[reason]' + warned: 'You have been warned for by for ' + notify: ' has been warned for by for ''>View player info''>[Info]' dwarn: player: - notify: '&6Your most recent warning has been deleted by &4[actor]' - notify: '&cThe most recent warning for [player] has been deleted' + notify: 'Your most recent warning has been deleted by ' + notify: 'The most recent warning for has been deleted' error: - noWarnings: '&c[player] has no warnings to delete' + noWarnings: ' has no warnings to delete' bmclear: - notify: '&c[player] has had their [type] cleared' + notify: ' has had their cleared' error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, notes or warnings' + invalid: 'Invalid type, please choose between banrecords, muterecords, kicks, notes or warnings' bmutils: missingplayers: - notify: '&c[amount] missing players added' - noneFound: '&a0 missing players found' - found: '&c[amount] missing player data found. Fixing...' + notify: ' missing players added' + noneFound: '0 missing players found' + found: ' missing player data found. Fixing...' error: - failedLookup: '&cFailed to lookup player [uuid], check server logs' - complete: '&a[amount] players resolved, please restart your server for failed punishments to take affect' + failedLookup: 'Failed to lookup player , check server logs' + complete: ' players resolved, please restart your server for failed punishments to take affect' duplicates: lookup: - notFound: '&aNo duplicate player names found' + notFound: 'No duplicate player names found' error: - invalidName: '&cInvalid name, must be 16 characters or less and contain only letters, numbers and an underscore' - nameExists: '&cA player with that name already exists' - success: '&aPlayer name set to [player] successfully' + invalidName: 'Invalid name, must be 16 characters or less and contain only letters, numbers and an underscore' + nameExists: 'A player with that name already exists' + success: 'Player name set to successfully' bmrollback: - notify: '&c[player] has had their [type] actions undone' + notify: ' has had their actions undone' error: - invalid: '&cInvalid type [type], please choose between [types]' + invalid: 'Invalid type , please choose between [types]' sync: player: - started: '&aStarting force [type] synchronisation' - finished: '&aForced [type] synchronisation complete' + started: 'Starting force synchronisation' + finished: 'Forced synchronisation complete' update: - notify: '&6[BanManager] &aAn update is available' + notify: '[BanManager] An update is available' notes: - header: '&6[player] has the following notes:' - joinAmount: '&6[player] has &e[amount] &6notes, click to view them' - note: '&6[[player]] &e[message] - &e[created]' - playerNote: '&a[[player]] &6[[actor]] &e[message] - &e[created]' + header: ' has the following notes:' + joinAmount: '"> has notes, click to view them' + note: '[] - ' + playerNote: '[] [] - ' dateTimeFormat: 'dd-MM-yyyy' - notify: '[player] has a new note attached by [actor]: [message]' + notify: ' has a new note attached by : ' error: - noNotes: '&c[player] has no notes' - noOnlineNotes: '&cNo online players have notes' + noNotes: ' has no notes' + noOnlineNotes: 'No online players have notes' report: - notify: '&6[player] has been reported by [actor] for &4[reason]' + notify: ' has been reported by for ' error: - cooldown: '&cThis player was reported too recently, try again later' + cooldown: 'This player was reported too recently, try again later' assign: - player: '&aReport [id] assigned to [player]' - notify: '&aYou have been assigned report [id] by [actor]' + player: 'Report assigned to ' + notify: 'You have been assigned report by ' unassign: - player: '&aReport [id] unassigned' + player: 'Report unassigned' close: notify: - closed: '&aReport [id] closed by [actor]' - command: '&aReport [id] closed by [actor] with [command]' - comment: '&aReport [id] closed by [actor] with [comment]' - dispatch: 'Executing command [command]' + closed: 'Report closed by ' + command: 'Report closed by with ' + comment: 'Report closed by with ' + dispatch: 'Executing command ' list: - noResults: '&cNo reports found' + noResults: 'No reports found' error: - invalidState: '&cReport state [state] not found' + invalidState: 'Report state not found' row: dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - header: '&e-- Reports ([count]) -- Page ([page]/[maxPage])' - all: '&7#[id] &e[[state]] &6- [created] - [player]' + header: '-- Reports () -- Page (/)' + all: '">Click to view details"># [] - - ' tp: error: - notFound: '&cReport not found' - worldNotFound: '&cWorld [world] could not be found' - invalidId: '&c[id] is not a valid report id' + notFound: 'Report not found' + worldNotFound: 'World could not be found' + invalidId: ' is not a valid report id' dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' + report: '# reported for at ' + location: ' - , , ' info: error: - notFound: '&cReport not found' - invalidId: '&c[id] is not a valid report id' + notFound: 'Report not found' + invalidId: ' is not a valid report id' dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' + report: '# reported for at ' + location: ' - , , ' addnoteall: - notify: '&c[player] will have a new attached by [actor]: [message]' + notify: ' will have a new attached by : ' banlist: - header: '&6There are [bans] [type] bans:' + header: 'There are bans:' bmactivity: row: - all: '&a[&f[type]&a] &6[player]&f - &6[actor]&f - &e[created]' - player: '&a[&f[type]&a] &6[player]&f - &e[created]' + all: '[] - - ' + player: '[] - ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - noResults: '&cNo results found' + noResults: 'No results found' bmdelete: - notify: '&a[rows] rows deleted' + notify: ' rows deleted' error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, notes or warnings' - invalidId: '&c[id] is not a valid number' + invalid: 'Invalid type, please choose between banrecords, muterecords, kicks, notes or warnings' + invalidId: ' is not a valid number' denyalts: player: - disallowed: '&cThe IP address you are joining from is linked to a banned player' + disallowed: 'The IP address you are joining from is linked to a banned player' reasons: - row: '[hashtag] = [reason]' + row: ' = ' + + confirmation: + prompt: 'Are you sure you want to ? Click to confirm''>[Confirm] Click to cancel''>[Cancel]' + confirmed: 'Action confirmed.' + cancelled: 'Action cancelled.' + expired: 'No pending action found. It may have expired.' + + dashboard: + header: ' Staff Dashboard ' + activeBans: 'Active Bans: ' + activeMutes: 'Active Mutes: ' + openReports: 'Open Reports: View reports''>[View]' + recentActivity: 'Recent Activity (24h): ' + footer: ' ' + + report: + actions: + assign: '''>Assign to yourself''>[Assign]' + close: '''>Close this report''>[Close]' + tp: '''>Teleport to location''>[TP]' + feedback: + assigned: 'Your report # has been assigned to ' + closed: 'Your report # has been closed by ' diff --git a/e2e/platforms/sponge/configs/banmanager-webenhancer/messages.yml b/e2e/platforms/sponge/configs/banmanager-webenhancer/messages.yml index 5738200..4ea98a0 100644 --- a/e2e/platforms/sponge/configs/banmanager-webenhancer/messages.yml +++ b/e2e/platforms/sponge/configs/banmanager-webenhancer/messages.yml @@ -1,5 +1,5 @@ messages: pin: - notify: '&6Your pin expires in [expires]' - pin: '[pin]' - + notify: 'Your pin expires in ' + pin: '' + rateLimited: 'Please wait seconds before generating a new pin' diff --git a/e2e/platforms/sponge/configs/banmanager/messages.yml b/e2e/platforms/sponge/configs/banmanager/messages.yml index 459dab6..ec9a8a6 100644 --- a/e2e/platforms/sponge/configs/banmanager/messages.yml +++ b/e2e/platforms/sponge/configs/banmanager/messages.yml @@ -1,16 +1,22 @@ -# BanManager messages configuration for E2E testing -# Modified to include [pin] placeholder for WebEnhancer testing +# Message templates use MiniMessage formatting: https://docs.advntr.dev/minimessage/format.html +# Placeholders use angle brackets, e.g. , , , , + +tokens: + appealUrl: 'https://yourdomain.com/appeal' + serverName: 'My Server' + discordUrl: 'https://discord.gg/example' + rulesUrl: 'https://yourdomain.com/rules' messages: - duplicateIP: '&cWarning: [player] has the same IP as the following banned players:\n&6[players]' - duplicateIPAlts: '&cWarning: [player] has the same IP as the following players:\n&6[players]' - configReloaded: '&aConfiguration reloaded successfully!' + duplicateIP: 'Warning: has the same IP as the following banned players:\n' + duplicateIPAlts: 'Warning: has the same IP as the following players:\n' + configReloaded: 'Configuration reloaded successfully!' deniedNotify: - player: '&cWarning: [player] attempted to join the server but was denied due to &4[reason]' - ip: '&cWarning: [ip] attempted to join the server but was denied due to &4[reason]' - deniedMaxIp: '&cToo many players with your ip address online' - deniedMultiaccounts: '&cToo many players with your ip address logged in recently' - deniedCountry: '&cYou may not connect from your region' + player: 'Warning: attempted to join the server but was denied due to ' + ip: 'Warning: attempted to join the server but was denied due to ' + deniedMaxIp: 'Too many players with your ip address online' + deniedMultiaccounts: 'Too many players with your ip address logged in recently' + deniedCountry: 'You may not connect from your region' time: now: 'now' @@ -30,337 +36,442 @@ messages: seconds: 'seconds' never: 'never' error: - invalid: '&cYour time length is invalid' - limit: '&cYou cannot perform this action for that length of time' + invalid: 'Your time length is invalid' + limit: 'You cannot perform this action for that length of time' none: 'none' + # General command text sender: error: - notFound: '&c[player] not found, are you sure they exist?' - offline: '&c[player] is offline' - noSelf: '&cYou cannot perform that action on yourself!' - exception: '&cAn error occured whilst attempting to perform this command. Please check the console for further details.' - invalidIp: '&cInvalid IP address, expecting w.x.y.z format' - offlinePermission: '&cYou are not allowed to perform this action on an offline player' - exempt: '&c[player] is exempt from that action' - noPermission: '&cYou do not have permission to perform that action' - invalidReason: '&c[reason] is no valid reason.' - + notFound: ' not found, are you sure they exist?' + offline: ' is offline' + noSelf: 'You cannot perform that action on yourself!' + exception: 'An error occured whilst attempting to perform this command. Please check the console for further details.' + invalidIp: 'Invalid IP address, expecting w.x.y.z format' + offlinePermission: 'You are not allowed to perform this action on an offline player' + ambiguousPlayer: 'Multiple players match "". Please use their full name.' + exempt: ' is exempt from that action' + noPermission: 'You do not have permission to perform that action' + invalidReason: ' is no valid reason.' + # Commands alts: header: 'Possible alts found:' + entry: '">' + separator: ', ' + + names: + header: 'Known names for :' + row: ' (first: , last: )' + interactive: ' (first: , last: )">">' + separator: ', ' + dateTimeFormat: 'dd-MM-yyyy' + none: 'No name history found' export: error: - inProgress: '&cAn export is already in progress, please wait' + inProgress: 'An export is already in progress, please wait' player: - started: '&aPlayer ban export started' - finished: '&aPlayer ban export finished, file [file] created' + started: 'Player ban export started' + finished: 'Player ban export finished, file created' ip: - started: '&aIP ban export started' - finished: '&aIP ban export finished, file [file] created' + started: 'IP ban export started' + finished: 'IP ban export finished, file created' import: error: - inProgress: '&cAn import is already in progress, please wait' + inProgress: 'An import is already in progress, please wait' player: - started: '&aPlayer ban import started' - finished: '&aPlayer ban import finished' + started: 'Player ban import started' + finished: 'Player ban import finished' ip: - started: '&aIP ban import started' - finished: '&aIP ban import finished' + started: 'IP ban import started' + finished: 'IP ban import finished' advancedban: - started: '&aAdvancedBan import started' - finished: '&aAdvancedBan import finished' + started: 'AdvancedBan import started' + finished: 'AdvancedBan import finished' h2: - started: '&aH2 import started' - finished: '&aH2 import finished, please restart the server' + started: 'H2 import started' + finished: 'H2 import finished, please restart the server' + litebans: + started: 'LiteBans import started' + finished: 'LiteBans import finished' info: error: - invalidIndex: '&cInvalid player option used' - indexRequired: '&cMultiple players named [name] found, please select a player by providing an index between 1 and [size], e.g. /bminfo [name] 1' - index: '&7#[index] - &6[name] - &4[uuid]' + invalidIndex: 'Invalid player option used' + indexRequired: 'Multiple players named found, please select a player by providing an index between 1 and , e.g. /bminfo 1' + index: '# - - ' stats: - player: '&6[player] has been banned [bans] times, muted [mutes] times, kicked [kicks] times and warned [warns] times ([warnPoints] Points), has [notes] notes and been reported [reports] times' - ip: '&6This ip has been banned [bans] times, muted [mutes] times and range banned [rangebans] times' - connection: '&6Their last connection was with [ip] on [lastSeen]' - geoip: 'Country: [country] City: [city]' + player: ' has been banned times, muted times, kicked times and warned + times ( Points), has notes and been reported times' + ip: 'This ip has been banned times, muted times and range banned times' + connection: 'Their last connection was with on ' + geoip: 'Country: City: ' ban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: 'Currently banned for by at ' + temporary: 'Currently banned for by at which expires in ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' ipban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: 'Currently banned for by at ' + temporary: 'Currently banned for by at which expires in ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' iprangeban: - permanent: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: ' - banned for by at ' + temporary: ' - banned for by at which expires in ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' ipmute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: 'Currently muted for by at ' + temporary: 'Currently muted for by at which expires in ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' mute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: 'Currently muted for by at ' + temporary: 'Currently muted for by at which expires in ' + temporaryOnline: 'Currently muted for by at which expires in (online time)' + temporaryOnlinePaused: 'Currently muted for by at with remaining (online time, paused)' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' website: - player: 'https://yourdomain.com/player/[uuid]' - ip: 'http://yourdomain.com/index.php?action=viewip&ip=[ip]&server=0' + player: 'https://yourdomain.com/player/' + ip: 'http://yourdomain.com/index.php?action=viewip&ip=&server=0' history: - row: '&7#[id] &a[&f[type]&a] &6[actor]&f [meta] [reason] - &e[created]' + row: '# [] - ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - noResults: '&cNo results found' + noResults: 'No results found' ips: - row: '&e[ip] - &6[join] - [leave]' + row: ' - - ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' kick: player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' + noReason: 'You have been kicked' + reason: 'You have been kicked for ' notify: - noReason: '&6[player] has been kicked by [actor]' - reason: '&6[player] has been kicked by [actor] for &4[reason]' + noReason: ' has been kicked by ' + reason: ' has been kicked by for ' kickall: player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' + noReason: 'You have been kicked' + reason: 'You have been kicked for ' notify: - noReason: 'All players have been kicked by [actor]' - reason: 'All players have been kicked by [actor] for &4[reason]' + noReason: 'All players have been kicked by ' + reason: 'All players have been kicked by for ' - # Modified for WebEnhancer E2E testing - includes [pin] placeholder ban: player: - disallowed: '&6You have been banned from this server for &4[reason]&6. Your appeal pin is [pin]' - kick: '&6You have been banned permanently for &4[reason]&6. Your appeal pin is [pin]' + disallowed: 'You are banned from this server\n \nReason: \nBanned by: \nDate: \n \nAppeal at ' + kick: 'You have been banned\n \nReason: \nBanned by: ' dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been permanently banned by [actor] for &4[reason]' + notify: ' has been permanently banned by for ''>View player info''>[Info] ''>Unban player''>[Unban]' error: - exists: '&c[player] is already banned' - cooldown: '&cThis player was banned too recently, try again later' + exists: ' is already banned' + cooldown: 'This player was banned too recently, try again later' banall: - notify: '&6[player] will be permanently banned by [actor] for &4[reason]' + notify: ' will be permanently banned by for ' tempban: player: - disallowed: '&6You have been temporarily banned from this server for &4[reason] \n&6It expires in [expires]. Your appeal pin is [pin]' - kick: '&6You have been temporarily banned for &4[reason]&6. Your appeal pin is [pin]' + disallowed: 'You are temporarily banned from this server\n \nReason: \nBanned by: \nExpires: \nDate: \n \nAppeal at ' + kick: 'You have been temporarily banned\n \nReason: \nBanned by: \nExpires: ' dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been temporarily banned for [expires] by [actor] for &4[reason]' + notify: ' has been temporarily banned for by for ''>View player info''>[Info] ''>Unban player''>[Unban]' tempbanall: - notify: '&6[player] will be temporarily banned for [expires] by [actor] for &4[reason]' + notify: ' will be temporarily banned for by for ' unban: - notify: '&6[player] has been unbanned by [actor]' + notify: ' has been unbanned by ' error: - noExists: '&c[player] is not banned' - notOwn: '&c[player] was not banned by you, unable to unban' + noExists: ' is not banned' + notOwn: ' was not banned by you, unable to unban' unbanall: - notify: '&6[player] will be unbanned by [actor]' + notify: ' will be unbanned by ' mute: player: - blocked: '&cYou may not use the [command] command whilst muted!' - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[player] has been permanently muted by [actor] for &4[reason]' + blocked: 'You may not use the command whilst muted!' + disallowed: 'You have been permanently muted for by ' + broadcast: '[Muted] ' + notify: ' has been permanently muted by for ''>View player info''>[Info] ''>Unmute player''>[Unmute]' error: - exists: '&c[player] is already muted' - cooldown: '&cThis player was muted too recently, try again later' + exists: ' is already muted' + cooldown: 'This player was muted too recently, try again later' muteip: ip: - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[ip] ([players]) have been permanently muted by [actor] for &4[reason]' + disallowed: 'You have been permanently muted for by ' + broadcast: '[Muted] ' + notify: ' () have been permanently muted by for ' error: - exists: '&c[ip] is already muted' + exists: ' is already muted' muteall: - notify: '&6[player] will be permanently muted by [actor] for &4[reason]' + notify: ' will be permanently muted by for ' tempmute: player: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - notify: '&6[player] has been temporarily muted for [expires] by [actor] for &4[reason]' + disallowed: 'You have been temporarily muted for by which expires in ' + disallowedOnline: 'You have been temporarily muted for by which expires in (online time)' + notify: ' has been temporarily muted for by for ''>View player info''>[Info] ''>Unmute player''>[Unmute]' + notifyOnline: ' has been temporarily muted for (online time) by for ' error: - exists: '&c[player] is already muted' + exists: ' is already muted' tempmuteip: ip: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - notify: '&6[ip] ([players]) have been temporarily muted for [expires] by [actor] for &4[reason]' + disallowed: 'You have been temporarily muted for by which expires in ' + notify: ' () have been temporarily muted for by for ' error: - exists: '&c[ip] is already muted' + exists: ' is already muted' tempmuteall: - notify: '&6[player] will be temporarily muted for [expires] by [actor] for &4[reason]' + notify: ' will be temporarily muted for by for ' unmute: - notify: '&6[player] has been unmuted by [actor]' + notify: ' has been unmuted by ' + player: 'You have been unmuted by ' error: - noExists: '&c[player] is not muted' - notOwn: '&c[player] was not muted by you, unable to unmute' - - unmuteall: - notify: '&6[player] will be unmuted by [actor]' + noExists: ' is not muted' + notOwn: ' was not muted by you, unable to unmute' unmuteip: - notify: '&6[ip] ([players]) have been unmuted by [actor]' + notify: ' has been unmuted by ' error: - noExists: '&c[ip] is not muted' - notOwn: '&c[ip] was not muted by you, unable to unmute' + noExists: ' is not muted' + notOwn: ' was not muted by you, unable to unmute' - warn: - player: - warned: '&cYou have been warned for &4[reason] &cby [actor]' - notify: '&6[player] has been warned by [actor] for &4[reason]' - error: - exists: '&c[player] has already been warned for that reason' - cooldown: '&cThis player was warned too recently, try again later' + unmuteall: + notify: ' will be unmuted by ' - tempwarn: - player: - warned: '&cYou have been warned for &4[reason] &cby [actor] which expires in [expires]' - notify: '&6[player] has been warned for [expires] by [actor] for &4[reason]' + banname: + name: + disallowed: 'You have been banned from this server for ' + kick: 'You have been banned permanently for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: 'Name has been permanently banned by for ' error: - exists: '&c[player] has already been warned for that reason' + exists: 'Name is already banned' - warnall: - notify: '&6[player] will be warned by [actor] for &4[reason]' + tempbanname: + name: + disallowed: 'You have been banned from this server for \nIt expires in ' + kick: 'You have been temporarily banned for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: 'Name has been temporarily banned for by for ' - addnote: - notify: '&6Note added for [player] by [actor]' + unbanname: + notify: 'Name has been unbanned by ' error: - cooldown: '&cA note was added for this player too recently, try again later' + noExists: 'Name is not banned' - notes: + banip: + ip: + disallowed: 'You have been banned from this server for ' + kick: 'You have been banned permanently for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: ' () has been permanently banned by for ' error: - noResults: '&cNo notes for [player]' - noResults.uuid: '&cNo notes for player' - header: '&6Notes for [player]' - row: '&6[created] &f[message]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + exists: ' is already banned' + cooldown: 'This ip was banned too recently, try again later' - bmactivity: + baniprange: error: - noResults: '&cNo activity found' - header: '&6Activity for [player]' - row: '&7#[id] &a[&f[type]&a] &6[player]&f [meta] [reason] - &e[created]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + invalid: 'Invalid range, please use cidr notation 192.168.0.1/16 or wildcard 192.168.*.*' + minMax: 'Range must be lowest to highest' + exists: 'A ban containing those ranges already exists' + ip: + disallowed: 'You have been banned from this server for ' + kick: 'You have been banned permanently for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: ' - have been banned by ' - banip: + tempbaniprange: + notify: ' - has been temporarily banned for by ' ip: - disallowed: '&6You have been banned from this server for &4[reason]&6. Your appeal pin is [pin]' - kick: '&6You have been banned permanently for &4[reason]' - notify: '&6[ip] has been permanently banned by [actor] for &4[reason]' - error: - exists: '&c[ip] is already banned' - cooldown: '&cThis ip was banned too recently, try again later' + disallowed: 'You have been banned from this server for \nIt expires in ' + kick: 'You have been temporarily banned for by for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + + unbaniprange: + notify: ' - has been unbanned by ' + + banipall: + notify: ' will be permanently banned by for ' tempbanip: ip: - disallowed: '&6You have been temporarily banned from this server for &4[reason] \n&6It expires in [expires]. Your appeal pin is [pin]' - kick: '&6You have been temporarily banned for &4[reason]' - notify: '&6[ip] has been temporarily banned for [expires] by [actor] for &4[reason]' + disallowed: 'You have been banned from this server for \nIt expires in ' + kick: 'You have been temporarily banned for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: ' () has been temporarily banned for by for ' + + tempbanipall: + notify: ' will be temporarily banned for by for ' unbanip: - notify: '&6[ip] has been unbanned by [actor]' + notify: ' has been unbanned by ' error: - noExists: '&c[ip] is not banned' - notOwn: '&c[ip] was not banned by you, unable to unban' + noExists: ' is not banned' + notOwn: ' was not banned by you, unable to unban' - baniprange: - notify: '&6[from] - [to] has been permanently banned by [actor] for &4[reason]' + unbanipall: + notify: ' will be unbanned by ' + + warn: + player: + warned: 'You have been warned by for ' + disallowed: + header: 'You may not speak until you have accepted your most recent warning. Please type the following:' + reason: '' + removed: 'Thank you for your understanding, you may now speak again' + notify: ' has been warned by for ''>View player info''>[Info]' error: - exists: '&c[from] - [to] is already banned' - cooldown: '&cThis ip range was banned too recently, try again later' + cooldown: 'This player was warned too recently, try again later' - tempbaniprange: - notify: '&6[from] - [to] has been temporarily banned for [expires] by [actor] for &4[reason]' + tempwarn: + player: + warned: 'You have been warned for by for ' + notify: ' has been warned for by for ''>View player info''>[Info]' - unbaniprange: - notify: '&6[from] - [to] has been unbanned by [actor]' + dwarn: + player: + notify: 'Your most recent warning has been deleted by ' + notify: 'The most recent warning for has been deleted' error: - noExists: '&c[from] - [to] is not banned' - notOwn: '&c[from] - [to] was not banned by you, unable to unban' + noWarnings: ' has no warnings to delete' - banname: - disallowed: '&6You may not use the name [name] on this server' - notify: '&6[name] has been permanently banned by [actor] for &4[reason]' + bmclear: + notify: ' has had their cleared' + error: + invalid: 'Invalid type, please choose between banrecords, muterecords, kicks, notes or warnings' + + bmutils: + missingplayers: + notify: ' missing players added' + noneFound: '0 missing players found' + found: ' missing player data found. Fixing...' + error: + failedLookup: 'Failed to lookup player , check server logs' + complete: ' players resolved, please restart your server for failed punishments to take affect' + duplicates: + lookup: + notFound: 'No duplicate player names found' + error: + invalidName: 'Invalid name, must be 16 characters or less and contain only letters, numbers and an underscore' + nameExists: 'A player with that name already exists' + success: 'Player name set to successfully' + + bmrollback: + notify: ' has had their actions undone' error: - exists: '&c[name] is already banned' + invalid: 'Invalid type , please choose between [types]' - tempbanname: - notify: '&6[name] has been temporarily banned for [expires] by [actor] for &4[reason]' + sync: + player: + started: 'Starting force synchronisation' + finished: 'Forced synchronisation complete' - unbanname: - notify: '&6[name] has been unbanned by [actor]' - error: - noExists: '&c[name] is not banned' - notOwn: '&c[name] was not banned by you, unable to unban' + update: + notify: '[BanManager] An update is available' - report: + notes: + header: ' has the following notes:' + joinAmount: '"> has notes, click to view them' + note: '[] - ' + playerNote: '[] [] - ' + dateTimeFormat: 'dd-MM-yyyy' + notify: ' has a new note attached by : ' error: - notOnline: '&cPlayer must be online to report' - cooldown: '&cToo many reports, please wait a while' - notify: '&6[player] has been reported by [actor] for &4[reason]' - success: '&a[player] has been reported' - created: '&6[actor] has reported [player] for &4[reason]' + noNotes: ' has no notes' + noOnlineNotes: 'No online players have notes' - reports: + report: + notify: ' has been reported by for ' error: - noResults: '&cNo reports for [player]' - header: '&6Reports for [player]' + cooldown: 'This player was reported too recently, try again later' + assign: + player: 'Report assigned to ' + notify: 'You have been assigned report by ' + unassign: + player: 'Report unassigned' + close: + notify: + closed: 'Report closed by ' + command: 'Report closed by with ' + comment: 'Report closed by with ' + dispatch: 'Executing command ' list: - row: '&e[id] [player] &6[reason] [created] &e[actor]' + noResults: 'No reports found' + error: + invalidState: 'Report state not found' + row: + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + header: '-- Reports () -- Page (/)' + all: '">Click to view details"># [] - - ' + tp: + error: + notFound: 'Report not found' + worldNotFound: 'World could not be found' + invalidId: ' is not a valid report id' dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: + report: '# reported for at ' + location: ' - , , ' + info: + error: + notFound: 'Report not found' + invalidId: ' is not a valid report id' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: + report: '# reported for at ' + location: ' - , , ' - deleterecord: - error: - noExists: '&c[id] does not exist' - deleted: '&a[id] has been deleted' + addnoteall: + notify: ' will have a new attached by : ' - clear: - header: - all: '&6Clearing [type] for [player]' - single: '&6Clearing [type]' - error: - noResults: '&cNothing found to delete' - notifyDelete: '&6Deleted [sum] [type] for [player]' + banlist: + header: 'There are bans:' - sync: - error: - inProgress: '&cA sync is already in progress, please wait' - started: '&aSync started' - finished: '&aSync finished' + bmactivity: + row: + all: '[] - - ' + player: '[] - ' + dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' + noResults: 'No results found' - external: + bmdelete: + notify: ' rows deleted' error: - notAllowed: '&cExternally synced servers cannot perform this action' + invalid: 'Invalid type, please choose between banrecords, muterecords, kicks, notes or warnings' + invalidId: ' is not a valid number' - rollback: - error: - inProgress: '&cA rollback is already in progress, please wait' - noResults: '&cNo results found to rollback' - started: '&aRollback started' - finished: '&aRollback finished, [sum] rows affected' + denyalts: + player: + disallowed: 'The IP address you are joining from is linked to a banned player' - dwarn: - notOwn: '&c[id] was not created by you, unable to delete' - noExists: '&c[id] does not exist' - deleted: '&aWarning deleted' + reasons: + row: ' = ' - findAlts: - header: 'Possible alts found:' - noResults: 'No possible alts found' + confirmation: + prompt: 'Are you sure you want to ? Click to confirm''>[Confirm] Click to cancel''>[Cancel]' + confirmed: 'Action confirmed.' + cancelled: 'Action cancelled.' + expired: 'No pending action found. It may have expired.' - update: - notify: 'A new version of BanManager is now available' + dashboard: + header: ' Staff Dashboard ' + activeBans: 'Active Bans: ' + activeMutes: 'Active Mutes: ' + openReports: 'Open Reports: View reports''>[View]' + recentActivity: 'Recent Activity (24h): ' + footer: ' ' + + report: + actions: + assign: '''>Assign to yourself''>[Assign]' + close: '''>Close this report''>[Close]' + tp: '''>Teleport to location''>[TP]' + feedback: + assigned: 'Your report # has been assigned to ' + closed: 'Your report # has been closed by ' diff --git a/e2e/platforms/sponge7/configs/banmanager-webenhancer/messages.yml b/e2e/platforms/sponge7/configs/banmanager-webenhancer/messages.yml index 5738200..4ea98a0 100644 --- a/e2e/platforms/sponge7/configs/banmanager-webenhancer/messages.yml +++ b/e2e/platforms/sponge7/configs/banmanager-webenhancer/messages.yml @@ -1,5 +1,5 @@ messages: pin: - notify: '&6Your pin expires in [expires]' - pin: '[pin]' - + notify: 'Your pin expires in ' + pin: '' + rateLimited: 'Please wait seconds before generating a new pin' diff --git a/e2e/platforms/sponge7/configs/banmanager/messages.yml b/e2e/platforms/sponge7/configs/banmanager/messages.yml index 459dab6..ec9a8a6 100644 --- a/e2e/platforms/sponge7/configs/banmanager/messages.yml +++ b/e2e/platforms/sponge7/configs/banmanager/messages.yml @@ -1,16 +1,22 @@ -# BanManager messages configuration for E2E testing -# Modified to include [pin] placeholder for WebEnhancer testing +# Message templates use MiniMessage formatting: https://docs.advntr.dev/minimessage/format.html +# Placeholders use angle brackets, e.g. , , , , + +tokens: + appealUrl: 'https://yourdomain.com/appeal' + serverName: 'My Server' + discordUrl: 'https://discord.gg/example' + rulesUrl: 'https://yourdomain.com/rules' messages: - duplicateIP: '&cWarning: [player] has the same IP as the following banned players:\n&6[players]' - duplicateIPAlts: '&cWarning: [player] has the same IP as the following players:\n&6[players]' - configReloaded: '&aConfiguration reloaded successfully!' + duplicateIP: 'Warning: has the same IP as the following banned players:\n' + duplicateIPAlts: 'Warning: has the same IP as the following players:\n' + configReloaded: 'Configuration reloaded successfully!' deniedNotify: - player: '&cWarning: [player] attempted to join the server but was denied due to &4[reason]' - ip: '&cWarning: [ip] attempted to join the server but was denied due to &4[reason]' - deniedMaxIp: '&cToo many players with your ip address online' - deniedMultiaccounts: '&cToo many players with your ip address logged in recently' - deniedCountry: '&cYou may not connect from your region' + player: 'Warning: attempted to join the server but was denied due to ' + ip: 'Warning: attempted to join the server but was denied due to ' + deniedMaxIp: 'Too many players with your ip address online' + deniedMultiaccounts: 'Too many players with your ip address logged in recently' + deniedCountry: 'You may not connect from your region' time: now: 'now' @@ -30,337 +36,442 @@ messages: seconds: 'seconds' never: 'never' error: - invalid: '&cYour time length is invalid' - limit: '&cYou cannot perform this action for that length of time' + invalid: 'Your time length is invalid' + limit: 'You cannot perform this action for that length of time' none: 'none' + # General command text sender: error: - notFound: '&c[player] not found, are you sure they exist?' - offline: '&c[player] is offline' - noSelf: '&cYou cannot perform that action on yourself!' - exception: '&cAn error occured whilst attempting to perform this command. Please check the console for further details.' - invalidIp: '&cInvalid IP address, expecting w.x.y.z format' - offlinePermission: '&cYou are not allowed to perform this action on an offline player' - exempt: '&c[player] is exempt from that action' - noPermission: '&cYou do not have permission to perform that action' - invalidReason: '&c[reason] is no valid reason.' - + notFound: ' not found, are you sure they exist?' + offline: ' is offline' + noSelf: 'You cannot perform that action on yourself!' + exception: 'An error occured whilst attempting to perform this command. Please check the console for further details.' + invalidIp: 'Invalid IP address, expecting w.x.y.z format' + offlinePermission: 'You are not allowed to perform this action on an offline player' + ambiguousPlayer: 'Multiple players match "". Please use their full name.' + exempt: ' is exempt from that action' + noPermission: 'You do not have permission to perform that action' + invalidReason: ' is no valid reason.' + # Commands alts: header: 'Possible alts found:' + entry: '">' + separator: ', ' + + names: + header: 'Known names for :' + row: ' (first: , last: )' + interactive: ' (first: , last: )">">' + separator: ', ' + dateTimeFormat: 'dd-MM-yyyy' + none: 'No name history found' export: error: - inProgress: '&cAn export is already in progress, please wait' + inProgress: 'An export is already in progress, please wait' player: - started: '&aPlayer ban export started' - finished: '&aPlayer ban export finished, file [file] created' + started: 'Player ban export started' + finished: 'Player ban export finished, file created' ip: - started: '&aIP ban export started' - finished: '&aIP ban export finished, file [file] created' + started: 'IP ban export started' + finished: 'IP ban export finished, file created' import: error: - inProgress: '&cAn import is already in progress, please wait' + inProgress: 'An import is already in progress, please wait' player: - started: '&aPlayer ban import started' - finished: '&aPlayer ban import finished' + started: 'Player ban import started' + finished: 'Player ban import finished' ip: - started: '&aIP ban import started' - finished: '&aIP ban import finished' + started: 'IP ban import started' + finished: 'IP ban import finished' advancedban: - started: '&aAdvancedBan import started' - finished: '&aAdvancedBan import finished' + started: 'AdvancedBan import started' + finished: 'AdvancedBan import finished' h2: - started: '&aH2 import started' - finished: '&aH2 import finished, please restart the server' + started: 'H2 import started' + finished: 'H2 import finished, please restart the server' + litebans: + started: 'LiteBans import started' + finished: 'LiteBans import finished' info: error: - invalidIndex: '&cInvalid player option used' - indexRequired: '&cMultiple players named [name] found, please select a player by providing an index between 1 and [size], e.g. /bminfo [name] 1' - index: '&7#[index] - &6[name] - &4[uuid]' + invalidIndex: 'Invalid player option used' + indexRequired: 'Multiple players named found, please select a player by providing an index between 1 and , e.g. /bminfo 1' + index: '# - - ' stats: - player: '&6[player] has been banned [bans] times, muted [mutes] times, kicked [kicks] times and warned [warns] times ([warnPoints] Points), has [notes] notes and been reported [reports] times' - ip: '&6This ip has been banned [bans] times, muted [mutes] times and range banned [rangebans] times' - connection: '&6Their last connection was with [ip] on [lastSeen]' - geoip: 'Country: [country] City: [city]' + player: ' has been banned times, muted times, kicked times and warned + times ( Points), has notes and been reported times' + ip: 'This ip has been banned times, muted times and range banned times' + connection: 'Their last connection was with on ' + geoip: 'Country: City: ' ban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: 'Currently banned for by at ' + temporary: 'Currently banned for by at which expires in ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' ipban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: 'Currently banned for by at ' + temporary: 'Currently banned for by at which expires in ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' iprangeban: - permanent: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: ' - banned for by at ' + temporary: ' - banned for by at which expires in ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' ipmute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: 'Currently muted for by at ' + temporary: 'Currently muted for by at which expires in ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' mute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which expires in [expires]' + permanent: 'Currently muted for by at ' + temporary: 'Currently muted for by at which expires in ' + temporaryOnline: 'Currently muted for by at which expires in (online time)' + temporaryOnlinePaused: 'Currently muted for by at with remaining (online time, paused)' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' website: - player: 'https://yourdomain.com/player/[uuid]' - ip: 'http://yourdomain.com/index.php?action=viewip&ip=[ip]&server=0' + player: 'https://yourdomain.com/player/' + ip: 'http://yourdomain.com/index.php?action=viewip&ip=&server=0' history: - row: '&7#[id] &a[&f[type]&a] &6[actor]&f [meta] [reason] - &e[created]' + row: '# [] - ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' - noResults: '&cNo results found' + noResults: 'No results found' ips: - row: '&e[ip] - &6[join] - [leave]' + row: ' - - ' dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' kick: player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' + noReason: 'You have been kicked' + reason: 'You have been kicked for ' notify: - noReason: '&6[player] has been kicked by [actor]' - reason: '&6[player] has been kicked by [actor] for &4[reason]' + noReason: ' has been kicked by ' + reason: ' has been kicked by for ' kickall: player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' + noReason: 'You have been kicked' + reason: 'You have been kicked for ' notify: - noReason: 'All players have been kicked by [actor]' - reason: 'All players have been kicked by [actor] for &4[reason]' + noReason: 'All players have been kicked by ' + reason: 'All players have been kicked by for ' - # Modified for WebEnhancer E2E testing - includes [pin] placeholder ban: player: - disallowed: '&6You have been banned from this server for &4[reason]&6. Your appeal pin is [pin]' - kick: '&6You have been banned permanently for &4[reason]&6. Your appeal pin is [pin]' + disallowed: 'You are banned from this server\n \nReason: \nBanned by: \nDate: \n \nAppeal at ' + kick: 'You have been banned\n \nReason: \nBanned by: ' dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been permanently banned by [actor] for &4[reason]' + notify: ' has been permanently banned by for ''>View player info''>[Info] ''>Unban player''>[Unban]' error: - exists: '&c[player] is already banned' - cooldown: '&cThis player was banned too recently, try again later' + exists: ' is already banned' + cooldown: 'This player was banned too recently, try again later' banall: - notify: '&6[player] will be permanently banned by [actor] for &4[reason]' + notify: ' will be permanently banned by for ' tempban: player: - disallowed: '&6You have been temporarily banned from this server for &4[reason] \n&6It expires in [expires]. Your appeal pin is [pin]' - kick: '&6You have been temporarily banned for &4[reason]&6. Your appeal pin is [pin]' + disallowed: 'You are temporarily banned from this server\n \nReason: \nBanned by: \nExpires: \nDate: \n \nAppeal at ' + kick: 'You have been temporarily banned\n \nReason: \nBanned by: \nExpires: ' dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' - notify: '&6[player] has been temporarily banned for [expires] by [actor] for &4[reason]' + notify: ' has been temporarily banned for by for ''>View player info''>[Info] ''>Unban player''>[Unban]' tempbanall: - notify: '&6[player] will be temporarily banned for [expires] by [actor] for &4[reason]' + notify: ' will be temporarily banned for by for ' unban: - notify: '&6[player] has been unbanned by [actor]' + notify: ' has been unbanned by ' error: - noExists: '&c[player] is not banned' - notOwn: '&c[player] was not banned by you, unable to unban' + noExists: ' is not banned' + notOwn: ' was not banned by you, unable to unban' unbanall: - notify: '&6[player] will be unbanned by [actor]' + notify: ' will be unbanned by ' mute: player: - blocked: '&cYou may not use the [command] command whilst muted!' - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[player] has been permanently muted by [actor] for &4[reason]' + blocked: 'You may not use the command whilst muted!' + disallowed: 'You have been permanently muted for by ' + broadcast: '[Muted] ' + notify: ' has been permanently muted by for ''>View player info''>[Info] ''>Unmute player''>[Unmute]' error: - exists: '&c[player] is already muted' - cooldown: '&cThis player was muted too recently, try again later' + exists: ' is already muted' + cooldown: 'This player was muted too recently, try again later' muteip: ip: - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[ip] ([players]) have been permanently muted by [actor] for &4[reason]' + disallowed: 'You have been permanently muted for by ' + broadcast: '[Muted] ' + notify: ' () have been permanently muted by for ' error: - exists: '&c[ip] is already muted' + exists: ' is already muted' muteall: - notify: '&6[player] will be permanently muted by [actor] for &4[reason]' + notify: ' will be permanently muted by for ' tempmute: player: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - notify: '&6[player] has been temporarily muted for [expires] by [actor] for &4[reason]' + disallowed: 'You have been temporarily muted for by which expires in ' + disallowedOnline: 'You have been temporarily muted for by which expires in (online time)' + notify: ' has been temporarily muted for by for ''>View player info''>[Info] ''>Unmute player''>[Unmute]' + notifyOnline: ' has been temporarily muted for (online time) by for ' error: - exists: '&c[player] is already muted' + exists: ' is already muted' tempmuteip: ip: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which expires in [expires]' - notify: '&6[ip] ([players]) have been temporarily muted for [expires] by [actor] for &4[reason]' + disallowed: 'You have been temporarily muted for by which expires in ' + notify: ' () have been temporarily muted for by for ' error: - exists: '&c[ip] is already muted' + exists: ' is already muted' tempmuteall: - notify: '&6[player] will be temporarily muted for [expires] by [actor] for &4[reason]' + notify: ' will be temporarily muted for by for ' unmute: - notify: '&6[player] has been unmuted by [actor]' + notify: ' has been unmuted by ' + player: 'You have been unmuted by ' error: - noExists: '&c[player] is not muted' - notOwn: '&c[player] was not muted by you, unable to unmute' - - unmuteall: - notify: '&6[player] will be unmuted by [actor]' + noExists: ' is not muted' + notOwn: ' was not muted by you, unable to unmute' unmuteip: - notify: '&6[ip] ([players]) have been unmuted by [actor]' + notify: ' has been unmuted by ' error: - noExists: '&c[ip] is not muted' - notOwn: '&c[ip] was not muted by you, unable to unmute' + noExists: ' is not muted' + notOwn: ' was not muted by you, unable to unmute' - warn: - player: - warned: '&cYou have been warned for &4[reason] &cby [actor]' - notify: '&6[player] has been warned by [actor] for &4[reason]' - error: - exists: '&c[player] has already been warned for that reason' - cooldown: '&cThis player was warned too recently, try again later' + unmuteall: + notify: ' will be unmuted by ' - tempwarn: - player: - warned: '&cYou have been warned for &4[reason] &cby [actor] which expires in [expires]' - notify: '&6[player] has been warned for [expires] by [actor] for &4[reason]' + banname: + name: + disallowed: 'You have been banned from this server for ' + kick: 'You have been banned permanently for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: 'Name has been permanently banned by for ' error: - exists: '&c[player] has already been warned for that reason' + exists: 'Name is already banned' - warnall: - notify: '&6[player] will be warned by [actor] for &4[reason]' + tempbanname: + name: + disallowed: 'You have been banned from this server for \nIt expires in ' + kick: 'You have been temporarily banned for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: 'Name has been temporarily banned for by for ' - addnote: - notify: '&6Note added for [player] by [actor]' + unbanname: + notify: 'Name has been unbanned by ' error: - cooldown: '&cA note was added for this player too recently, try again later' + noExists: 'Name is not banned' - notes: + banip: + ip: + disallowed: 'You have been banned from this server for ' + kick: 'You have been banned permanently for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: ' () has been permanently banned by for ' error: - noResults: '&cNo notes for [player]' - noResults.uuid: '&cNo notes for player' - header: '&6Notes for [player]' - row: '&6[created] &f[message]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + exists: ' is already banned' + cooldown: 'This ip was banned too recently, try again later' - bmactivity: + baniprange: error: - noResults: '&cNo activity found' - header: '&6Activity for [player]' - row: '&7#[id] &a[&f[type]&a] &6[player]&f [meta] [reason] - &e[created]' - dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + invalid: 'Invalid range, please use cidr notation 192.168.0.1/16 or wildcard 192.168.*.*' + minMax: 'Range must be lowest to highest' + exists: 'A ban containing those ranges already exists' + ip: + disallowed: 'You have been banned from this server for ' + kick: 'You have been banned permanently for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: ' - have been banned by ' - banip: + tempbaniprange: + notify: ' - has been temporarily banned for by ' ip: - disallowed: '&6You have been banned from this server for &4[reason]&6. Your appeal pin is [pin]' - kick: '&6You have been banned permanently for &4[reason]' - notify: '&6[ip] has been permanently banned by [actor] for &4[reason]' - error: - exists: '&c[ip] is already banned' - cooldown: '&cThis ip was banned too recently, try again later' + disallowed: 'You have been banned from this server for \nIt expires in ' + kick: 'You have been temporarily banned for by for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + + unbaniprange: + notify: ' - has been unbanned by ' + + banipall: + notify: ' will be permanently banned by for ' tempbanip: ip: - disallowed: '&6You have been temporarily banned from this server for &4[reason] \n&6It expires in [expires]. Your appeal pin is [pin]' - kick: '&6You have been temporarily banned for &4[reason]' - notify: '&6[ip] has been temporarily banned for [expires] by [actor] for &4[reason]' + disallowed: 'You have been banned from this server for \nIt expires in ' + kick: 'You have been temporarily banned for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: ' () has been temporarily banned for by for ' + + tempbanipall: + notify: ' will be temporarily banned for by for ' unbanip: - notify: '&6[ip] has been unbanned by [actor]' + notify: ' has been unbanned by ' error: - noExists: '&c[ip] is not banned' - notOwn: '&c[ip] was not banned by you, unable to unban' + noExists: ' is not banned' + notOwn: ' was not banned by you, unable to unban' - baniprange: - notify: '&6[from] - [to] has been permanently banned by [actor] for &4[reason]' + unbanipall: + notify: ' will be unbanned by ' + + warn: + player: + warned: 'You have been warned by for ' + disallowed: + header: 'You may not speak until you have accepted your most recent warning. Please type the following:' + reason: '' + removed: 'Thank you for your understanding, you may now speak again' + notify: ' has been warned by for ''>View player info''>[Info]' error: - exists: '&c[from] - [to] is already banned' - cooldown: '&cThis ip range was banned too recently, try again later' + cooldown: 'This player was warned too recently, try again later' - tempbaniprange: - notify: '&6[from] - [to] has been temporarily banned for [expires] by [actor] for &4[reason]' + tempwarn: + player: + warned: 'You have been warned for by for ' + notify: ' has been warned for by for ''>View player info''>[Info]' - unbaniprange: - notify: '&6[from] - [to] has been unbanned by [actor]' + dwarn: + player: + notify: 'Your most recent warning has been deleted by ' + notify: 'The most recent warning for has been deleted' error: - noExists: '&c[from] - [to] is not banned' - notOwn: '&c[from] - [to] was not banned by you, unable to unban' + noWarnings: ' has no warnings to delete' - banname: - disallowed: '&6You may not use the name [name] on this server' - notify: '&6[name] has been permanently banned by [actor] for &4[reason]' + bmclear: + notify: ' has had their cleared' + error: + invalid: 'Invalid type, please choose between banrecords, muterecords, kicks, notes or warnings' + + bmutils: + missingplayers: + notify: ' missing players added' + noneFound: '0 missing players found' + found: ' missing player data found. Fixing...' + error: + failedLookup: 'Failed to lookup player , check server logs' + complete: ' players resolved, please restart your server for failed punishments to take affect' + duplicates: + lookup: + notFound: 'No duplicate player names found' + error: + invalidName: 'Invalid name, must be 16 characters or less and contain only letters, numbers and an underscore' + nameExists: 'A player with that name already exists' + success: 'Player name set to successfully' + + bmrollback: + notify: ' has had their actions undone' error: - exists: '&c[name] is already banned' + invalid: 'Invalid type , please choose between [types]' - tempbanname: - notify: '&6[name] has been temporarily banned for [expires] by [actor] for &4[reason]' + sync: + player: + started: 'Starting force synchronisation' + finished: 'Forced synchronisation complete' - unbanname: - notify: '&6[name] has been unbanned by [actor]' - error: - noExists: '&c[name] is not banned' - notOwn: '&c[name] was not banned by you, unable to unban' + update: + notify: '[BanManager] An update is available' - report: + notes: + header: ' has the following notes:' + joinAmount: '"> has notes, click to view them' + note: '[] - ' + playerNote: '[] [] - ' + dateTimeFormat: 'dd-MM-yyyy' + notify: ' has a new note attached by : ' error: - notOnline: '&cPlayer must be online to report' - cooldown: '&cToo many reports, please wait a while' - notify: '&6[player] has been reported by [actor] for &4[reason]' - success: '&a[player] has been reported' - created: '&6[actor] has reported [player] for &4[reason]' + noNotes: ' has no notes' + noOnlineNotes: 'No online players have notes' - reports: + report: + notify: ' has been reported by for ' error: - noResults: '&cNo reports for [player]' - header: '&6Reports for [player]' + cooldown: 'This player was reported too recently, try again later' + assign: + player: 'Report assigned to ' + notify: 'You have been assigned report by ' + unassign: + player: 'Report unassigned' + close: + notify: + closed: 'Report closed by ' + command: 'Report closed by with ' + comment: 'Report closed by with ' + dispatch: 'Executing command ' list: - row: '&e[id] [player] &6[reason] [created] &e[actor]' + noResults: 'No reports found' + error: + invalidState: 'Report state not found' + row: + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + header: '-- Reports () -- Page (/)' + all: '">Click to view details"># [] - - ' + tp: + error: + notFound: 'Report not found' + worldNotFound: 'World could not be found' + invalidId: ' is not a valid report id' dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: + report: '# reported for at ' + location: ' - , , ' + info: + error: + notFound: 'Report not found' + invalidId: ' is not a valid report id' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: + report: '# reported for at ' + location: ' - , , ' - deleterecord: - error: - noExists: '&c[id] does not exist' - deleted: '&a[id] has been deleted' + addnoteall: + notify: ' will have a new attached by : ' - clear: - header: - all: '&6Clearing [type] for [player]' - single: '&6Clearing [type]' - error: - noResults: '&cNothing found to delete' - notifyDelete: '&6Deleted [sum] [type] for [player]' + banlist: + header: 'There are bans:' - sync: - error: - inProgress: '&cA sync is already in progress, please wait' - started: '&aSync started' - finished: '&aSync finished' + bmactivity: + row: + all: '[] - - ' + player: '[] - ' + dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' + noResults: 'No results found' - external: + bmdelete: + notify: ' rows deleted' error: - notAllowed: '&cExternally synced servers cannot perform this action' + invalid: 'Invalid type, please choose between banrecords, muterecords, kicks, notes or warnings' + invalidId: ' is not a valid number' - rollback: - error: - inProgress: '&cA rollback is already in progress, please wait' - noResults: '&cNo results found to rollback' - started: '&aRollback started' - finished: '&aRollback finished, [sum] rows affected' + denyalts: + player: + disallowed: 'The IP address you are joining from is linked to a banned player' - dwarn: - notOwn: '&c[id] was not created by you, unable to delete' - noExists: '&c[id] does not exist' - deleted: '&aWarning deleted' + reasons: + row: ' = ' - findAlts: - header: 'Possible alts found:' - noResults: 'No possible alts found' + confirmation: + prompt: 'Are you sure you want to ? Click to confirm''>[Confirm] Click to cancel''>[Cancel]' + confirmed: 'Action confirmed.' + cancelled: 'Action cancelled.' + expired: 'No pending action found. It may have expired.' - update: - notify: 'A new version of BanManager is now available' + dashboard: + header: ' Staff Dashboard ' + activeBans: 'Active Bans: ' + activeMutes: 'Active Mutes: ' + openReports: 'Open Reports: View reports''>[View]' + recentActivity: 'Recent Activity (24h): ' + footer: ' ' + + report: + actions: + assign: '''>Assign to yourself''>[Assign]' + close: '''>Close this report''>[Close]' + tp: '''>Teleport to location''>[TP]' + feedback: + assigned: 'Your report # has been assigned to ' + closed: 'Your report # has been closed by ' diff --git a/e2e/platforms/velocity/configs/banmanager-webenhancer/messages.yml b/e2e/platforms/velocity/configs/banmanager-webenhancer/messages.yml index 59fdb26..4ea98a0 100644 --- a/e2e/platforms/velocity/configs/banmanager-webenhancer/messages.yml +++ b/e2e/platforms/velocity/configs/banmanager-webenhancer/messages.yml @@ -1,4 +1,5 @@ messages: pin: - notify: '&6Your pin expires in [expires]' - pin: '[pin]' + notify: 'Your pin expires in ' + pin: '' + rateLimited: 'Please wait seconds before generating a new pin' diff --git a/e2e/platforms/velocity/configs/banmanager/messages.yml b/e2e/platforms/velocity/configs/banmanager/messages.yml index 5bacf5c..ec9a8a6 100644 --- a/e2e/platforms/velocity/configs/banmanager/messages.yml +++ b/e2e/platforms/velocity/configs/banmanager/messages.yml @@ -1,413 +1,477 @@ -# Variables -# [reason] = Ban/Mute reason -# [player] = The name of the player -# [ip] = The banned ip -# [actor] = Who banned/muted -# [expires] = How long until the ban/mute ends +# Message templates use MiniMessage formatting: https://docs.advntr.dev/minimessage/format.html +# Placeholders use angle brackets, e.g. , , , , + +tokens: + appealUrl: 'https://yourdomain.com/appeal' + serverName: 'My Server' + discordUrl: 'https://discord.gg/example' + rulesUrl: 'https://yourdomain.com/rules' messages: - duplicateIP: '&cWarning: [player] has the same IP as the following banned players:\n&6[players]' - duplicateIPAlts: '&cWarning: [player] has the same IP as the following players:\n&6[players]' - configReloaded: '&aConfiguration reloaded successfully!' + duplicateIP: 'Warning: has the same IP as the following banned players:\n' + duplicateIPAlts: 'Warning: has the same IP as the following players:\n' + configReloaded: 'Configuration reloaded successfully!' deniedNotify: - player: '&cWarning: [player] attempted to join the server but was denied due to - &4[reason]' - ip: '&cWarning: [ip] attempted to join the server but was denied due to &4[reason]' - deniedMaxIp: '&cToo many players with your ip address online' - deniedMultiaccounts: '&cToo many players with your ip address logged in recently' - deniedCountry: '&cYou may not connect from your region' + player: 'Warning: attempted to join the server but was denied due to ' + ip: 'Warning: attempted to join the server but was denied due to ' + deniedMaxIp: 'Too many players with your ip address online' + deniedMultiaccounts: 'Too many players with your ip address logged in recently' + deniedCountry: 'You may not connect from your region' + time: - now: now - year: year - years: years - month: month - months: months - week: week - weeks: weeks - day: day - days: days - hour: hour - hours: hours - minute: minute - minutes: minutes - second: second - seconds: seconds - never: never + now: 'now' + year: 'year' + years: 'years' + month: 'month' + months: 'months' + week: 'week' + weeks: 'weeks' + day: 'day' + days: 'days' + hour: 'hour' + hours: 'hours' + minute: 'minute' + minutes: 'minutes' + second: 'second' + seconds: 'seconds' + never: 'never' error: - invalid: '&cYour time length is invalid' - limit: '&cYou cannot perform this action for that length of time' - none: none + invalid: 'Your time length is invalid' + limit: 'You cannot perform this action for that length of time' + + none: 'none' + # General command text sender: error: - notFound: '&c[player] not found, are you sure they exist?' - offline: '&c[player] is offline' - noSelf: '&cYou cannot perform that action on yourself!' - exception: '&cAn error occured whilst attempting to perform this command. Please - check the console for further details.' - invalidIp: '&cInvalid IP address, expecting w.x.y.z format' - offlinePermission: '&cYou are not allowed to perform this action on an offline - player' - exempt: '&c[player] is exempt from that action' - noPermission: '&cYou do not have permission to perform that action' - invalidReason: '&c[reason] is no valid reason.' + notFound: ' not found, are you sure they exist?' + offline: ' is offline' + noSelf: 'You cannot perform that action on yourself!' + exception: 'An error occured whilst attempting to perform this command. Please check the console for further details.' + invalidIp: 'Invalid IP address, expecting w.x.y.z format' + offlinePermission: 'You are not allowed to perform this action on an offline player' + ambiguousPlayer: 'Multiple players match "". Please use their full name.' + exempt: ' is exempt from that action' + noPermission: 'You do not have permission to perform that action' + invalidReason: ' is no valid reason.' + # Commands alts: header: 'Possible alts found:' + entry: '">' + separator: ', ' + + names: + header: 'Known names for :' + row: ' (first: , last: )' + interactive: ' (first: , last: )">">' + separator: ', ' + dateTimeFormat: 'dd-MM-yyyy' + none: 'No name history found' + export: error: - inProgress: '&cAn export is already in progress, please wait' + inProgress: 'An export is already in progress, please wait' player: - started: '&aPlayer ban export started' - finished: '&aPlayer ban export finished, file [file] created' + started: 'Player ban export started' + finished: 'Player ban export finished, file created' ip: - started: '&aIP ban export started' - finished: '&aIP ban export finished, file [file] created' + started: 'IP ban export started' + finished: 'IP ban export finished, file created' + import: error: - inProgress: '&cAn import is already in progress, please wait' + inProgress: 'An import is already in progress, please wait' player: - started: '&aPlayer ban import started' - finished: '&aPlayer ban import finished' + started: 'Player ban import started' + finished: 'Player ban import finished' ip: - started: '&aIP ban import started' - finished: '&aIP ban import finished' + started: 'IP ban import started' + finished: 'IP ban import finished' advancedban: - started: '&aAdvancedBan import started' - finished: '&aAdvancedBan import finished' + started: 'AdvancedBan import started' + finished: 'AdvancedBan import finished' h2: - started: '&aH2 import started' - finished: '&aH2 import finished, please restart the server' + started: 'H2 import started' + finished: 'H2 import finished, please restart the server' + litebans: + started: 'LiteBans import started' + finished: 'LiteBans import finished' + info: error: - invalidIndex: '&cInvalid player option used' - indexRequired: '&cMultiple players named [name] found, please select a player - by providing an index between 1 and [size], e.g. /bminfo [name] 1' - index: '&7#[index] - &6[name] - &4[uuid]' + invalidIndex: 'Invalid player option used' + indexRequired: 'Multiple players named found, please select a player by providing an index between 1 and , e.g. /bminfo 1' + index: '# - - ' stats: - player: '&6[player] has been banned [bans] times, muted [mutes] times, kicked - [kicks] times and warned [warns] times ([warnPoints] Points), has [notes] - notes and been reported [reports] times' - ip: '&6This ip has been banned [bans] times, muted [mutes] times and range banned - [rangebans] times' - connection: '&6Their last connection was with [ip] on [lastSeen]' - geoip: 'Country: [country] City: [city]' + player: ' has been banned times, muted times, kicked times and warned + times ( Points), has notes and been reported times' + ip: 'This ip has been banned times, muted times and range banned times' + connection: 'Their last connection was with on ' + geoip: 'Country: City: ' ban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which - expires in [expires]' - dateTimeFormat: dd-MM-yyyy HH:mm:ss + permanent: 'Currently banned for by at ' + temporary: 'Currently banned for by at which expires in ' + dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' ipban: - permanent: '&6Currently banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently banned for &4[reason]&6 by [actor] at [created] which - expires in [expires]' - dateTimeFormat: dd-MM-yyyy HH:mm:ss + permanent: 'Currently banned for by at ' + temporary: 'Currently banned for by at which expires in ' + dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' iprangeban: - permanent: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created]' - temporary: '&6[from] - [to] banned for &4[reason]&6 by [actor] at [created] - which expires in [expires]' - dateTimeFormat: dd-MM-yyyy HH:mm:ss + permanent: ' - banned for by at ' + temporary: ' - banned for by at which expires in ' + dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' ipmute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which - expires in [expires]' - dateTimeFormat: dd-MM-yyyy HH:mm:ss + permanent: 'Currently muted for by at ' + temporary: 'Currently muted for by at which expires in ' + dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' mute: - permanent: '&6Currently muted for &4[reason]&6 by [actor] at [created]' - temporary: '&6Currently muted for &4[reason]&6 by [actor] at [created] which - expires in [expires]' - dateTimeFormat: dd-MM-yyyy HH:mm:ss + permanent: 'Currently muted for by at ' + temporary: 'Currently muted for by at which expires in ' + temporaryOnline: 'Currently muted for by at which expires in (online time)' + temporaryOnlinePaused: 'Currently muted for by at with remaining (online time, paused)' + dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' website: - player: https://yourdomain.com/player/[uuid] - ip: http://yourdomain.com/index.php?action=viewip&ip=[ip]&server=0 + player: 'https://yourdomain.com/player/' + ip: 'http://yourdomain.com/index.php?action=viewip&ip=&server=0' history: - row: '&7#[id] &a[&f[type]&a] &6[actor]&f [meta] [reason] - &e[created]' - dateTimeFormat: dd-MM-yyyy HH:mm:ss - noResults: '&cNo results found' + row: '# [] - ' + dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' + noResults: 'No results found' ips: - row: '&e[ip] - &6[join] - [leave]' - dateTimeFormat: dd-MM-yyyy HH:mm:ss + row: ' - - ' + dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' + kick: player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' + noReason: 'You have been kicked' + reason: 'You have been kicked for ' notify: - noReason: '&6[player] has been kicked by [actor]' - reason: '&6[player] has been kicked by [actor] for &4[reason]' + noReason: ' has been kicked by ' + reason: ' has been kicked by for ' + kickall: player: - noReason: '&6You have been kicked' - reason: '&6You have been kicked for &4[reason]' + noReason: 'You have been kicked' + reason: 'You have been kicked for ' notify: - noReason: All players have been kicked by [actor] - reason: All players have been kicked by [actor] for &4[reason] + noReason: 'All players have been kicked by ' + reason: 'All players have been kicked by for ' + ban: player: - disallowed: '&6You have been banned from this server for &4[reason]&6. Your - appeal pin is [pin]' - kick: '&6You have been banned permanently for &4[reason]&6. Your appeal pin is [pin]' - dateTimeFormat: yyyy-MM-dd HH:mm:ss - notify: '&6[player] has been permanently banned by [actor] for &4[reason]' + disallowed: 'You are banned from this server\n \nReason: \nBanned by: \nDate: \n \nAppeal at ' + kick: 'You have been banned\n \nReason: \nBanned by: ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: ' has been permanently banned by for ''>View player info''>[Info] ''>Unban player''>[Unban]' error: - exists: '&c[player] is already banned' - cooldown: '&cThis player was banned too recently, try again later' + exists: ' is already banned' + cooldown: 'This player was banned too recently, try again later' + banall: - notify: '&6[player] will be permanently banned by [actor] for &4[reason]' + notify: ' will be permanently banned by for ' + tempban: player: - disallowed: '&6You have been temporarily banned from this server for &4[reason] - \n&6It expires in [expires]. Your appeal pin is [pin]' - kick: '&6You have been temporarily banned for &4[reason]&6. Your appeal pin is [pin]' - dateTimeFormat: yyyy-MM-dd HH:mm:ss - notify: '&6[player] has been temporarily banned for [expires] by [actor] for &4[reason]' + disallowed: 'You are temporarily banned from this server\n \nReason: \nBanned by: \nExpires: \nDate: \n \nAppeal at ' + kick: 'You have been temporarily banned\n \nReason: \nBanned by: \nExpires: ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: ' has been temporarily banned for by for ''>View player info''>[Info] ''>Unban player''>[Unban]' + tempbanall: - notify: '&6[player] will be temporarily banned for [expires] by [actor] for &4[reason]' + notify: ' will be temporarily banned for by for ' + unban: - notify: '&6[player] has been unbanned by [actor]' + notify: ' has been unbanned by ' error: - noExists: '&c[player] is not banned' - notOwn: '&c[player] was not banned by you, unable to unban' + noExists: ' is not banned' + notOwn: ' was not banned by you, unable to unban' + unbanall: - notify: '&6[player] will be unbanned by [actor]' + notify: ' will be unbanned by ' + mute: player: - blocked: '&cYou may not use the [command] command whilst muted!' - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[player] has been permanently muted by [actor] for &4[reason]' + blocked: 'You may not use the command whilst muted!' + disallowed: 'You have been permanently muted for by ' + broadcast: '[Muted] ' + notify: ' has been permanently muted by for ''>View player info''>[Info] ''>Unmute player''>[Unmute]' error: - exists: '&c[player] is already muted' - cooldown: '&cThis player was muted too recently, try again later' + exists: ' is already muted' + cooldown: 'This player was muted too recently, try again later' + muteip: ip: - disallowed: '&6You have been permanently muted for &4[reason] &6by [actor]' - broadcast: '&4[Muted] [player]&7 [message]' - notify: '&6[ip] ([players]) have been permanently muted by [actor] for &4[reason]' + disallowed: 'You have been permanently muted for by ' + broadcast: '[Muted] ' + notify: ' () have been permanently muted by for ' error: - exists: '&c[ip] is already muted' + exists: ' is already muted' + muteall: - notify: '&6[player] will be permanently muted by [actor] for &4[reason]' + notify: ' will be permanently muted by for ' + tempmute: player: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which - expires in [expires]' - notify: '&6[player] has been temporarily muted for [expires] by [actor] for &4[reason]' + disallowed: 'You have been temporarily muted for by which expires in ' + disallowedOnline: 'You have been temporarily muted for by which expires in (online time)' + notify: ' has been temporarily muted for by for ''>View player info''>[Info] ''>Unmute player''>[Unmute]' + notifyOnline: ' has been temporarily muted for (online time) by for ' error: - exists: '&c[player] is already muted' + exists: ' is already muted' + tempmuteip: ip: - disallowed: '&6You have been temporarily muted for &4[reason] &6by [actor] which - expires in [expires]' - notify: '&6[ip] ([players]) have been temporarily muted for [expires] by [actor] - for &4[reason]' + disallowed: 'You have been temporarily muted for by which expires in ' + notify: ' () have been temporarily muted for by for ' error: - exists: '&c[ip] is already muted' + exists: ' is already muted' + tempmuteall: - notify: '&6[player] will be temporarily muted for [expires] by [actor] for &4[reason]' + notify: ' will be temporarily muted for by for ' + unmute: - notify: '&6[player] has been unmuted by [actor]' - player: '&6You have been unmuted by [actor]' + notify: ' has been unmuted by ' + player: 'You have been unmuted by ' error: - noExists: '&c[player] is not muted' - notOwn: '&c[player] was not muted by you, unable to unmute' + noExists: ' is not muted' + notOwn: ' was not muted by you, unable to unmute' + unmuteip: - notify: '&6[ip] has been unmuted by [actor]' + notify: ' has been unmuted by ' error: - noExists: '&c[ip] is not muted' - notOwn: '&c[ip] was not muted by you, unable to unmute' + noExists: ' is not muted' + notOwn: ' was not muted by you, unable to unmute' + unmuteall: - notify: '&6[player] will be unmuted by [actor]' + notify: ' will be unmuted by ' + banname: name: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: yyyy-MM-dd HH:mm:ss - notify: '&6Name [name] has been permanently banned by [actor] for &4[reason]' + disallowed: 'You have been banned from this server for ' + kick: 'You have been banned permanently for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: 'Name has been permanently banned by for ' error: - exists: '&cName [name] is already banned' + exists: 'Name is already banned' + tempbanname: name: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires - in [expires]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: yyyy-MM-dd HH:mm:ss - notify: '&6Name [name] has been temporarily banned for [expires] by [actor] for - &4[reason]' + disallowed: 'You have been banned from this server for \nIt expires in ' + kick: 'You have been temporarily banned for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: 'Name has been temporarily banned for by for ' + unbanname: - notify: '&6Name [name] has been unbanned by [actor]' + notify: 'Name has been unbanned by ' error: - noExists: '&cName [name] is not banned' + noExists: 'Name is not banned' + banip: ip: - disallowed: '&6You have been banned from this server for &4[reason]&6. Your - appeal pin is [pin]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: yyyy-MM-dd HH:mm:ss - notify: '&6[ip] has been permanently banned by [actor] for &4[reason]' + disallowed: 'You have been banned from this server for ' + kick: 'You have been banned permanently for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: ' () has been permanently banned by for ' error: - exists: '&c[ip] is already banned' - cooldown: '&cThis ip was banned too recently, try again later' + exists: ' is already banned' + cooldown: 'This ip was banned too recently, try again later' + baniprange: error: - invalid: '&cInvalid range, please use cidr notation 192.168.0.1/16 or wildcard - 192.168.*.*' - minMax: '&cRange must be lowest to highest' - exists: '&cA ban containing those ranges already exists' + invalid: 'Invalid range, please use cidr notation 192.168.0.1/16 or wildcard 192.168.*.*' + minMax: 'Range must be lowest to highest' + exists: 'A ban containing those ranges already exists' ip: - disallowed: '&6You have been banned from this server for &4[reason]' - kick: '&6You have been banned permanently for &4[reason]' - dateTimeFormat: yyyy-MM-dd HH:mm:ss - notify: '&6[from] - [to] have been banned by [actor]' + disallowed: 'You have been banned from this server for ' + kick: 'You have been banned permanently for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: ' - have been banned by ' + tempbaniprange: - notify: '&6[from] - [to] has been temporarily banned for [expires] by [actor]' + notify: ' - has been temporarily banned for by ' ip: - disallowed: '&6You have been banned from this server for &4[reason] \n&6It expires - in [expires]' - kick: '&6You have been temporarily banned for [expires] by [actor] for &4[reason]' - dateTimeFormat: yyyy-MM-dd HH:mm:ss + disallowed: 'You have been banned from this server for \nIt expires in ' + kick: 'You have been temporarily banned for by for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + unbaniprange: - notify: '&6[from] - [to] has been unbanned by [actor]' + notify: ' - has been unbanned by ' + banipall: - notify: '&6[ip] will be permanently banned by [actor] for &4[reason]' + notify: ' will be permanently banned by for ' + tempbanip: ip: - disallowed: '&6You have been temporarily banned from this server for &4[reason] - \n&6It expires in [expires]. Your appeal pin is [pin]' - kick: '&6You have been temporarily banned for &4[reason]' - dateTimeFormat: yyyy-MM-dd HH:mm:ss - notify: '&6[ip] has been temporarily banned for [expires] by [actor] for &4[reason]' + disallowed: 'You have been banned from this server for \nIt expires in ' + kick: 'You have been temporarily banned for ' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + notify: ' () has been temporarily banned for by for ' + tempbanipall: - notify: '&6[ip] will be temporarily banned for [expires] by [actor] for &4[reason]' + notify: ' will be temporarily banned for by for ' + unbanip: - notify: '&6[ip] has been unbanned by [actor]' + notify: ' has been unbanned by ' error: - noExists: '&c[ip] is not banned' - notOwn: '&c[ip] was not banned by you, unable to unban' + noExists: ' is not banned' + notOwn: ' was not banned by you, unable to unban' + unbanipall: - notify: '&6[ip] will be unbanned by [actor]' + notify: ' will be unbanned by ' + warn: player: - warned: '&cYou have been warned for &4[reason] &cby [actor]' + warned: 'You have been warned by for ' disallowed: - header: '&cYou may not speak until you have accepted your most recent warning. - Please type the following:' - reason: '&6[reason]' - removed: '&aThank you for your understanding, you may now speak again' - notify: '&6[player] has been warned by [actor] for &4[reason]' + header: 'You may not speak until you have accepted your most recent warning. Please type the following:' + reason: '' + removed: 'Thank you for your understanding, you may now speak again' + notify: ' has been warned by for ''>View player info''>[Info]' error: - cooldown: '&cThis player was warned too recently, try again later' - exists: '&c[player] has already been warned for that reason' + cooldown: 'This player was warned too recently, try again later' + tempwarn: player: - warned: '&6You have been warned for [expires] by [actor] for &4[reason]' - notify: '&6[player] has been warned for [expires] by [actor] for &4[reason]' + warned: 'You have been warned for by for ' + notify: ' has been warned for by for ''>View player info''>[Info]' + dwarn: player: - notify: '&6Your most recent warning has been deleted by &4[actor]' - notify: '&cThe most recent warning for [player] has been deleted' + notify: 'Your most recent warning has been deleted by ' + notify: 'The most recent warning for has been deleted' error: - noWarnings: '&c[player] has no warnings to delete' + noWarnings: ' has no warnings to delete' + bmclear: - notify: '&c[player] has had their [type] cleared' + notify: ' has had their cleared' error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, - notes or warnings' + invalid: 'Invalid type, please choose between banrecords, muterecords, kicks, notes or warnings' + bmutils: missingplayers: - notify: '&c[amount] missing players added' - noneFound: '&a0 missing players found' - found: '&c[amount] missing player data found. Fixing...' + notify: ' missing players added' + noneFound: '0 missing players found' + found: ' missing player data found. Fixing...' error: - failedLookup: '&cFailed to lookup player [uuid], check server logs' - complete: '&a[amount] players resolved, please restart your server for failed - punishments to take affect' + failedLookup: 'Failed to lookup player , check server logs' + complete: ' players resolved, please restart your server for failed punishments to take affect' duplicates: lookup: - notFound: '&aNo duplicate player names found' + notFound: 'No duplicate player names found' error: - invalidName: '&cInvalid name, must be 16 characters or less and contain only - letters, numbers and an underscore' - nameExists: '&cA player with that name already exists' - success: '&aPlayer name set to [player] successfully' + invalidName: 'Invalid name, must be 16 characters or less and contain only letters, numbers and an underscore' + nameExists: 'A player with that name already exists' + success: 'Player name set to successfully' + bmrollback: - notify: '&c[player] has had their [type] actions undone' + notify: ' has had their actions undone' error: - invalid: '&cInvalid type [type], please choose between [types]' + invalid: 'Invalid type , please choose between [types]' + sync: player: - started: '&aStarting force [type] synchronisation' - finished: '&aForced [type] synchronisation complete' + started: 'Starting force synchronisation' + finished: 'Forced synchronisation complete' + update: - notify: '&6[BanManager] &aAn update is available' + notify: '[BanManager] An update is available' + notes: - header: '&6[player] has the following notes:' - joinAmount: '&6[player] has &e[amount] &6notes, click to view them' - note: '&6[[player]] &e[message] - &e[created]' - playerNote: '&a[[player]] &6[[actor]] &e[message] - &e[created]' - dateTimeFormat: dd-MM-yyyy - notify: '[player] has a new note attached by [actor]: [message]' + header: ' has the following notes:' + joinAmount: '"> has notes, click to view them' + note: '[] - ' + playerNote: '[] [] - ' + dateTimeFormat: 'dd-MM-yyyy' + notify: ' has a new note attached by : ' error: - noNotes: '&c[player] has no notes' - noOnlineNotes: '&cNo online players have notes' + noNotes: ' has no notes' + noOnlineNotes: 'No online players have notes' + report: - notify: '&6[player] has been reported by [actor] for &4[reason]' + notify: ' has been reported by for ' error: - cooldown: '&cToo many reports, please wait a while' - notOnline: '&cPlayer must be online to report' + cooldown: 'This player was reported too recently, try again later' assign: - player: '&aReport [id] assigned to [player]' - notify: '&aYou have been assigned report [id] by [actor]' + player: 'Report assigned to ' + notify: 'You have been assigned report by ' unassign: - player: '&aReport [id] unassigned' + player: 'Report unassigned' close: notify: - closed: '&aReport [id] closed by [actor]' - command: '&aReport [id] closed by [actor] with [command]' - comment: '&aReport [id] closed by [actor] with [comment]' - dispatch: Executing command [command] + closed: 'Report closed by ' + command: 'Report closed by with ' + comment: 'Report closed by with ' + dispatch: 'Executing command ' list: - noResults: '&cNo reports found' + noResults: 'No reports found' error: - invalidState: '&cReport state [state] not found' + invalidState: 'Report state not found' row: - dateTimeFormat: yyyy-MM-dd HH:mm:ss - header: '&e-- Reports ([count]) -- Page ([page]/[maxPage])' - all: '&7#[id] &e[[state]] &6- [created] - [player]' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' + header: '-- Reports () -- Page (/)' + all: '">Click to view details"># [] - - ' tp: error: - notFound: '&cReport not found' - worldNotFound: '&cWorld [world] could not be found' - invalidId: '&c[id] is not a valid report id' - dateTimeFormat: yyyy-MM-dd HH:mm:ss + notFound: 'Report not found' + worldNotFound: 'World could not be found' + invalidId: ' is not a valid report id' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' + report: '# reported for at ' + location: ' - , , ' info: error: - notFound: '&cReport not found' - invalidId: '&c[id] is not a valid report id' - dateTimeFormat: yyyy-MM-dd HH:mm:ss + notFound: 'Report not found' + invalidId: ' is not a valid report id' + dateTimeFormat: 'yyyy-MM-dd HH:mm:ss' notify: - report: '&7#[id] &6[actor] reported [player] for &4[reason]&6 at [created]' - location: '[world] - [x], [y], [z]' - success: '&a[player] has been reported' - created: '&6[actor] has reported [player] for &4[reason]' + report: '# reported for at ' + location: ' - , , ' + addnoteall: - notify: '&c[player] will have a new attached by [actor]: [message]' + notify: ' will have a new attached by : ' + banlist: - header: '&6There are [bans] [type] bans:' + header: 'There are bans:' + bmactivity: row: - all: '&a[&f[type]&a] &6[player]&f - &6[actor]&f - &e[created]' - player: '&a[&f[type]&a] &6[player]&f - &e[created]' - dateTimeFormat: dd-MM-yyyy HH:mm:ss - noResults: '&cNo results found' + all: '[] - - ' + player: '[] - ' + dateTimeFormat: 'dd-MM-yyyy HH:mm:ss' + noResults: 'No results found' + bmdelete: - notify: '&a[rows] rows deleted' + notify: ' rows deleted' error: - invalid: '&cInvalid type, please choose between banrecords, muterecords, kicks, - notes or warnings' - invalidId: '&c[id] is not a valid number' + invalid: 'Invalid type, please choose between banrecords, muterecords, kicks, notes or warnings' + invalidId: ' is not a valid number' + denyalts: player: - disallowed: '&cThe IP address you are joining from is linked to a banned player' + disallowed: 'The IP address you are joining from is linked to a banned player' + reasons: - row: '[hashtag] = [reason]' + row: ' = ' + + confirmation: + prompt: 'Are you sure you want to ? Click to confirm''>[Confirm] Click to cancel''>[Cancel]' + confirmed: 'Action confirmed.' + cancelled: 'Action cancelled.' + expired: 'No pending action found. It may have expired.' + + dashboard: + header: ' Staff Dashboard ' + activeBans: 'Active Bans: ' + activeMutes: 'Active Mutes: ' + openReports: 'Open Reports: View reports''>[View]' + recentActivity: 'Recent Activity (24h): ' + footer: ' ' + + report: + actions: + assign: '''>Assign to yourself''>[Assign]' + close: '''>Close this report''>[Close]' + tp: '''>Teleport to location''>[TP]' + feedback: + assigned: 'Your report # has been assigned to ' + closed: 'Your report # has been closed by ' diff --git a/fabric/build.gradle.kts b/fabric/build.gradle.kts index d59e518..c559681 100644 --- a/fabric/build.gradle.kts +++ b/fabric/build.gradle.kts @@ -79,7 +79,7 @@ dependencies { // 1.21.11 runtime support exists in BanManager, but public artifacts may lag behind; // compile against 1.21.4 API-compatible classes until 1.21.11 artifacts are published. val banManagerCompileMcVersion = if (minecraftVersion == "1.21.11") "1.21.4" else minecraftVersion - modCompileOnly("me.confuser.banmanager:BanManagerFabric-mc$banManagerCompileMcVersion:7.11.0-SNAPSHOT") + modCompileOnly("me.confuser.banmanager:BanManagerFabric-mc$banManagerCompileMcVersion:8.0.0-SNAPSHOT") } tasks.named("processResources") { diff --git a/sponge-api7/build.gradle.kts b/sponge-api7/build.gradle.kts index f8f7116..2da3afa 100644 --- a/sponge-api7/build.gradle.kts +++ b/sponge-api7/build.gradle.kts @@ -69,7 +69,7 @@ configurations { dependencies { compileOnly("org.spongepowered:spongeapi:7.2.0") - compileOnly("me.confuser.banmanager:BanManagerSponge7:7.11.0-SNAPSHOT") + compileOnly("me.confuser.banmanager:BanManagerSponge7:8.0.0-SNAPSHOT") compileOnly("org.apache.logging.log4j:log4j-core:2.17.0") api(project(":BanManagerWebEnhancerCommon")) { @@ -79,7 +79,7 @@ dependencies { "shadeOnly"("org.bstats:bstats-sponge:2.2.1") } -val javaTarget = 8 // Sponge targets a minimum of Java 8 +val javaTarget = 17 java { sourceCompatibility = JavaVersion.toVersion(javaTarget) targetCompatibility = JavaVersion.toVersion(javaTarget) diff --git a/sponge/build.gradle.kts b/sponge/build.gradle.kts index 60a445d..7d979d4 100644 --- a/sponge/build.gradle.kts +++ b/sponge/build.gradle.kts @@ -36,7 +36,7 @@ sponge { dependency("banmanager") { loadOrder(org.spongepowered.plugin.metadata.model.PluginDependency.LoadOrder.AFTER) optional(false) - version("7.11.0-SNAPSHOT") + version("8.0.0-SNAPSHOT") } } } @@ -54,7 +54,7 @@ configurations { dependencies { compileOnly("org.spongepowered:spongeapi:11.0.0") - compileOnly("me.confuser.banmanager:BanManagerSponge:7.11.0-SNAPSHOT") + compileOnly("me.confuser.banmanager:BanManagerSponge:8.0.0-SNAPSHOT") api(project(":BanManagerWebEnhancerCommon")) { isTransitive = true diff --git a/velocity/build.gradle.kts b/velocity/build.gradle.kts index 9b9e6de..3cf12b7 100644 --- a/velocity/build.gradle.kts +++ b/velocity/build.gradle.kts @@ -36,7 +36,7 @@ dependencies { api(project(":BanManagerWebEnhancerCommon")) { isTransitive = true } - compileOnly("me.confuser.banmanager:BanManagerVelocity:7.11.0-SNAPSHOT") + compileOnly("me.confuser.banmanager:BanManagerVelocity:8.0.0-SNAPSHOT") compileOnly("com.velocitypowered:velocity-api:3.1.0") annotationProcessor("com.velocitypowered:velocity-api:3.1.0")