Skip to content

Commit 3a281ac

Browse files
committed
Added suggesting for permission command.
Signed-off-by: Pavel Erokhin (MairwunNx) <[email protected]>
1 parent 6004be3 commit 3a281ac

File tree

1 file changed

+81
-11
lines changed
  • src/main/kotlin/com/mairwunnx/projectessentials/permissions/impl/commands

1 file changed

+81
-11
lines changed

src/main/kotlin/com/mairwunnx/projectessentials/permissions/impl/commands/CommandLiterals.kt

Lines changed: 81 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package com.mairwunnx.projectessentials.permissions.impl.commands
22

3+
import com.mairwunnx.projectessentials.core.api.v1.commands.CommandAPI
4+
import com.mairwunnx.projectessentials.permissions.api.v1.PermissionsAPI
35
import com.mojang.brigadier.arguments.BoolArgumentType
46
import com.mojang.brigadier.arguments.IntegerArgumentType
57
import com.mojang.brigadier.arguments.StringArgumentType
68
import com.mojang.brigadier.builder.LiteralArgumentBuilder
79
import com.mojang.brigadier.builder.LiteralArgumentBuilder.literal
810
import net.minecraft.command.CommandSource
911
import net.minecraft.command.Commands
12+
import net.minecraft.command.ISuggestionProvider
13+
import net.minecraftforge.fml.server.ServerLifecycleHooks.getCurrentServer
1014

1115
fun takePermissionsLiteral(): LiteralArgumentBuilder<CommandSource> =
1216
literal<CommandSource>("permissions").then(
@@ -17,26 +21,47 @@ fun takePermissionsLiteral(): LiteralArgumentBuilder<CommandSource> =
1721
Commands.literal("user").then(
1822
Commands.literal("info").then(
1923
Commands.argument("user-name", StringArgumentType.string())
24+
.suggests { _, builder ->
25+
ISuggestionProvider.suggest(
26+
getCurrentServer().playerList.players.map { it.name.string }, builder
27+
)
28+
}
2029
.executes { PermissionsCommand.userInfo(it) }
2130
)
2231
).then(
2332
Commands.literal("remove").then(
2433
Commands.argument("user-name", StringArgumentType.string())
25-
.executes { PermissionsCommand.userRemove(it) }
34+
.suggests { _, builder ->
35+
ISuggestionProvider.suggest(
36+
PermissionsAPI.getUsers().map { it.nickname }, builder
37+
)
38+
}.executes { PermissionsCommand.userRemove(it) }
2639
)
2740
).then(
2841
Commands.literal("permissions").then(
2942
Commands.argument(
3043
"user-name", StringArgumentType.string()
31-
).then(
44+
).suggests { _, builder ->
45+
ISuggestionProvider.suggest(
46+
getCurrentServer().playerList.players.map { it.name.string }, builder
47+
)
48+
}.then(
3249
Commands.literal("add").then(
3350
Commands.argument("node", StringArgumentType.string())
3451
.executes { PermissionsCommand.userPermissionsAdd(it) }
3552
)
3653
).then(
3754
Commands.literal("remove").then(
3855
Commands.argument("node", StringArgumentType.string())
39-
).executes { PermissionsCommand.userPermissionsRemove(it) }
56+
.suggests { context, builder ->
57+
ISuggestionProvider.suggest(
58+
PermissionsAPI.getUserPermissions(
59+
CommandAPI.getString(context, "user-name"), false
60+
), builder
61+
)
62+
}
63+
.executes { PermissionsCommand.userPermissionsRemove(it) }
64+
)
4065
).then(
4166
Commands.literal("list").then(
4267
Commands.argument("deep", BoolArgumentType.bool())
@@ -56,9 +81,19 @@ fun takePermissionsLiteral(): LiteralArgumentBuilder<CommandSource> =
5681
Commands.literal("set").then(
5782
Commands.argument(
5883
"group-name", StringArgumentType.string()
59-
).then(
84+
).suggests { _, builder ->
85+
ISuggestionProvider.suggest(
86+
PermissionsAPI.getGroups().map { it.name }, builder
87+
)
88+
}.then(
6089
Commands.literal("for").then(
6190
Commands.argument("user-name", StringArgumentType.string())
91+
.suggests { _, builder ->
92+
ISuggestionProvider.suggest(
93+
getCurrentServer().playerList.players.map { it.name.string },
94+
builder
95+
)
96+
}
6297
.executes { PermissionsCommand.userSetGroup(it) }
6398
)
6499
)
@@ -75,7 +110,11 @@ fun takePermissionsLiteral(): LiteralArgumentBuilder<CommandSource> =
75110
Commands.literal("set-default").then(
76111
Commands.argument(
77112
"group-name", StringArgumentType.string()
78-
).executes { PermissionsCommand.groupDefaultSet(it) }
113+
).suggests { _, builder ->
114+
ISuggestionProvider.suggest(
115+
PermissionsAPI.getGroups().filter { !it.isDefault }.map { it.name }, builder
116+
)
117+
}.executes { PermissionsCommand.groupDefaultSet(it) }
79118
)
80119
).then(
81120
Commands.literal("create").then(
@@ -86,20 +125,31 @@ fun takePermissionsLiteral(): LiteralArgumentBuilder<CommandSource> =
86125
Commands.literal("remove").then(
87126
Commands.argument(
88127
"group-name", StringArgumentType.string()
89-
).executes { PermissionsCommand.groupRemove(it) }
128+
).suggests { _, builder ->
129+
ISuggestionProvider.suggest(PermissionsAPI.getGroups().map { it.name }, builder)
130+
}.executes { PermissionsCommand.groupRemove(it) }
90131
)
91132
).then(
92133
Commands.literal("permissions").then(
93134
Commands.argument(
94135
"group-name", StringArgumentType.string()
95-
).then(
136+
).suggests { _, builder ->
137+
ISuggestionProvider.suggest(PermissionsAPI.getGroups().map { it.name }, builder)
138+
}.then(
96139
Commands.literal("add").then(
97140
Commands.argument("node", StringArgumentType.string())
98141
.executes { PermissionsCommand.groupPermissionsAdd(it) }
99142
)
100143
).then(
101144
Commands.literal("remove").then(
102145
Commands.argument("node", StringArgumentType.string())
146+
.suggests { context, builder ->
147+
ISuggestionProvider.suggest(
148+
PermissionsAPI.getGroupPermissions(
149+
CommandAPI.getString(context, "group-name")
150+
), builder
151+
)
152+
}
103153
.executes { PermissionsCommand.groupPermissionsRemove(it) }
104154
)
105155
).then(
@@ -120,17 +170,33 @@ fun takePermissionsLiteral(): LiteralArgumentBuilder<CommandSource> =
120170
Commands.literal("inherit").then(
121171
Commands.argument(
122172
"group-name", StringArgumentType.string()
123-
).then(
173+
).suggests { _, builder ->
174+
ISuggestionProvider.suggest(
175+
PermissionsAPI.getGroups().map { it.name }, builder
176+
)
177+
}.then(
124178
Commands.literal("add").then(
125179
Commands.argument(
126180
"inherit-group", StringArgumentType.string()
127-
).executes { PermissionsCommand.groupInheritAdd(it) }
181+
).suggests { context, builder ->
182+
ISuggestionProvider.suggest(
183+
PermissionsAPI.getGroups().filter {
184+
it.name != CommandAPI.getString(context, "group-name")
185+
}.map { it.name }, builder
186+
)
187+
}.executes { PermissionsCommand.groupInheritAdd(it) }
128188
)
129189
).then(
130190
Commands.literal("remove").then(
131191
Commands.argument(
132192
"inherit-group", StringArgumentType.string()
133-
).executes { PermissionsCommand.groupInheritRemove(it) }
193+
).suggests { context, builder ->
194+
ISuggestionProvider.suggest(
195+
PermissionsAPI.getGroupInherits(
196+
CommandAPI.getString(context, "group-name"), false
197+
), builder
198+
)
199+
}.executes { PermissionsCommand.groupInheritRemove(it) }
134200
)
135201
).then(
136202
Commands.literal("list").then(
@@ -143,7 +209,11 @@ fun takePermissionsLiteral(): LiteralArgumentBuilder<CommandSource> =
143209
Commands.literal("prefix").then(
144210
Commands.argument(
145211
"group-name", StringArgumentType.string()
146-
).then(
212+
).suggests { _, builder ->
213+
ISuggestionProvider.suggest(
214+
PermissionsAPI.getGroups().map { it.name }, builder
215+
)
216+
}.then(
147217
Commands.argument("prefix", StringArgumentType.string())
148218
.executes { PermissionsCommand.groupPrefixSet(it) }
149219
).executes { PermissionsCommand.groupPrefixTake(it) }

0 commit comments

Comments
 (0)