TSTMenuMinecraft 服务器主菜单插件,2.1.0
主菜单、快捷传送、系统商店、玩家市场、签到与在线奖励。免费版 MIT 开源,装上就用,不联网也不上报;商业版多五项功能,每次启动都要过云端授权。
商业版 48 元买断,单服永久。需要授权码才能启动,下载前先加 QQ 3057722030 拿码,没码装上去会直接关服。
功能
标「商业版」的五项不在免费版代码里,只有商业版 jar 有。
主菜单 免费
54 格箱子。余额和在线时长放底部。入口按 menu.modules 显示,商业版还能加自定义按钮。
快捷传送 免费
主城、地标、随机传送、玩家互传。地标读 EssentialsX 的 warp,名单在 menu.warps。
系统商店 免费
价格跟库存走,买得越多越贵。每小时按 restock-rate 往基准价回落。支持买入、卖出、一键回收。
玩家市场 免费
玩家自己挂单、定价、撤单。每人挂单上限、过期天数、成交手续费都可配,手续费能设 0。
签到与在线奖励 免费
每日签到领金币,在线满 N 分钟再领一次,另有一次新手礼包。记录按 UUID 存在本地 SQLite。
界面与数据 免费
纯箱子 GUI,不依赖资源包。分类、商品、价格写在 YAML,改完 /tstshop reload 生效。
排行榜 商业版
金币、在线时长、死亡、击杀四类。配了官网接口就跨服,没配就只统计本服。
个人中心与社交 商业版
资产、云仓库、账号绑定;在线玩家列表、戳一戳、站内邮件。
自定义菜单项 商业版
图标、槽位、名称、说明、权限、点击动作都可配。动作支持 command、console、message、url、打开内置页。
安装
放依赖
Vault 必须装。经济插件任选(EssentialsX 自带)。PlaceholderAPI 是软依赖,装了会用它解析变量,没装也不影响启动。
放插件
TSTMenu-2.1.0.jar 放进 plugins,启动服务器。控制台会打印一行 [TSTMenu] 已启用 和当前版本。
看生成的文件
首次启动生成 plugins/TSTMenu/,里面是配置和空数据库。三个商品分类默认都是空的。
改配置后重载
游戏内 /menu reload 重载 config.yml;商品改完 /tstshop reload。两个都不需要重启服务器。
plugins/ ├── Vault.jar ├── EssentialsX.jar └── TSTMenu-2.1.0.jar plugins/TSTMenu/ ├── config.yml 菜单、模块、授权 ├── shops.yml 商品与价格 └── shop.db 库存、挂单、签到
游戏内按 /menu 打开。玩家没有 tstmenu.use 权限就点不开,普通玩家默认继承到,管理员组建议单独给 tstmenu.admin。
命令与权限
| 命令 | 作用 | 权限 |
|---|---|---|
| /menu | 打开主菜单 | tstmenu.use |
| /menu mail | 直接打开邮件页(商业版) | tstmenu.use |
| /menu reload | 重载 config.yml | tstmenu.admin |
| /shop [分类] | 打开商店,别名 /store | tstshop.use |
| /market | 打开玩家市场 | tstshop.market |
| /market sell <总价> [数量] | 把主手物品挂单,不写数量默认整组 | tstshop.market |
| /market my | 看自己的挂单 | tstshop.market |
| /market cancel <编号> / help | 撤单 / 看用法 | tstshop.market |
| /tstshop reload | 重载 shops.yml,库存保留 | tstshop.admin |
| /tstshop setstock <id> <数量> | 改某个商品的当前库存 | tstshop.admin |
| /tstshop setprice <id> buy|sell <价格> | 改基准买价或卖价 | tstshop.admin |
| /tstshop sync | 手动触发一次官网同步 | tstshop.admin |
| /tstshop license | 查看本站标识与授权状态(商业版) | tstshop.admin |
| /tstmenu send <玩家> <内容> | 发一封系统邮件(商业版) | tstmenu.admin |
配置详解
配置文件里没有注释,字段说明都在这里。改完 /menu reload。
brand
config.yml标题里显示的服务器名。{brand} 会替换成 name。支持 & 颜色代码和 &l 加粗。
brand: name: "潮汐" menu-title: "{brand} 服务器菜单" shop-title: "{brand} 商店"
license
config.yml · 仅商业版免费版的配置里没有这一段,也不需要。商业版启动时把 server-id 和 code 发到 cloud-url 校验:通过才继续加载;不通过(码不存在、已过期、绑定了别的服务器、连不上接口)就打印原因,5 秒后关闭服务器。code 首次校验后绑定 server-id,之后改标识码即失效。
license: enforce: true cloud-url: "https://tstservers.pages.dev/api/license/verify" server-id: "myserver" code: "XXXX-XXXX-XXXX-XXXX"
menu.modules
config.yml七个入口的开关。关掉只是不显示入口,已有数据(挂单、签到、邮件)不会丢。免费版的配置里只有前三个键,rank、profile、social、mail 的实现不在这个 jar 里。
menu:
modules:
teleport: true
shop: true
daily: true
rank: false
profile: false
social: false
mail: false
menu.warps
config.yml传送大厅里的地标列表。名字必须是 EssentialsX 里已存在的 warp,大小写一致。列表为空时传送页只剩玩家互传。
warps:
- resource
- end
- event
- trade
menu.daily
config.yml签到与在线奖励。checkin-coins 是签到给的钱;reward-minutes 是连续在线多少分钟后能领;reward-coins 是领多少。礼包格式 材质:数量,不写数量就是 1。
daily:
checkin-coins: 50.0
reward-minutes: 30
reward-coins: 120.0
kit-items:
- "IRON_HELMET"
- "IRON_CHESTPLATE"
- "IRON_LEGGINGS"
- "IRON_BOOTS"
- "BREAD:16"
menu.custom
config.yml在主菜单里加自己的按钮,只在商业版渲染。slot 用 0-53,避开已占用的 10、12、14、16、28、31、34、45、49、53。action 有五种写法。
custom:
spawn:
enabled: true
slot: 11
material: COMPASS
name: "&b回主城"
lore:
- "&7一秒回到出生点"
permission: ""
action: "command spawn"
site:
enabled: true
slot: 13
material: PAPER
name: "&e服务器网站"
action: "url https://example.com"
qq:
enabled: true
slot: 15
material: OAK_SIGN
name: "&a玩家群"
action: "message &a群号 123456789"
| action 写法 | 效果 |
|---|---|
| command <指令> | 以玩家身份执行,权限不足按服务器规则失败 |
| console <指令> | 以控制台身份执行,可用 {player} 占位 |
| message <文字> | 直接给玩家发一句聊天 |
| url <链接> | 给玩家发一条可点链接 |
| open <页面> | 打开内置页:hub teleport shop storesys market daily rank profile social mail |
shop
config.ymlrestock-rate 控制价格多久回到基准:0.10 表示每小时把当前偏离量收回一成。price-decimals 是价格显示几位小数,只影响显示,结算用完整精度。
shop: restock-rate: 0.10 price-decimals: 2
market
config.yml玩家市场。fee-percent 是成交抽成,0 表示不收;max-listings 是每人同时挂单上限;expire-days 到期后物品退回发件箱;page-size 取值 9-45。
market: enabled: true max-listings: 10 expire-days: 7 fee-percent: 0.0 page-size: 36
website
config.yml对接排行榜网站的接口,没有配套网站就保持关闭。开了之后排行榜数据走远程接口,sync-seconds 与 pull-seconds 是推送和拉取的间隔秒数。
website: enabled: false base-url: "" server-token: "" server-id: "" sync-seconds: 60 pull-seconds: 60
report
config.yml · 仅商业版把在线人数、人数上限、版本、TPS、已开模块、服务器名和 MOTD 推到服务器列表站,间隔 interval-seconds 秒,最少 240。列表站注册服务器后会给出 api-key。免费版没有这段配置,也不会向外发任何请求。
report: enabled: false url: "https://tstservers.pages.dev/api/server/push" api-key: "" interval-seconds: 300
商品配置
文件是 plugins/TSTMenu/shops.yml。默认不预装任何商品。
title 和 icon 决定商店里那一格长什么样。空分类写 items: {},进去后是空列表。categories:
blocks:
title: 方块
icon: STONE
items:
diamond_01:
name: 钻石
material: DIAMOND
base-buy: 80.0
base-sell: 30.0
target-stock: 64
stock: 64
alpha: 0.15
min-buy: 60.0
max-buy: 110.0
slot: 10
| 字段 | 必填 | 说明 |
|---|---|---|
| name | 是 | 商店里显示的名字 |
| material | 是 | 材质名,如 DIAMOND、ENCHANTED_BOOK |
| base-buy / base-sell | 是 | 基准买价、基准卖价。卖价可以写 0 表示不收 |
| target-stock | 是 | 目标库存,价格围绕它波动 |
| stock | 否 | 初始库存,不写等于 target-stock |
| alpha | 否 | 价格敏感度,越大价格波动越剧烈,默认 0.15 |
| min-buy / max-buy | 否 | 买价上下限,防止价格失控 |
| slot | 否 | 显示在第几格,不写按顺序排 |
| enchants | 否 | 附魔,如 MENDING: 1 |
| buy-limit / sell-cap | 否 | 限购与回收上限,结构 type: daily|weekly|total 加 amount |
常用改动
五个最常见的操作,照着改就行。
改服务器名
config.ymlbrand:
name: "我的服"
改完 /menu reload,主菜单和商店标题一起变。
关掉商店,只留菜单和传送
config.ymlmenu:
modules:
shop: false
关掉后主菜单里没有商店入口,/shop 命令也打不开,但已有商品和挂单数据保留,改回 true 就恢复。
加一个商品
shops.ymlcategories:
blocks:
title: 方块
icon: STONE
items:
emerald_01:
name: 绿宝石
material: EMERALD
base-buy: 12.0
base-sell: 5.0
target-stock: 32
alpha: 0.2
改完 /tstshop reload。注意 categories 下已有分类不要重复写,items 缩进比 items 多两格。
改传送地标
config.yml warps:
- spawn
- resource
- nether_hub
每个名字必须先在 EssentialsX 里 /setwarp spawn 建好,否则点了会提示找不到地标。
玩家市场不收手续费
config.ymlmarket:
fee-percent: 0.0
这个值按配置生效,不会被插件强制改回 5%。想抽 5% 就写 5.0。
加一个“回主城”按钮
config.yml · 商业版 custom:
spawn:
enabled: true
slot: 11
material: COMPASS
name: "&b回主城"
action: "command spawn"
玩家点一下就以自己的身份执行 /spawn。想跳过权限检查就写 console spawn {player}。
免费版与商业版
两个独立 jar。免费版没有下面五项的实现,反编译也找不到。
| 功能 | 免费版 | 商业版 |
|---|---|---|
| 主菜单 | ✓ | ✓ |
| 快捷传送 | ✓ | ✓ |
| 系统商店 | ✓ | ✓ |
| 玩家市场 | ✓ | ✓ |
| 签到 / 在线奖励 / 新手礼包 | ✓ | ✓ |
| 排行榜 | × | ✓ |
| 个人中心 | × | ✓ |
| 社交 | × | ✓ |
| 邮件 | × | ✓ |
| 自定义菜单项 | × | ✓ |
| 云端授权校验 | × | ✓ |
| 服务器信息上报 | × | ✓ |
| 授权码 | 不需要 | 需要 |
商业版每次启动向 /api/license/verify 发一次 POST,连接超时 3 秒、读取超时 5 秒。校验失败不降级成演示模式,直接关服。免费版不联网:不做校验,也不上报。
常见问题
- 免费版要不要授权码?
- 不要。免费版 jar 里没有校验代码,也没有 license 配置段,装上直接能用。
- 免费版能改配置打开那五项吗?
- 不能。排行榜、个人中心、社交、邮件、自定义菜单项的代码不在免费版 jar 里,配置里也没有对应键。要用就换商业版 jar。
- 商业版没授权会怎样?
- 启动时云端校验不通过就打印失败原因,5 秒后自动关服。不会进演示模式,也不会带着半套功能跑。
- 商业版多少钱?
- 48 元买断,单服永久,含 2.x 全部更新。一个码绑定一个
server-id,换服免费改一次,之后再换另议。多服或服群直接加 QQ 3057722030 谈。 - 授权码怎么来?
- 联系 QQ 3057722030,把服务器标识(
server-id)发过去,换一个 16 位码填进license.code。第一次校验后码绑定这个标识,换服务器或改标识都要重新发码。下载商业版之前请先拿码,没有码装上会直接关服。 - 免费版会上报服务器信息吗?
- 不会。免费版没有任何对外请求;上报只出现在商业版,而且
report.enabled默认是false,要自己开了才发。 - 数据存在哪,换版本会丢吗?
plugins/TSTMenu/shop.db(SQLite)。库存、挂单、签到、邮件都在里面。升级时保留这个文件和shops.yml即可。- 服务端要求?
- Java 21 运行环境,Paper 或 Purpur 1.20 及以上。Vault 必需,EssentialsX 和 PlaceholderAPI 是软依赖。
- 打开商店是空的?
- 默认不预装商品。
shops.yml里三个分类的items都是空的,加商品后/tstshop reload。 - 能修改后重新发布吗?
- 免费版可以,MIT 协议,保留版权声明即可。商业版不含源码,不适用。
下载
2.1.0,2026-11-13 构建。两个 jar 只装一个。
免费版
MIT。主菜单、传送、商店、市场、签到。不联网、不上报、不要授权码。源码同步公开。
下载免费版(13.2 MB)F76BC32DDDA2E5C3DB55DB0FF773EEB6E926691F886A341B2943392515CF8AFF
商业版
在免费版基础上加排行榜、个人中心、社交、邮件、自定义菜单项。启动时云端校验授权,失败即关服。
26861E3D25960A519B490DA01C6D21BE28FB4A4810A85D5A7D58EE846AC9B434
免费版源码
两个 java、三份配置、编译说明、LICENSE。源码与配置里都没有注释,字段说明在本页第 04 节。
下载源码(29 KB)F03720418983DF9F0A67D54CE9EC7D3373FBB47D56D755B056BD28EEC3D7D6A1