Skip to content

Commit 677a230

Browse files
committed
Closes #7.
Signed-off-by: Pavel Erokhin (MairwunNx) <MairwunNx@gmail.com>
1 parent da63f37 commit 677a230

1 file changed

Lines changed: 15 additions & 7 deletions

File tree

  • src/main/kotlin/com/mairwunnx/projectessentials/core/api/v1/commands

src/main/kotlin/com/mairwunnx/projectessentials/core/api/v1/commands/CommandBase.kt

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import com.mojang.brigadier.CommandDispatcher
77
import com.mojang.brigadier.builder.LiteralArgumentBuilder
88
import com.mojang.brigadier.context.CommandContext
99
import net.minecraft.command.CommandSource
10-
import net.minecraft.command.Commands
1110
import org.apache.logging.log4j.LogManager
1211
import org.apache.logging.log4j.MarkerManager
1312

@@ -51,19 +50,28 @@ abstract class CommandBase(
5150
* @since 2.0.0-SNAPSHOT.1.
5251
*/
5352
override fun register(dispatcher: CommandDispatcher<CommandSource>) {
53+
fun hack(value: String) = try {
54+
with(literal.javaClass.getDeclaredField("literal")) {
55+
isAccessible = true
56+
set(literal, value)
57+
}
58+
} catch (any: Exception) {
59+
logger.error("Failed register alias $value for $name")
60+
}
61+
5462
if (ModuleAPI.isModuleExist("cooldown")) {
5563
CommandAliases.aliases[name] = aliases.toMutableList()
5664
}
5765

5866
if (actionNeed) {
59-
val literalNode = dispatcher.register(literal.executes(::process))
60-
aliases.filter { it != name }.forEach {
61-
dispatcher.register(Commands.literal(it).executes(::process).redirect(literalNode))
67+
dispatcher.register(literal.executes { process(it) })
68+
aliases.filter { it != name }.forEach { alias ->
69+
hack(alias).run { dispatcher.register(literal.executes { process(it) }) }
6270
}
6371
} else {
64-
val literalNode = dispatcher.register(literal)
65-
aliases.filter { it != name }.forEach {
66-
dispatcher.register(Commands.literal(it).redirect(literalNode))
72+
dispatcher.register(literal)
73+
aliases.filter { it != name }.forEach { alias ->
74+
hack(alias).run { dispatcher.register(literal) }
6775
}
6876
}
6977
}

0 commit comments

Comments
 (0)