diff --git a/bukkit/src/main/resources/luckperms.commodore b/bukkit/src/main/resources/luckperms.commodore index c41c48862..3f4fed2bc 100644 --- a/bukkit/src/main/resources/luckperms.commodore +++ b/bukkit/src/main/resources/luckperms.commodore @@ -64,7 +64,11 @@ luckperms { install; } creategroup { - name brigadier:string single_word; + name brigadier:string single_word { + weight brigadier:integer { + displayname brigadier:string quotable_phrase; + } + } } deletegroup { name brigadier:string single_word; @@ -631,4 +635,4 @@ luckperms { } } } -} \ No newline at end of file +} diff --git a/common/src/main/java/me/lucko/luckperms/common/command/spec/CommandSpec.java b/common/src/main/java/me/lucko/luckperms/common/command/spec/CommandSpec.java index ef0048d39..7a965afa9 100644 --- a/common/src/main/java/me/lucko/luckperms/common/command/spec/CommandSpec.java +++ b/common/src/main/java/me/lucko/luckperms/common/command/spec/CommandSpec.java @@ -94,7 +94,9 @@ public enum CommandSpec { ), CREATE_GROUP("/%s creategroup ", - arg("name", true) + arg("name", true), + arg("weight", false), + arg("display-name", "displayname", false) ), DELETE_GROUP("/%s deletegroup ", arg("name", true) diff --git a/common/src/main/java/me/lucko/luckperms/common/commands/group/CreateGroup.java b/common/src/main/java/me/lucko/luckperms/common/commands/group/CreateGroup.java index 4ac3456fc..f0d362839 100644 --- a/common/src/main/java/me/lucko/luckperms/common/commands/group/CreateGroup.java +++ b/common/src/main/java/me/lucko/luckperms/common/commands/group/CreateGroup.java @@ -30,8 +30,12 @@ import me.lucko.luckperms.common.command.CommandResult; import me.lucko.luckperms.common.command.abstraction.SingleCommand; import me.lucko.luckperms.common.command.access.CommandPermission; import me.lucko.luckperms.common.command.spec.CommandSpec; +import me.lucko.luckperms.common.command.utils.ArgumentException; import me.lucko.luckperms.common.command.utils.ArgumentList; import me.lucko.luckperms.common.locale.Message; +import me.lucko.luckperms.common.model.Group; +import me.lucko.luckperms.common.node.types.DisplayName; +import me.lucko.luckperms.common.node.types.Weight; import me.lucko.luckperms.common.plugin.LuckPermsPlugin; import me.lucko.luckperms.common.sender.Sender; import me.lucko.luckperms.common.storage.misc.DataConstraints; @@ -40,10 +44,11 @@ import me.lucko.luckperms.common.util.Predicates; import net.kyori.adventure.text.Component; import net.luckperms.api.actionlog.Action; import net.luckperms.api.event.cause.CreationCause; +import net.luckperms.api.model.data.DataType; public class CreateGroup extends SingleCommand { public CreateGroup() { - super(CommandSpec.CREATE_GROUP, "CreateGroup", CommandPermission.CREATE_GROUP, Predicates.not(1)); + super(CommandSpec.CREATE_GROUP, "CreateGroup", CommandPermission.CREATE_GROUP, Predicates.notInRange(1, 3)); } @Override @@ -64,8 +69,32 @@ public class CreateGroup extends SingleCommand { return CommandResult.INVALID_ARGS; } + Integer weight = null; try { - plugin.getStorage().createAndLoadGroup(groupName, CreationCause.COMMAND).get(); + weight = args.getPriority(1); + } catch (ArgumentException | IndexOutOfBoundsException e) { + // ignored + } + + String displayName = null; + try { + displayName = args.get(weight != null ? 2 : 1); + } catch (IndexOutOfBoundsException e) { + // ignored + } + + try { + Group group = plugin.getStorage().createAndLoadGroup(groupName, CreationCause.COMMAND).get(); + + if (weight != null) { + group.setNode(DataType.NORMAL, Weight.builder(weight).build(), false); + } + + if (displayName != null) { + group.setNode(DataType.NORMAL, DisplayName.builder(displayName).build(), false); + } + + plugin.getStorage().saveGroup(group); } catch (Exception e) { plugin.getLogger().warn("Error whilst creating group", e); Message.CREATE_ERROR.send(sender, Component.text(groupName)); diff --git a/common/src/main/resources/luckperms_en.properties b/common/src/main/resources/luckperms_en.properties index c461dc25b..840f1eba2 100644 --- a/common/src/main/resources/luckperms_en.properties +++ b/common/src/main/resources/luckperms_en.properties @@ -388,6 +388,8 @@ luckperms.usage.apply-edits.argument.code=the unique code for the data luckperms.usage.apply-edits.argument.target=who to apply the data to luckperms.usage.create-group.description=Create a new group luckperms.usage.create-group.argument.name=the name of the group +luckperms.usage.create-group.argument.weight=the weight of the group +luckperms.usage.create-group.argument.display-name=the display name of the group luckperms.usage.delete-group.description=Delete a group luckperms.usage.delete-group.argument.name=the name of the group luckperms.usage.list-groups.description=List all groups on the platform