上手 配置详解 常用改动 命令与权限 免费与商业 下载
PAPER 1.20+ · JAVA 21 · MIT

TSTMenuMinecraft 服务器主菜单插件,2.1.0

主菜单、快捷传送、系统商店、玩家市场、签到与在线奖励。免费版 MIT 开源,装上就用,不联网也不上报;商业版多五项功能,每次启动都要过云端授权。

商业版 48 元买断,单服永久。需要授权码才能启动,下载前先加 QQ 3057722030 拿码,没码装上去会直接关服。

v2.1.0 Java 21 Paper / Purpur 1.20+ Vault SQLite MIT
3免费模块
0预装商品
2独立 jar
MIT免费版开源
01

功能

标「商业版」的五项不在免费版代码里,只有商业版 jar 有。

主菜单 免费

54 格箱子。余额和在线时长放底部。入口按 menu.modules 显示,商业版还能加自定义按钮。

快捷传送 免费

主城、地标、随机传送、玩家互传。地标读 EssentialsX 的 warp,名单在 menu.warps。

系统商店 免费

价格跟库存走,买得越多越贵。每小时按 restock-rate 往基准价回落。支持买入、卖出、一键回收。

玩家市场 免费

玩家自己挂单、定价、撤单。每人挂单上限、过期天数、成交手续费都可配,手续费能设 0。

签到与在线奖励 免费

每日签到领金币,在线满 N 分钟再领一次,另有一次新手礼包。记录按 UUID 存在本地 SQLite。

界面与数据 免费

纯箱子 GUI,不依赖资源包。分类、商品、价格写在 YAML,改完 /tstshop reload 生效。

排行榜 商业版

金币、在线时长、死亡、击杀四类。配了官网接口就跨服,没配就只统计本服。

个人中心与社交 商业版

资产、云仓库、账号绑定;在线玩家列表、戳一戳、站内邮件。

自定义菜单项 商业版

图标、槽位、名称、说明、权限、点击动作都可配。动作支持 command、console、message、url、打开内置页。

02

安装

1

放依赖

Vault 必须装。经济插件任选(EssentialsX 自带)。PlaceholderAPI 是软依赖,装了会用它解析变量,没装也不影响启动。

2

放插件

TSTMenu-2.1.0.jar 放进 plugins,启动服务器。控制台会打印一行 [TSTMenu] 已启用 和当前版本。

3

看生成的文件

首次启动生成 plugins/TSTMenu/,里面是配置和空数据库。三个商品分类默认都是空的。

4

改配置后重载

游戏内 /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。

03

命令与权限

命令作用权限
/menu打开主菜单tstmenu.use
/menu mail直接打开邮件页(商业版)tstmenu.use
/menu reload重载 config.ymltstmenu.admin
/shop [分类]打开商店,别名 /storetstshop.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
04

配置详解

配置文件里没有注释,字段说明都在这里。改完 /menu reload。

brandlicensemenu.modulesmenu.warpsmenu.dailymenu.customshopmarketwebsitereport

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.yml

restock-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
05

商品配置

文件是 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
06

常用改动

五个最常见的操作,照着改就行。

改服务器名

config.yml
brand:
  name: "我的服"

改完 /menu reload,主菜单和商店标题一起变。

关掉商店,只留菜单和传送

config.yml
menu:
  modules:
    shop: false

关掉后主菜单里没有商店入口,/shop 命令也打不开,但已有商品和挂单数据保留,改回 true 就恢复。

加一个商品

shops.yml
categories:
  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.yml
market:
  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}。

07

免费版与商业版

两个独立 jar。免费版没有下面五项的实现,反编译也找不到。

功能免费版商业版
主菜单✓✓
快捷传送✓✓
系统商店✓✓
玩家市场✓✓
签到 / 在线奖励 / 新手礼包✓✓
排行榜×✓
个人中心×✓
社交×✓
邮件×✓
自定义菜单项×✓
云端授权校验×✓
服务器信息上报×✓
授权码不需要需要

商业版每次启动向 /api/license/verify 发一次 POST,连接超时 3 秒、读取超时 5 秒。校验失败不降级成演示模式,直接关服。免费版不联网:不做校验,也不上报。

08

常见问题

免费版要不要授权码?
不要。免费版 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 协议,保留版权声明即可。商业版不含源码,不适用。
09

下载

2.1.0,2026-11-13 构建。两个 jar 只装一个。

免费版

MIT。主菜单、传送、商店、市场、签到。不联网、不上报、不要授权码。源码同步公开。

下载免费版(13.2 MB)
SHA-256
F76BC32DDDA2E5C3DB55DB0FF773EEB6E926691F886A341B2943392515CF8AFF

商业版

在免费版基础上加排行榜、个人中心、社交、邮件、自定义菜单项。启动时云端校验授权,失败即关服。

48 元单服永久 · 含 2.x 全部更新
下载前先加 QQ 3057722030 拿码。一码绑定一个 server-id,换服免费改一次。
下载商业版(13.2 MB)
SHA-256
26861E3D25960A519B490DA01C6D21BE28FB4A4810A85D5A7D58EE846AC9B434

免费版源码

两个 java、三份配置、编译说明、LICENSE。源码与配置里都没有注释,字段说明在本页第 04 节。

下载源码(29 KB)
SHA-256
F03720418983DF9F0A67D54CE9EC7D3373FBB47D56D755B056BD28EEC3D7D6A1