From e1efbcbbd9c82975a84232b02f225b7da69fea6e Mon Sep 17 00:00:00 2001 From: "timothe.rosaz" Date: Wed, 30 Apr 2025 23:08:44 +0200 Subject: [PATCH 1/5] Added a 'description-regex' property, to configure the allowed characters for a claim description. --- build.gradle.kts | 2 +- .../fr/xyness/SCS/Commands/ClaimCommand.java | 2 +- .../fr/xyness/SCS/Config/ClaimSettings.java | 37 ++++++++++++++++++- .../java/fr/xyness/SCS/SimpleClaimSystem.java | 9 +++-- src/main/resources/config.yml | 4 ++ 5 files changed, 48 insertions(+), 6 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index b52df7b..210dce0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,7 +7,7 @@ plugins { } group = "fr.xyness" -version = "1.11.6.1" +version = "1.11.7.0" java { toolchain { diff --git a/src/main/java/fr/xyness/SCS/Commands/ClaimCommand.java b/src/main/java/fr/xyness/SCS/Commands/ClaimCommand.java index 830cc07..75f72d1 100644 --- a/src/main/java/fr/xyness/SCS/Commands/ClaimCommand.java +++ b/src/main/java/fr/xyness/SCS/Commands/ClaimCommand.java @@ -229,7 +229,7 @@ private void handleDesc(Player player, String playerName, String[] args) { player.sendMessage(instance.getLanguage().getMessage("claim-description-too-long")); return; } - if (!description.matches("^[a-zA-Z0-9\\s]+$")) { + if (!instance.getSettings().getDescriptionPattern().matcher(description).find()) { player.sendMessage(instance.getLanguage().getMessage("incorrect-characters-description")); return; } diff --git a/src/main/java/fr/xyness/SCS/Config/ClaimSettings.java b/src/main/java/fr/xyness/SCS/Config/ClaimSettings.java index a677534..6d3d554 100644 --- a/src/main/java/fr/xyness/SCS/Config/ClaimSettings.java +++ b/src/main/java/fr/xyness/SCS/Config/ClaimSettings.java @@ -2,14 +2,16 @@ import java.util.ArrayList; import java.util.HashMap; -import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; +import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; import java.util.stream.Collectors; +import fr.xyness.SCS.SimpleClaimSystem; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.EntityType; @@ -21,6 +23,10 @@ */ public class ClaimSettings { + private final SimpleClaimSystem instance; + public ClaimSettings(SimpleClaimSystem instance) { + this.instance = instance; + } // *************** // * Variables * @@ -81,6 +87,12 @@ public class ClaimSettings { /** Location of the expulsion */ private Location expulsionLocation; + /** Regex for the description. */ + private Pattern descriptionRegex; + + /** Default description pattern. Used if the user regex is not valid. */ + private static final Pattern DEFAULT_DESCRIPTION_PATTERN = Pattern.compile("^[a-zA-Z0-9\\s]+$"); + // ******************** // * Others Methods * @@ -104,6 +116,7 @@ public void clearAll() { groupsSettings.clear(); worlds.clear(); aliases.clear(); + descriptionRegex = null; } /** @@ -547,4 +560,26 @@ public void setPlaceBlocksIgnore(List mat) { public Map getStatusSettings() { return enabledSettings; } + + /** + * Get the pattern for the default description. + * @return a non-null instance of a pattern. If the provided one is not valid, will use a default, safe one. + */ + public Pattern getDescriptionPattern() { + if(descriptionRegex == null) { + String regex = getSetting("description-regex"); + if(regex.isEmpty()) { + instance.info("[ERROR] The claim-description regex is not set. Set the 'description-regex' property."); + return DEFAULT_DESCRIPTION_PATTERN; + } + + try { + descriptionRegex = Pattern.compile(regex); + } catch(PatternSyntaxException e) { + instance.info("[ERROR] The claim-description regex (\""+regex+"\") is not valid: " + e.getDescription()); + return DEFAULT_DESCRIPTION_PATTERN; + } + } + return descriptionRegex; + } } diff --git a/src/main/java/fr/xyness/SCS/SimpleClaimSystem.java b/src/main/java/fr/xyness/SCS/SimpleClaimSystem.java index b9b3c1a..0316315 100644 --- a/src/main/java/fr/xyness/SCS/SimpleClaimSystem.java +++ b/src/main/java/fr/xyness/SCS/SimpleClaimSystem.java @@ -244,7 +244,7 @@ public boolean loadConfig(boolean reload, CommandSender sender) { } else { claimInstance = new ClaimMain(this); claimGuisInstance = new ClaimGuis(this); - claimSettingsInstance = new ClaimSettings(); + claimSettingsInstance = new ClaimSettings(this); cPlayerMainInstance = new CPlayerMain(this); claimLanguageInstance = new ClaimLanguage(this); claimBossBarInstance = new ClaimBossBar(this); @@ -774,6 +774,9 @@ public boolean loadConfig(boolean reload, CommandSender sender) { // Check if claims where Visitors is false are displayed in the /claims GUI claimSettingsInstance.addSetting("claims-visitors-off-visible", getConfig().getString("claims-visitors-off-visible")); + + // Description regex + claimSettingsInstance.addSetting("description-regex", getConfig().getString("description-regex")); // Check claim fly disabled or not for Folia if(isFolia) { @@ -1723,7 +1726,7 @@ public void executeAsyncLater(Runnable gTask, long delay) { if (isFolia) { Bukkit.getAsyncScheduler().runDelayed(this, task -> gTask.run(), delay, TimeUnit.MILLISECONDS); } else { - Bukkit.getScheduler().runTaskLaterAsynchronously(this, gTask, (delay/1000)*20); + Bukkit.getScheduler().runTaskLaterAsynchronously(this, gTask, (delay/1000)*20); } } @@ -1798,7 +1801,7 @@ public void checkPaper() { /** * Reloads the language file. - * + * * @param plugin The plugin instance * @param sender The command sender * @param lang The language file to reload diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 5637181..4114def 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -152,6 +152,10 @@ bossbar-settings: color: YELLOW style: SOLID +# A regular expression to control the allowed description of a claim. +# The default value is '^[a-zA-Z0-9\s]+$' and only allows for alphanumerical strings, with spaces. +description-regex: '^[a-zA-Z0-9\s]+$' + # If delay > 0, can the player move # true = can move, false = cannot move teleportation-delay-moving: false From 8f0c905c511de78443967d7e6124d529d954fa69 Mon Sep 17 00:00:00 2001 From: "timothe.rosaz" Date: Wed, 30 Apr 2025 23:19:20 +0200 Subject: [PATCH 2/5] The displayed value of the description will apply colours. --- src/main/java/fr/xyness/SCS/Guis/ClaimListGui.java | 3 ++- src/main/java/fr/xyness/SCS/Guis/ClaimMainGui.java | 5 +++-- src/main/java/fr/xyness/SCS/Guis/ClaimsOwnerGui.java | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/fr/xyness/SCS/Guis/ClaimListGui.java b/src/main/java/fr/xyness/SCS/Guis/ClaimListGui.java index af1a988..e9aabc2 100644 --- a/src/main/java/fr/xyness/SCS/Guis/ClaimListGui.java +++ b/src/main/java/fr/xyness/SCS/Guis/ClaimListGui.java @@ -10,6 +10,7 @@ import java.util.concurrent.CompletableFuture; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; @@ -250,7 +251,7 @@ public List processLore(List lore, Claim claim) { for (String s : lore) { s = s.replace("%owner%", owner) - .replace("%description%", description) + .replace("%description%", ChatColor.translateAlternateColorCodes('&', description)) .replace("%name%", name) .replace("%coords%", coords); diff --git a/src/main/java/fr/xyness/SCS/Guis/ClaimMainGui.java b/src/main/java/fr/xyness/SCS/Guis/ClaimMainGui.java index e1e00cc..62a4d1b 100644 --- a/src/main/java/fr/xyness/SCS/Guis/ClaimMainGui.java +++ b/src/main/java/fr/xyness/SCS/Guis/ClaimMainGui.java @@ -5,6 +5,7 @@ import java.util.concurrent.CompletableFuture; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; @@ -107,7 +108,7 @@ public CompletableFuture loadItems(Claim claim) { String title = slot.getTitle(); String lore_string = slot.getLore(); if(key.equals("Info")) { - title = title.replace("%description%", claim.getDescription()) + title = title.replace("%description%", ChatColor.translateAlternateColorCodes('&', claim.getDescription())) .replace("%claim-name%", claim.getName()) .replace("%sale-status%", claim.getSale() ? (instance.getLanguage().getMessage("claim-info-lore-sale-status-true") .replace("%price%", instance.getMain().getNumberSeparate(String.valueOf(claim.getPrice()))) @@ -115,7 +116,7 @@ public CompletableFuture loadItems(Claim claim) { .replace("%chunks-count%", instance.getMain().getNumberSeparate(String.valueOf(claim.getChunks().size()))) .replace("%members-count%", instance.getMain().getNumberSeparate(String.valueOf(claim.getMembers().size()))) .replace("%bans-count%", instance.getMain().getNumberSeparate(String.valueOf(claim.getBans().size()))); - lore_string = lore_string.replace("%description%", claim.getDescription()) + lore_string = lore_string.replace("%description%", ChatColor.translateAlternateColorCodes('&', claim.getDescription())) .replace("%claim-name%", claim.getName()) .replace("%sale-status%", claim.getSale() ? (instance.getLanguage().getMessage("claim-info-lore-sale-status-true") .replace("%price%", instance.getMain().getNumberSeparate(String.valueOf(claim.getPrice()))) diff --git a/src/main/java/fr/xyness/SCS/Guis/ClaimsOwnerGui.java b/src/main/java/fr/xyness/SCS/Guis/ClaimsOwnerGui.java index c249f6e..9e2e3c1 100644 --- a/src/main/java/fr/xyness/SCS/Guis/ClaimsOwnerGui.java +++ b/src/main/java/fr/xyness/SCS/Guis/ClaimsOwnerGui.java @@ -223,7 +223,7 @@ private Set getClaims(String filter, String owner) { private List prepareLore(List template, Claim claim, Player player) { List lore = new ArrayList<>(); for (String line : template) { - line = line.replace("%description%", claim.getDescription()) + line = line.replace("%description%", ChatColor.translateAlternateColorCodes('&', claim.getDescription())) .replace("%name%", claim.getName()) .replace("%coords%", instance.getMain().getClaimCoords(claim)); if (line.contains("%members%")) { From 26e3230bdb8d7f0bfbe432d1fb4f1ca3df0729be Mon Sep 17 00:00:00 2001 From: "timothe.rosaz" Date: Wed, 30 Apr 2025 23:44:18 +0200 Subject: [PATCH 3/5] Also added description configuration for protected areas. --- .../fr/xyness/SCS/Commands/ClaimCommand.java | 2 +- .../SCS/Commands/ProtectedAreaCommand.java | 8 +-- .../fr/xyness/SCS/Config/ClaimSettings.java | 53 ++++++++++++------- .../AdminGestionClaimsProtectedAreasGui.java | 2 +- .../java/fr/xyness/SCS/SimpleClaimSystem.java | 3 +- src/main/resources/config.yml | 7 ++- 6 files changed, 47 insertions(+), 28 deletions(-) diff --git a/src/main/java/fr/xyness/SCS/Commands/ClaimCommand.java b/src/main/java/fr/xyness/SCS/Commands/ClaimCommand.java index 75f72d1..608289f 100644 --- a/src/main/java/fr/xyness/SCS/Commands/ClaimCommand.java +++ b/src/main/java/fr/xyness/SCS/Commands/ClaimCommand.java @@ -229,7 +229,7 @@ private void handleDesc(Player player, String playerName, String[] args) { player.sendMessage(instance.getLanguage().getMessage("claim-description-too-long")); return; } - if (!instance.getSettings().getDescriptionPattern().matcher(description).find()) { + if (!instance.getSettings().getDescriptionPatternClaims().matcher(description).find()) { player.sendMessage(instance.getLanguage().getMessage("incorrect-characters-description")); return; } diff --git a/src/main/java/fr/xyness/SCS/Commands/ProtectedAreaCommand.java b/src/main/java/fr/xyness/SCS/Commands/ProtectedAreaCommand.java index 6fd157a..2d2f7f0 100644 --- a/src/main/java/fr/xyness/SCS/Commands/ProtectedAreaCommand.java +++ b/src/main/java/fr/xyness/SCS/Commands/ProtectedAreaCommand.java @@ -168,10 +168,10 @@ private void handleDesc(Player player, String[] args) { player.sendMessage(instance.getLanguage().getMessage("claim-description-too-long")); return; } - if (!description.matches("^[a-zA-Z0-9]+$")) { - player.sendMessage(instance.getLanguage().getMessage("incorrect-characters-description")); - return; - } + if (!instance.getSettings().getDescriptionPatternProtected().matcher(description).find()) { + player.sendMessage(instance.getLanguage().getMessage("incorrect-characters-description")); + return; + } Claim claim = instance.getMain().getProtectedAreaByName(args[1]); instance.getMain().setClaimDescription(claim, description) .thenAccept(success -> { diff --git a/src/main/java/fr/xyness/SCS/Config/ClaimSettings.java b/src/main/java/fr/xyness/SCS/Config/ClaimSettings.java index 6d3d554..05fa755 100644 --- a/src/main/java/fr/xyness/SCS/Config/ClaimSettings.java +++ b/src/main/java/fr/xyness/SCS/Config/ClaimSettings.java @@ -12,6 +12,7 @@ import java.util.stream.Collectors; import fr.xyness.SCS.SimpleClaimSystem; +import net.md_5.bungee.api.ChatColor; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.EntityType; @@ -87,8 +88,11 @@ public ClaimSettings(SimpleClaimSystem instance) { /** Location of the expulsion */ private Location expulsionLocation; - /** Regex for the description. */ - private Pattern descriptionRegex; + /** Regex for the description of player claims. */ + private Pattern descriptionRegexClaims; + + /** Same, but for the protected areas. */ + private Pattern descriptionRegexProtected; /** Default description pattern. Used if the user regex is not valid. */ private static final Pattern DEFAULT_DESCRIPTION_PATTERN = Pattern.compile("^[a-zA-Z0-9\\s]+$"); @@ -116,7 +120,8 @@ public void clearAll() { groupsSettings.clear(); worlds.clear(); aliases.clear(); - descriptionRegex = null; + descriptionRegexClaims = null; + descriptionRegexProtected = null; } /** @@ -562,24 +567,34 @@ public Map getStatusSettings() { } /** - * Get the pattern for the default description. + * Get the pattern for the description of claims. + * @return a non-null instance of a pattern. If the provided one is not valid, will use a default, safe one. + */ + public Pattern getDescriptionPatternClaims() { + if(descriptionRegexClaims == null) { + descriptionRegexClaims = computeOrDefault("description-regex.claims"); + } + return descriptionRegexClaims; + } + + /** + * Get the pattern for the description of protected-areas. * @return a non-null instance of a pattern. If the provided one is not valid, will use a default, safe one. */ - public Pattern getDescriptionPattern() { - if(descriptionRegex == null) { - String regex = getSetting("description-regex"); - if(regex.isEmpty()) { - instance.info("[ERROR] The claim-description regex is not set. Set the 'description-regex' property."); - return DEFAULT_DESCRIPTION_PATTERN; - } - - try { - descriptionRegex = Pattern.compile(regex); - } catch(PatternSyntaxException e) { - instance.info("[ERROR] The claim-description regex (\""+regex+"\") is not valid: " + e.getDescription()); - return DEFAULT_DESCRIPTION_PATTERN; - } + public Pattern getDescriptionPatternProtected() { + if(descriptionRegexProtected == null) { + descriptionRegexProtected = computeOrDefault("description-regex.protected-areas"); + } + return descriptionRegexProtected; + } + + private Pattern computeOrDefault(String key) { + String regex = getSetting(key); + try { + return Pattern.compile(regex); + } catch(PatternSyntaxException e) { + instance.info(ChatColor.RED + "[ERROR] The property "+key+" (\""+regex+"\") is not valid: " + e.getMessage()); + return DEFAULT_DESCRIPTION_PATTERN; } - return descriptionRegex; } } diff --git a/src/main/java/fr/xyness/SCS/Guis/AdminGestion/AdminGestionClaimsProtectedAreasGui.java b/src/main/java/fr/xyness/SCS/Guis/AdminGestion/AdminGestionClaimsProtectedAreasGui.java index 81bc1ca..74d5971 100644 --- a/src/main/java/fr/xyness/SCS/Guis/AdminGestion/AdminGestionClaimsProtectedAreasGui.java +++ b/src/main/java/fr/xyness/SCS/Guis/AdminGestion/AdminGestionClaimsProtectedAreasGui.java @@ -232,7 +232,7 @@ private List prepareLore(List template, Claim claim, Player play * @return The created ItemStack. */ private ItemStack createClaimItem(Claim claim, Player player, List lore) { - String displayName = "§6"+claim.getName()+" §7("+claim.getDescription()+")"; + String displayName = "§6"+claim.getName()+" §7("+ChatColor.translateAlternateColorCodes('&', claim.getDescription())+"§7)"; return createPlayerHeadItem(claim, displayName, lore); } diff --git a/src/main/java/fr/xyness/SCS/SimpleClaimSystem.java b/src/main/java/fr/xyness/SCS/SimpleClaimSystem.java index 0316315..479a386 100644 --- a/src/main/java/fr/xyness/SCS/SimpleClaimSystem.java +++ b/src/main/java/fr/xyness/SCS/SimpleClaimSystem.java @@ -776,7 +776,8 @@ public boolean loadConfig(boolean reload, CommandSender sender) { claimSettingsInstance.addSetting("claims-visitors-off-visible", getConfig().getString("claims-visitors-off-visible")); // Description regex - claimSettingsInstance.addSetting("description-regex", getConfig().getString("description-regex")); + claimSettingsInstance.addSetting("description-regex.claims", getConfig().getString("description-regex.claims")); + claimSettingsInstance.addSetting("description-regex.protected-areas", getConfig().getString("description-regex.protected-areas")); // Check claim fly disabled or not for Folia if(isFolia) { diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 4114def..22a7ab8 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -153,8 +153,11 @@ bossbar-settings: style: SOLID # A regular expression to control the allowed description of a claim. -# The default value is '^[a-zA-Z0-9\s]+$' and only allows for alphanumerical strings, with spaces. -description-regex: '^[a-zA-Z0-9\s]+$' +# The default value for the player-claims is '^[a-zA-Z0-9\s]+$' and only allows for alphanumerical strings, with spaces. +# The default value for the protected areas is the same, but will also include the color symbols. +description-regex: + claims: '^[a-zA-Z0-9\s]+$' + protected-areas: '^[a-zA-Z0-9&#\s]+$' # If delay > 0, can the player move # true = can move, false = cannot move From 0c9f6cd19ff5d59cca9f1e8156265372fe0a9ed1 Mon Sep 17 00:00:00 2001 From: "timothe.rosaz" Date: Wed, 30 Apr 2025 23:49:55 +0200 Subject: [PATCH 4/5] Internationalization for description error. --- langs/en_US.yml | 2 +- langs/fr_FR.yml | 2 +- langs/pt_BR.yml | 2 +- langs/vi_VN.yml | 3 +-- langs/zh_CN.yml | 2 +- src/main/resources/langs/en_US.yml | 2 +- 6 files changed, 6 insertions(+), 7 deletions(-) diff --git a/langs/en_US.yml b/langs/en_US.yml index 0e51cf9..2996b52 100644 --- a/langs/en_US.yml +++ b/langs/en_US.yml @@ -140,7 +140,7 @@ world-list-changeda-via-command: "§fWorld §e%name%§f removed from §edisabled cant-add-member-anymore: "§cYou have reached the maximum number of members per claim." you-cannot-use-this-name: "§cYou cannot use 'claim-' in your new claim name." incorrect-characters-name: "§cYou must use a name with only letters and numbers." -incorrect-characters-description: "§cYou must use a description with only letters and numbers." +incorrect-characters-description: "§cThe provided description contains illegal characters." claim-not-an-admin-claim: "§cThis claim is not a protected area." not-using-database: "§cThe database is disabled in config.yml." member-limit-must-be-positive: "§cThe member limit must be positive." diff --git a/langs/fr_FR.yml b/langs/fr_FR.yml index b40e2de..0699b80 100644 --- a/langs/fr_FR.yml +++ b/langs/fr_FR.yml @@ -119,7 +119,7 @@ world-list-changeda-via-command: "§fMonde §e%name%§f retiré des §emondes d cant-add-member-anymore: "§cVous avez atteint le nombre maximum de membres par claim." you-cannot-use-this-name: "§cVous ne pouvez pas utiliser 'claim-' dans votre nouveau nom de claim." incorrect-characters-name: "§cVous devez utiliser un nom avec seulement des lettres et des chiffres." -incorrect-characters-description: "§cVous devez utiliser une description avec seulement des lettres et des chiffres." +incorrect-characters-description: "§cLa description fournie contient des caractères illégaux." claim-not-an-admin-claim: "§cCe claim n'est pas une zone protégée." not-using-database: "§cLa base de données est désactivée dans config.yml." member-limit-must-be-positive: "§cLa limite de membres doit être positive." diff --git a/langs/pt_BR.yml b/langs/pt_BR.yml index db455d7..c8ff5c7 100644 --- a/langs/pt_BR.yml +++ b/langs/pt_BR.yml @@ -138,7 +138,7 @@ world-list-changeda-via-command: "§fMundo §e%name%§f removido dos §emundos d cant-add-member-anymore: "§cVocê atingiu o número máximo de membros por claim." you-cannot-use-this-name: "§cVocê não pode usar 'claim-' no seu novo nome de claim." incorrect-characters-name: "§cVocê deve usar um nome com apenas letras e números." -incorrect-characters-description: "§cVocê deve usar uma descrição com apenas letras e números." +incorrect-characters-description: "§cA descrição fornecida contém caracteres ilegais." claim-not-an-admin-claim: "§cEste claim não é uma área protegida." not-using-database: "§cO banco de dados está desativado no config.yml." member-limit-must-be-positive: "§cO limite de membros deve ser positivo." diff --git a/langs/vi_VN.yml b/langs/vi_VN.yml index 4427ae4..c785236 100644 --- a/langs/vi_VN.yml +++ b/langs/vi_VN.yml @@ -139,8 +139,7 @@ cant-add-member-anymore: §cBạn đã đạt được số lượng thành viê you-cannot-use-this-name: §cBạn không thể chiếm đóng mới trong khi khu vực đang chiếm đóng. incorrect-characters-name: §cBạn phải sử dụng tên chỉ với các chữ cái và số. -incorrect-characters-description: §cBạn phải sử dụng một mô tả chỉ với các chữ cái - và số. +incorrect-characters-description: §cMô tả được cung cấp có chứa ký tự không hợp lệ. claim-not-an-admin-claim: §cKhu vực này không phải là một khu vực được bảo vệ. not-using-database: §cCơ sở dữ liệu bị vô hiệu hóa config.yml. member-limit-must-be-positive: §cGiới hạn thành viên phải tích cực. diff --git a/langs/zh_CN.yml b/langs/zh_CN.yml index b11b2a5..5df776c 100644 --- a/langs/zh_CN.yml +++ b/langs/zh_CN.yml @@ -140,7 +140,7 @@ world-list-changeda-via-command: "§f世界 §e%name%§f 已从§e 禁用世界 cant-add-member-anymore: "§c您已达到每个领地的最大成员数量。" you-cannot-use-this-name: "§c您不能在新的领地名称中使用 'claim-'。" incorrect-characters-name: "§c您必须使用仅包含字母和数字的名称。" -incorrect-characters-description: "§c您必须使用仅包含字母和数字的描述。" +incorrect-characters-description: "§c提供的描述包含非法字符。" claim-not-an-admin-claim: "§c此领地不是受保护区域。" not-using-database: "§c在 config.yml 中禁用了数据库。" member-limit-must-be-positive: "§c成员限制必须为正数。" diff --git a/src/main/resources/langs/en_US.yml b/src/main/resources/langs/en_US.yml index e315310..4e0aba2 100644 --- a/src/main/resources/langs/en_US.yml +++ b/src/main/resources/langs/en_US.yml @@ -138,7 +138,7 @@ world-list-changeda-via-command: "§fWorld §e%name%§f removed from §edisabled cant-add-member-anymore: "§cYou have reached the maximum number of members per claim." you-cannot-use-this-name: "§cYou cannot use 'claim-' in your new claim name." incorrect-characters-name: "§cYou must use a name with only letters and numbers." -incorrect-characters-description: "§cYou must use a description with only letters and numbers." +incorrect-characters-description: "§cThe provided description contains illegal characters." claim-not-an-admin-claim: "§cThis claim is not a protected area." not-using-database: "§cThe database is disabled in config.yml." member-limit-must-be-positive: "§cThe member limit must be positive." From 9364275e1594e7394fbc4a6f25ed09c79e013dc5 Mon Sep 17 00:00:00 2001 From: "timothe.rosaz" Date: Wed, 30 Apr 2025 23:56:26 +0200 Subject: [PATCH 5/5] Use the same tabulation as the original code in pa-command --- .../java/fr/xyness/SCS/Commands/ProtectedAreaCommand.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/fr/xyness/SCS/Commands/ProtectedAreaCommand.java b/src/main/java/fr/xyness/SCS/Commands/ProtectedAreaCommand.java index 2d2f7f0..9e4768a 100644 --- a/src/main/java/fr/xyness/SCS/Commands/ProtectedAreaCommand.java +++ b/src/main/java/fr/xyness/SCS/Commands/ProtectedAreaCommand.java @@ -168,10 +168,10 @@ private void handleDesc(Player player, String[] args) { player.sendMessage(instance.getLanguage().getMessage("claim-description-too-long")); return; } - if (!instance.getSettings().getDescriptionPatternProtected().matcher(description).find()) { - player.sendMessage(instance.getLanguage().getMessage("incorrect-characters-description")); - return; - } + if (!instance.getSettings().getDescriptionPatternProtected().matcher(description).find()) { + player.sendMessage(instance.getLanguage().getMessage("incorrect-characters-description")); + return; + } Claim claim = instance.getMain().getProtectedAreaByName(args[1]); instance.getMain().setClaimDescription(claim, description) .thenAccept(success -> {