Skip to content

Commit 2cbefd4

Browse files
committed
TimeCommand.kt re-written.
Signed-off-by: Pavel Erokhin (MairwunNx) <MairwunNx@gmail.com>
1 parent c4cbd91 commit 2cbefd4

File tree

1 file changed

+37
-51
lines changed
  • src/main/kotlin/com/mairwunnx/projectessentials/core/impl/vanilla/commands

1 file changed

+37
-51
lines changed

src/main/kotlin/com/mairwunnx/projectessentials/core/impl/vanilla/commands/TimeCommand.kt

Lines changed: 37 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* ! This command implementation by Mojang Game Studios!
2+
* ! This command implementation by Mojang Studios!
33
*
44
* Decompiled with idea source code was converted to kotlin code.
55
* But with additions such as permissions checking and etc.
@@ -9,24 +9,16 @@
99
*/
1010
package com.mairwunnx.projectessentials.core.impl.vanilla.commands
1111

12-
import com.mairwunnx.projectessentials.core.api.v1.SETTING_LOC_ENABLED
1312
import com.mairwunnx.projectessentials.core.api.v1.commands.CommandAPI.getDispatcher
1413
import com.mairwunnx.projectessentials.core.api.v1.commands.CommandAliases
15-
import com.mairwunnx.projectessentials.core.api.v1.extensions.hoverEventFrom
16-
import com.mairwunnx.projectessentials.core.api.v1.extensions.textComponentFrom
17-
import com.mairwunnx.projectessentials.core.api.v1.permissions.hasPermission
18-
import com.mairwunnx.projectessentials.core.impl.generalConfiguration
1914
import com.mairwunnx.projectessentials.core.impl.nativeMappingsConfiguration
2015
import com.mojang.brigadier.CommandDispatcher
2116
import com.mojang.brigadier.arguments.IntegerArgumentType
22-
import net.minecraft.command.CommandException
2317
import net.minecraft.command.CommandSource
2418
import net.minecraft.command.Commands
2519
import net.minecraft.command.Commands.literal
2620
import net.minecraft.command.arguments.TimeArgument
2721
import net.minecraft.command.impl.TimeCommand
28-
import net.minecraft.entity.player.ServerPlayerEntity
29-
import net.minecraft.util.text.Style
3022

3123
internal object TimeCommand : VanillaCommandBase("time") {
3224
override fun register(dispatcher: CommandDispatcher<CommandSource>) {
@@ -42,53 +34,65 @@ internal object TimeCommand : VanillaCommandBase("time") {
4234
dispatcher.register(
4335
literal("time").then(
4436
literal("set").then(
45-
literal("day").executes { TimeCommand.setTime(it.source, 1000) }
37+
literal("day").requires { permission(it, "set") }.executes {
38+
TimeCommand.setTime(it.source, 1000)
39+
}
4640
).then(
47-
literal("noon").executes { TimeCommand.setTime(it.source, 6000) }
41+
literal("noon").requires { permission(it, "set") }.executes {
42+
TimeCommand.setTime(it.source, 6000)
43+
}
4844
).then(
49-
literal("sunset").executes { TimeCommand.setTime(it.source, 12000) }
45+
literal("sunset").requires { permission(it, "set") }.executes {
46+
TimeCommand.setTime(it.source, 12000)
47+
}
5048
).then(
51-
literal("night").executes { TimeCommand.setTime(it.source, 13000) }
49+
literal("night").requires { permission(it, "set") }.executes {
50+
TimeCommand.setTime(it.source, 13000)
51+
}
5252
).then(
53-
literal("midnight").executes { TimeCommand.setTime(it.source, 18000) }
53+
literal("midnight").requires { permission(it, "set") }.executes {
54+
TimeCommand.setTime(it.source, 18000)
55+
}
5456
).then(
55-
literal("sunrise").executes { TimeCommand.setTime(it.source, 23000) }
57+
literal("sunrise").requires { permission(it, "set") }.executes {
58+
TimeCommand.setTime(it.source, 23000)
59+
}
5660
).then(
5761
Commands.argument(
5862
"time", TimeArgument.func_218091_a()
59-
).executes {
60-
permission(it.source, "set")
63+
).requires { permission(it, "set") }.executes {
6164
TimeCommand.setTime(it.source, IntegerArgumentType.getInteger(it, "time"))
6265
}
6366
)
6467
).then(
6568
literal("add").then(
6669
Commands.argument(
6770
"time", TimeArgument.func_218091_a()
68-
).executes {
69-
permission(it.source, "add")
71+
).requires { permission(it, "add") }.executes {
7072
TimeCommand.addTime(it.source, IntegerArgumentType.getInteger(it, "time"))
7173
}
7274
)
7375
).then(
7476
literal("query").then(
75-
literal("daytime").executes {
76-
permission(it.source, "query")
77+
literal("daytime").requires {
78+
permission(it, "query")
79+
}.executes {
7780
TimeCommand.sendQueryResults(
78-
it.source,
79-
TimeCommand.getDayTime(it.source.world)
81+
it.source, TimeCommand.getDayTime(it.source.world)
8082
)
8183
}
8284
).then(
83-
literal("gametime").executes {
84-
permission(it.source, "query")
85+
literal("gametime").requires {
86+
permission(it, "query")
87+
}.executes {
8588
TimeCommand.sendQueryResults(
8689
it.source, (it.source.world.gameTime % 2147483647L).toInt()
8790
)
8891
}
8992
).then(
90-
literal("day").executes {
91-
permission(it.source, "query")
93+
literal("day").requires {
94+
permission(it, "query")
95+
}.executes {
9296
TimeCommand.sendQueryResults(
9397
it.source, (it.source.world.dayTime / 24000L % 2147483647L).toInt()
9498
)
@@ -98,35 +102,17 @@ internal object TimeCommand : VanillaCommandBase("time") {
98102
)
99103
}
100104

101-
private fun permission(source: CommandSource, type: String) {
102-
val node =
103-
if (type == "add" || type == "set") "native.time.change.$type" else "native.time.query"
104-
if (source.entity is ServerPlayerEntity && !hasPermission(source.asPlayer(), node, 2)) {
105-
throw CommandException(
106-
textComponentFrom(
107-
source.asPlayer(),
108-
generalConfiguration.getBool(SETTING_LOC_ENABLED),
109-
"native.command.restricted"
110-
).setStyle(
111-
Style().setHoverEvent(
112-
hoverEventFrom(
113-
source.asPlayer(),
114-
generalConfiguration.getBool(SETTING_LOC_ENABLED),
115-
"native.command.restricted_hover",
116-
node, "2"
117-
)
118-
)
119-
)
120-
)
121-
}
105+
private fun permission(source: CommandSource, type: String): Boolean {
106+
val node = if (type == "add" || type == "set") {
107+
"time.change.$type"
108+
} else "time.query"
109+
return isAllowed(source, node, 2)
122110
}
123111

124112
fun short(name: String, time: Int) {
125113
aliasesOf(name).forEach { command ->
126114
getDispatcher().register(literal(command).requires {
127-
if (it.entity is ServerPlayerEntity) {
128-
hasPermission(it.entity as ServerPlayerEntity, "native.time.change.set", 2)
129-
} else true
115+
permission(it, "set")
130116
}.executes { TimeCommand.setTime(it.source, time) })
131117
}
132118
}

0 commit comments

Comments
 (0)