diff options
Diffstat (limited to 'src/main/kotlin/io/dico/parcels2/command/ParcelParameterTypes.kt')
-rw-r--r-- | src/main/kotlin/io/dico/parcels2/command/ParcelParameterTypes.kt | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/src/main/kotlin/io/dico/parcels2/command/ParcelParameterTypes.kt b/src/main/kotlin/io/dico/parcels2/command/ParcelParameterTypes.kt index 8beef7f..ae58f94 100644 --- a/src/main/kotlin/io/dico/parcels2/command/ParcelParameterTypes.kt +++ b/src/main/kotlin/io/dico/parcels2/command/ParcelParameterTypes.kt @@ -3,8 +3,12 @@ package io.dico.parcels2.command import io.dico.dicore.command.CommandException import io.dico.dicore.command.parameter.ArgumentBuffer import io.dico.dicore.command.parameter.Parameter +import io.dico.dicore.command.parameter.type.ParameterConfig import io.dico.dicore.command.parameter.type.ParameterType import io.dico.parcels2.* +import io.dico.parcels2.command.ProfileKind.Companion.ANY +import io.dico.parcels2.command.ProfileKind.Companion.FAKE +import io.dico.parcels2.command.ProfileKind.Companion.REAL import org.bukkit.command.CommandSender import org.bukkit.entity.Player @@ -43,11 +47,27 @@ class ParcelParameterType(val parcelProvider: ParcelProvider) : ParameterType<Pa } -class ProfileParameterType : ParameterType<PlayerProfile, Void>(PlayerProfile::class.java) { +annotation class ProfileKind(val kind: Int) { + companion object : ParameterConfig<ProfileKind, Int>(ProfileKind::class.java) { + const val REAL = 1 + const val FAKE = 2 + const val ANY = 4 + + override fun toParameterInfo(annotation: ProfileKind): Int { + return annotation.kind + } + } +} + +class ProfileParameterType : ParameterType<PlayerProfile, Int>(PlayerProfile::class.java, ProfileKind) { + + override fun parse(parameter: Parameter<PlayerProfile, Int>, sender: CommandSender, buffer: ArgumentBuffer): PlayerProfile { + val info = parameter.paramInfo ?: REAL + val allowReal = info and REAL != 0 + val allowFake = info and FAKE != 0 - override fun parse(parameter: Parameter<PlayerProfile, Void>, sender: CommandSender, buffer: ArgumentBuffer): PlayerProfile { val input = buffer.next() - return PlayerProfile.byName(input, allowReal = true, allowFake = true) + return PlayerProfile.byName(input, allowReal, allowFake) } } |