- 版权类型
- 原创
- 插件中文名称
- 幻素星辰-箱子商店
- 插件英文名称
- MagstarShop
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- Purpur
- 语言支持
- 中文(简体)
- 前置组件
- MagstarLib 1.0.3+ | https://www.minebbs.com/resources/magstarlib-magstar.9774/?ref=141356
MagstarEconomy 1.0.6+ | https://www.minebbs.com/resources/magstareconomy-itemsadder.9776/?ref=141356
NBT-API 2.14.0+ | https://www.spigotmc.org/resources/nbt-api.7939/
ProtocolLib 5.3.0+ | https://www.spigotmc.org/resources/protocollib.1997/
- 适配版本(Java)
- 1.21
- 1.20
- 1.19
- 1.18
- 1.17
- 1.16
- 1.15
- 1.14
————————————————————
Magstar, 与您。
————————————————————
欢迎您使用MagstarShop!这是一款功能十分强大的、拥有高达99.9%可自定义度的箱子商店插件。下面,请允许我向您介绍这款高端的箱子商店插件。Magstar, 与您。
————————————————————
由于这款插件的功能较多,语言表述较为苍白,请允许我在这里附上使用视频的地址,方便您查看这款箱子商店的功能强大之处。
【MagstarShop | 商店创建与查看信息、属性修改】
【MagstarShop | 商店模式设置、交易流程、溢出库存及库存暂留机制介绍】
如您所见,这个商店插件包含众多Gui的配置。接下来我将为您逐一介绍。
首先是shop_info.yml
代码:
#这个配置文件记载了商店主人查看商店详情GUI的配置。
#此配置文件应在插件刚刚加载时生成。
#此配置文件由插件作者提供。目的仅为提供一个Gui配置的范例。
#除此配置文件所标注的内容以外,没有其他占位符变量可用!
Title: "欢迎, {player} !"
Buttons:
white_stained_glass_pane:
Type: side #有七种类型,分别是side, location, price, player, item, tax, remove,分别对应七种不同的功能按钮。
Display: "&fDesigned by &d&lBerry_so" #物品展示名。side类型的物品,其物品名和lore都不能使用变量。
Lore: #物品lore配置
- ""
- "&eYou can custom nearly all of this GUI."
- ""
Location: #在箱子内的格数
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
red_stained_glass_pane:
Type: side
Display: "&fDesigned by &d&lBerry_so"
Lore:
- ""
- "&eYou can custom nearly all of this GUI."
- ""
Location:
- 10
- 12
- 14
- 16
recovery_compass:
Type: location
Display: "&f商店位置" #location类型的物品,其物品名不能有变量,但lore可以有变量。lore中的所有变量占位符都将在此示例配置文件中展示。
Lore:
- ""
- "&f[&b➥&f] 所在世界: &e{world}"
- ""
- "&f[&b➥&f] 坐标位置: ( &e{location_x} &f, &e{location_y} &f, &e{location_z} &f)"
Location: 9 #非side类型的物品,只能占一个格子。
emerald:
Type: price
Display: "&f单价" #price类型的物品,其物品名不能有变量,但lore可以有变量。lore中的所有变量占位符都将在此示例配置文件中展示。
Lore:
- ""
- "&f[&b➥&f] 单价: {price} {currency}" #{price}代表单价,{currency}代表货币种类。
- ""
- "&7&o左键单击来修改单价!" #别惊讶,确实有这个功能。而且不管你写不写这条lore,它都有这个功能。
Location: 11
player_head: #player_head材质的物品可以使用skin节点。
Type: player
Skin: "player:{player}" #如果要指定UUID的话,可以直接写 "uuid:balabalabala"。在此{player}变量代表玩家名。
Display: "&f欢迎来到你的店铺, &e&l{player} &f!" #player类型的物品,其物品名和lore有且仅有一个{player}变量。
Lore:
- ""
- "&f欢迎你, &b&o{player} &f!"
- "&f当前商店模式: {is_on_sale?<&a出售>:<&c收购>}" #三项表达式
- "&8—— &7点击更改商店模式!" #三项表达式
- ""
Location: 13
<item>: #仅有item类型的物品才可以使用<item>变量作为材质名。这里的<item>代指售卖物品的材质。
Type: item
Display: "&f所售物品: {item_display}"
Lore:
- ""
- "&f物品描述: "
- "{item_lore}" #{item_lore}应该独占整行!不要加其他字符,也不要加颜色符号。
- ""
- "&f[&b➥&f] 库存剩余: {store}" #这里{store}代指该商店剩余该物品库存的量
- ""
- "&7&o左键单击来添加库存!" #别惊讶,确实有这个功能。而且不管你写不写这条lore,它都有这个功能。
Location: 15
gold_nugget:
Type: tax
Display: "&f税收情况"
Lore:
- ""
- "&f[&b➥&f] 单件物品售出需交税: {tax}" #当商店为收购模式时,税按比例从店主所得中扣除;当商店为出售模式时,税按比例从客户所得中扣除。
Location: 17
barrier:
Type: remove
Display: "&c点击移除商店!"
Lore:
- ""
- "&4点击来移除这个商店。 (&o这将无法复原!&4)"
- ""
Location: 26
接下来是trade.yml
代码:
#这个配置文件记载了非商店主人玩家查看商店信息的配置。
#此配置文件应在插件刚刚加载时生成。
#此配置文件由插件作者提供。目的仅为提供一个Gui配置的范例。
#除此配置文件所标注的内容以外,没有其他占位符变量可用!
Title: "这里是 {owner} 的商店。"
Buttons:
white_stained_glass_pane:
Type: side #有七种类型,分别是side, location, price, player, item, tax, remove,分别对应七种不同的功能按钮。
Display: "&fDesigned by &d&lBerry_so" #物品展示名。side类型的物品,其物品名和lore都不能使用变量。
Lore: #物品lore配置
- ""
- "&eYou can custom nearly all of this GUI."
- ""
Location: #在箱子内的格数
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
red_stained_glass_pane:
Type: side
Display: "&fDesigned by &d&lBerry_so"
Lore:
- ""
- "&eYou can custom nearly all of this GUI."
- ""
Location:
- 10
- 12
- 14
- 16
recovery_compass:
Type: location
Display: "&f商店位置" #location类型的物品,其物品名不能有变量,但lore可以有变量。lore中的所有变量占位符都将在此示例配置文件中展示。
Lore:
- ""
- "&f[&b➥&f] 所在世界: &e{world}"
- ""
- "&f[&b➥&f] 坐标位置: ( &e{location_x} &f, &e{location_y} &f, &e{location_z} &f)"
Location: 9 #非side类型的物品,只能占一个格子。
emerald:
Type: price
Display: "&f单价" #price类型的物品,其物品名不能有变量,但lore可以有变量。lore中的所有变量占位符都将在此示例配置文件中展示。
Lore:
- ""
- "&f[&b➥&f] 单价: {price} {currency}" #{price}代表单价,{currency}代表货币种类。
- ""
Location: 11
player_head: #player_head材质的物品可以使用skin节点。
Type: player
Skin: "player:{player}" #如果要指定UUID的话,可以直接写 "uuid:balabalabala"。在此{player}变量代表访问商店的玩家名。如果想使用主人的名字,应当使用{owner}。
Display: "&f欢迎来到 {owner} 的店铺, &e&l{player} !" #player类型的物品,其物品名和lore有且仅有一个{player}变量。
Lore:
- ""
- "&f欢迎你, &b&o{player} !"
- "&f当前商店模式: {is_on_sale?<&a出售>:<&c收购>}" #三项表达式
- ""
Location: 13
<item>: #仅有item类型的物品才可以使用<item>变量作为材质名。这里的<item>代指售卖物品的材质。
Type: item
Display: "&f所售物品: {item_display}"
Lore:
- ""
- "&f物品描述: "
- "{item_lore}" #{item_lore}应该独占整行!不要加其他字符,也不要加颜色符号。
- ""
- "&f[&b➥&f] 库存剩余: {store}" #这里{store}代指该商店剩余该物品库存的量
Location: 15
gold_nugget:
Type: tax
Display: "&f税收情况"
Lore:
- ""
- "&f[&b➥&f] 单件物品售出需交税: {tax}" #当商店为收购模式时,税按比例从店主所得中扣除;当商店为出售模式时,税按比例从客户所得中扣除。
Location: 17
glow_berries:
Type: trade
Display: "&a&l点击进行交易!"
Lore: []
Location: 26
接下来是shop_list.yml
代码:
#这个配置文件记载了玩家查看商店列表GUI的配置。
#此配置文件应在插件刚刚加载时生成。
#此配置文件由插件作者提供。目的仅为提供一个Gui配置的范例。
#除此配置文件所标注的内容以外,没有其他占位符变量可用!
Title: "你的商店: 第 {page} 页"
Buttons:
white_stained_glass_pane:
Type: side
Display: "&fDesigned by &d&lBerry_so" #物品展示名。side类型的物品,其物品名和lore都不能使用变量。
Lore: #物品lore配置
- ""
- "&eYou can custom nearly all of this GUI."
- ""
Location:
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
red_stained_glass_pane:
Type: side
Display: "&fDesigned by &d&lBerry_so" #物品展示名。side类型的物品,其物品名和lore都不能使用变量。
Lore: #物品lore配置
- ""
- "&eYou can custom nearly all of this GUI."
- ""
Location:
- 46
- 47
- 48
- 49
- 50
- 51
- 52
emerald:
Type: next_page
Display: "&f点击进入下一页"
Lore:
- ""
- "下一页: {next_page}"
- ""
Location: 53
diamond:
Type: prev_page
Display: "&f点击进入上一页"
Lore:
- ""
- "上一页: {prev_page}"
- ""
Location: 45
<chest_shops>:
Material: chest
Display: "&0"
Lore:
- "&7==========&f[ &b商店信息 &f]&7=========="
- "&f[&b➥&f] 世界: &b{world}"
- "&f[&b➥&f] 坐标: (&e{location_x}&f, &e{location_y}&f, &e{location_z}&f)"
- "&f[&b➥&f] 模式: {is_on_sale?<&a出售>:<&c收购>}"
- "&f[&b➥&f] 物品: {item_display}"
- "&f[&b➥&f] 库存: {store}"
- "&f[&b➥&f] 单价: {price} {currency}"
- "&f[&b➥&f] 税收: {tax}"
Location:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
当玩家输入/shop list时会呼出此Gui。其中,<chest_shops>节点是箱子商店的通用显示配置。每个该玩家的箱子商店都会以此配置显示,就像这样:

接下来是restocking.yml
代码:
#这个配置文件记载了商店主人给商店添加库存的GUI的配置。
#此配置文件应在插件刚刚加载时生成。
#此配置文件由插件作者提供。目的仅为提供一个Gui配置的范例。
#除此配置文件所标注的内容以外,没有其他占位符变量可用!
Title: "这里是你的库存, {player} ."
TakeStoreLore: "&7点击来从库存里取出物品!" #在Buttons里的物品配置,Lore中含有这行,点击它就可以取出商店库存。
Buttons:
red_stained_glass_pane:
Display: "&fDesigned by &d&lBerry_so" #物品展示名。此Gui配置下的物品默认为side类型,其物品名和lore都不能使用变量。
Lore: #物品lore配置
- ""
- "&eYou can custom nearly all of this GUI."
- ""
Location: #在箱子内的格数
- 0
- 1
- 2
- 3
- 5
- 6
- 7
- 8
player_head:
Skin: "player:{player}"
Display: "&fDesigned by &d&lBerry_so" #物品展示名。此Gui配置下的物品默认为side类型,其物品名和lore都不能使用变量。
Lore: #物品lore配置
- ""
- "&e目前库存量: &b{store}"
- ""
- "&7点击来从库存里取出物品!"
Location: #在箱子内的格数
- 4
<available_locations>: #玩家可以放置库存的地方
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
接下来是viewer.yml
代码:
#这个配置文件记载了商店主人删除商店后存储删除前物品GUI的配置。
#此配置文件应在插件刚刚加载时生成。
#此配置文件由插件作者提供。目的仅为提供一个Gui配置的范例。
#除此配置文件所标注的内容以外,没有其他占位符变量可用!
Title: "第 {page} 页"
Buttons:
white_stained_glass_pane:
Type: side
Display: "&fDesigned by &d&lBerry_so" #物品展示名。side类型的物品,其物品名和lore都不能使用变量。
Lore: #物品lore配置
- ""
- "&eYou can custom nearly all of this GUI."
- ""
Location:
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
red_stained_glass_pane:
Type: side
Display: "&fDesigned by &d&lBerry_so" #物品展示名。side类型的物品,其物品名和lore都不能使用变量。
Lore: #物品lore配置
- ""
- "&eYou can custom nearly all of this GUI."
- ""
Location:
- 46
- 47
- 48
- 49
- 50
- 51
- 52
emerald:
Type: next_page
Display: "&f点击进入下一页"
Lore:
- ""
- "下一页: {next_page}"
- ""
Location: 53
diamond:
Type: prev_page
Display: "&f点击进入上一页"
Lore:
- ""
- "上一页: {prev_page}"
- ""
Location: 45
<available_locations>:
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
当玩家输入/shop view时,此Gui会被呼出。
本插件支持两种数据存储方式,分别是MySQL和Yaml。本插件不提供自动部署数据库的功能,所以如果您需要使用MySQL,您需要自己创建一个数据库,或将config.yml中选用的数据库修改为您现有的数据库。本插件将会自动填入表。
config.yml如下:
代码:
prefix: "§f[§bMagStar§3Shop§f]"
save-cycle: 5 #单位: 分钟(整数值)
mysql:
enabled: true # false 以使用文件,true 以使用 MySQL
host: localhost # 数据库主机
db-name: shop # 数据库名
username: root # 用户名
password: 123456 # 密码
port: 3306 # 端口
item-display: #物品显示功能。开启后,箱子上方将会悬浮一个该商店售出物品的样本。
enabled: true
view-distance: 32.0 #当玩家距离箱子商店多少格以内,可以看到箱子商店的悬浮物品。
holographic-display: true #是否展示商店的悬浮字。
holographic-style:
- "&f当前物品: {item_display}"
- "&f您拥有 &b{currency_name} &f: &e{currency_count} &f个"
- "&f当前售价: &b{currency_name} &e{shop_price} &f个 "
- "&f商店模式: {shop_mode}" #出售模式或收购模式。冒号前面的字符串代表收购,冒号后面的字符串代表出售。
sell_mode: "&a出售" #出售模式下,浮空字商店模式显示的字符串。
buy_mode: "&4收购" #收购模式下,浮空字商店模式显示的字符串。
此插件所使用的物品显示、浮空字显示均为发包机制!不存在刷物品和卡bug的可能性,所以您可以完全放心此插件的安全性。并且,浮空字还支持变量显示!当然,仅支持config.yml中演示的这些变量。
语言文件message.yml 所有节点均支持ItemsAdder的emoji。
代码:
no-permission: "&c你没有权限做这件事!"
flow-path:
- "&f您正在左键单击箱子,下面将进入物品出售流程。您可以随时输入 &bq &f来退出。"
- "&f您希望获得何种货币?"
- "&f您希望将单价定为多少?"
- "&f请确认: 您将以单价 &b{price} &f的 &b{currency} &f出售 &b{item} &f(&ay&f/&cn&f)"
quit: "&a您已经取消了该请求。"
create: "&a您已经成功创建商店!"
price: "&f您希望将单价设为多少?请输入一个整数值,或输入 &bq &f来退出。"
success: "&a商店单价设置成功!"
take_out: "&f请输入您想取出的库存数量。您可以随时输入 &bq &f来退出。您现有的库存量为: &b{store} &f. \n&d&l请确保您的背包有足够的空间!"
not_enough: "&c您的库存物品数量不够!"
not_empty: "&c您的背包没有足够的空间!"
get_item: "&f您已经获得 &b{amount} 个 &b{item} ."
remove_confirm: "&f您确定要移除您的商店吗? &ay &f/ &cn"
remove_accepted: "&f您已经成功将您的商店移除。请输入 &b/shop view &f来查看原商店中的库存。"
remove_cancelled: "&a您取消了商店移除。"
purchase_input: "&f您现在有 &b{count} &f的 &b{currency} &f, 共可购买 &b{all} &f个 &b{item} &f. 请在聊天框输入您想购买的数量, 或输入 &bq &f来取消请求."
no_money: "&c您的货币余额不足或商店库存不足!"
purchase_confirm: "&f您用 &b{price} &f的 &b{currency} &f购买了 &b{count} &f个 &b{item} &f."
purchase_overflow: "&f溢出库存的部分被储存到了 &b/shop view &f中."
sell_input: "&f您的背包中共有 &b{count} &f个 &b{item} &f, 共可出售 &b{max} &f个. 请在聊天框输入您想出售的数量,或输入 &bq &f来取消请求."
no_volume: "&c商店容量或你的物品不足!"
sell_confirm: "&f您出售了 &b{count} &f个 &b{item} &f, 获得了 &b{price} &f的 &b{currency} &f."
wrong_syntax: "&c请检查指令格式!"
only_player: "&c这个指令仅能由玩家执行!"
reload_success: "&f成功重载 &b{config} &f配置文件."
not_shop: "&c你所指的方块并非一个箱子商店!"
set_admin: "&f已经将该商店设置为 &b管理员 &f模式"
set_player: "&f已经将该商店设置为 &b玩家 &f模式"
on_edit: "&c您正在编辑一个商店,请稍后再试!"
on_trade: "&c您正在询问交易一个商店,请稍后再试!"
on_create: "&c您正在尝试创建一个商店,请稍后再试!"
other_accessing: "&c其他玩家正在与此商店交互,请稍后再试!"
owner_editing: "&c此商店的主人正在编辑此商店,请稍后再试!"
命令及权限
代码:
/shop help 打开指令帮助页面 #需要 magstarshop.help (推荐打开)
/shop reload <配置名> 重载某一配置文件 #需要 magstarshop.reload
/shop admin 将商店设置为管理员模式 #需要 magstarshop.admin
/shop list 查看你拥有的商店列表 #需要 magstarshop.list (推荐打开)
/shop view 打开内置的库存 #需要 magstarshop.view (推荐打开)
尾声
联系方式:QQ2057266133
插件交流群:QQ973646273
如果您觉得本插件还不错的话,烦请您对本插件评个分~
再次感谢您对Magstar系列插件的支持!