From 9fa9460a7cec563ed8cf1f9019ba64a52e69d787 Mon Sep 17 00:00:00 2001 From: Roman Makeev Date: Sat, 21 Mar 2026 13:16:05 +0300 Subject: [PATCH 1/2] update dependencies --- gradle/libs.versions.toml | 4 +- .../astramarket/di/RootModule.kt | 10 ++- .../command/auction/AuctionCommand.kt | 12 ++- .../command/auction/AuctionCommandExecutor.kt | 4 +- .../command/auction/AuctionCommandFactory.kt | 77 ++++++++++--------- .../astramarket/command/di/CommandModule.kt | 24 +++--- .../errorhandler/BrigadierErrorHandler.kt | 26 ++++--- .../command/reload/ReloadCommandFactory.kt | 38 ++++----- .../astramarket/core/PluginPermission.kt | 2 +- .../astramarket/gui/players/PlayersGui.kt | 13 ++-- .../astramarket/gui/router/GuiRouter.kt | 6 +- .../astramarket/gui/router/GuiRouterImpl.kt | 2 +- .../astramarket/gui/slots/SlotsGui.kt | 17 ++-- .../data/bridge/BukkitAuctionsBridge.kt | 6 +- 14 files changed, 136 insertions(+), 105 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 936c784..d4132e0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -17,7 +17,7 @@ jda-webhook = "0.8.4" klibs-gradleplugin = "1.13.2" klibs-kdi = "1.4.8" klibs-kstorage = "4.5.0" -klibs-mikro = "1.21.0" +klibs-mikro = "1.22.0" kotlin-benchmark = "0.4.16" kotlin-coroutines = "1.10.2" kotlin-datetime = "0.7.1-0.6.x-compat" @@ -26,7 +26,7 @@ kotlin-serialization = "1.10.0" kotlin-serialization-kaml = "0.104.0" kotlin-version = "2.2.0" ktor = "3.4.0" -minecraft-astralibs = "3.31.3" +minecraft-astralibs = "3.33.0" minecraft-bstats = "3.2.1" minecraft-bungee = "1.21-R0.5-SNAPSHOT" minecraft-essentialsx = "2.21.2" diff --git a/instances/bukkit/src/main/kotlin/ru/astrainteractive/astramarket/di/RootModule.kt b/instances/bukkit/src/main/kotlin/ru/astrainteractive/astramarket/di/RootModule.kt index be0d364..5ac8c1b 100644 --- a/instances/bukkit/src/main/kotlin/ru/astrainteractive/astramarket/di/RootModule.kt +++ b/instances/bukkit/src/main/kotlin/ru/astrainteractive/astramarket/di/RootModule.kt @@ -3,6 +3,9 @@ package ru.astrainteractive.astramarket.di import org.bukkit.Bukkit import org.bukkit.entity.Player import org.bukkit.event.HandlerList +import ru.astrainteractive.astralibs.command.api.brigadier.command.MultiplatformCommand +import ru.astrainteractive.astralibs.command.api.brigadier.command.PaperMultiplatformCommands +import ru.astrainteractive.astralibs.command.api.registrar.PaperCommandRegistrarContext import ru.astrainteractive.astralibs.lifecycle.Lifecycle import ru.astrainteractive.astralibs.lifecycle.LifecyclePlugin import ru.astrainteractive.astramarket.command.di.CommandModule @@ -58,7 +61,12 @@ internal class RootModule( coreModule = coreModule, bukkitCoreModule = coreModule, routerModule = routerModule, - marketViewModule = marketViewModule + marketViewModule = marketViewModule, + multiplatformCommand = MultiplatformCommand(PaperMultiplatformCommands()), + commandRegistrarContext = PaperCommandRegistrarContext( + mainScope = coreModule.mainScope, + plugin = plugin + ), ) val workerModule: WorkerModule = WorkerModule.Default( diff --git a/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/auction/AuctionCommand.kt b/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/auction/AuctionCommand.kt index af2226b..eff42d0 100644 --- a/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/auction/AuctionCommand.kt +++ b/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/auction/AuctionCommand.kt @@ -1,20 +1,24 @@ package ru.astrainteractive.astramarket.command.auction -import org.bukkit.entity.Player import org.bukkit.inventory.ItemStack +import ru.astrainteractive.astralibs.server.player.OnlineKPlayer import java.util.UUID internal interface AuctionCommand { sealed interface Result { class OpenSlots( - val player: Player, + val player: OnlineKPlayer, val isExpired: Boolean, val targetPlayerUUID: UUID? ) : Result - class OpenPlayers(val player: Player, val isExpired: Boolean) : Result + class OpenPlayers( + val player: OnlineKPlayer, + val isExpired: Boolean + ) : Result + class Sell( - val player: Player, + val player: OnlineKPlayer, val itemInstance: ItemStack, val amount: Int, val price: Float diff --git a/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/auction/AuctionCommandExecutor.kt b/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/auction/AuctionCommandExecutor.kt index da330f8..c2679aa 100644 --- a/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/auction/AuctionCommandExecutor.kt +++ b/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/auction/AuctionCommandExecutor.kt @@ -65,7 +65,7 @@ internal class AuctionCommandExecutor( withContext(dispatchers.Main) { itemInstance.amount -= calculatedAmount } val marketSlot = MarketSlot( id = -1, - minecraftUuid = input.player.uniqueId.toString(), + minecraftUuid = input.player.uuid.toString(), time = System.currentTimeMillis(), item = encodedItem, price = input.price, @@ -74,7 +74,7 @@ internal class AuctionCommandExecutor( ) val param = CreateAuctionUseCase.Params( marketSlot = marketSlot, - playerUUID = input.player.uniqueId, + playerUUID = input.player.uuid, ) val useCaseResult = createAuctionUseCase.invoke(param) withContext(dispatchers.Main) { diff --git a/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/auction/AuctionCommandFactory.kt b/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/auction/AuctionCommandFactory.kt index 41d6269..fad562e 100644 --- a/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/auction/AuctionCommandFactory.kt +++ b/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/auction/AuctionCommandFactory.kt @@ -2,77 +2,80 @@ package ru.astrainteractive.astramarket.command.auction import com.mojang.brigadier.arguments.FloatArgumentType import com.mojang.brigadier.arguments.IntegerArgumentType -import com.mojang.brigadier.tree.LiteralCommandNode -import io.papermc.paper.command.brigadier.CommandSourceStack -import ru.astrainteractive.astralibs.command.api.util.argument -import ru.astrainteractive.astralibs.command.api.util.command -import ru.astrainteractive.astralibs.command.api.util.literal -import ru.astrainteractive.astralibs.command.api.util.requireArgument -import ru.astrainteractive.astralibs.command.api.util.requirePlayer -import ru.astrainteractive.astralibs.command.api.util.runs +import com.mojang.brigadier.builder.LiteralArgumentBuilder +import ru.astrainteractive.astralibs.command.api.brigadier.command.MultiplatformCommand import ru.astrainteractive.astralibs.kyori.KyoriComponentSerializer import ru.astrainteractive.astralibs.kyori.unwrap +import ru.astrainteractive.astralibs.server.player.BukkitOnlineKPlayer import ru.astrainteractive.astramarket.command.errorhandler.BrigadierErrorHandler import ru.astrainteractive.klibs.kstorage.api.CachedKrate +import ru.astrainteractive.klibs.mikro.core.util.cast internal class AuctionCommandFactory( - kyori: CachedKrate, private val executor: AuctionCommandExecutor, - private val errorHandler: BrigadierErrorHandler -) : KyoriComponentSerializer by kyori.unwrap() { + private val errorHandler: BrigadierErrorHandler, + private val multiplatformCommand: MultiplatformCommand<*>, + kyoriKrate: CachedKrate +) : KyoriComponentSerializer by kyoriKrate.unwrap() { @Suppress("LongMethod") - private fun create(alias: String): LiteralCommandNode { - return command(alias) { - literal("sell") { - argument("price", FloatArgumentType.floatArg(0f, Float.MAX_VALUE)) { priceArg -> - argument("amount", IntegerArgumentType.integer(0, Int.MAX_VALUE)) { amountArg -> + private fun create(alias: String): LiteralArgumentBuilder<*> { + return with(multiplatformCommand) { + command(alias) { + literal("sell") { + argument("price", FloatArgumentType.floatArg(0f, Float.MAX_VALUE)) { priceArg -> + argument("amount", IntegerArgumentType.integer(0, Int.MAX_VALUE)) { amountArg -> + runs(errorHandler::handle) { ctx -> + val player = ctx.requirePlayer() + AuctionCommand.Result.Sell( + player = player, + itemInstance = player + .cast() + .instance + .inventory + .itemInMainHand, + amount = ctx.requireArgument(amountArg), + price = ctx.requireArgument(priceArg) + ).run(executor::execute) + } + } runs(errorHandler::handle) { ctx -> val player = ctx.requirePlayer() AuctionCommand.Result.Sell( player = player, itemInstance = player + .cast() + .instance .inventory .itemInMainHand, - amount = ctx.requireArgument(amountArg), + amount = 1, price = ctx.requireArgument(priceArg) ).run(executor::execute) } } + } + literal("players") { runs(errorHandler::handle) { ctx -> val player = ctx.requirePlayer() - AuctionCommand.Result.Sell( + AuctionCommand.Result.OpenPlayers( player = player, - itemInstance = player - .inventory - .itemInMainHand, - amount = 1, - price = ctx.requireArgument(priceArg) + isExpired = false ).run(executor::execute) } } - } - literal("players") { runs(errorHandler::handle) { ctx -> val player = ctx.requirePlayer() - AuctionCommand.Result.OpenPlayers( + AuctionCommand.Result.OpenSlots( player = player, - isExpired = false + isExpired = false, + targetPlayerUUID = null ).run(executor::execute) } } - runs(errorHandler::handle) { ctx -> - val player = ctx.requirePlayer() - AuctionCommand.Result.OpenSlots( - player = player, - isExpired = false, - targetPlayerUUID = null - ).run(executor::execute) - } - }.build() + } } - fun create(): List> { + fun create(): List> { return listOf("market", "ah", "auctionhouse", "aauc", "amarket") .map(::create) } diff --git a/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/di/CommandModule.kt b/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/di/CommandModule.kt index 69afbd2..e4e2c67 100644 --- a/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/di/CommandModule.kt +++ b/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/di/CommandModule.kt @@ -1,6 +1,7 @@ package ru.astrainteractive.astramarket.command.di -import ru.astrainteractive.astralibs.command.api.registrar.PaperCommandRegistrarContext +import ru.astrainteractive.astralibs.command.api.brigadier.command.MultiplatformCommand +import ru.astrainteractive.astralibs.command.api.registrar.CommandRegistrarContext import ru.astrainteractive.astralibs.lifecycle.Lifecycle import ru.astrainteractive.astramarket.command.auction.AuctionCommandExecutor import ru.astrainteractive.astramarket.command.auction.AuctionCommandFactory @@ -18,24 +19,24 @@ interface CommandModule { coreModule: CoreModule, bukkitCoreModule: BukkitCoreModule, routerModule: RouterModule, - marketViewModule: MarketViewModule + marketViewModule: MarketViewModule, + private val commandRegistrarContext: CommandRegistrarContext, + private val multiplatformCommand: MultiplatformCommand<*>, ) : CommandModule { private val errorHandler = BrigadierErrorHandler( kyoriComponentSerializer = bukkitCoreModule.kyoriComponentSerializer, - translationKrate = coreModule.pluginTranslationKrate - ) - private val commandRegistrar = PaperCommandRegistrarContext( - mainScope = coreModule.mainScope, - plugin = bukkitCoreModule.plugin + translationKrate = coreModule.pluginTranslationKrate, + multiplatformCommand = multiplatformCommand ) private val reloadCommandFactory = ReloadCommandFactory( plugin = bukkitCoreModule.plugin, translationKrate = coreModule.pluginTranslationKrate, kyori = bukkitCoreModule.kyoriComponentSerializer, - errorHandler = errorHandler + errorHandler = errorHandler, + multiplatformCommand = multiplatformCommand ) private val auctionCommandFactory = AuctionCommandFactory( - kyori = bukkitCoreModule.kyoriComponentSerializer, + kyoriKrate = bukkitCoreModule.kyoriComponentSerializer, errorHandler = errorHandler, executor = AuctionCommandExecutor( router = routerModule.router, @@ -43,7 +44,8 @@ interface CommandModule { createAuctionUseCase = marketViewModule.marketViewDomainModule.createAuctionUseCase, ioScope = coreModule.ioScope, itemStackEncoder = bukkitCoreModule.itemStackEncoder, - ) + ), + multiplatformCommand = multiplatformCommand, ) override val lifecycle: Lifecycle by lazy { @@ -52,7 +54,7 @@ interface CommandModule { buildList { addAll(auctionCommandFactory.create()) add(reloadCommandFactory.create()) - }.onEach(commandRegistrar::registerWhenReady) + }.onEach(commandRegistrarContext::registerWhenReady) } ) } diff --git a/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/errorhandler/BrigadierErrorHandler.kt b/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/errorhandler/BrigadierErrorHandler.kt index feade13..0684061 100644 --- a/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/errorhandler/BrigadierErrorHandler.kt +++ b/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/errorhandler/BrigadierErrorHandler.kt @@ -1,32 +1,38 @@ package ru.astrainteractive.astramarket.command.errorhandler import com.mojang.brigadier.context.CommandContext -import io.papermc.paper.command.brigadier.CommandSourceStack +import ru.astrainteractive.astralibs.command.api.brigadier.command.MultiplatformCommand import ru.astrainteractive.astralibs.command.api.exception.NoPermissionException import ru.astrainteractive.astralibs.kyori.KyoriComponentSerializer import ru.astrainteractive.astralibs.kyori.unwrap +import ru.astrainteractive.astralibs.server.KAudience import ru.astrainteractive.astramarket.core.PluginTranslation import ru.astrainteractive.klibs.kstorage.api.CachedKrate import ru.astrainteractive.klibs.kstorage.util.getValue import ru.astrainteractive.klibs.mikro.core.logging.JUtiltLogger import ru.astrainteractive.klibs.mikro.core.logging.Logger +import ru.astrainteractive.klibs.mikro.core.util.tryCast class BrigadierErrorHandler( kyoriComponentSerializer: CachedKrate, - translationKrate: CachedKrate + translationKrate: CachedKrate, + private val multiplatformCommand: MultiplatformCommand<*>, ) : Logger by JUtiltLogger("AstraMarket-ErrorHandler").withoutParentHandlers(), KyoriComponentSerializer by kyoriComponentSerializer.unwrap() { private val translation by translationKrate - fun handle(ctx: CommandContext, throwable: Throwable) { - when (throwable) { - is NoPermissionException -> { - translation.general.noPermissions.component - .run(ctx.source.sender::sendMessage) - } + fun handle(ctx: CommandContext<*>, throwable: Throwable) { + with(multiplatformCommand) { + when (throwable) { + is NoPermissionException -> { + commands.getSender(ctx) + .tryCast() + ?.sendMessage(translation.general.noPermissions.component) + } - else -> { - error(throwable) { "Unhandled exception: ${throwable.message}" } + else -> { + error(throwable) { "Unhandled exception: ${throwable.message}" } + } } } } diff --git a/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/reload/ReloadCommandFactory.kt b/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/reload/ReloadCommandFactory.kt index 77cf62f..37ca4b6 100644 --- a/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/reload/ReloadCommandFactory.kt +++ b/modules/command-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/command/reload/ReloadCommandFactory.kt @@ -1,39 +1,41 @@ package ru.astrainteractive.astramarket.command.reload -import com.mojang.brigadier.tree.LiteralCommandNode -import io.papermc.paper.command.brigadier.CommandSourceStack -import ru.astrainteractive.astralibs.command.api.util.command -import ru.astrainteractive.astralibs.command.api.util.requirePermission -import ru.astrainteractive.astralibs.command.api.util.runs +import com.mojang.brigadier.builder.LiteralArgumentBuilder +import ru.astrainteractive.astralibs.command.api.brigadier.command.MultiplatformCommand import ru.astrainteractive.astralibs.kyori.KyoriComponentSerializer import ru.astrainteractive.astralibs.kyori.unwrap import ru.astrainteractive.astralibs.lifecycle.Lifecycle +import ru.astrainteractive.astralibs.server.KAudience import ru.astrainteractive.astramarket.command.errorhandler.BrigadierErrorHandler import ru.astrainteractive.astramarket.core.PluginPermission import ru.astrainteractive.astramarket.core.PluginTranslation import ru.astrainteractive.klibs.kstorage.api.CachedKrate import ru.astrainteractive.klibs.kstorage.util.getValue +import ru.astrainteractive.klibs.mikro.core.util.tryCast class ReloadCommandFactory( private val plugin: Lifecycle, private val errorHandler: BrigadierErrorHandler, translationKrate: CachedKrate, - kyori: CachedKrate + kyori: CachedKrate, + private val multiplatformCommand: MultiplatformCommand<*>, ) : KyoriComponentSerializer by kyori.unwrap() { private val translation by translationKrate - fun create(): LiteralCommandNode { - return command("amarketreload") { - runs(errorHandler::handle) { ctx -> - ctx.requirePermission(PluginPermission.Reload) - translation.general.reloadStarted - .let(::toComponent) - .run(ctx.source.sender::sendMessage) - plugin.onReload() - translation.general.reloadSuccess - .let(::toComponent) - .run(ctx.source.sender::sendMessage) + fun create(): LiteralArgumentBuilder<*> { + return with(multiplatformCommand) { + command("amarketreload") { + runs(errorHandler::handle) { ctx -> + ctx.requirePermission(PluginPermission.Reload) + ctx.getSender() + .tryCast() + ?.sendMessage(translation.general.reloadStarted.component) + plugin.onReload() + ctx.getSender() + .tryCast() + ?.sendMessage(translation.general.reloadSuccess.component) + } } - }.build() + } } } diff --git a/modules/core/src/main/kotlin/ru/astrainteractive/astramarket/core/PluginPermission.kt b/modules/core/src/main/kotlin/ru/astrainteractive/astramarket/core/PluginPermission.kt index 899444f..c62ee2e 100644 --- a/modules/core/src/main/kotlin/ru/astrainteractive/astramarket/core/PluginPermission.kt +++ b/modules/core/src/main/kotlin/ru/astrainteractive/astramarket/core/PluginPermission.kt @@ -1,6 +1,6 @@ package ru.astrainteractive.astramarket.core -import ru.astrainteractive.astralibs.permission.Permission +import ru.astrainteractive.astralibs.server.permission.Permission sealed class PluginPermission(override val value: String) : Permission { data object Reload : PluginPermission("astra_market.reload") diff --git a/modules/gui/common-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/gui/players/PlayersGui.kt b/modules/gui/common-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/gui/players/PlayersGui.kt index dac0742..03c39a2 100644 --- a/modules/gui/common-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/gui/players/PlayersGui.kt +++ b/modules/gui/common-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/gui/players/PlayersGui.kt @@ -4,7 +4,6 @@ import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import net.kyori.adventure.text.Component -import org.bukkit.entity.Player import org.bukkit.event.inventory.InventoryClickEvent import ru.astrainteractive.astralibs.kyori.KyoriComponentSerializer import ru.astrainteractive.astralibs.menu.holder.DefaultPlayerHolder @@ -18,6 +17,9 @@ import ru.astrainteractive.astralibs.menu.inventory.util.PaginatedInventoryMenuE import ru.astrainteractive.astralibs.menu.inventory.util.PaginatedInventoryMenuExt.showPage import ru.astrainteractive.astralibs.menu.inventory.util.PaginatedInventoryMenuExt.showPrevPage import ru.astrainteractive.astralibs.menu.slot.InventorySlot +import ru.astrainteractive.astralibs.server.player.BukkitOnlineKPlayer +import ru.astrainteractive.astralibs.server.player.OnlineKPlayer +import ru.astrainteractive.astralibs.server.util.asOnlineMinecraftPlayer import ru.astrainteractive.astramarket.gui.button.back import ru.astrainteractive.astramarket.gui.button.di.ButtonContext import ru.astrainteractive.astramarket.gui.button.filterExpired @@ -36,10 +38,11 @@ import ru.astrainteractive.astramarket.gui.invmap.InventoryMapExt.withKeySlot import ru.astrainteractive.astramarket.gui.router.GuiRouter import ru.astrainteractive.astramarket.gui.util.ItemStackExt.playSound import ru.astrainteractive.astramarket.players.presentation.PlayersMarketComponent +import ru.astrainteractive.klibs.mikro.core.util.cast internal class PlayersGui( private val playersMarketComponent: PlayersMarketComponent, - player: Player, + player: OnlineKPlayer, dependencies: AuctionGuiDependencies, private val buttonContext: ButtonContext ) : PaginatedInventoryMenu(), @@ -52,7 +55,7 @@ internal class PlayersGui( override val title: Component = pluginTranslation.menu.market.component - override val playerHolder = DefaultPlayerHolder(player) + override val playerHolder = DefaultPlayerHolder(player.cast().instance) override var pageContext: PageContext = PageContext( page = 0, @@ -105,7 +108,7 @@ internal class PlayersGui( isGroupedByPlayers = true, click = { val route = GuiRouter.Route.Slots( - player = playerHolder.player, + player = playerHolder.player.asOnlineMinecraftPlayer(), isExpired = playersMarketComponent.model.value.isExpired, targetPlayerUUID = null ) @@ -137,7 +140,7 @@ internal class PlayersGui( isExpired = playersMarketComponent.model.value.isExpired, click = { val route = GuiRouter.Route.Slots( - player = playerHolder.player, + player = playerHolder.player.asOnlineMinecraftPlayer(), isExpired = playersMarketComponent.model.value.isExpired, targetPlayerUUID = items.minecraftUUID ) diff --git a/modules/gui/common-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/gui/router/GuiRouter.kt b/modules/gui/common-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/gui/router/GuiRouter.kt index 7d8a367..e1ca18c 100644 --- a/modules/gui/common-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/gui/router/GuiRouter.kt +++ b/modules/gui/common-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/gui/router/GuiRouter.kt @@ -1,6 +1,6 @@ package ru.astrainteractive.astramarket.gui.router -import org.bukkit.entity.Player +import ru.astrainteractive.astralibs.server.player.OnlineKPlayer import java.util.UUID interface GuiRouter { @@ -11,13 +11,13 @@ interface GuiRouter { * @param targetPlayerUUID only this player auctions will be shown */ class Slots( - val player: Player, + val player: OnlineKPlayer, val isExpired: Boolean, val targetPlayerUUID: UUID? ) : Route class Players( - val player: Player, + val player: OnlineKPlayer, val isExpired: Boolean ) : Route } diff --git a/modules/gui/common-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/gui/router/GuiRouterImpl.kt b/modules/gui/common-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/gui/router/GuiRouterImpl.kt index 142c4bf..42f73db 100644 --- a/modules/gui/common-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/gui/router/GuiRouterImpl.kt +++ b/modules/gui/common-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/gui/router/GuiRouterImpl.kt @@ -39,7 +39,7 @@ internal class GuiRouterImpl( dependencies = dependencies, buttonContext = buttonContext, auctionComponent = marketViewModule.createAuctionComponent( - playerUUID = route.player.uniqueId, + playerUUID = route.player.uuid, isExpired = route.isExpired, targetPlayerUUID = route.targetPlayerUUID ) diff --git a/modules/gui/common-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/gui/slots/SlotsGui.kt b/modules/gui/common-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/gui/slots/SlotsGui.kt index d92b669..b22f701 100644 --- a/modules/gui/common-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/gui/slots/SlotsGui.kt +++ b/modules/gui/common-bukkit/src/main/kotlin/ru/astrainteractive/astramarket/gui/slots/SlotsGui.kt @@ -6,7 +6,6 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import net.kyori.adventure.text.Component import org.bukkit.Bukkit -import org.bukkit.entity.Player import org.bukkit.event.inventory.ClickType import org.bukkit.event.inventory.InventoryClickEvent import org.bukkit.event.inventory.InventoryCloseEvent @@ -22,7 +21,10 @@ import ru.astrainteractive.astralibs.menu.inventory.util.PaginatedInventoryMenuE import ru.astrainteractive.astralibs.menu.inventory.util.PaginatedInventoryMenuExt.showPage import ru.astrainteractive.astralibs.menu.inventory.util.PaginatedInventoryMenuExt.showPrevPage import ru.astrainteractive.astralibs.menu.slot.InventorySlot -import ru.astrainteractive.astralibs.permission.BukkitPermissibleExt.toPermissible +import ru.astrainteractive.astralibs.server.permission.asKPermissible +import ru.astrainteractive.astralibs.server.player.BukkitOnlineKPlayer +import ru.astrainteractive.astralibs.server.player.OnlineKPlayer +import ru.astrainteractive.astralibs.server.util.asOnlineMinecraftPlayer import ru.astrainteractive.astramarket.core.PluginPermission import ru.astrainteractive.astramarket.gui.button.auctionSort import ru.astrainteractive.astramarket.gui.button.back @@ -43,16 +45,17 @@ import ru.astrainteractive.astramarket.gui.invmap.InventoryMapExt.withKeySlot import ru.astrainteractive.astramarket.gui.router.GuiRouter import ru.astrainteractive.astramarket.gui.util.ItemStackExt.playSound import ru.astrainteractive.astramarket.market.presentation.AuctionComponent +import ru.astrainteractive.klibs.mikro.core.util.cast internal class SlotsGui( - player: Player, + player: OnlineKPlayer, dependencies: AuctionGuiDependencies, private val buttonContext: ButtonContext, private val auctionComponent: AuctionComponent ) : PaginatedInventoryMenu(), AuctionGuiDependencies by dependencies, KyoriComponentSerializer by dependencies.kyoriComponentSerializer { - override val playerHolder = DefaultPlayerHolder(player) + override val playerHolder = DefaultPlayerHolder(player.cast().instance) override val title: Component = let { val playerNameComponent = auctionComponent.model.value .targetPlayerUUID @@ -117,7 +120,7 @@ internal class SlotsGui( index = inventoryMap.indexOf(AuctionSlotKey.BA), click = { val route = GuiRouter.Route.Players( - player = playerHolder.player, + player = playerHolder.player.asOnlineMinecraftPlayer(), isExpired = auctionComponent.model.value.isExpired ) router.navigate(route) @@ -130,7 +133,7 @@ internal class SlotsGui( isGroupedByPlayers = false, click = { val route = GuiRouter.Route.Players( - player = playerHolder.player, + player = playerHolder.player.asOnlineMinecraftPlayer(), isExpired = auctionComponent.model.value.isExpired ) router.navigate(route) @@ -170,7 +173,7 @@ internal class SlotsGui( .items .getOrNull(index) ?: return@withKeySlot null - val permissible = playerHolder.player.toPermissible() + val permissible = playerHolder.player.asKPermissible() buttonContext.expiredSlot( auctionItem = auctionItem, index = slotIndex, diff --git a/modules/gui/slots/bukkit/src/main/kotlin/ru/astrainteractive/astramarket/market/data/bridge/BukkitAuctionsBridge.kt b/modules/gui/slots/bukkit/src/main/kotlin/ru/astrainteractive/astramarket/market/data/bridge/BukkitAuctionsBridge.kt index fdffdc7..415ddcd 100644 --- a/modules/gui/slots/bukkit/src/main/kotlin/ru/astrainteractive/astramarket/market/data/bridge/BukkitAuctionsBridge.kt +++ b/modules/gui/slots/bukkit/src/main/kotlin/ru/astrainteractive/astramarket/market/data/bridge/BukkitAuctionsBridge.kt @@ -3,7 +3,7 @@ package ru.astrainteractive.astramarket.market.data.bridge import org.bukkit.Bukkit import org.bukkit.Material import org.bukkit.inventory.ItemStack -import ru.astrainteractive.astralibs.permission.BukkitPermissibleExt.toPermissible +import ru.astrainteractive.astralibs.server.permission.asKPermissible import ru.astrainteractive.astramarket.api.market.model.MarketSlot import ru.astrainteractive.astramarket.core.PluginPermission import ru.astrainteractive.astramarket.core.itemstack.ItemStackEncoder @@ -48,7 +48,7 @@ internal class BukkitAuctionsBridge( } override fun hasExpirePermission(uuid: UUID): Boolean { - return Bukkit.getPlayer(uuid)?.toPermissible()?.hasPermission(PluginPermission.Expire) ?: false + return Bukkit.getPlayer(uuid)?.asKPermissible()?.hasPermission(PluginPermission.Expire) ?: false } override fun isItemValid(marketSlot: MarketSlot): Boolean { @@ -57,6 +57,6 @@ internal class BukkitAuctionsBridge( } override suspend fun maxAllowedAuctionsForPlayer(uuid: UUID): Int? { - return Bukkit.getPlayer(uuid)?.toPermissible()?.maxPermissionSize(PluginPermission.SellMax) + return Bukkit.getPlayer(uuid)?.asKPermissible()?.maxPermissionSize(PluginPermission.SellMax) } } From 4d8bbdecc63ec4884b1efa27864016997eafd5da Mon Sep 17 00:00:00 2001 From: Roman Makeev <57789105+makeevrserg@users.noreply.github.com> Date: Sat, 21 Mar 2026 13:17:13 +0300 Subject: [PATCH 2/2] Update gradle.properties --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 3ecb887..dae3a27 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ makeevrserg.java.ktarget=21 # Project makeevrserg.project.name=AstraMarket makeevrserg.project.group=ru.astrainteractive.astramarket -makeevrserg.project.version.string=1.22.0 +makeevrserg.project.version.string=1.22.1 makeevrserg.project.description=Market plugin for EmpireSMP makeevrserg.project.developers=makeevrserg|Makeev Roman|makeevrserg@gmail.com makeevrserg.project.url=https://empireprojekt.ru