@@ -9,7 +9,6 @@ import io.github.rothes.esu.core.configuration.ConfigurationPart
99import io.github.rothes.esu.core.configuration.data.MessageData
1010import io.github.rothes.esu.core.configuration.data.MessageData.Companion.message
1111import io.github.rothes.esu.core.configuration.meta.Comment
12- import io.github.rothes.esu.core.module.CommonFeature
1312import io.github.rothes.esu.core.module.configuration.BaseFeatureConfiguration
1413import io.github.rothes.esu.core.user.User
1514import io.github.rothes.esu.core.util.ComponentUtils.component
@@ -36,32 +35,35 @@ object Speed : BaseCommand<Speed.Config, Speed.Lang>() {
3635 private val speedHandler by Versioned (NmsPlayerSpeedHandler ::class .java)
3736
3837 override fun onEnable () {
39- registerSpeedCommands(" speed" ) { player ->
40- if (player.isFlying) FlySpeed else WalkSpeed
41- }
38+ registerSpeedCommands()
4239 }
4340
44- private fun CommonFeature <* , * >.registerSpeedCommands (rootName : String , getter : (Player ) -> SpeedCommand <out SpeedType >) {
41+ private fun BaseCommand <* , * >.registerSpeedCommands () {
42+ val handlerGetter: (Player ) -> SpeedCommand <* > =
43+ if (this is SpeedCommand <* >) {
44+ { this }
45+ } else
46+ { player -> if (player.isFlying) FlySpeed else WalkSpeed }
4547 withCommandManager {
46- commandBuilder(rootName + " Get" ) {
48+ commandBuilder(name + " Get" ) {
4749 permission(cmdShortPerm())
4850 handler { ctx ->
4951 val sender = ctx.sender()
5052 val player = ctx.getOrSupplyDefault(" player" ) { (sender as PlayerUser ).player }
51- getter (player).getSpeed(sender, player)
53+ handlerGetter (player).getSpeed(sender, player)
5254 }.regCmd()
5355
5456 permission(cmdShortPerm(" others" ))
5557 optional(" player" , PlayerParser .playerParser())
5658 regCmd()
5759 }
58- commandBuilder(rootName ) {
60+ commandBuilder(name ) {
5961 permission(cmdShortPerm())
6062
6163 handler { ctx ->
6264 val sender = ctx.sender()
6365 val player = ctx.getOrSupplyDefault(" player" ) { (sender as PlayerUser ).player }
64- val speedCommand = getter (player)
66+ val speedCommand = handlerGetter (player)
6567 val value = ctx.getOrNull(" value" ) ? : speedCommand.defaultValue
6668 speedCommand.setSpeed(sender, value, player)
6769 }
@@ -85,7 +87,10 @@ object Speed : BaseCommand<Speed.Config, Speed.Lang>() {
8587 suggestionProvider(SuggestionProvider .blockingStrings { ctx, _ ->
8688 val sender = ctx.sender()
8789 val player = if (sender is PlayerUser ) sender.player else null
88- val current = if (player != null ) with (getter(player)) { player.speed } else 0.1f
90+ val current =
91+ if (player != null ) with (handlerGetter(player)) { player.speed }
92+ else if (this @registerSpeedCommands is SpeedCommand <* >) this @registerSpeedCommands.defaultValue
93+ else 0.1f
8994 listOf (current.toString())
9095 })
9196 }
@@ -138,7 +143,7 @@ object Speed : BaseCommand<Speed.Config, Speed.Lang>() {
138143 }
139144
140145 override fun onEnable () {
141- registerSpeedCommands(name) { this }
146+ registerSpeedCommands()
142147 listener.register()
143148 }
144149
0 commit comments