diff --git a/src/main/kotlin/me/gurkz/smitecommand/SmiteCommandMod.kt b/src/main/kotlin/me/gurkz/smitecommand/SmiteCommandMod.kt index 7385afc..5241953 100644 --- a/src/main/kotlin/me/gurkz/smitecommand/SmiteCommandMod.kt +++ b/src/main/kotlin/me/gurkz/smitecommand/SmiteCommandMod.kt @@ -19,9 +19,9 @@ import net.minecraft.server.command.CommandManager.RegistrationEnvironment import net.minecraft.server.command.ServerCommandSource import org.slf4j.Logger import org.slf4j.LoggerFactory -import java.util.* import java.util.function.Consumer import kotlin.collections.ArrayList +import kotlin.jvm.optionals.getOrNull object SmiteCommandMod : ModInitializer { @Volatile @@ -32,7 +32,7 @@ object SmiteCommandMod : ModInitializer { private var CONFIG: SmiteCommandConfig = register( SmiteCommandConfig::class.java, "GurkansSmite.json" ) { newConfig: SmiteCommandConfig -> CONFIG = newConfig } - private val VERSION: Optional? = FabricLoader.getInstance().getModContainer(MOD_ID).map { container -> container.metadata.version.toString() } + private val VERSION: String? = FabricLoader.getInstance().getModContainer(MOD_ID).map { container -> container.metadata.version.toString() }.getOrNull() fun adventure(): MinecraftServerAudiences { val ret = this.adventure @@ -49,7 +49,7 @@ object SmiteCommandMod : ModInitializer { addCommand( CommandManager.literal("smite").requires(Permissions.require("smitecommand.smite", 4)).then( - CommandManager.argument("target", EntityArgumentType.player()) + CommandManager.argument("targets", EntityArgumentType.players()) .executes { ctx: CommandContext -> smite(ctx, CONFIG.messageConfig) }) diff --git a/src/main/kotlin/me/gurkz/smitecommand/command/SmiteCommand.kt b/src/main/kotlin/me/gurkz/smitecommand/command/SmiteCommand.kt index f966acc..5a57c44 100644 --- a/src/main/kotlin/me/gurkz/smitecommand/command/SmiteCommand.kt +++ b/src/main/kotlin/me/gurkz/smitecommand/command/SmiteCommand.kt @@ -12,30 +12,37 @@ import net.minecraft.server.command.ServerCommandSource @Throws(CommandSyntaxException::class) fun smite(ctx: CommandContext, messageConfig: Map): Int { - val target = EntityArgumentType.getPlayer(ctx, "target") - - val world = target.serverWorld - val lightningEntity = LightningEntity(EntityType.LIGHTNING_BOLT, world) - - lightningEntity.setPosition(target.pos) - - world.spawnEntity(lightningEntity) + val targets = EntityArgumentType.getPlayers(ctx, "targets") val miniMessage = MiniMessage.miniMessage() - val senderMessage = messageConfig[MessageConfigKeys.SenderMessage] val targetMessage = messageConfig[MessageConfigKeys.TargetMessage] + val usernames = if (targets.size == 1) { + targets.first().name.string + } else { + targets.joinToString(", ") { it.name.string } + } + if (senderMessage != null) { ctx.source.sendMessage(miniMessage.deserialize(senderMessage, Placeholder.unparsed("target-name", - target.name.string + usernames ))) } - if (targetMessage !== null) { - target.sendMessage(miniMessage.deserialize(targetMessage)) - } + for (target in targets) { + println("target") + val world = target.serverWorld + val lightningEntity = LightningEntity(EntityType.LIGHTNING_BOLT, world) + + lightningEntity.setPosition(target.pos) + world.spawnEntity(lightningEntity) + + if (targetMessage !== null) { + target.sendMessage(miniMessage.deserialize(targetMessage)) + } + } return 1 } \ No newline at end of file