Skip to content

Commit e64c919

Browse files
committed
Dynamically generated type safe config command and help commands
1 parent 5dded25 commit e64c919

26 files changed

+456
-238
lines changed

common/src/main/kotlin/com/lambda/brigadier/argument/BlockArguments.kt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,6 @@
1414
* limitations under the License.
1515
*/
1616

17-
/*
18-
* Preserve binary compatibility when moving extensions between files
19-
*/
20-
@file:JvmMultifileClass
21-
@file:JvmName("ArgumentsKt")
22-
2317
package com.lambda.brigadier.argument
2418

2519
import com.lambda.brigadier.*
@@ -36,7 +30,6 @@ import java.util.function.Predicate
3630
*
3731
* @see BlockPredicateArgumentType.getBlockPredicate
3832
*/
39-
@JvmName("valueBlockPredicateArg")
4033
@BrigadierDsl
4134
fun DefaultArgumentReader<BlockPredicateArgumentType>.value(): Predicate<CachedBlockPosition> {
4235
return BlockPredicateArgumentType.getBlockPredicate(context.assumeSourceNotUsed(), name)
@@ -48,7 +41,6 @@ fun DefaultArgumentReader<BlockPredicateArgumentType>.value(): Predicate<CachedB
4841
*
4942
* @see BlockStateArgumentType.getBlockState
5043
*/
51-
@JvmName("valueBlockStateArg")
5244
@BrigadierDsl
5345
fun DefaultArgumentReader<BlockStateArgumentType>.value(): BlockStateArgument {
5446
return BlockStateArgumentType.getBlockState(context.assumeSourceNotUsed(), name)

common/src/main/kotlin/com/lambda/brigadier/argument/EntityArguments.kt

Lines changed: 13 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,6 @@
1414
* limitations under the License.
1515
*/
1616

17-
/*
18-
* Preserve binary compatibility when moving extensions between files
19-
*/
20-
@file:JvmMultifileClass
21-
@file:JvmName("ArgumentsKt")
22-
2317
package com.lambda.brigadier.argument
2418

2519
import com.lambda.brigadier.*
@@ -52,14 +46,11 @@ object ListEntityArgumentDescriptor : ArgumentDescriptor<EntityArgumentType>
5246
*
5347
* @see EntityAnchorArgumentType.getEntityAnchor
5448
*/
55-
@JvmName("valueEntityAnchorArg")
5649
@BrigadierDsl
57-
fun DefaultArgumentReader<EntityAnchorArgumentType>.value(): EntityAnchorArgumentType.EntityAnchor {
58-
return EntityAnchorArgumentType.getEntityAnchor(
59-
context.assumeSourceNotUsed(),
60-
name
50+
fun DefaultArgumentReader<EntityAnchorArgumentType>.value() =
51+
EntityAnchorArgumentType.getEntityAnchor(
52+
context.assumeSourceNotUsed(), name
6153
)
62-
}
6354

6455
/**
6556
* Reads the collection of entities from the argument in
@@ -69,14 +60,9 @@ fun DefaultArgumentReader<EntityAnchorArgumentType>.value(): EntityAnchorArgumen
6960
*
7061
* @see EntityArgumentType.getEntities
7162
*/
72-
@JvmName("requiredEntityArg")
7363
@BrigadierDsl
74-
fun ArgumentReader<
75-
ServerCommandSource,
76-
ListEntityArgumentDescriptor
77-
>.required(): Collection<Entity> {
78-
return EntityArgumentType.getEntities(context, name)
79-
}
64+
fun ArgumentReader<ServerCommandSource, ListEntityArgumentDescriptor>.required() =
65+
EntityArgumentType.getEntities(context, name)
8066

8167
/**
8268
* Reads the collection of entities from the argument in
@@ -86,29 +72,19 @@ fun ArgumentReader<
8672
*
8773
* @see EntityArgumentType.getOptionalEntities
8874
*/
89-
@JvmName("optionalEntityArg")
9075
@BrigadierDsl
91-
fun ArgumentReader<
92-
ServerCommandSource,
93-
ListEntityArgumentDescriptor
94-
>.optional(): Collection<Entity> {
95-
return EntityArgumentType.getOptionalEntities(context, name)
96-
}
76+
fun ArgumentReader<ServerCommandSource, ListEntityArgumentDescriptor>.optional(): Collection<Entity> =
77+
EntityArgumentType.getOptionalEntities(context, name)
9778

9879
/**
9980
* Reads the [Entity] value from the argument in
10081
* the receiver [ArgumentReader].
10182
*
10283
* @see EntityArgumentType.getEntity
10384
*/
104-
@JvmName("valueSingleEntityArg")
10585
@BrigadierDsl
106-
fun ArgumentReader<
107-
ServerCommandSource,
108-
SingleEntityArgumentDescriptor
109-
>.value(): Entity {
110-
return EntityArgumentType.getEntity(context, name)
111-
}
86+
fun ArgumentReader<ServerCommandSource, SingleEntityArgumentDescriptor>.value(): Entity =
87+
EntityArgumentType.getEntity(context, name)
11288

11389
/**
11490
* Creates an entity anchor argument with [name] as the parameter name.
@@ -126,22 +102,14 @@ fun <S> entityAnchor(
126102
@BrigadierDsl
127103
fun <S> entities(
128104
name: String,
129-
): RequiredArgumentConstructor<
130-
S,
131-
ListEntityArgumentDescriptor
132-
> {
133-
return argument(name, EntityArgumentType.entities(), ListEntityArgumentDescriptor)
134-
}
105+
): RequiredArgumentConstructor<S, ListEntityArgumentDescriptor> =
106+
argument(name, EntityArgumentType.entities(), ListEntityArgumentDescriptor)
135107

136108
/**
137109
* Creates an entity selector argument with [name] as the parameter name.
138110
*/
139111
@BrigadierDsl
140112
fun <S> entity(
141113
name: String,
142-
): RequiredArgumentConstructor<
143-
S,
144-
SingleEntityArgumentDescriptor
145-
> {
146-
return argument(name, EntityArgumentType.entity(), SingleEntityArgumentDescriptor)
147-
}
114+
): RequiredArgumentConstructor<S, SingleEntityArgumentDescriptor> =
115+
argument(name, EntityArgumentType.entity(), SingleEntityArgumentDescriptor)

common/src/main/kotlin/com/lambda/brigadier/argument/GeometricArguments.kt

Lines changed: 24 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,6 @@
1414
* limitations under the License.
1515
*/
1616

17-
/*
18-
* Preserve binary compatibility when moving extensions between files
19-
*/
20-
@file:JvmMultifileClass
21-
@file:JvmName("ArgumentsKt")
22-
2317
package com.lambda.brigadier.argument
2418

2519

@@ -35,28 +29,19 @@ import java.util.*
3529
*
3630
* @see AngleArgumentType.getAngle
3731
*/
38-
@JvmName("valueAngleArg")
3932
@BrigadierDsl
40-
fun ArgumentReader<
41-
ServerCommandSource,
42-
DefaultArgumentDescriptor<
43-
AngleArgumentType
44-
>
45-
>.value(): Float {
46-
return AngleArgumentType.getAngle(context, name)
47-
}
33+
fun ArgumentReader<ServerCommandSource, DefaultArgumentDescriptor<AngleArgumentType>>.value() =
34+
AngleArgumentType.getAngle(context, name)
4835

4936
/**
5037
* Reads the raw [PosArgument] value from the
5138
* argument in the receiver [ArgumentReader].
5239
*
5340
* @see RotationArgumentType.getRotation
5441
*/
55-
@JvmName("valueRotationArg")
5642
@BrigadierDsl
57-
fun DefaultArgumentReader<RotationArgumentType>.value(): PosArgument {
58-
return RotationArgumentType.getRotation(context.assumeSourceNotUsed(), name)
59-
}
43+
fun DefaultArgumentReader<RotationArgumentType>.value(): PosArgument =
44+
RotationArgumentType.getRotation(context.assumeSourceNotUsed(), name)
6045

6146
/**
6247
* Reads the [Vec2f] value from the argument
@@ -66,28 +51,19 @@ fun DefaultArgumentReader<RotationArgumentType>.value(): PosArgument {
6651
* @see RotationArgumentType.getRotation
6752
* @see PosArgument.toAbsoluteRotation
6853
*/
69-
@JvmName("absoluteRotationArg")
7054
@BrigadierDsl
71-
fun ArgumentReader<
72-
ServerCommandSource,
73-
DefaultArgumentDescriptor<
74-
RotationArgumentType
75-
>
76-
>.absolute(): Vec2f {
77-
return RotationArgumentType.getRotation(context, name).toAbsoluteRotation(context.source)
78-
}
55+
fun ArgumentReader<ServerCommandSource, DefaultArgumentDescriptor<RotationArgumentType>>.absolute(): Vec2f =
56+
RotationArgumentType.getRotation(context, name).toAbsoluteRotation(context.source)
7957

8058
/**
8159
* Reads the set of [Direction.Axis] from the
8260
* argument in the receiver [ArgumentReader].
8361
*
8462
* @see SwizzleArgumentType.getSwizzle
8563
*/
86-
@JvmName("valueSwizzleArg")
8764
@BrigadierDsl
88-
fun DefaultArgumentReader<SwizzleArgumentType>.value(): EnumSet<Direction.Axis> {
89-
return SwizzleArgumentType.getSwizzle(context.assumeSourceNotUsed(), name)
90-
}
65+
fun DefaultArgumentReader<SwizzleArgumentType>.value(): EnumSet<Direction.Axis> =
66+
SwizzleArgumentType.getSwizzle(context.assumeSourceNotUsed(), name)
9167

9268
/**
9369
* Reads the [BlockPos] value from the
@@ -97,14 +73,8 @@ fun DefaultArgumentReader<SwizzleArgumentType>.value(): EnumSet<Direction.Axis>
9773
*/
9874
@JvmName("valueBlockPosArg")
9975
@BrigadierDsl
100-
fun ArgumentReader<
101-
ServerCommandSource,
102-
DefaultArgumentDescriptor<
103-
BlockPosArgumentType
104-
>
105-
>.value(): BlockPos {
106-
return BlockPosArgumentType.getBlockPos(context, name)
107-
}
76+
fun ArgumentReader<ServerCommandSource, DefaultArgumentDescriptor<BlockPosArgumentType>>.value(): BlockPos =
77+
BlockPosArgumentType.getBlockPos(context, name)
10878

10979
/**
11080
* Reads the [BlockPos] value from the
@@ -116,98 +86,62 @@ fun ArgumentReader<
11686
* @see BlockPosArgumentType.getLoadedBlockPos
11787
*/
11888
@BrigadierDsl
119-
fun ArgumentReader<
120-
ServerCommandSource,
121-
DefaultArgumentDescriptor<
122-
BlockPosArgumentType
123-
>
124-
>.requireLoaded(): BlockPos {
125-
return BlockPosArgumentType.getLoadedBlockPos(context, name)
126-
}
89+
fun ArgumentReader<ServerCommandSource, DefaultArgumentDescriptor<BlockPosArgumentType>>.requireLoaded(): BlockPos =
90+
BlockPosArgumentType.getLoadedBlockPos(context, name)
12791

12892
/**
12993
* Reads the [ColumnPos] value from the
13094
* argument in the receiver [ArgumentReader].
13195
*
13296
* @see ColumnPosArgumentType.getColumnPos
13397
*/
134-
@JvmName("valueColumnPosArg")
13598
@BrigadierDsl
136-
fun ArgumentReader<
137-
ServerCommandSource,
138-
DefaultArgumentDescriptor<
139-
ColumnPosArgumentType
140-
>
141-
>.value(): ColumnPos {
142-
return ColumnPosArgumentType.getColumnPos(context, name)
143-
}
99+
fun ArgumentReader<ServerCommandSource, DefaultArgumentDescriptor<ColumnPosArgumentType>>.value(): ColumnPos =
100+
ColumnPosArgumentType.getColumnPos(context, name)
144101

145102
/**
146103
* Reads the [Vec2f] value from the
147104
* argument in the receiver [ArgumentReader].
148105
*
149106
* @see Vec2ArgumentType.getVec2
150107
*/
151-
@JvmName("valueVec2Arg")
152108
@BrigadierDsl
153-
fun ArgumentReader<
154-
ServerCommandSource,
155-
DefaultArgumentDescriptor<
156-
Vec2ArgumentType
157-
>
158-
>.value(): Vec2f {
159-
return Vec2ArgumentType.getVec2(context, name)
160-
}
109+
fun ArgumentReader<ServerCommandSource, DefaultArgumentDescriptor<Vec2ArgumentType>>.value(): Vec2f =
110+
Vec2ArgumentType.getVec2(context, name)
161111

162112
/**
163113
* Reads the [Vec3d] value from the
164114
* argument in the receiver [ArgumentReader].
165115
*
166116
* @see Vec3ArgumentType.getVec3
167117
*/
168-
@JvmName("valueVec3Arg")
169118
@BrigadierDsl
170-
fun ArgumentReader<
171-
ServerCommandSource,
172-
DefaultArgumentDescriptor<
173-
Vec3ArgumentType
174-
>
175-
>.value(): Vec3d {
176-
return Vec3ArgumentType.getVec3(context, name)
177-
}
119+
fun ArgumentReader<ServerCommandSource, DefaultArgumentDescriptor<Vec3ArgumentType>>.value(): Vec3d =
120+
Vec3ArgumentType.getVec3(context, name)
178121

179122
/**
180123
* Reads the raw [PosArgument] value from the
181124
* argument in the receiver [ArgumentReader].
182125
*
183126
* @see Vec3ArgumentType.getPosArgument
184127
*/
185-
@JvmName("posVec3Arg")
186128
@BrigadierDsl
187-
fun DefaultArgumentReader<Vec3ArgumentType>.posArgument(): PosArgument {
188-
return Vec3ArgumentType.getPosArgument(context.assumeSourceNotUsed(), name)
189-
}
190-
129+
fun DefaultArgumentReader<Vec3ArgumentType>.posArgument(): PosArgument =
130+
Vec3ArgumentType.getPosArgument(context.assumeSourceNotUsed(), name)
191131

192132
/**
193133
* Creates an angle argument with [name] as the parameter name.
194134
*/
195135
@BrigadierDsl
196-
fun <S> angle(
197-
name: String,
198-
): DefaultArgumentConstructor<S, AngleArgumentType> {
199-
return argument(name, AngleArgumentType.angle())
200-
}
136+
fun <S> angle(name: String): DefaultArgumentConstructor<S, AngleArgumentType> =
137+
argument(name, AngleArgumentType.angle())
201138

202139
/**
203140
* Creates a rotation argument with [name] as the parameter name.
204141
*/
205142
@BrigadierDsl
206-
fun <S> rotation(
207-
name: String,
208-
): DefaultArgumentConstructor<S, RotationArgumentType> {
209-
return argument(name, RotationArgumentType.rotation())
210-
}
143+
fun <S> rotation(name: String): DefaultArgumentConstructor<S, RotationArgumentType> =
144+
argument(name, RotationArgumentType.rotation())
211145

212146
/**
213147
* Creates a swizzle argument with [name] as the parameter name.

common/src/main/kotlin/com/lambda/brigadier/argument/MiscArguments.kt

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,6 @@
1414
* limitations under the License.
1515
*/
1616

17-
/*
18-
* Preserve binary compatibility when moving extensions between files
19-
*/
20-
@file:JvmMultifileClass
21-
@file:JvmName("ArgumentsKt")
22-
2317
package com.lambda.brigadier.argument
2418

2519
import com.lambda.brigadier.*
@@ -79,11 +73,7 @@ fun <S> time(
7973
@BrigadierDsl
8074
fun <S> uuid(
8175
name: String,
82-
): RequiredArgumentConstructor<
83-
S,
84-
DefaultArgumentDescriptor<
85-
UuidArgumentType>
86-
> {
76+
): RequiredArgumentConstructor<S, DefaultArgumentDescriptor<UuidArgumentType>> {
8777
return argument(name, UuidArgumentType.uuid())
8878
}
8979

@@ -98,10 +88,6 @@ fun <S> uuid(
9888
@BrigadierDsl
9989
fun <S> literal(
10090
name: String,
101-
): ArgumentConstructor<
102-
S,
103-
LiteralArgumentBuilder<S>,
104-
LiteralDescriptor
105-
> {
91+
): ArgumentConstructor<S, LiteralArgumentBuilder<S>, LiteralDescriptor> {
10692
return ArgumentConstructor(LiteralArgumentBuilder.literal(name), name, LiteralDescriptor)
10793
}

0 commit comments

Comments
 (0)