11package 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
35import com.mojang.brigadier.arguments.BoolArgumentType
46import com.mojang.brigadier.arguments.IntegerArgumentType
57import com.mojang.brigadier.arguments.StringArgumentType
68import com.mojang.brigadier.builder.LiteralArgumentBuilder
79import com.mojang.brigadier.builder.LiteralArgumentBuilder.literal
810import net.minecraft.command.CommandSource
911import net.minecraft.command.Commands
12+ import net.minecraft.command.ISuggestionProvider
13+ import net.minecraftforge.fml.server.ServerLifecycleHooks.getCurrentServer
1014
1115fun 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