Skip to content

Commit

Permalink
fix: executions not throwing & incorrect context arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
StillLutto committed Dec 25, 2024
1 parent 7e741eb commit 482ada3
Show file tree
Hide file tree
Showing 66 changed files with 393 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,13 @@ typealias CommandNode = HashMap<String, (CommandContext<CommandSender>) -> Any?>
class CommandContext<T : CommandSender>(val arguments: CommandNode, val sender: T, val input: String) {

inline fun <reified T> getArgument(name: String): T {
println("name: $name")
println("arguments: ${arguments.map { it.key }}")
val argument = arguments[name] ?: throw NoSuchElementException("No argument with the name $name")
val context = this as CommandContext<CommandSender>
println("argument output: ${argument(context)}")
println("context input: ${context.input}")
println("argument class: ${argument(context)?.let { it::class.simpleName } ?: "null"}")
return argument(context) as? T
?: throw ArgumentCastMismatchException("Argument of name '$name' cannot be cast into ${T::class.simpleName}! Check if the argument you are getting returns this class.")
}
Expand Down
2 changes: 1 addition & 1 deletion server/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ tasks {

runServer {
minecraftVersion("1.13")
jvmArgs("-Xmx2G")
jvmArgs("-Xmx4G")
}
}

Expand Down
3 changes: 3 additions & 0 deletions server/src/main/kotlin/com/undefined/stellar/Main.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,11 @@ class Main : JavaPlugin() {
StellarCommand("spawn-particle")
.addParticleArgument("particle")
.addExecution<Player> {
println("getting data...")
val data = getArgument<ParticleData<*>>("particle")
println("data gotten: ${data.particle.name} and ${data.options?.let { data.options } ?: "null"}")
sender.spawnParticle(data.particle, sender.eyeLocation, 10, 1.0, 1.0, 1.0, data.options)
println("spawned particle")
}
.register(this)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer
import net.minecraft.server.v1_13_R1.CommandListenerWrapper
import net.minecraft.server.v1_13_R1.MinecraftServer
import org.bukkit.Bukkit
import org.bukkit.scheduler.BukkitRunnable

@Suppress("DEPRECATION")
object BrigadierCommandHelper {
Expand Down Expand Up @@ -68,9 +69,17 @@ object BrigadierCommandHelper {
): List<AbstractStellarArgument<*>> {
if (listOfArguments.size == context.nodes.size - 1) return listOfArguments
for (argument in baseCommand.arguments)
if (argument.name == context.nodes.entries.first().key.name)
if (context.nodes.entries.any { it.key.name == argument.name })
return getArguments(argument, context, currentIndex + 1, listOfArguments + argument)
return emptyList()
}

}

fun sync(execution: () -> Unit) {
object : BukkitRunnable() {
override fun run() {
execution()
}
}.runTask(CommandRegistrar.plugin)
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ object CommandAdapter {
private fun handleCommandFunctions(command: AbstractStellarCommand<*>, brigadierCommand: ArgumentBuilder<CommandListenerWrapper, *>) {
if (command.executions.isNotEmpty() || command.executions.isNotEmpty())
brigadierCommand.executes { context ->
BrigadierCommandHelper.handleExecutions(command, context)
sync {
BrigadierCommandHelper.handleExecutions(command, context)
}
1
}
brigadierCommand.requires { source ->
Expand Down Expand Up @@ -57,13 +59,15 @@ object CommandAdapter {

private fun handleGreedyStringWordFunctions(argument: PhraseArgument, argumentBuilder: RequiredArgumentBuilder<CommandListenerWrapper, *>) {
argumentBuilder.executes { context ->
val greedyContext = CommandContextAdapter.getGreedyCommandContext(context)
sync {
val greedyContext = CommandContextAdapter.getGreedyCommandContext(context)

for (i in greedyContext.arguments.indices) {
val word = argument.words[i] ?: continue
for (runnable in word.runnables) runnable(greedyContext)
if (i == greedyContext.arguments.lastIndex)
for (execution in word.executions) execution(greedyContext)
for (i in greedyContext.arguments.indices) {
val word = argument.words[i] ?: continue
for (runnable in word.runnables) runnable(greedyContext)
if (i == greedyContext.arguments.lastIndex)
for (execution in word.executions) execution(greedyContext)
}
}
Command.SINGLE_SUCCESS
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,17 @@ import org.bukkit.command.CommandSender
object CommandContextAdapter {

fun getStellarCommandContext(context: CommandContext<CommandListenerWrapper>): com.undefined.stellar.data.argument.CommandContext<CommandSender> {
println("getting stellar context...")
val input = context.input.removePrefix("/")
println("input: $input")
val baseCommand: AbstractStellarCommand<*> = StellarCommands.getStellarCommand(context.nodes.entries.first().key.name)!!
println("base command: ${baseCommand.name}")
val arguments = BrigadierCommandHelper.getArguments(baseCommand, context)
println("arguments: ${arguments.joinToString(", ") { it.name }}")
if (arguments.filter { it !is LiteralStellarArgument }.groupingBy { it.name }.eachCount().any { it.value > 1 }) throw DuplicateArgumentNameException()
println("No duplicates found!")
val parsedArguments: CommandNode =
BrigadierCommandHelper.getArguments(baseCommand, context)
arguments
.associate<AbstractStellarArgument<*>, String, (com.undefined.stellar.data.argument.CommandContext<CommandSender>) -> Any?> { argument ->
if (argument is CustomArgument) return@associate Pair(argument.name) { argument.parse(it) }
if (argument is LiteralStellarArgument) return@associate Pair(argument.name) { throw LiteralArgumentMismatchException() }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ import org.bukkit.plugin.java.JavaPlugin

object CommandRegistrar : AbstractCommandRegistrar {

lateinit var plugin: JavaPlugin

override fun register(command: AbstractStellarCommand<*>, plugin: JavaPlugin) {
this.plugin = plugin
BrigadierCommandHelper.handleHelpTopic(command)
for (name in command.aliases + command.name)
BrigadierCommandHelper.register(CommandAdapter.getBaseCommand(command, name))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer
import net.minecraft.server.v1_13_R2.CommandListenerWrapper
import net.minecraft.server.v1_13_R2.MinecraftServer
import org.bukkit.Bukkit
import org.bukkit.scheduler.BukkitRunnable

@Suppress("DEPRECATION")
object BrigadierCommandHelper {
Expand Down Expand Up @@ -68,9 +69,17 @@ object BrigadierCommandHelper {
): List<AbstractStellarArgument<*>> {
if (listOfArguments.size == context.nodes.size - 1) return listOfArguments
for (argument in baseCommand.arguments)
if (argument.name == context.nodes.entries.first().key.name)
if (context.nodes.entries.any { it.key.name == argument.name })
return getArguments(argument, context, currentIndex + 1, listOfArguments + argument)
return emptyList()
}

}

fun sync(execution: () -> Unit) {
object : BukkitRunnable() {
override fun run() {
execution()
}
}.runTask(CommandRegistrar.plugin)
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ import org.bukkit.plugin.java.JavaPlugin

object CommandRegistrar : AbstractCommandRegistrar {

lateinit var plugin: JavaPlugin

override fun register(command: AbstractStellarCommand<*>, plugin: JavaPlugin) {
this.plugin = plugin
BrigadierCommandHelper.handleHelpTopic(command)
for (name in command.aliases + command.name)
BrigadierCommandHelper.register(CommandAdapter.getBaseCommand(command, name))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer
import net.minecraft.server.v1_13_R2.CommandListenerWrapper
import net.minecraft.server.v1_13_R2.MinecraftServer
import org.bukkit.Bukkit
import org.bukkit.scheduler.BukkitRunnable

@Suppress("DEPRECATION")
object BrigadierCommandHelper {
Expand Down Expand Up @@ -68,9 +69,17 @@ object BrigadierCommandHelper {
): List<AbstractStellarArgument<*>> {
if (listOfArguments.size == context.nodes.size - 1) return listOfArguments
for (argument in baseCommand.arguments)
if (argument.name == context.nodes.entries.first().key.name)
if (context.nodes.entries.any { it.key.name == argument.name })
return getArguments(argument, context, currentIndex + 1, listOfArguments + argument)
return emptyList()
}

}

fun sync(execution: () -> Unit) {
object : BukkitRunnable() {
override fun run() {
execution()
}
}.runTask(CommandRegistrar.plugin)
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ import org.bukkit.plugin.java.JavaPlugin

object CommandRegistrar : AbstractCommandRegistrar {

lateinit var plugin: JavaPlugin

override fun register(command: AbstractStellarCommand<*>, plugin: JavaPlugin) {
this.plugin = plugin
BrigadierCommandHelper.handleHelpTopic(command)
for (name in command.aliases + command.name)
BrigadierCommandHelper.register(CommandAdapter.getBaseCommand(command, name))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer
import net.minecraft.server.v1_14_R1.CommandListenerWrapper
import net.minecraft.server.v1_14_R1.MinecraftServer
import org.bukkit.Bukkit
import org.bukkit.scheduler.BukkitRunnable

@Suppress("DEPRECATION")
object BrigadierCommandHelper {
Expand Down Expand Up @@ -73,4 +74,12 @@ object BrigadierCommandHelper {
return emptyList()
}

}

fun sync(execution: () -> Unit) {
object : BukkitRunnable() {
override fun run() {
execution()
}
}.runTask(CommandRegistrar.plugin)
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ import org.bukkit.plugin.java.JavaPlugin

object CommandRegistrar : AbstractCommandRegistrar {

lateinit var plugin: JavaPlugin

override fun register(command: AbstractStellarCommand<*>, plugin: JavaPlugin) {
this.plugin = plugin
BrigadierCommandHelper.handleHelpTopic(command)
for (name in command.aliases + command.name)
BrigadierCommandHelper.register(CommandAdapter.getBaseCommand(command, name))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer
import net.minecraft.server.v1_14_R1.CommandListenerWrapper
import net.minecraft.server.v1_14_R1.MinecraftServer
import org.bukkit.Bukkit
import org.bukkit.scheduler.BukkitRunnable

@Suppress("DEPRECATION")
object BrigadierCommandHelper {
Expand Down Expand Up @@ -73,4 +74,12 @@ object BrigadierCommandHelper {
return emptyList()
}

}

fun sync(execution: () -> Unit) {
object : BukkitRunnable() {
override fun run() {
execution()
}
}.runTask(CommandRegistrar.plugin)
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ import org.bukkit.plugin.java.JavaPlugin

object CommandRegistrar : AbstractCommandRegistrar {

lateinit var plugin: JavaPlugin

override fun register(command: AbstractStellarCommand<*>, plugin: JavaPlugin) {
this.plugin = plugin
BrigadierCommandHelper.handleHelpTopic(command)
for (name in command.aliases + command.name)
BrigadierCommandHelper.register(CommandAdapter.getBaseCommand(command, name))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer
import net.minecraft.server.v1_14_R1.CommandListenerWrapper
import net.minecraft.server.v1_14_R1.MinecraftServer
import org.bukkit.Bukkit
import org.bukkit.scheduler.BukkitRunnable

@Suppress("DEPRECATION")
object BrigadierCommandHelper {
Expand Down Expand Up @@ -73,4 +74,12 @@ object BrigadierCommandHelper {
return emptyList()
}

}

fun sync(execution: () -> Unit) {
object : BukkitRunnable() {
override fun run() {
execution()
}
}.runTask(CommandRegistrar.plugin)
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ import org.bukkit.plugin.java.JavaPlugin

object CommandRegistrar : AbstractCommandRegistrar {

lateinit var plugin: JavaPlugin

override fun register(command: AbstractStellarCommand<*>, plugin: JavaPlugin) {
this.plugin = plugin
BrigadierCommandHelper.handleHelpTopic(command)
for (name in command.aliases + command.name)
BrigadierCommandHelper.register(CommandAdapter.getBaseCommand(command, name))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer
import net.minecraft.server.v1_14_R1.CommandListenerWrapper
import net.minecraft.server.v1_14_R1.MinecraftServer
import org.bukkit.Bukkit
import org.bukkit.scheduler.BukkitRunnable

@Suppress("DEPRECATION")
object BrigadierCommandHelper {
Expand Down Expand Up @@ -73,4 +74,12 @@ object BrigadierCommandHelper {
return emptyList()
}

}

fun sync(execution: () -> Unit) {
object : BukkitRunnable() {
override fun run() {
execution()
}
}.runTask(CommandRegistrar.plugin)
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ import org.bukkit.plugin.java.JavaPlugin

object CommandRegistrar : AbstractCommandRegistrar {

lateinit var plugin: JavaPlugin

override fun register(command: AbstractStellarCommand<*>, plugin: JavaPlugin) {
this.plugin = plugin
BrigadierCommandHelper.handleHelpTopic(command)
for (name in command.aliases + command.name)
BrigadierCommandHelper.register(CommandAdapter.getBaseCommand(command, name))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer
import net.minecraft.server.v1_15_R1.CommandListenerWrapper
import net.minecraft.server.v1_15_R1.MinecraftServer
import org.bukkit.Bukkit
import org.bukkit.scheduler.BukkitRunnable

@Suppress("DEPRECATION")
object BrigadierCommandHelper {
Expand Down Expand Up @@ -73,4 +74,12 @@ object BrigadierCommandHelper {
return emptyList()
}

}

fun sync(execution: () -> Unit) {
object : BukkitRunnable() {
override fun run() {
execution()
}
}.runTask(CommandRegistrar.plugin)
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ import org.bukkit.plugin.java.JavaPlugin

object CommandRegistrar : AbstractCommandRegistrar {

lateinit var plugin: JavaPlugin

override fun register(command: AbstractStellarCommand<*>, plugin: JavaPlugin) {
this.plugin = plugin
BrigadierCommandHelper.handleHelpTopic(command)
for (name in command.aliases + command.name)
BrigadierCommandHelper.register(CommandAdapter.getBaseCommand(command, name))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer
import net.minecraft.server.v1_15_R1.CommandListenerWrapper
import net.minecraft.server.v1_15_R1.MinecraftServer
import org.bukkit.Bukkit
import org.bukkit.scheduler.BukkitRunnable

@Suppress("DEPRECATION")
object BrigadierCommandHelper {
Expand Down Expand Up @@ -73,4 +74,12 @@ object BrigadierCommandHelper {
return emptyList()
}

}

fun sync(execution: () -> Unit) {
object : BukkitRunnable() {
override fun run() {
execution()
}
}.runTask(CommandRegistrar.plugin)
}
Loading

0 comments on commit 482ada3

Please sign in to comment.