finished forceFields args

This commit is contained in:
2024-11-24 02:33:25 +01:00
parent 17377a6235
commit 4f5a6c1ae9
2 changed files with 47 additions and 2 deletions
@@ -28,6 +28,7 @@ import java.util.*
// TODO: finish the particle ticking // TODO: finish the particle ticking
// TODO: make custom commands to create particles easier (only temporarily saved)
var ALL_PARTICLE_EMITTERS: Array<ParticleEmitter> = emptyArray() var ALL_PARTICLE_EMITTERS: Array<ParticleEmitter> = emptyArray()
@@ -301,7 +301,8 @@ class ArgConfigParticleKeys {
fun forceFields() : LiteralArgumentBuilder<ServerCommandSource> { fun forceFields() : LiteralArgumentBuilder<ServerCommandSource> {
return CommandManager.literal("ForceFields") return CommandManager.literal("ForceFields")
.then(argAddForceField()) .then(argAddForceField())
} // TODO .then(argRemoveForceField())
}
fun gravity() : LiteralArgumentBuilder<ServerCommandSource> { fun gravity() : LiteralArgumentBuilder<ServerCommandSource> {
return CommandManager.literal("gravity") return CommandManager.literal("gravity")
.then(CommandManager.argument("X", FloatArgumentType.floatArg()) .then(CommandManager.argument("X", FloatArgumentType.floatArg())
@@ -498,6 +499,49 @@ fun argAddForceField() : LiteralArgumentBuilder<ServerCommandSource> {
} }
fun argRemoveForceField() : LiteralArgumentBuilder<ServerCommandSource> {
return CommandManager.literal("remove")
.then(CommandManager.argument("Force Field Name", StringArgumentType.string())
.suggests { context, builder ->
val particleId = StringArgumentType.getString(context, "Registered Emitter ID")
val particleIndex = IntegerArgumentType.getInteger(context, "Particle Index")
val params = getEmitterParams(particleId)
val forceFields = params!!.particleTypes[particleIndex].forceFields
forceFields.iterator().forEach {
builder.suggest(it.name)
}
CompletableFuture.completedFuture(builder.build())
}
.executes { context ->
val ffName = StringArgumentType.getString(context, "Force Field Name")
val particleId = StringArgumentType.getString(context, "Registered Emitter ID")
val particleIndex = IntegerArgumentType.getInteger(context, "Particle Index")
val params = getEmitterParams(particleId)
val forceFields = params!!.particleTypes[particleIndex].forceFields
val newForceFields: MutableList<ForceField> = forceFields.toMutableList()
for (forceField in forceFields) {
if (forceField.name == ffName) {
newForceFields.remove(forceField)
}
}
val feedback = argUpdateParticleParam(
context,
particleIndex,
"forceFields",
newForceFields
)
context.source.sendFeedback( { feedback }, false)
Command.SINGLE_SUCCESS
}
)
}
fun forceFieldAddSphereExec(context: CommandContext<ServerCommandSource>) : Int { fun forceFieldAddSphereExec(context: CommandContext<ServerCommandSource>) : Int {
val particleIndex = IntegerArgumentType.getInteger(context, "Particle Index") val particleIndex = IntegerArgumentType.getInteger(context, "Particle Index")
val radius = FloatArgumentType.getFloat(context, "Radius") val radius = FloatArgumentType.getFloat(context, "Radius")
@@ -562,7 +606,7 @@ fun forceFieldGenericParams(context: CommandContext<ServerCommandSource>, shape:
val maxForce = FloatArgumentType.getFloat(context, "Max Force") val maxForce = FloatArgumentType.getFloat(context, "Max Force")
return ForceField( return ForceField(
name, name.replace(" ", "_"),
Vector3f(posX, posY, posZ), Vector3f(posX, posY, posZ),
Pair(minForce, maxForce), Pair(minForce, maxForce),
shape shape