From 981da415d89a37e7f4ac60828327986124fc967b Mon Sep 17 00:00:00 2001 From: Byte Dice Date: Mon, 18 Nov 2024 21:00:23 +0100 Subject: [PATCH] added a new command (WIP) and found a bug (see TODO's) --- .../bytedice/bde_particles/Bde_particles.kt | 3 + .../bde_particles/commands/MakeEmitter.kt | 56 +++++++++++++++++++ .../bde_particles/particle/ParticleEmitter.kt | 1 + .../particle/particleIdRegister.kt | 15 ++++- 4 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 src/main/kotlin/com/bytedice/bde_particles/commands/MakeEmitter.kt diff --git a/src/main/kotlin/com/bytedice/bde_particles/Bde_particles.kt b/src/main/kotlin/com/bytedice/bde_particles/Bde_particles.kt index 452107a..8113cea 100644 --- a/src/main/kotlin/com/bytedice/bde_particles/Bde_particles.kt +++ b/src/main/kotlin/com/bytedice/bde_particles/Bde_particles.kt @@ -1,6 +1,8 @@ package com.bytedice.bde_particles import com.bytedice.bde_particles.commands.GiveParticleEmitter +import com.bytedice.bde_particles.commands.MakeEmitter2 +import com.bytedice.bde_particles.commands.ManageEmitters import com.bytedice.bde_particles.items.getToolDetails import com.bytedice.bde_particles.math.raycastFromPlayer import com.bytedice.bde_particles.particle.* @@ -47,6 +49,7 @@ class Bde_particles : ModInitializer { CommandRegistrationCallback.EVENT.register { dispatcher, registryAccess, _ -> GiveParticleEmitter.register(dispatcher, registryAccess) + ManageEmitters .register(dispatcher) } UseItemCallback.EVENT.register(UseItemCallback { player: PlayerEntity, world: World, hand: Hand -> diff --git a/src/main/kotlin/com/bytedice/bde_particles/commands/MakeEmitter.kt b/src/main/kotlin/com/bytedice/bde_particles/commands/MakeEmitter.kt new file mode 100644 index 0000000..8e3267d --- /dev/null +++ b/src/main/kotlin/com/bytedice/bde_particles/commands/MakeEmitter.kt @@ -0,0 +1,56 @@ +package com.bytedice.bde_particles.commands + +import com.bytedice.bde_particles.particle.particleIdRegister +import com.mojang.brigadier.Command +import com.mojang.brigadier.CommandDispatcher +import com.mojang.brigadier.arguments.StringArgumentType +import com.mojang.brigadier.suggestion.SuggestionsBuilder +import net.minecraft.server.command.CommandManager +import net.minecraft.server.command.ServerCommandSource +import net.minecraft.text.Text +import java.util.concurrent.CompletableFuture + + +// ManageEmitters +// +// create + // [emitter id] + // [preset emitter id] or DEFAULT + // output -> register new emitter with a preset +// config + // [emitter id] + // [particle index] + // [param key] + // [new param value] + // output -> update the selected parameter of the selected particle id to the new value + +object ManageEmitters { + fun register(dispatcher: CommandDispatcher) { + val command = CommandManager.literal("ManageEmitters") + .requires { source -> source.hasPermissionLevel(4) } + + val allParticleIds = particleIdRegister.keys + + val particleIdArg = CommandManager.argument("Particle ID", StringArgumentType.string()) + .suggests { _, builder -> + val suggestionsBuilder = SuggestionsBuilder(builder.remaining, 0) + allParticleIds.forEach { key -> + suggestionsBuilder.suggest(key) + } + CompletableFuture.completedFuture(suggestionsBuilder.build()) + } + + dispatcher.register( + command.then( + particleIdArg.executes { context -> + val particleId = StringArgumentType.getString(context, "Particle ID") + + val feedback = Text.literal("you chose Particle ID \"$particleId\"") + + context.source.sendFeedback({ feedback }, false) + Command.SINGLE_SUCCESS + } + ) + ) + } +} \ No newline at end of file diff --git a/src/main/kotlin/com/bytedice/bde_particles/particle/ParticleEmitter.kt b/src/main/kotlin/com/bytedice/bde_particles/particle/ParticleEmitter.kt index 93f73da..ce870e4 100644 --- a/src/main/kotlin/com/bytedice/bde_particles/particle/ParticleEmitter.kt +++ b/src/main/kotlin/com/bytedice/bde_particles/particle/ParticleEmitter.kt @@ -49,6 +49,7 @@ class ParticleEmitter(private val emitterPos: Vec3d, private val emitterWorld: S private fun count() { + // TODO: this is broken or something, no particles are spawning // this is the only section I have comments // because im so damn good at cooking spaghetti diff --git a/src/main/kotlin/com/bytedice/bde_particles/particle/particleIdRegister.kt b/src/main/kotlin/com/bytedice/bde_particles/particle/particleIdRegister.kt index 694d8c2..e533161 100644 --- a/src/main/kotlin/com/bytedice/bde_particles/particle/particleIdRegister.kt +++ b/src/main/kotlin/com/bytedice/bde_particles/particle/particleIdRegister.kt @@ -11,8 +11,19 @@ fun returnParticleFunction(id: String) : ParticleEmitterParams? { } -fun addToParticleRegister(id: String, params: ParticleEmitterParams) { - particleIdRegister[id] = params +fun addToParticleRegister(id: String, params: ParticleEmitterParams) : String { + if (!particleIdRegister.containsKey(id)) { + particleIdRegister[id] = params + + val msg = "Successfully added particle id \"$id\" to register" + println(msg) + return msg + } + else { + val msg = "Particle id \"$id\" is already registered, please choose another id!" + println(msg) + return msg + } }