你可以设置商店物品对玩家的显示的条件。设置条件其实很简单

例子:
- ShopName: food-condition
- DisplayName: '食用条件'
- signs:
- text: '[conditions]'
- NeedPermissionToCreateSign: true
- InventorySize: 45
- shop:
- 5-1:
- Condition: #条件内容
- - type:Hunger #类型: 饥饿
- - under:20 #如果玩家饥饿值在20以下,则会显示以下内容
- RewardType: item
- PriceType: free
- Reward:
- - type:COOKED_CHICKEN
- - amount:1
- MenuItem:
- - type:COOKED_CHICKEN
- - name:&9你饿吗?
- - 'lore:#&你看上去十分饥饿!点我补充饱食度'
- - amount:1
- InventoryLocation: 23
- 5: #如果饱食度<=20会发生的内容
- RewardType: nothing
- PriceType: free
- MenuItem:
- - type:BARRIER
- - name:&9你饿吗?
- - 'lore:#&c你看上去不饿..#&c当你饿的时候再回来'
- - amount:1
- InventoryLocation: 23
输出是这样子的:

结构
条件是在一个列表中建立的。首先你需要定义当前条件类型然后建立你的条件。添加条件是不会被限制的,这意味着你可以在物品上添加无限个条件
例子:
- Condition: #条件
- - type:serverpinging #帧数
- - online:true #是否是正版用户
- - over:200 #帧数超过200
- Condition:
- - type:permission #权限
- - match:权限.节点 #所需权限
- Condition:
- - type:money #金钱
- - over:1000 #超过1000
- - type:health #血量
- - between:5:15 #在5-15之间
规则
AND|与
所有在列表中的条件都需要达成. 如果一个条件不成立则整个物品会被隐藏
例子:
- Condition: #条件
- - type:money #类型:金钱
- - over:1000 #超过1000的金钱
- - type:health #类型:血量
- - between:5:15 #在5-15血量之间
OR | 或
在“match”条件类型的案例中,是存在可选则条件的:
你可以列举不同的match数值,使用逗号分离。只要其中一个数值达成条件则显示物品,甚至不需要达成任何其他条件
- Condition:
- - type:group
- - match:group1,group2,group3,group4
可用的条件类型
如果你想要更多其他条件的话,你可以找作者让他帮你添加新的条件
BossShopPro 会先加载所有商店物品然后建立他们的配置。如果一个物品的条件没有达成则不会显示相应内容。如果一个物品没被达成条件,然后另一个物品在该物品的同一个位置,则另个物品会被显示。
- # 可用的条件
- Condition types:
- - Money/Points #金钱/点券or点数
- - over:1000 (会匹配任何金钱/点券超过1000的玩家 – 需要vault 或 点数插件)
- - under:500 (会匹配任何金钱/点券低于500的玩家 – 需要vault 或 点数插件)
- - equals:150 (会匹配任何金钱/点券等于150的玩家 – 需要vault 或 点数插件)
- - between:300:600 (会匹配任何金钱/点券在300-500之间的玩家 – 需要vault 或 点数插件)
- - ServerPinging #服务器帧数
- - online:true (会匹配所有成功收取服务器帧数并在线(或正版)的玩家)
- - over:70 (匹配所有帧数超过70的玩家)
- - under:40 (匹配所有帧数低于40的玩家)
- - equals:500 (匹配所有帧数等于500的玩家)
- - between:1:100 (匹配所有帧数在1-100之间的玩家)
- - Permission #权限
- - match:权限.节点 (如果玩家拥有此权限节点,则显示)
- - dontmatch:node.node (如果玩家没有此权限节点,则显示)
- - Group #组
- - match:plus (如果玩家在plus这个组内,则显示)
- - dontmatch:vip (如果玩家不在vip这个组内,则显示)
- - Item #物品
- - match:stone (如果玩家背包内拥有石头,则显示)
- - dontmatch:diamond (如果玩家背包内没有钻石,则显示)
- - HandItem #手中物品
- - match:stone (如果玩家主手中拥有石头,则显示)
- - dontmatch:diamond (如果玩家主手中没有钻石,则显示)
- - Health/Hunger/Exp #生命/饱食度/经验
- - over:10 (匹配所有生命/饱食度/经验超过10的玩家)
- - under:5 (匹配所有生命/饱食度/经验低于5的玩家)
- - equals:15 (匹配所有生命/饱食度/经验等于15的玩家)
- - between:5:15 (匹配所有生命/饱食度/经验在5-15之间的玩家)
- - Time #时间
- - over:4000 (当世界内时间超过4000ticks,从0开始)
- - under:2000 (当世界内时间低于2000ticks,从0开始)
- - equals:8000 (当世界内时间等于8000ticks,从0开始,并没有啥用)
- - between:12000:24000 (当世界内时间在12000-24000ticks之间时,从0开始)
- #RealDay = 现实生活中一天; RealWeekDay = 现实生活中一周, starting with monday = 周一
- - RealYear/RealMonth/RealWeek/RealDay/RealWeekDay/RealHour/RealSecond/RealMillisecond #现实生活中年/月/周/日/一周中的日子(周一/周二etc)/ 小时/秒/毫秒
- - over:12 (如果数值高于12则显示)
- - under:20 (如果数值低于12则显示)
- - equals:11 (如果数值等于11则显示)
- - between:18:24 (如果数值在18-24之间则显示)
- - LightLevel
- - over:10 (匹配光源等级是否较高)
- - under:6 (匹配光源等级是否较低)
- - equals:15 (匹配光源等级是否在最高)
- - between:8:14 (匹配光源等级是否不是太阳光但是依然很高)
- - LocationX/LocationY/LocationZ (Y 轴决定了玩家高度) #玩家所有位置x/y/z
- - over:100 (匹配玩家是否在高于100的位置)
- - under:50 (匹配玩家是否在低于50的位置)
- - equals:1 (匹配玩家是否在等于1的位置)
- - between:1:40 (匹配玩家是否在1-40之间的位置)
- - World #世界名
- - match:世界名 (玩家是否在特定世界中)
- - dontmatch:worldname (玩家是否不在特定世界中)
变量条件
条件类型"placeholdernumber" 和 "placeholdermatch" 允许检查任何BossShopPro 或 PlaceholderAPI 所支持的变量并检查数值是否支持任何所支持的插件
PlaceholderNumber:
- Condition:
- - type:placeholdernumber
- - '%balancepoints%:over:100' #如果玩家的%balancepoints%超过了100
PlaceholderMatch:
- Condition:
- - type:placeholdermatch
- - '%item_in_hand%:match:WOOD_SWORD,STONE_SWORD,IRON_SWORD,GOLD_SWORD,DIAMOND_SWORD' #手中物品是否是以上物品之一
- 冒号 (":") 在占位符中并不能直接使用因为BossShopPro使用冒号来分割占位符/条件和条件类型。如果你的占位符中需要冒号,你可以使用"[colon]"来代替冒号.
模数支持
数字类型条件支持模数. 这里是个进阶的类型:
- Moving_1:
- MenuItem:
- - name:&c
- - type:STAINED_GLASS_PANE:0
- RewardType: NOTHING
- PriceType: NOTHING
- Message: ''
- ExtraPermission: ''
- InventoryLocation: 1
- Condition: #条件
- - type:realsecond
- - 'between:0:5#%45'
- Moving_2:
- MenuItem:
- - name:&c
- - type:STAINED_GLASS_PANE:1
- RewardType: NOTHING
- PriceType: NOTHING
- Message: ''
- ExtraPermission: ''
- InventoryLocation: 2
- Condition:
- - type:realsecond
- - 'between:6:10#%45'
- Moving_3:
- MenuItem:
- - name:&c
- - type:STAINED_GLASS_PANE:2
- RewardType: NOTHING
- PriceType: NOTHING
- Message: ''
- ExtraPermission: ''
- InventoryLocation: 3
- Condition:
- - type:realsecond
- - 'between:11:15#%45'
- Moving_4:
- MenuItem:
- - name:&c
- - type:STAINED_GLASS_PANE:3
- RewardType: NOTHING
- PriceType: NOTHING
- Message: ''
- ExtraPermission: ''
- InventoryLocation: 4
- Condition:
- - type:realsecond
- - 'between:16:20#%45'
- Moving_5:
- MenuItem:
- - name:&c
- - type:STAINED_GLASS_PANE:4
- RewardType: NOTHING
- PriceType: NOTHING
- Message: ''
- ExtraPermission: ''
- InventoryLocation: 5
- Condition:
- - type:realsecond
- - 'between:21:25#%45'
- Moving_6:
- MenuItem:
- - name:&c
- - type:STAINED_GLASS_PANE:5
- RewardType: NOTHING
- PriceType: NOTHING
- Message: ''
- ExtraPermission: ''
- InventoryLocation: 6
- Condition:
- - type:realsecond
- - 'between:26:30#%45'
- Moving_7:
- MenuItem:
- - name:&c
- - type:STAINED_GLASS_PANE:6
- RewardType: NOTHING
- PriceType: NOTHING
- Message: ''
- ExtraPermission: ''
- InventoryLocation: 7
- Condition:
- - type:realsecond
- - 'between:31:35#%45'
- Moving_8:
- MenuItem:
- - name:&c
- - type:STAINED_GLASS_PANE:7
- RewardType: NOTHING
- PriceType: NOTHING
- Message: ''
- ExtraPermission: ''
- InventoryLocation: 8
- Condition:
- - type:realsecond
- - 'between:36:40#%45'
- Moving_9:
- MenuItem:
- - name:&c
- - type:STAINED_GLASS_PANE:8
- RewardType: NOTHING
- PriceType: NOTHING
- Message: ''
- ExtraPermission: ''
- InventoryLocation: 9
- Condition:
- - type:realsecond
- - 'between:41:45#%45'
这个案例会生成一个动画物品,物品会从第一格一直移动到第九格然后又会到第一格,从而实现动态效果.
使用"#%<divisor>"来结束条件会让BossShopPro 将数值通过模数转换为相关的条件.如果你使用了条件类型‘realsecond’然后使用modulo(模数)‘10’则会改变条件检查会在0到9之间,因为"<current time % 10>" 会最终反馈在范围内的所有数字。所以Modulo(模数)对创建动画商店很有帮助.