This commit is contained in:
小白
2022-10-09 19:18:33 +08:00
parent e72a7305bf
commit 528d981cf0
3 changed files with 36 additions and 12 deletions
+1 -1
View File
@@ -1,2 +1,2 @@
group=com.github.xbaimiao.shoppro group=com.github.xbaimiao.shoppro
version=1.0.9-beta version=1.0.9
@@ -74,7 +74,7 @@ class ShopImpl(private val configuration: Configuration) : Shop() {
shopItem.equal(it) shopItem.equal(it)
} }
if (amount > 0) { 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 org.bukkit.event.inventory.ClickType.RIGHT -> 64
else -> return@onClick else -> return@onClick
} }
buy(amount, item, player) checkBuyLimit(amount, item, player)
event.currentItem?.let { event.currentItem?.let {
event.clickEvent().inventory.setItem(event.rawSlot, item.update(player)) event.clickEvent().inventory.setItem(event.rawSlot, item.update(player))
} }
@@ -121,7 +121,7 @@ class ShopImpl(private val configuration: Configuration) : Shop() {
else -> return@onClick else -> return@onClick
} }
sell(amount, item, player) checkSellLimit(amount, item, player)
event.currentItem?.let { event.currentItem?.let {
event.clickEvent().inventory.setItem(event.rawSlot, item.update(player)) 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 (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) player.sendLang("buy-limit-player", item.limitPlayer)
return 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) { 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 return
} }
} }
buy(amount, item, player)
}
private fun buy(amount: Int, item: ShopItem, player: Player) {
if (item.currency.takeMoney(player, item.price * amount)) { if (item.currency.takeMoney(player, item.price * amount)) {
if (item.vanilla) { if (item.vanilla) {
val vanilla = item.vanillaItem() 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 (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) player.sendLang("sell-limit-player", item.limitPlayer)
return 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) player.sendLang("sell-limit-server", item.limitServer)
return 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) }) { if (player.inventory.hasItem(amount) { item.equal(it) }) {
player.inventory.takeItem(amount) { item.equal(it) } player.inventory.takeItem(amount) { item.equal(it) }
item.currency.giveMoney(player, item.price * amount) item.currency.giveMoney(player, item.price * amount)
+2 -2
View File
@@ -4,8 +4,8 @@ not-item: "&7[&e&l!&7] 你没有足够的可以出售的物品"
sell-item: "&7[&e&l!&7] 你出售了§6 {0}个 §7{1}§7获得了§6 {2}" sell-item: "&7[&e&l!&7] 你出售了§6 {0}个 §7{1}§7获得了§6 {2}"
sell-limit-player: "&7[&e&l!&7] 此物品每人每日限制收购{0}个,已达到今日收购限制" sell-limit-player: "&7[&e&l!&7] 此物品每人每日限制收购{0}个,已达到今日收购限制"
sell-limit-server: "&7[&e&l!&7] 此物品全服每日限制收购{0}个,已达到今日收购限制" sell-limit-server: "&7[&e&l!&7] 此物品全服每日限制收购{0}个,已达到今日收购限制"
buy-limit-player: "&7[&e&l!&7] 此物品每人每日限制购买{0}个,今日购买限制" buy-limit-player: "&7[&e&l!&7] 此物品每人每日限制购买{0}个,已达到今日购买限制"
buy-limit-server: "&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}" buy-item: "&7[&e&l!&7] 你购买了§6 {0}个 §7{1} §7花费了§6 {2}"
not-money: "&7[&e&l!&7] 你没有足够的钱" not-money: "&7[&e&l!&7] 你没有足够的钱"
sell-all-error: "&7[&e&l!&7] 此商店非出售商店" sell-all-error: "&7[&e&l!&7] 此商店非出售商店"