diff --git a/README.md b/README.md index 01c31c3..951e739 100644 --- a/README.md +++ b/README.md @@ -25,10 +25,10 @@ permanently by another cause) when they expire. /ps create - Creates a new permission sign. The name is used to describe what the permission sign does, and is displayed on the sign. The description is used to describe what -the permission sign does, but without any limit on the length (use "\_" between words, like: This\_is\_a\_sentence). The -permission,permission is the list of comma-separated permissions the permission sign will grant to the using player. The -cost is the cost to use the permission sign. The duration is the number of seconds the player should keep the permission -for. Use 0 for permanent. +the permission sign does, but without any limit on the length (use "_" between words, like: This_is_a_sentence). To use +actual underscores, escape them like "\_". The permission,permission is the list of comma-separated permissions the +permission sign will grant to the using player. The cost is the cost to use the permission sign. The duration is the +number of seconds the player should keep the permission for. Use 0 for permanent. #### The create command permission list diff --git a/src/main/java/net/knarcraft/permissionsigns/command/CreateCommand.java b/src/main/java/net/knarcraft/permissionsigns/command/CreateCommand.java index 88a087a..60b7710 100644 --- a/src/main/java/net/knarcraft/permissionsigns/command/CreateCommand.java +++ b/src/main/java/net/knarcraft/permissionsigns/command/CreateCommand.java @@ -57,7 +57,7 @@ public class CreateCommand implements CommandExecutor { */ private PermissionSign parseSign(@NotNull CommandSender sender, @NotNull String[] args) { String name = args[0]; - String description = args[1].replaceAll("\\\\_", " "); + String description = replaceUnderscoresWithSpaces(args[1]); String[] permissions = args[2].replaceAll("\\?", " ").split(","); for (String permission : permissions) { if (permission.contains(":")) { @@ -93,4 +93,20 @@ public class CreateCommand implements CommandExecutor { return new PermissionSign(name, description, List.of(permissions), duration, cost); } + /** + * Replaces underscores with spaces in the given description + * + *

This basically replaces all underscores with spaces, but keeps escaped underscores (\_) as underscores.

+ * + * @param description

The description to replace underscores in

+ * @return

The string with underscores replaced

+ */ + private String replaceUnderscoresWithSpaces(String description) { + String temporaryString = "\\|ESCAPED-UNDERSCORE\\|"; + description = description.replaceAll("\\\\_", temporaryString); + description = description.replaceAll("_", " "); + description = description.replaceAll(temporaryString, "_"); + return description; + } + }