• 周年纪念勋章活动已圆满结束,如有已购买但仍未申请的用户,可以通过对应勋章的下载链接申请~
MagstarShop | 当虚拟交易邂逅极简美学——交易,从此大不同。

原创 工具 经济 MagstarShop | 当虚拟交易邂逅极简美学——交易,从此大不同。 1.0.2

版权类型
原创
插件中文名称
幻素星辰-箱子商店
插件英文名称
MagstarShop
原帖地址
#
支持的核心(服务端)
  1. Spigot
  2. Paper
  3. 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. 1.21
  2. 1.20
  3. 1.19
  4. 1.18
  5. 1.17
  6. 1.16
  7. 1.15
  8. 1.14
————————————————————

Magstar, 与您。

————————————————————
欢迎您使用MagstarShop!这是一款功能十分强大的、拥有高达99.9%可自定义度的箱子商店插件。下面,请允许我向您介绍这款高端的箱子商店插件。


由于这款插件的功能较多,语言表述较为苍白,请允许我在这里附上使用视频的地址,方便您查看这款箱子商店的功能强大之处。
【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
当商店的主人右键打开他的商店时,此Gui就会被呼出。这个Gui的配置是一个通用配置,接下来的很多Gui的配置都与此配置大同小异。


接下来是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
当其他玩家打开此商店时,会呼出这个Gui。

接下来是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>节点是箱子商店的通用显示配置。每个该玩家的箱子商店都会以此配置显示,就像这样:


pEmJIrF.md.png



接下来是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
当玩家打开自己的商店,并修改库存的时候,这个Gui会被呼出。需要注意的是,此Gui最上方有一个TakeOutStore的节点。这个节点储存一个lore,当玩家点击含有此lore的物品时(无需考虑颜色代码),将会关闭此Gui,并进入取出库存的对话中。


接下来是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系列插件的支持!
  • 喜欢
反馈: DuoDuoJuZ
作者
Berryso
价格
10金粒
下载
13
查看
509
首次发布
最后更新

评分

0.00 星 0 次评分

Berryso 的其他资源

最新更新

  1. 修复了一些bug,更新了一些新的功能。

    · 修复了当玩家尝试进行交易对话的时候退出游戏,会导致该商店被一直占用的bug。 ·...
  2. 修复了一些bug。

    · 修复了ChunkUnloadEvent事件触发时,部分端不能正确处理事件的问题。 · 修复了CurrencyHandlers类关于Currency.getMax()方法计算错误的问题。
后退
顶部 底部