From 1500a3de3a52fe0cb9cbcdcce6684ec09deb0904 Mon Sep 17 00:00:00 2001 From: ByteDice Date: Fri, 22 Nov 2024 18:44:37 +0100 Subject: [PATCH] added all emitterParams to config subcommand --- .../commands/ManageConfigArgs.kt | 95 +++++++++++++++++++ .../bde_particles/commands/ManageEmitters.kt | 17 ++-- .../commands/ManageEmittersConfigArgs.kt | 47 --------- 3 files changed, 105 insertions(+), 54 deletions(-) create mode 100644 src/main/kotlin/com/bytedice/bde_particles/commands/ManageConfigArgs.kt delete mode 100644 src/main/kotlin/com/bytedice/bde_particles/commands/ManageEmittersConfigArgs.kt diff --git a/src/main/kotlin/com/bytedice/bde_particles/commands/ManageConfigArgs.kt b/src/main/kotlin/com/bytedice/bde_particles/commands/ManageConfigArgs.kt new file mode 100644 index 0000000..f7a7953 --- /dev/null +++ b/src/main/kotlin/com/bytedice/bde_particles/commands/ManageConfigArgs.kt @@ -0,0 +1,95 @@ +package com.bytedice.bde_particles.commands +import com.bytedice.bde_particles.particleIdRegister.updateSingleParam +import com.mojang.brigadier.Command +import com.mojang.brigadier.arguments.IntegerArgumentType +import com.mojang.brigadier.arguments.StringArgumentType +import com.mojang.brigadier.builder.LiteralArgumentBuilder +import com.mojang.brigadier.context.CommandContext +import net.minecraft.server.command.CommandManager +import net.minecraft.server.command.ServerCommandSource +import net.minecraft.text.MutableText +import net.minecraft.text.Style +import net.minecraft.text.Text +import java.awt.Color + + +fun argUpdateEmitterParam(context: CommandContext, paramName: String, typeValue: Any) : MutableText { + val emitterIdVal = StringArgumentType.getString(context, "Registered Emitter ID") + + val success = updateSingleParam(emitterIdVal, -1, "maxCount", typeValue) + + val feedback = if (success) { + Text.literal("BPS - Successfully updated Emitter ID \"$emitterIdVal\" parameter \"$paramName\" to value \"$typeValue\"") + .setStyle(Style.EMPTY.withColor(Color(0, 200, 0).rgb)) + } + else { + Text.literal("BPS - Failed to update Emitter ID \"$emitterIdVal\" parameter \"$paramName\" to value \"$typeValue\": Unknown Error") + .setStyle(Style.EMPTY.withColor(Color(200, 0, 0).rgb)) + } + + return feedback +} + + +class ArgConfigEmitterKeys { + fun maxCount() : LiteralArgumentBuilder { + return CommandManager.literal("maxCount") + .then( + CommandManager.argument("Int", IntegerArgumentType.integer()) + .executes { context -> + val typeValue = IntegerArgumentType.getInteger(context, "Int") + val feedback = argUpdateEmitterParam(context, "maxCount", typeValue) + context.source.sendFeedback({ feedback }, false) + Command.SINGLE_SUCCESS + } + ) + } + fun spawnsPerTick() : LiteralArgumentBuilder { + return CommandManager.literal("spawnsPerTick") + .then( + CommandManager.argument("Int", IntegerArgumentType.integer()) + .executes { context -> + val typeValue = IntegerArgumentType.getInteger(context, "Int") + val feedback = argUpdateEmitterParam(context, "spawnsPerTick", typeValue) + context.source.sendFeedback({ feedback }, false) + Command.SINGLE_SUCCESS + } + ) + } + fun loopDur() : LiteralArgumentBuilder { + return CommandManager.literal("loopDur") + .then( + CommandManager.argument("Int", IntegerArgumentType.integer()) + .executes { context -> + val typeValue = IntegerArgumentType.getInteger(context, "Int") + val feedback = argUpdateEmitterParam(context, "loopDur", typeValue) + context.source.sendFeedback({ feedback }, false) + Command.SINGLE_SUCCESS + } + ) + } + fun loopDelay() : LiteralArgumentBuilder { + return CommandManager.literal("loopDelay") + .then( + CommandManager.argument("Int", IntegerArgumentType.integer()) + .executes { context -> + val typeValue = IntegerArgumentType.getInteger(context, "Int") + val feedback = argUpdateEmitterParam(context, "loopDelay", typeValue) + context.source.sendFeedback({ feedback }, false) + Command.SINGLE_SUCCESS + } + ) + } + fun loopCount() : LiteralArgumentBuilder { + return CommandManager.literal("loopCount") + .then( + CommandManager.argument("Int", IntegerArgumentType.integer()) + .executes { context -> + val typeValue = IntegerArgumentType.getInteger(context, "Int") + val feedback = argUpdateEmitterParam(context, "loopCount", typeValue) + context.source.sendFeedback({ feedback }, false) + Command.SINGLE_SUCCESS + } + ) + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/bytedice/bde_particles/commands/ManageEmitters.kt b/src/main/kotlin/com/bytedice/bde_particles/commands/ManageEmitters.kt index c23e060..b9490cd 100644 --- a/src/main/kotlin/com/bytedice/bde_particles/commands/ManageEmitters.kt +++ b/src/main/kotlin/com/bytedice/bde_particles/commands/ManageEmitters.kt @@ -79,6 +79,8 @@ val emitterIdSuggestion: RequiredArgumentBuilder = CompletableFuture.completedFuture(suggestionsBuilder.build()) } +val configKeys = ArgConfigEmitterKeys() + // TODO: fix "new emitter id" error fun argCreate() : LiteralArgumentBuilder { @@ -218,17 +220,18 @@ fun argConfig() : LiteralArgumentBuilder { return CommandManager.literal("config") .then( emitterIdSuggestion - .then(argConfigEmitter()) + .then( + CommandManager.literal("EMITTER") + .then(configKeys.maxCount()) + .then(configKeys.spawnsPerTick()) + .then(configKeys.loopDur()) + .then(configKeys.loopDelay()) + .then(configKeys.loopCount()) + ) ) } -fun argConfigEmitter() : LiteralArgumentBuilder { - return CommandManager.literal("EMITTER") - .then(ArgConfigEmitterKeys().maxCount()) -} - - fun makeCommandBlock(emitterData: Map): ItemStack { val i = ItemStack(Items.COMMAND_BLOCK) diff --git a/src/main/kotlin/com/bytedice/bde_particles/commands/ManageEmittersConfigArgs.kt b/src/main/kotlin/com/bytedice/bde_particles/commands/ManageEmittersConfigArgs.kt deleted file mode 100644 index fea938e..0000000 --- a/src/main/kotlin/com/bytedice/bde_particles/commands/ManageEmittersConfigArgs.kt +++ /dev/null @@ -1,47 +0,0 @@ -package com.bytedice.bde_particles.commands -import com.bytedice.bde_particles.particleIdRegister.updateSingleParam -import com.mojang.brigadier.Command -import com.mojang.brigadier.arguments.IntegerArgumentType -import com.mojang.brigadier.arguments.StringArgumentType -import com.mojang.brigadier.builder.LiteralArgumentBuilder -import com.mojang.brigadier.context.CommandContext -import net.minecraft.server.command.CommandManager -import net.minecraft.server.command.ServerCommandSource -import net.minecraft.text.MutableText -import net.minecraft.text.Style -import net.minecraft.text.Text -import java.awt.Color - - -fun argUpdateEmitterParam(context: CommandContext, paramName: String, typeValue: Any) : MutableText { - val emitterIdVal = StringArgumentType.getString(context, "Registered Emitter ID") - - val success = updateSingleParam(emitterIdVal, -1, "maxCount", typeValue) - - val feedback = if (success) { - Text.literal("BPS - Successfully updated Emitter ID \"$emitterIdVal\" parameter \"$paramName\" to value \"$typeValue\"") - .setStyle(Style.EMPTY.withColor(Color(0, 200, 0).rgb)) - } - else { - Text.literal("BPS - Failed to update Emitter ID \"$emitterIdVal\" parameter \"$paramName\" to value \"$typeValue\": Unknown Error") - .setStyle(Style.EMPTY.withColor(Color(200, 0, 0).rgb)) - } - - return feedback -} - - -class ArgConfigEmitterKeys { - fun maxCount() : LiteralArgumentBuilder { - return CommandManager.literal("maxCount") - .then( - CommandManager.argument("Int", IntegerArgumentType.integer()) - .executes { context -> - val typeValue = IntegerArgumentType.getInteger(context, "Int") - val feedback = argUpdateEmitterParam(context, "maxCount", typeValue) - context.source.sendFeedback({ feedback }, false) - Command.SINGLE_SUCCESS - } - ) - } -} \ No newline at end of file