Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 2cbefd4

Browse files
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)

AltStyle によって変換されたページ (->オリジナル) /