Skip to content

Commit fa38d8f

Browse files
committed
Improve impl of Speed commands
1 parent 8106db8 commit fa38d8f

File tree

1 file changed

+16
-11
lines changed
  • bukkit/src/main/kotlin/io/github/rothes/esu/bukkit/module/essentialcommands

1 file changed

+16
-11
lines changed

bukkit/src/main/kotlin/io/github/rothes/esu/bukkit/module/essentialcommands/Speed.kt

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import io.github.rothes.esu.core.configuration.ConfigurationPart
99
import io.github.rothes.esu.core.configuration.data.MessageData
1010
import io.github.rothes.esu.core.configuration.data.MessageData.Companion.message
1111
import io.github.rothes.esu.core.configuration.meta.Comment
12-
import io.github.rothes.esu.core.module.CommonFeature
1312
import io.github.rothes.esu.core.module.configuration.BaseFeatureConfiguration
1413
import io.github.rothes.esu.core.user.User
1514
import 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

Comments
 (0)