From 528d981cf0adbc7ef9112aebefb597ab8a8c861d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E7=99=BD?= <3104026189@qq.com> Date: Sun, 9 Oct 2022 19:18:33 +0800 Subject: [PATCH] fix bugs --- gradle.properties | 2 +- .../xbaimiao/shoppro/core/shop/ShopImpl.kt | 42 +++++++++++++++---- src/main/resources/lang/zh_CN.yml | 4 +- 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/gradle.properties b/gradle.properties index 2d9016b..fc8fde9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ group=com.github.xbaimiao.shoppro -version=1.0.9-beta +version=1.0.9 diff --git a/src/main/kotlin/com/github/xbaimiao/shoppro/core/shop/ShopImpl.kt b/src/main/kotlin/com/github/xbaimiao/shoppro/core/shop/ShopImpl.kt index ed35bfd..20a11c6 100644 --- a/src/main/kotlin/com/github/xbaimiao/shoppro/core/shop/ShopImpl.kt +++ b/src/main/kotlin/com/github/xbaimiao/shoppro/core/shop/ShopImpl.kt @@ -74,7 +74,7 @@ class ShopImpl(private val configuration: Configuration) : Shop() { shopItem.equal(it) } if (amount > 0) { - sell(amount, shopItem, player) + checkSellLimit(amount, shopItem, player) } } } @@ -99,7 +99,7 @@ class ShopImpl(private val configuration: Configuration) : Shop() { org.bukkit.event.inventory.ClickType.RIGHT -> 64 else -> return@onClick } - buy(amount, item, player) + checkBuyLimit(amount, item, player) event.currentItem?.let { event.clickEvent().inventory.setItem(event.rawSlot, item.update(player)) } @@ -121,7 +121,7 @@ class ShopImpl(private val configuration: Configuration) : Shop() { else -> return@onClick } - sell(amount, item, player) + checkSellLimit(amount, item, player) event.currentItem?.let { event.clickEvent().inventory.setItem(event.rawSlot, item.update(player)) } @@ -136,17 +136,29 @@ class ShopImpl(private val configuration: Configuration) : Shop() { } } - private fun buy(amount: Int, item: ShopItem, player: Player) { + private fun checkBuyLimit(amount: Int, item: ShopItem, player: Player) { if (item.isLimit()) { - if (ShopPro.database.getPlayerAlreadyData(player, item).buy + amount > item.limitPlayer) { + if (ShopPro.database.getPlayerAlreadyData(player, item).buy >= item.limitPlayer) { player.sendLang("buy-limit-player", item.limitPlayer) return } + if (ShopPro.database.getServerAlreadyData(item).buy >= item.limitServer) { + player.sendLang("buy-limit-server", item.limitServer) + return + } + if (ShopPro.database.getPlayerAlreadyData(player, item).buy + amount > item.limitPlayer) { + buy((item.limitPlayer - ShopPro.database.getPlayerAlreadyData(player, item).buy).toInt(), item, player) + return + } if (ShopPro.database.getServerAlreadyData(item).buy + amount > item.limitServer) { - player.sendLang("buy-limit-player", item.limitServer) + buy((item.limitServer - ShopPro.database.getServerAlreadyData(item).buy).toInt(), item, player) return } } + buy(amount, item, player) + } + + private fun buy(amount: Int, item: ShopItem, player: Player) { if (item.currency.takeMoney(player, item.price * amount)) { if (item.vanilla) { val vanilla = item.vanillaItem() @@ -162,17 +174,29 @@ class ShopImpl(private val configuration: Configuration) : Shop() { } } - private fun sell(amount: Int, item: ShopItem, player: Player) { + private fun checkSellLimit(amount: Int, item: ShopItem, player: Player) { if (item.isLimit()) { - if (ShopPro.database.getPlayerAlreadyData(player, item).sell + amount > item.limitPlayer) { + if (ShopPro.database.getPlayerAlreadyData(player, item).sell >= item.limitPlayer) { player.sendLang("sell-limit-player", item.limitPlayer) return } - if (ShopPro.database.getServerAlreadyData(item).sell + amount > item.limitServer) { + if (ShopPro.database.getServerAlreadyData(item).sell >= item.limitServer) { player.sendLang("sell-limit-server", item.limitServer) return } + if (ShopPro.database.getPlayerAlreadyData(player, item).sell + amount > item.limitPlayer) { + sell((item.limitPlayer - ShopPro.database.getPlayerAlreadyData(player, item).sell).toInt(), item, player) + return + } + if (ShopPro.database.getServerAlreadyData(item).sell + amount > item.limitServer) { + sell((item.limitServer - ShopPro.database.getServerAlreadyData(item).sell).toInt(), item, player) + return + } } + sell(amount, item, player) + } + + private fun sell(amount: Int, item: ShopItem, player: Player) { if (player.inventory.hasItem(amount) { item.equal(it) }) { player.inventory.takeItem(amount) { item.equal(it) } item.currency.giveMoney(player, item.price * amount) diff --git a/src/main/resources/lang/zh_CN.yml b/src/main/resources/lang/zh_CN.yml index 2b3a5bd..a79d81b 100644 --- a/src/main/resources/lang/zh_CN.yml +++ b/src/main/resources/lang/zh_CN.yml @@ -4,8 +4,8 @@ not-item: "&7[&e&l!&7] 你没有足够的可以出售的物品" sell-item: "&7[&e&l!&7] 你出售了§6 {0}个 §7{1}§7获得了§6 {2}" sell-limit-player: "&7[&e&l!&7] 此物品每人每日限制收购{0}个,已达到今日收购限制" sell-limit-server: "&7[&e&l!&7] 此物品全服每日限制收购{0}个,已达到今日收购限制" -buy-limit-player: "&7[&e&l!&7] 此物品每人每日限制购买{0}个,今日购买限制" -buy-limit-server: "&7[&e&l!&7] 此物品全服每日限制购买{0}个,今日购买限制" +buy-limit-player: "&7[&e&l!&7] 此物品每人每日限制购买{0}个,已达到今日购买限制" +buy-limit-server: "&7[&e&l!&7] 此物品全服每日限制购买{0}个,已达到今日购买限制" buy-item: "&7[&e&l!&7] 你购买了§6 {0}个 §7{1} §7花费了§6 {2}" not-money: "&7[&e&l!&7] 你没有足够的钱" sell-all-error: "&7[&e&l!&7] 此商店非出售商店"