本帖最后由 刘先生。 于 2020-3-26 07:57 编辑




【BossShopPro】带你步入一个新的菜单时代
菜单插件的发展
大概是在2015年,那个时候菜单插件的可能主流是chestcommands插件,不得不说,虽然CC菜单长久不更新,但是现在在一般的服务器依然能吃得开,还是比较好用的,菜单的配置也比较容易,能满足中小型服务器的需求,随后另外一些菜单插件也应运而生,比如说DeluxeMenus等...同时也有一些新型的菜单插件,不使用箱子Gui,运用其他形式,比如说HoloGUI,全息菜单插件:
这类插件,提供了一种新的菜单形式,美观,但实际上这种插件实用性并不高,我们最终还是会用回箱子类型的菜单。再往后,又有新的菜单插件出来了,各个插件都有自己的长处与短处,当然我们也是可以一起用,优劣互补。
为什么要选择BossShopPro
其实一开始的时候,我是拒绝的,我个人不是很喜欢接触新的东西,我在上一部分也说了,chestcommands到现在是依然能满足我的要求的,平时我会用它,有时候我也会尝试使用DeluxeMenus,因为它支持左右键不同的触发方式,但是最近我了解了这个BossShopPro插件之后,我发现也许这才是完美的菜单插件,而且BossShopPro提供了强大的API,这使得这个插件的附属插件非常多,以及作者本人也开发了很多附属插件,这就形成了一个完整的系统,你可以使用BossShopPro以及附属来代替许多插件,并且BossShopPro的功能较多,支持多种条件/奖励方式,这也是我喜欢这个插件的原因。

关于插件为付费插件: 国内倒卖发布付费插件非常猖獗,我相信你们随便一搞就可以搞到付费版插件,但是我个人还是呼吁想用本插件的服主去买一个插件,开发者开发一个插件是非常不容易的,况且BossShopPro项目这么大,已经维护了相当长的时间,这是很辛苦的,插件功能强大,物有所值,希望每一个需要到此插件的人都能使用正当途径得来的插件。
购买链接: https://www.spigotmc.org/resourc ... -menu-plugin.25699/
BossShopPro插件简介
BossShopPro和其他的菜单插件在理解上有点不同,其他的菜单插件可以看到名字里面都会包含"menu",这是菜单的意思,但是BossShopPro则不同,你可以理解为这是一个带面板的商店插件,点击菜单内的图标可以理解成为你在买东西,只不过可能有时候不需要交钱(条件)就可以拿到你想买的东西(奖励)。

基本上,每一个菜单插件的大体组成就是,整个菜单系统→菜单页面→菜单图标,菜单图标就是我们在菜单里点击执行的按钮,那么,多个按钮就组成了一个完成的箱子菜单页面,多个商店菜单页面,也就组成了我们服务器的整个菜单系统。
BossShopPro文件认识
获取插件,安装到服务器上,正常开启服务器,可以看到BossShopPro已经被加载,而且插件的文件夹已经被释放出来了。
addons: 附属插件配置文件夹,如果安装了附属插件,附属插件的配置文件夹会存放在这里面。
shops: 存放所有商店页面的文件夹,一个商店页面一个文件,全部存放在这里面。
config.yml: 插件的配置文件。
messages.ym: 插件的消息提示配置文件。
命令&权限
  • /shop - 打开主商店
  • /shop <shop> [input] - 打开指定商店
  • /shop open <shop> <player> [input] - 为指定玩家打开指定商店
  • /shop close <player> - 为指定玩家关闭
  • /shop reload - 重载插件配置和所有附属
  • /shop read - 读取玩家主手中的物品并输出在商店中显示该物品所需的物品数据
  • /shop simulate <player> <shop> <shopitem> - 模拟项目点击效果
命令别名: /bs /bossshop
你可以删除不需要的命令,可以给商店单独添加命令

  • BossShop.open - 允许使用命令/牌子打开所有商店
  • BossShop.open.sign - 允许使用牌子打开所有商店
  • BossShop.open.sign.<shopname> - 允许使用牌子打开指定商店
  • BossShop.open.command - 允许使用命令打开所有商店
  • BossShop.open.command.<shopname> - 允许使用命令打开指定商店
  • BossShop.open.other - 允许给其他玩家打开商店
  • BossShop.close - 允许通过命令关闭指定玩家打开的商店
  • BossShop.createSign - 允许创建商店牌子
  • BossShop.reload - 允许重载插件
  • BossShop.read - 允许输出物品数据
  • BossShop.bypass - 跳过冷却限制
菜单头的设置
在插件生成默认配置的时候,是生成一些默认菜单的,从里面我们可以学到不少东西,首先打开插件配置文件夹内的shops文件夹,我前面说了,这个文件夹是储存商店页面文件的,我们打开 Menu.yml 文件,看到前五行,代码如下:
  1. ShopName: Menu
  2. DisplayName: '&4&l&nBoss&1&l&nShop&0 &0&lMenu'
  3. signs:
  4.   text: '[Menu]'
  5.   NeedPermissionToCreateSign: true
复制代码
我们挨个来解释一下,一行一行来,下面的数字代表行数,数字后面是对该行的详细解释。
  • 商店页面的代码,一般来说,每一个商店页面都有一个"名字",用于我们区别各个菜单,在上方,的示例中,商店的名字为 Menu 。
  • 当你打开商店的时候,会打开一个和大箱子一样的面板,那么面板上方显示的文字我们是可以自定义的,这个地方就是设置那里的。
  • 设置木牌的部分,这个地方不需要更改,不可以自定义。
  • 在牌子的第一行输入这里设置的字符,右键牌子可以打开这个商店。
  • 创建商店打开木牌是否需要权限,true为需要,false为不需要,权限名为 BossShop.createSign .
一个简单的图标
接着第一部分往下看,从第六行开始,一直到第十六行,代码如下:
  1. shop:
  2.   glass1:
  3.     MenuItem:
  4.     - name:&2&l[radioactive]
  5.     - amount:1
  6.     - type:RED_STAINED_GLASS_PANE
  7.     RewardType: NOTHING
  8.     PriceType: NOTHING
  9.     Message: ''
  10.     ExtraPermission: ''
  11.     InventoryLocation: 1
复制代码
一共十一行,还是和上面一样,数字代表对应行数解释:
  • 代表配置商店页面的图标部分开始了,不可更改
  • 图标代码,和菜单页面的代码一样,每一个图标都需要有一个“名字”来供我们区分,严格来讲这个没有什么实际意义,如果你很马虎的话,这个名字可以随便乱写。
  • 固定写法不可更改,代表下面可以开始配置图标的物品了。
  • 配置物品的显示名字。
  • 配置物品的显示数量。
  • 配置物品的材质,直接决定了显示什么物品。
  • 奖励的类型,因为我们插件支持多种奖励方式,所谓的奖励方式也就是点击效果,支持多种不同效果。
  • 条件类型,支持多种不同的条件,比如说你要做一个购买物品的效果,你可能需要一定的金币,金币不足则不会触发效果,这个就是设置条件的地方。
  • 当该物品被点击之后,在聊天栏提示的消息。
  • 点击该物品所需的权限,无此权限点击无效
  • 这个物品在菜单面板中的那个槽位,也就是说哪个位置,以数字来表示,设置为0则代表自动选择下一个槽位。
物品配置示例
物品配置部分:


观察上面的图,按照上面的配置,得到的物品应该是下面这样的:
多种条件类型
每一个可点击的菜单图标都有一个价格,也就是所说的条件,玩家点击之后必须要支付这些条件才能获得奖励,还可以通过插件添加更多条件类型,并且支持简单的数字计算,但不支持变量计算,比如:
PriceType: money
Price: 120 * 64

每一个菜单图标都有两项来控制条件,如上代码,PriceType设置的是条件类型,价格数值则使用Price来设置。

支持金币(Vault)条件:

支持空条件,就是什么都没有:

支持点数条件,这个是和很多插件联动的,代码如下:

支持扣物品条件:

支持一次性扣掉背包里的所有特定物品,可以用来作商店:

支持MC原版经验值:
多种奖励类型
奖励类型也是支持多种,并且支持简单数字运算的。

物品奖励:

玩家输入命令:

命令:

以管理员权限执行命令:

什么都不做:

给玩家主手物品添加附魔:

金币奖励:

奖励点数,需要和插件做联动:

给玩家添加权限奖励:

打开另一个菜单页面:

跳转到指定商店的页面:

跳转到BungeeCord服务器:

BungeeCord命令:

LilyPad服务器:

MC原版经验:

指定物品填满你的背包:

关闭当前菜单:
满足条件变换图标
大概介绍一下这个功能,大概就是,你一开始设定了一个图标,设置好了,然后你又配置了一个图标,和一开始那个图标的位置相同,加了一个Condition项,给你配置一个条件,比如说血量大于10,那么当玩家看到这个物品的时候,会检测当前玩家的血量,如果大于10,就显示第二个创建的图标,小于或等于10就显示第一个创建的图标。我们看一下作者给出的一个例子:

有没有看出什么东西来呢?如果你看了我的介绍,你应该可以看得懂,具体的效果图应该是这样的:


此功能拥有多种判定方式:
AND模式,需要满足下方条件中的所有条件。

OR模式,匹配类型: 你可以设置多个条件,用逗号分隔,只要满足其中一个则通过.

所有条件类型:


变量条件类型:

多种触发方式
说一下支持的点击类型:
left 左键
right 右键
middle 中键
shift_left Shift+左键
shift_right Shift+右键
我们来看一个作者放出的例子:
在条件类型,条件,奖励类型,奖励后面加上"_"加按键代号就好了,看配置就明白了。
ItemData的使用
作者嵌入插件内的一个功能,可以便于我们生成物品的数据,来给BossShopPro使用,手持一个物品,输入 /bs read 命令,就可以在BossShopPro的插件目录里面的ItemDataStorage.yml找到读取的物品数据。
变量的使用
作者开发的编辑器
BossShopPro Editor
BossShopPro 1.13.* 以及更高版本,网页应用.
Link


BossShopProConfigure

BossShopPro 1.12.* 及以下版本.独立桌面应用程序.
Link

BossShopConfigureX
BossShopPro 1.12.* 及以下版本.独立桌面应用程序.
Link
BossShopPro附属
注意:最新版本的PlayerShops GUI更新仅适用于1.13.*及更高版本。如果您使用较旧的Spigot版本,请下载PlayerShops GUI v1.2.2。

PlayerShops GUI

PlayerShops GUI是非常受玩家欢迎的商店插件。
使用这个插件玩家将能够创建自己的虚拟商店,他们可以在那里出售他们的物品。 还可以在公共的商店列表中浏览查看其他玩家的商店并购买商品。

一切都可以通过直观的GUI面板操作,基本上不需要命令!

PlayerShops是BossShopPro的附属插件。 它需要BossShopPro才能工作。



玩家可以通过一个简单的按钮创建自己的商店。


接下来,只需点击它们并在聊天栏中输入价格,就可以从背包中添加商品。


现在,只要他们按下“保存”按钮,他们的商店就会公开售卖,其他玩家可以购买这些商品。 一个大的GUI面板列出了所有可用的商店 - 按权限或其他可配置项设置排序。




  • 非常简单,直观且实用。
  • 无需在配置上耗费时间,一切都准备好可以直接使用(如果你想自定义插件,一切都是可配置的)。
  • 允许玩家创建自己的公共商店并出售他们的物品。
  • 支持的货币:金币(需要Vault),点券和经验。
  • 所有商店的GUI列表。
  • 玩家可以购买额外的商店位置。
  • 允许玩家给他们商店自定义一个私人名称。
  • 购买税系统。
  • 可设置商品价格最高和最低。
  • 物品黑名单支持。
  • 木牌系统支持。
  • 购买商店中的商品时会通知在线玩家,在商店访问结束时发送一条消息,而不是每次购买时发送一条消息。
  • 每一个商店都有一个图标。
  • 所有的消息和文本都是可配置的。

木牌示例(可直接访问玩家的商店[可选功能]):




  • /playershops - 打开插件主菜单
  • /playershops <player name> - 直接打开玩家的商店(也可以通过商店GUI列表访问)

别名:
  • /ps
  • /playershop

管理员命令:
  • /psadmin create <player name> - 给指定玩家创建商店
  • /psadmin delete <player name> - 删除指定玩家商店
  • /psadmin save <player name> - 保存指定玩家的商店并结束编辑模式(如果商店目前处于编辑模式)



默认情况下不适用权限系统(管理员命令除外)。 您可以通过在config.yml中设置“EnablePermissions:true”来启用权限系统。

  • layerShops.open - 允许打开主菜单
  • PlayerShops.create - 允许创建菜单
  • PlayerShops.buyslot - 允许购买额外位置
  • PlayerShops.rent - 允许租用更好的租赁点
  • PlayerShops.selecticon - 允许选择商店图标(在config.yml中需要设置'ShopIcon.AllowIconSelection:true')
  • PlayerShops.createSign - 允许玩家为自己的商店创建牌子
  • PlayerShops.createSign.other - 允许玩家为其他玩家的商店创建牌子
  • PlayerShops.admin - 管理员命令
BossShopPro附属②
ItemShops

ItemShops允许您使用简单的操作创建精美的GUI商店。
使用BossShopPro这个插件可以从一些基本数据中创建精美的出售或收购商店。

Features | 特点

  • 生成精美的商店菜单。
  • 玩家可以选择购买,填充背包,售出和全部售出(可以停用购买/出售商店)。
  • 可选择史诗商店风格或简洁风格。
  • 可以创建不同的无限商店,并与BossShopPro商店相结合。
  • 支持附魔药水效果和其他特殊物品。
  • 可以修改每个物品项和商店的外观。

史诗风格:


简洁风格:


关闭收购功能的史诗风格:


第一次加载ItemShops时,它会生成一个配置文件和一个导入'/plugins/BossShopPro/shops'的示例商店。 可以使用'/ itemshop'命令打开该商店。

每个项目应该这样设置:
  1.   stone:
  2.     Worth: 3.0
  3.     Item:
  4.     - type:STONE
  5.     - amount:64
复制代码

购买的价格和出售物品所得的金币并不是一个 Worth 值。
购买价格=Worth*价格乘数(在config.yml中设置)
卖出奖励=Worth*奖励倍数(在config.yml中设置 )

也可以设置固定价格和售出金币值。 只需在配置中添加“PriceBuy:<fix value>”或“RewardSell:<fix value>”就可以了。

除了价格,每一个物品项还需要一些必要的基本配置:
只需要定义物品的类型或者是id,格式为"type:<material name>" 或者 "id:<material id>")。
如果你使用简洁的商店风格,你需要设置数量。
你可以添加任何类型的信息:
  • durability:<durability> - 用于设置物品的子ID。
  • 还有更多...这里是一个完整的列表: 点我
ItemShops默认已经附带了一个大型商店,你可以直接拿来用。 当然,您也可以创建自己的商店或扩展默认的商店。
BossShopPro附属③
GuiShopManager

GuiShopManager允许玩家通过点击背包内的物品来打开商店/菜单面板。 这是一个BossShopPro附属插件。
你想要一个功能强大且免费的GUI插件吗? BossShop了解一下。

特点:
  • 单击特定的物品打开商店菜单。
  • 支持 BossShopPro 所支持的所有物品类型(包括变量)。
  • 设置物品在玩家背包中的位置。
  • 很多不同的可选设置。
  • 你可以将命令/玩家命令绑定到物品。
  • 支持多世界。

设置:
  • JoinDelay: 当玩家加入游戏之后,插件将等待指定时间之后给予物品(时间以毫秒为单位)。
  • AllowPlaceItems: 允许放置物品。
  • AllowDropItems: 允许丢弃物品。
  • AllowMoveItems: 允许在背包中移动物品。
  • AcceptLeftClick: 当玩家手持物品左键时执行操作。
  • DropItemsOnDeath: 如果设置为false,玩家死亡的时候不会丢弃物品。
  • GetItemsOnRespawn: 在玩家重生时给予物品。
  • ClearInvOnJoin: 在添加本插件物品之前清空背包。
  • ClearInvOnWorldChange: 当传送到另一个世界的时候清空背包。

命令:
  • /GSM reload - 重载插件
  • /GSM items - 列出所有插件物品
  • /GSM give <ItemName> [Player] - 给予插件物品

权限:
  • GUIShopManager.Reload
  • GUIShopManager.Items
  • GUIShopManager.Give





如何添加更多动作?
物品项目设置如下:
  1.   BossShopMenu:
  2.     Look:
  3.     - name:&6[o] &4&lBossShop &r&6Menu &6[o]
  4.     - lore:&7Right Click to open the Menu!
  5.     - type:BOOK
  6.     - amount:1
  7.     GiveOnJoin: true
  8.     InventoryLocation: 1
  9.     OpenShop: menu
复制代码
如果要添加命令或者是玩家命令,只需要加入一行配置:
  1. #Example 1
  2.     Command:
  3.     - fly %player%
  4. #Example 2
  5.     PlayerCommand:
  6.     - spawn
复制代码
理论上,一个物品可以添加多个动作。
如果使用世界限制物品?
  1.   BossShopMenu:
  2.     Look:
  3.     - name:&6[o] &4&lBossShop &r&6Menu &6[o]
  4.     - lore:&7Right Click to open the Menu!
  5.     - type:BOOK
  6.     - amount:1
  7.     GiveOnJoin: true
  8.     InventoryLocation: 1
  9.     OpenShop: menu
  10.     World: world1:world2:world3
复制代码
只需要在物品项中添加world行就可以了。
BossShopPro附属④
EssentialsGUI

此插件会根据你的 Essentials (或 EssentialsX)配置生成一个友好直观的箱子菜单。

使用此插件,玩家可以查看您的Essentials工具包(包括所有物品),只需点击一下即可购买或获取它们。

如果启用地标GUI系统,玩家将能够看到所有的地标列表,并且可以通过单击图标传送到他们想去的地方。

这是BossshopPro的附属插件,他需要BossshopPro和Essentials/EssentialsX才能运行。



  • 简单、直观、实用
  • 配置插件不需要过长的时间,一切都准备好可以立即使用(如果你想自定义插件,所有的东西都是可配置的)
  • 木牌支持
  • 支持Essentials和EssentialsX

工具包GUI

  • 自动创建工具包菜单,在里面列出了所有的工具包(也可以设置为只显示玩家可领取的工具包)。
  • 如果工具包可用且可以领取,玩家可以一键查看或领取。
  • 你可以自定义玩家不拥有该工具包但是可以看到内容。

地标GUI

  • 在一个简洁的GUI菜单中自动列出所有可用的Essentials坐标(可选: 仅显示与玩家位于同一世界的地标)
  • 玩家可以点击图标进行传送
  • 地标延迟,价格,所需权限等仍由Essentials设置,所有操作都像玩家手动输入warp命令一样。

因为warp图标的创建是自动化的,你不能给每个warp自定义图标,而所有warp的配置都是一样的。 您可以使用变量(例如'%warpid%')添加一些不同的地方,但是如果您想要一个花里胡哨的地标菜单,其中每个地标图标都符合你的心意,则自动生成的GUI可能不适合你。 您可以使用BossShopPro创建自己的地标菜单,这样就可以创建外观不同的传送按钮了。


EssentialsGUI创建的菜单权限和其他BossShoppro菜单的权限是一样的:

  • BossShop.open - 允许使用命令/牌子打开所有商店
  • BossShop.open.sign - 允许使用牌子打开所有商店
  • BossShop.open.sign.<shopname> - 允许使用牌子打开指定商店
  • BossShop.open.command - 允许使用命令打开所有商店
  • BossShop.open.command.<shopname> - 允许使用命令打开指定商店

如何设置EssentialsGUI木牌?
只需将配置文件中设置的文本写到木牌的第一行即可。 默认文本:'[Kits]'和'[Warps]'。
BossShopPro附属⑤
ThirdCurrency

这个BossShopPro附属插件增加了对更多货币的支持,可以在商店中使用。
你想要一个功能强大而且免费的GUI插件吗? 看看BossShop。

特点:
  • 可以使用额外的经济插件
  • 支持BossShopPro支持的所有点数插件(少了?给我留言!)
  • 可以使用新的变量显示玩家余额(可以在配置中自定义该变量的名称)
  • 消息内容可配置
  • 可以添加对无限点券插件的支持!

设置:
  • Name: 设置你想作为奖励/条件使用的货币名
  • PointsPlugin: 填写经济插件的名字
  • Message.NotEnoughPoints: 点券不足时提示的消息
  • Placeholder.DisplayPoints: 变量%price%或%reward%替换的文本

  1. '2':
  2.   Name: tokens
  3.   PointsPlugin: Tokens
  4.   Message:
  5.     NotEnoughPoints: '&cYou don''t have enough Tokens!'
  6.   Placeholder:
  7.     DisplayPoints: '%tokens% Tokens'
  8.   PointsDisplay:
  9.     Enabled: false
  10.     List:
  11.     - 1000000:6:2:%number% million
  12.     - 1000:3:2:%number%k
  13.     - 0:0:0:%number%
复制代码



它是如何工作的?
在配置文件中设置您的新货币(假设你设置了“Name:tokens”)
完成! 现在,您可以在商店中使用新货币。 示例(使用配置中定义的名称“tokens”)
  1. "RewardType: tokens"
  2. "PriceType: tokens"
  3. Some text: "You have %tokens% tokens".
复制代码
BossShopPro附属⑥
LimitedUses

此BossShopPro插件允许通过添加新的条件类型来限制商品的使用量。
你想要一个功能强大且免费的GUI插件吗? 看看BossShop。

特点:
  • 新条件"uses"(最大使用数量)
  • 新条件"cooldown"(使用冷却时间)
  • 新变量%uses% - 已使用数量
  • 新变量%uses_<shop name>:<shopitem name>% - 可以在任何地方显示已使用数量
  • 新变量%cooldown_<shop name>:<shopitem name>% - 可以在任何地方显示冷却时间
  • 插件非常轻量



命令:
(可选功能,可以用来设置玩家更多的购买机会)

  • lius set <player> <shop> <shopitem> <count>
  • lius add <player> <shop> <shopitem> <count>
  • lius remove <player> <shop> <shopitem> <count>
  • lius reset <player> <shop> <shopitem>
  • lius reset <player>
  • lius resetall
基于权限: LimitedUses.Modify[size=14.6667px]

示例配置:

示例商店:
BossShopPro附属⑦
TrickyShops

这个BossShopPro附属可以通过简单的方式让你更快的制作商店。
许多商店都有类似的相同配置,你还需要一次性写一整套配置吗?不再需要了!

TrickyShops可以让你创建一个预设的配置,需要包含变量。
现在,您只需选择预设的配置并输入变量的值即可创建新的物品项。

特点:
  • 帮你节省大量时间
  • 您可以创建无限的配置预设
  • 在设置相应的布局后,可以最少的时间和创建复杂的物品项
  • 简单基本的系统
  • 支持计算系统

听起来很复杂? 嗯,一旦你明白它就会很好的帮助你。 我将会给你一个例子:


以上项目的配置如下:

牛逼吧?
两个物品项目使用了相同的预设配置。

这可能看起来很复杂,但是也不会需要太多时间。
每一个预设配置分为两个阶段:输入和输出。

我们先从输入开始看:


现在剩下的就是输出:

学习这些最好的方法就是多次尝试。

高级计算功能示例:
完结
2019-6-20