@@ -2,77 +2,80 @@ package ru.astrainteractive.astramarket.command.auction
22
33import com.mojang.brigadier.arguments.FloatArgumentType
44import com.mojang.brigadier.arguments.IntegerArgumentType
5- import com.mojang.brigadier.tree.LiteralCommandNode
6- import io.papermc.paper.command.brigadier.CommandSourceStack
7- import ru.astrainteractive.astralibs.command.api.util.argument
8- import ru.astrainteractive.astralibs.command.api.util.command
9- import ru.astrainteractive.astralibs.command.api.util.literal
10- import ru.astrainteractive.astralibs.command.api.util.requireArgument
11- import ru.astrainteractive.astralibs.command.api.util.requirePlayer
12- import ru.astrainteractive.astralibs.command.api.util.runs
5+ import com.mojang.brigadier.builder.LiteralArgumentBuilder
6+ import ru.astrainteractive.astralibs.command.api.brigadier.command.MultiplatformCommand
137import ru.astrainteractive.astralibs.kyori.KyoriComponentSerializer
148import ru.astrainteractive.astralibs.kyori.unwrap
9+ import ru.astrainteractive.astralibs.server.player.BukkitOnlineKPlayer
1510import ru.astrainteractive.astramarket.command.errorhandler.BrigadierErrorHandler
1611import ru.astrainteractive.klibs.kstorage.api.CachedKrate
12+ import ru.astrainteractive.klibs.mikro.core.util.cast
1713
1814internal class AuctionCommandFactory (
19- kyori : CachedKrate <KyoriComponentSerializer >,
2015 private val executor : AuctionCommandExecutor ,
21- private val errorHandler : BrigadierErrorHandler
22- ) : KyoriComponentSerializer by kyori.unwrap() {
16+ private val errorHandler : BrigadierErrorHandler ,
17+ private val multiplatformCommand : MultiplatformCommand <* >,
18+ kyoriKrate : CachedKrate <KyoriComponentSerializer >
19+ ) : KyoriComponentSerializer by kyoriKrate.unwrap() {
2320
2421 @Suppress(" LongMethod" )
25- private fun create (alias : String ): LiteralCommandNode <CommandSourceStack > {
26- return command(alias) {
27- literal(" sell" ) {
28- argument(" price" , FloatArgumentType .floatArg(0f , Float .MAX_VALUE )) { priceArg ->
29- argument(" amount" , IntegerArgumentType .integer(0 , Int .MAX_VALUE )) { amountArg ->
22+ private fun create (alias : String ): LiteralArgumentBuilder <* > {
23+ return with (multiplatformCommand) {
24+ command(alias) {
25+ literal(" sell" ) {
26+ argument(" price" , FloatArgumentType .floatArg(0f , Float .MAX_VALUE )) { priceArg ->
27+ argument(" amount" , IntegerArgumentType .integer(0 , Int .MAX_VALUE )) { amountArg ->
28+ runs(errorHandler::handle) { ctx ->
29+ val player = ctx.requirePlayer()
30+ AuctionCommand .Result .Sell (
31+ player = player,
32+ itemInstance = player
33+ .cast<BukkitOnlineKPlayer >()
34+ .instance
35+ .inventory
36+ .itemInMainHand,
37+ amount = ctx.requireArgument(amountArg),
38+ price = ctx.requireArgument(priceArg)
39+ ).run (executor::execute)
40+ }
41+ }
3042 runs(errorHandler::handle) { ctx ->
3143 val player = ctx.requirePlayer()
3244 AuctionCommand .Result .Sell (
3345 player = player,
3446 itemInstance = player
47+ .cast<BukkitOnlineKPlayer >()
48+ .instance
3549 .inventory
3650 .itemInMainHand,
37- amount = ctx.requireArgument(amountArg) ,
51+ amount = 1 ,
3852 price = ctx.requireArgument(priceArg)
3953 ).run (executor::execute)
4054 }
4155 }
56+ }
57+ literal(" players" ) {
4258 runs(errorHandler::handle) { ctx ->
4359 val player = ctx.requirePlayer()
44- AuctionCommand .Result .Sell (
60+ AuctionCommand .Result .OpenPlayers (
4561 player = player,
46- itemInstance = player
47- .inventory
48- .itemInMainHand,
49- amount = 1 ,
50- price = ctx.requireArgument(priceArg)
62+ isExpired = false
5163 ).run (executor::execute)
5264 }
5365 }
54- }
55- literal(" players" ) {
5666 runs(errorHandler::handle) { ctx ->
5767 val player = ctx.requirePlayer()
58- AuctionCommand .Result .OpenPlayers (
68+ AuctionCommand .Result .OpenSlots (
5969 player = player,
60- isExpired = false
70+ isExpired = false ,
71+ targetPlayerUUID = null
6172 ).run (executor::execute)
6273 }
6374 }
64- runs(errorHandler::handle) { ctx ->
65- val player = ctx.requirePlayer()
66- AuctionCommand .Result .OpenSlots (
67- player = player,
68- isExpired = false ,
69- targetPlayerUUID = null
70- ).run (executor::execute)
71- }
72- }.build()
75+ }
7376 }
7477
75- fun create (): List <LiteralCommandNode < CommandSourceStack >> {
78+ fun create (): List <LiteralArgumentBuilder < * >> {
7679 return listOf (" market" , " ah" , " auctionhouse" , " aauc" , " amarket" )
7780 .map(::create)
7881 }
0 commit comments