配置文件说明
JoyMart 的配置文件全部位于 plugins/JoyMart/ 目录下。首次启动服务器时插件会自动生成默认配置,详见 快速开始。修改后可执行 /gba reload 重载(命令见 命令与权限)。
config.yml — 全局配置
关键节点(与 plugins/JoyMart/config.yml 完全对应):
yaml
# ---------------- Economy ----------------
economy:
tokens: true # 是否启用 JoyMart 代币(内部货币,按玩家存储)
vault: true # 是否挂钩 Vault(金币奖励/消耗,可选)
# ---------------- Storage ----------------
storage:
type: yaml # yaml = 本地文件,mysql = 数据库(HikariCP 连接池)
autoSaveInterval: 120 # 自动保存间隔(秒),0 = 关闭(仅退出时保存)
mysql: # storage.type=mysql 时生效
host: localhost
port: 3306
database: gamebox
user: root
password: ''
poolSize: 10 # HikariCP 连接池大小
bungee: false # true = BungeeCord 子服共享高分榜
# ---------------- Language ----------------
language:
default: en # en / zh / de / es(缺失时回退到 en)
# ---------------- Lobby ----------------
lobby:
enabled: false # 大厅模式
worlds: [world] # 在这些世界发放快捷物品
slot: 4 # 快捷物品所在槽位 (0-8)
material: NETHER_STAR
name: '&6&lJoyMart'
lockItem: true # 是否禁止玩家丢弃/移动快捷物品
# ---------------- Invitations ----------------
invitations:
expiry: 30 # 邀请有效时长(秒)
style: json # json(聊天可点击)/ actionbar / title
# ---------------- Navigation ----------------
navigation:
mainMenuSize: 45 # 主菜单大小(9 的倍数,最大 54)
backButtonSlot: 40 # 游戏 GUI 中返回按钮槽位(-1 = 无)
closeButtonSlot: 44 # 关闭按钮槽位(-1 = 无)
# ---------------- Sounds ----------------
sounds:
enabled: true
click: UI_BUTTON_CLICK
win: ENTITY_PLAYER_LEVELUP
lose: BLOCK_ANVIL_LAND
token: ENTITY_EXPERIENCE_ORB_PICKUP
# ---------------- Scoreboard ----------------
scoreboard:
enabled: true # 游戏进行中侧边栏计分板(显示游戏/分数/最高分/代币)
# ---------------- Custom commands ----------------
commands:
onEnter: [] # 玩家进入 JoyMart 时以控制台执行
onLeave: [] # 玩家离开 JoyMart 时以控制台执行
# ---------------- Shop ----------------
shop:
enabled: true # 代币商店总开关
# ---------------- bStats ----------------
bstats: truegames.yml — 每款游戏配置
yaml
games:
2048:
enabled: true
subCommands: [2048, twentyfortyeight]
minesweeper:
enabled: true
subCommands: [ms, minesweeper]
# ... 其他游戏同理每款游戏的详细参数(分数、奖励、费用、连击阈值等)在 plugins/JoyMart/games/<id>/config.yml,首次启动时从 jar 内自动复制。
彩票 / 抽奖机的奖项池配置
彩票(lottery)和抽奖机(slotmachine)共享同一种奖项池格式,可在游戏内 GUI 编辑(推荐),也可直接编辑 plugins/JoyMart/games/<id>/config.yml:
yaml
# 一次抽奖 / 开奖消耗的代币(0 = 免费)
cost: 20
# 奖项池:按权重加权随机抽取一个
prizes:
- weight: 50 # 权重(越大越易抽中,必须 >= 0)
tokens: 10 # 奖励代币数(可省略)
money: 0.0 # 奖励金币(需 Vault,可省略)
commands: [] # 控制台命令(%player% 替换为玩家名,可省略)
displayName: '&e小奖 +10 代币'
- weight: 5
tokens: 200
money: 100.0
commands:
- 'say %player% 中了头奖!'
displayName: '&6&l头奖 +200 代币 + 100 金币'
- weight: 45
tokens: 0
displayName: '&7未中奖'GUI 即时回写
在 GUI 中编辑时,所有改动会即时回写到这个文件,无需手改。
tokenShop.yml — 代币商店
支持分类(categories)+ 商品(items)。每个商品字段:
yaml
items:
my_item:
material: DIAMOND
name: '&bDiamond'
lore:
- '&7Cost: &e50 tokens'
cost: 50
permission: '' # 看到该商品所需权限(空 = 所有人可见)
buyPermission: '' # 购买所需权限(空 = 所有人可买)
commands: # 购买时以控制台身份执行
- 'give %player% diamond 1'
closeAfter: true # 购买后关闭 GUI(默认 true)
confirm: false # 是否需要二次点击确认(默认 false)%player% 会被替换为购买者名字。
商店管理 GUI(分类管理 / 上架 / 下架)
无需手改 tokenShop.yml,有权限的管理员可直接在游戏内用 GUI 管理。
两种入口
/gba shop(需要gamebox.admin.shop权限)- 打开
/gb主菜单 → 进入代币商店 → 右下角"管理商店"按钮(仅有权限者可见)
操作
- 添加分类:在商店管理主界面点击左下角的"+ 添加分类"按钮 → 在聊天中输入分类键名(小写字母/数字/下划线)→ 再输入显示名称 → 新分类即创建,自动保存到
tokenShop.yml。 - 重命名分类:进入某个分类的管理页 → 点击底部"重命名分类"按钮 → 在聊天中输入新名称 → 自动保存。
- 删除分类:进入某个分类的管理页 → 点击底部"删除分类"按钮 → 再次点击确认 → 该分类及其所有商品一并删除并保存。
- 上架:进入某个分类的管理页 → 把要上架的物品拿在鼠标光标上 → 点击底部的"+ 上架物品"槽位。物品会以默认价格 10 代币加入该分类,自动保存到
tokenShop.yml。 - 下架:在分类管理页点击任意商品 → 第一次点击提示确认 → 第二次点击即删除并保存。
- 改价 / 改名:在分类管理页点击商品进入编辑页 → 可用 +/- 按钮调价,或点击改名按钮在聊天中输入新名称。
- 上架时商品名/lore 会沿用光标物品的显示名与 lore;价格默认 10,也可在编辑页调整。
上架 / 下架修复说明
旧版本在事件回调内同步修改光标物品,会出现"物品从光标上消失但未真正上架/下架"的同步问题。本版本已将所有光标操作与界面刷新统一通过 Bukkit.getScheduler().runTask() 延迟到下一 tick 执行,避免客户端 / 服务端状态错位。同时所有管理界面文本已完全中文化(沿用 language_zh.yml 中的 gui.shop* 键)。
商店管理权限
权限 gamebox.admin.shop 默认仅 OP 拥有,是 gamebox.admin.* 的子权限。普通玩家看不到管理按钮,也无法执行 /gba shop。