Skip to content

Commit b4ffa2b

Browse files
committed
Add Invulnerable(God) command
1 parent 186ddaf commit b4ffa2b

File tree

4 files changed

+46
-4
lines changed

4 files changed

+46
-4
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ object EssentialCommandsModule: BukkitModule<BaseModuleConfiguration, EssentialC
1010

1111
init {
1212
listOf(
13-
ClientLocale, DimensionTravel, Feed, Heal, Ip, IpGroup, NoFall, Ping, PlayerChunkTickets, Spectate, Speed, Suicide, TpChunk
13+
ClientLocale, DimensionTravel, Feed, Heal, Invulnerable, Ip, IpGroup, NoFall, Ping,
14+
PlayerChunkTickets, Spectate, Speed, Suicide, TpChunk
1415
).forEach { cmd -> registerFeature(cmd) }
1516
}
1617

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package io.github.rothes.esu.bukkit.module.essentialcommands
2+
3+
import io.github.rothes.esu.bukkit.user
4+
import io.github.rothes.esu.bukkit.util.ComponentBukkitUtils.player
5+
import io.github.rothes.esu.bukkit.util.scheduler.Scheduler.syncTick
6+
import io.github.rothes.esu.core.configuration.data.MessageData
7+
import io.github.rothes.esu.core.configuration.data.MessageData.Companion.message
8+
import io.github.rothes.esu.core.module.configuration.FeatureToggle
9+
import io.github.rothes.esu.core.user.User
10+
import org.bukkit.entity.Player
11+
12+
object Invulnerable : PlayerOptionalCommand<FeatureToggle.DefaultTrue, Invulnerable.Lang>() {
13+
14+
override val aliases: Array<String>
15+
get() = arrayOf("god")
16+
17+
override fun onPerform(sender: User, player: Player, silent: Boolean) {
18+
player.syncTick {
19+
if (player.isInvulnerable) {
20+
player.isInvulnerable = false
21+
sender.message(lang, { disabledForPlayer }, player(player))
22+
if (!silent)
23+
player.user.message(lang, { disabled })
24+
} else {
25+
player.isInvulnerable = true
26+
sender.message(lang, { enabledForPlayer }, player(player))
27+
if (!silent)
28+
player.user.message(lang, { enabled })
29+
}
30+
}
31+
}
32+
33+
data class Lang(
34+
val enabledForPlayer: MessageData = "<pc>Enabled invulnerable mode for <pdc><player><pc>.".message,
35+
val disabledForPlayer: MessageData = "<pc>Disabled invulnerable mode for <pdc><player><pc>.".message,
36+
val enabled: MessageData = "<pc>You no longer receives any damage.".message,
37+
val disabled: MessageData = "<pc>You are now receiving damage.".message,
38+
)
39+
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ object NoFall : PlayerOptionalCommand<FeatureToggle.DefaultTrue, NoFall.Lang>()
5858
}
5959

6060
data class Lang(
61-
val enabledForPlayer: MessageData = "<vpc>Enabled <pc>no fall for <pdc><player><pc>.".message,
62-
val disabledForPlayer: MessageData = "<vnc>Disabled <pc>no fall for <pdc><player><pc>.".message,
61+
val enabledForPlayer: MessageData = "<pc>Enabled no fall for <pdc><player><pc>.".message,
62+
val disabledForPlayer: MessageData = "<pc>Disabled no fall for <pdc><player><pc>.".message,
6363
val enabled: MessageData = "<pc>You no longer receives fall damage.".message,
6464
val disabled: MessageData = "<pc>You are now receiving fall damage.".message,
6565
)

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,12 @@ abstract class PlayerOptionalCommand<C, L>: BaseCommand<C, L>() {
1010

1111
protected open val receivesSilentFlag: Boolean
1212
get() = true
13+
protected open val aliases: Array<String>
14+
get() = arrayOf()
1315

1416
override fun onEnable() {
1517
withCommandManager {
16-
commandBuilder(name) {
18+
commandBuilder(name, aliases = aliases) {
1719
copy {
1820
permission(cmdShortPerm())
1921
senderType(PlayerUser::class.java)

0 commit comments

Comments
 (0)