更新权限限制数量
This commit is contained in:
+1
-1
@@ -1,2 +1,2 @@
|
||||
group=com.github.xbaimiao.shoppro
|
||||
version=1.1.7
|
||||
version=1.1.8
|
||||
|
||||
@@ -23,6 +23,14 @@ abstract class ItemLoader {
|
||||
this.getString("currency")?.let {
|
||||
currency = CurrencyType.formString(it).func.invoke(it)
|
||||
}
|
||||
val limitMap = HashMap<String, Long>()
|
||||
|
||||
this.getConfigurationSection("limitMap")?.let { limitSection ->
|
||||
limitSection.getKeys(false).forEach { key ->
|
||||
limitMap[key] = limitSection.getLong(key)
|
||||
}
|
||||
}
|
||||
|
||||
return ShopItem.ItemSetting(
|
||||
key = char,
|
||||
material = parseToMaterial(this),
|
||||
@@ -39,6 +47,7 @@ abstract class ItemLoader {
|
||||
conditionIcon = this.getString("condition-icon")?.parseToMaterial(),
|
||||
conditionLore = this.getStringList("condition-lore"),
|
||||
conditionName = this.getString("condition-name"),
|
||||
limitPermissionMap = limitMap
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,8 @@ abstract class ShopItem(
|
||||
override val conditionName: String?,
|
||||
val price: Double,
|
||||
val limitServer: Long,
|
||||
val limitPlayer: Long,
|
||||
private val limitPlayer: Long,
|
||||
private val limitPermissionMap: Map<String, Long>,
|
||||
val currency: Currency
|
||||
) : Item, KetherCondition {
|
||||
|
||||
@@ -44,6 +45,7 @@ abstract class ShopItem(
|
||||
itemSetting.price,
|
||||
itemSetting.limitServer,
|
||||
itemSetting.limitPlayer,
|
||||
itemSetting.limitPermissionMap,
|
||||
itemSetting.currency
|
||||
)
|
||||
|
||||
@@ -62,6 +64,7 @@ abstract class ShopItem(
|
||||
val price: Double,
|
||||
val limitServer: Long,
|
||||
val limitPlayer: Long,
|
||||
val limitPermissionMap: Map<String, Long>,
|
||||
var currency: Currency
|
||||
)
|
||||
|
||||
@@ -80,6 +83,10 @@ abstract class ShopItem(
|
||||
return limitPlayer != 0L && limitServer != 0L
|
||||
}
|
||||
|
||||
fun getLimitPlayer(player: Player): Long {
|
||||
return limitPermissionMap.filter { player.hasPermission(it.key) }.maxOfOrNull { it.value } ?: limitPlayer
|
||||
}
|
||||
|
||||
override fun update(player: Player): ItemStack {
|
||||
val playerLimit = if (shop.getType() == Shop.ShopType.BUY) {
|
||||
ShopPro.database.getPlayerAlreadyData(player, this).buy
|
||||
|
||||
@@ -149,16 +149,16 @@ class ShopImpl(private val configuration: Configuration) : Shop() {
|
||||
|
||||
private fun checkBuyLimit(amount: Int, item: ShopItem, player: Player) {
|
||||
if (item.isLimit()) {
|
||||
if (ShopPro.database.getPlayerAlreadyData(player, item).buy >= item.limitPlayer) {
|
||||
player.sendLang("buy-limit-player", item.limitPlayer)
|
||||
if (ShopPro.database.getPlayerAlreadyData(player, item).buy >= item.getLimitPlayer(player)) {
|
||||
player.sendLang("buy-limit-player", item.getLimitPlayer(player))
|
||||
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)
|
||||
if (ShopPro.database.getPlayerAlreadyData(player, item).buy + amount > item.getLimitPlayer(player)) {
|
||||
buy((item.getLimitPlayer(player) - ShopPro.database.getPlayerAlreadyData(player, item).buy).toInt(), item, player)
|
||||
return
|
||||
}
|
||||
if (ShopPro.database.getServerAlreadyData(item).buy + amount > item.limitServer) {
|
||||
@@ -187,17 +187,17 @@ class ShopImpl(private val configuration: Configuration) : Shop() {
|
||||
|
||||
private fun checkSellLimit(amount: Int, item: ShopItem, player: Player) {
|
||||
if (item.isLimit()) {
|
||||
if (ShopPro.database.getPlayerAlreadyData(player, item).sell >= item.limitPlayer) {
|
||||
player.sendLang("sell-limit-player", item.limitPlayer)
|
||||
if (ShopPro.database.getPlayerAlreadyData(player, item).sell >= item.getLimitPlayer(player)) {
|
||||
player.sendLang("sell-limit-player", item.getLimitPlayer(player))
|
||||
return
|
||||
}
|
||||
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) {
|
||||
if (ShopPro.database.getPlayerAlreadyData(player, item).sell + amount > item.getLimitPlayer(player)) {
|
||||
sell(
|
||||
(item.limitPlayer - ShopPro.database.getPlayerAlreadyData(player, item).sell).toInt(),
|
||||
(item.getLimitPlayer(player) - ShopPro.database.getPlayerAlreadyData(player, item).sell).toInt(),
|
||||
item,
|
||||
player
|
||||
)
|
||||
|
||||
@@ -29,6 +29,9 @@ items:
|
||||
limit: 5000
|
||||
# 每个玩家限购买
|
||||
limit-player: 500
|
||||
# 根据权限限制玩家购买数量 所有权限都不满足则使用limit-player
|
||||
limitMap:
|
||||
vip: 1000
|
||||
# 物品金额
|
||||
price: 2
|
||||
lore:
|
||||
|
||||
Reference in New Issue
Block a user