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