商店 - 重要

敬请注意

这里介绍的内容是整个插件的核心,请确保至少阅读三遍以后再去尝试配置插件。

所有商店文件都存储在 shops 文件夹下。

商店配置

示例商店文件在此:

settings:
  menu: 'example-shop-menu'
  buy-more: true
  shop-name: '食物商店'
  hide-message: false

general-configs:
  # 这里是代表整个商店通用的配置,这里代表这个商店所有的商品都会使用相同的
  # price-mode 和 product-mode。如果商品配置中单独设置了其他值,则会使用商品单独设置的值。
  # 否则,就会使用这里的通用值。
  price-mode: CLASSIC_ANY
  product-mode: CLASSIC_ANY
  # 支持所有商品下的选项,例如这里的 fail-actions。
  fail-actions:
    - 'sound: block.note_block.bass;;1;;1'

items:
  A:
    display-name: "苹果"
    price-mode: ANY
    product-mode: ALL
    products:
      1:
        material: APPLE
        amount: 1
    buy-prices:
      1:
        economy-plugin: Vault
        amount: 200
        placeholder: '{amount} 枚金币'
        start-apply: 0
      2:
        economy-plugin: PlayerPoints
        amount: 10
        placeholder: '{amount} 点券'
        start-apply: 5
    sell-prices:
      1:
        economy-plugin: Vault
        amount: 50
        placeholder: '{amount} 枚金币'
      2:
        economy-plugin: PlayerPoints
        amount: 1
        start-apply: 5
        placeholder: '{amount} 点券'
    buy-actions:
      - 'player_command: say %player% 购买了一个苹果!'
      - 'announcement: &7%player% 购买了一个苹果!'
  B:
    display-item:
      material: BREAD
    display-name: "面包"
    price-mode: ANY
    product-mode: ALL
    add-lore:
      - '@a&e平民价: {buy-price}'
      - '@b&e回收价: {sell-price}'
    bedrock:
      hide: false
      icon: 'url;;https://raw.githubusercontent.com/Jens-Co/MinecraftItemImages/main/1.20/bread.png'
    buy-more: true
    buy-more-menu:
      menu: buy-more-2
      max-amount: 16
    products:
      1:
        material: BREAD
        amount: 1
    buy-prices:
      1:
        economy-plugin: Vault
        amount: 200
        placeholder: '{amount} 枚金币'
        start-apply: 0
      2:
        economy-plugin: PlayerPoints
        amount: 10
        placeholder: '{amount} 点券'
        start-apply: 5
    sell-prices:
      1:
        economy-plugin: Vault
        amount: 50
        placeholder: '{amount} 枚金币'
      2:
        economy-plugin: PlayerPoints
        amount: 1
        start-apply: 5
        placeholder: '{amount} 点券'
    buy-actions:
      - 'player_command: say %player% 购买了一个面包!'
      - 'announcement: &7%player% 购买了一个面包!'
    buy-limits:
      global: 100
      default: 10
      test-condition: 20
    buy-limits-conditions:
      test-condition:
        - 'permission: test.permission'
    buy-limits-reset-mode: 'TIMED'
    buy-limits-reset-time: '00:00:00'
    
buttons:
  a:
    display-item:
      material: arrow
      name: '&c上一页'
      lore:
        - '&7点击翻到上一页!'
    actions:
      - 'shop_menu: crops'

设置

  • menu: 商店的菜单名称,也就是菜单的文件名称;可选,如果这个选项删除,则该商店无法打开,只能通过 quickbuy 和 quicksell 指令等手段购买里面的商品

  • buy-more: 该商店中的商品是否能打开增量购买菜单;可选,各个商品的配置中也有这个选项,因此这个选项也是可以删除的。如果未设置该选项,商品里也没有 buy-more 选项,则默认开启

  • shop-name: 商店的显示名称,会被内置变量 {shop-name} 使用。

  • hide-message: 是否隐藏购买或者回收商品后插件的提示消息。

物品

物品即为商店中的商品,商品可以不是物品,也可以是虚拟物品,例如 100 点其他经济插件的货币。 在上面的示例中,A 和 B 就是商品的 ID,如果你需要在菜单中显示这个商品,则商品的 ID 必须 是一个字符,因为它们需要在商店的 layout 选项中使用。(a-z,A-Z,0-9 等,已经大于原版箱子 54 格的所需了)否则, 你可以随心所欲的设置商品的 ID,只是它们将不能再显示到商店菜单中了。

  • display-item: 展示在商店菜单中的物品,使用物品语句,可以与玩家实际获得的物品不同。对虚拟物品,你必须在这里设置 display-item 选项,否则它们就无法在商店菜单中显示。对于真实物品,你必须设置 config.yml 文件中的 display-item 下的 auto-set-first-producttrue 以允许你删除这个选项,启用后,若 display-item 未设置,那么出售的第一个真实物品将会被当做图标。该部分配置会使用到物品格式的配置;

  • display-item.modify-lore: 是否自动修改物品描述,自动添加商品价格等信息;可选参数(默认为 true)

  • display-name: 设置商品的显示名称,该名称会在基岩版 FormUI、内置变量 {product} 和增量购买菜单中使用;

  • add-lore: 为该商品单独设置自动修改额外物品描述的格式,可选参数。

  • buy-more: 设置该商品是否可以打开增量购买菜单,可选参数。

  • price-mode: 价格的模式,支持 ANY、ALL、CLASSIC_ANY 和 CLASSIC_ALL 参数,有关此选项的更多内容,请见 这里可选参数

  • bedrock: 基岩版菜单的配置,有关此选项的更多内容,请见 这里可选参数

  • buy-more: 该商品是否可使用增量购买菜单;可选参数

  • buy-more-menu: 该商品单独使用的增量购买菜单配置,与 config.yml 对应的格式一样,不再赘述(上面的示例也有);可选参数

  • price-mode: 价格的模式,支持 ANY、ALL、CLASSIC_ANY 和 CLASSIC_ALL 参数;可选参数

  • product-mode: 商品的模式,可填入的参数与上述相同。可选参数。

  • products: 作为商品的物品。支持物品语句和经济语句(分别见上述章节);可选参数。若未设置,玩家在购买/出售后不会获得任何东西,适用于命令商店。

  • buy-prices: 商品的购买价格。支持物品语句和经济语句(分别见上述章节);可选参数,若未设置则不能购买。

  • buy-prices.start-apply: 设置价格增加的起始购买次数;可选参数。默认为 0。

  • buy-prices.end-apply: 设置价格增加的最终购买次数;可选参数。默认不限制。

  • buy-prices.apply: 应用价格的购买次数,格式为:[1,2,3,4]可选参数

  • buy-prices.placeholder: 在内置变量 {price} 中的价格显示格式;默认使用语言文件中的格式。

  • buy-price.conditions: 若要使用这个价格购买物品,则玩家必须到达的条件;

  • sell-prices: 商品的出手价格。支持物品格式和经济格式(分别见上述章节);可选参数,若未设置则不能出售。

  • buy-actions: 购买商品后执行的一系列动作。见“动作”章节获取更多信息;可选参数

  • sell-actions: 出售商品后执行的一系列动作。见“动作”章节获取更多信息;可选参数

  • fail-actions: 商品因价格不足、库存不足等原因,未能成功交易时执行的动作。见“动作”章节获取更多信息;可选参数

  • buy-conditions: 玩家购买该商品所需达到的条件。见“条件”章节获取更多信息;可选参数

  • sell-conditions: 玩家出售该商品所需达到的条件。见“条件”章节获取更多信息;可选参数

  • buy-limits: 设置购买或出售的最大次数;可选参数。若未设置,商品购买次数不作限制。

  • buy-limits.global: 全局购买限制;可选参数。

  • buy-limits.default: 若玩家未到达下述的任意条件,他们就会使用该限制;若设置了 buy-limits,则该项为必需参数。

  • buy-limits.<条件 ID>: 达到该要求的玩家将会使用该限制。可在“条件”章节找到对应的格式。例如:

buy-limits:
default: 10
vip: 20
buy-limits-conditions:
vip:
- 'permission: test.permission'
  • buy-limits-reset-mode: 可填入的参数有 TIMERTIMED。若 buy-limits 部分配置存在且该选项未设置,我们将会使用你在 config.yml 中的默认值;若设置 buy-limits 选项则为必需参数。

  • buy-limits-reset-time: 见上,格式为 XX:XX:XX。若 buy-limits 部分配置存在且该选项不存在,我们会使用 config.yml 中的默认值; TIMER 代表间隔重置、TIMED 代表每日定时重置。 例如,你将重置时间设置为 15:00:00,现在时间为 2023-09-04 12:00:00 在 TIMER 模式下,重置时间为 15 小时后,即 2023-09-05 03:00:00。 在 TIMED 模式下,将会在 2023-09-04 15:00:00 进行重置。

  • sell-limits: 与 buy-limits 设置相同,但是是为出售使用的;

  • buy-cooldown-mode: 设置商品的冷却模式;可选参数

  • buy-cooldown-time: 设置商品的冷却时间。可选参数

四种价格/商品模式

如图所示,简单而言,带有 CLASSIC 前缀的模式和不带的模式价格计算方式不一 样。前者是乘法,后者是加法。例如你要购买 5 个面包,面包单价是 10 元,那 么前者是 5+5+5+5+5+...+5,后者是 5x10。前者因为是相加关系,每次相加的 数字可以不一样,后者因为是相乘关系,相乘过程中数字无法发生变动。

按钮

商店中同样可以插入菜单中的按钮(buttons)选项,功能完全一致。

Last updated