TinyEssentials
概述
TinyEssentials 是 BTC 服务器的“基础功能(essentials)”层,灵感来自 EssentialsX,并构建于 TypeWriter 之上。它带来了 29 个玩家和管理员命令(家、传送请求、消息、飞行、隐身、治疗…)、聊天格式化器、加入物品、死亡惩罚(“拾荒者”)、玩家列表、计分板和 Boss 血条管理器、带有日历的自定义昼夜时长、快速旅行菜单以及游戏内维基。
一切都在网页面板中配置。每个命令都是独立的条目,因此你可以自行选择它的名称和权限,并且只添加你想要的命令。消息共用于一个 Tiny Essentials 配置条目,而较大的功能(家、聊天、玩家列表、日历)各自拥有自己的条目。
菜单(家、日历、快速旅行、维基)使用 GUI 扩展,以及你在页面上绘制的布局来渲染。
功能
- 29 个命令条目 — 飞行、无敌、饥饿恢复、治疗、隐身、速度、游戏模式、修复、返回、TPA、消息、家等,每个都可配置名称和权限。
- 家 — 按玩家保存的家,带有基于权限的数量限制、冷却时间、带编辑器(重命名、图标、删除)的分页菜单,并支持保存存储。
- 传送请求 —
/tpa和/tpahere,带有超时、开关,以及/back历史记录。 - 私信 —
/msg、/reply和/msgtoggle,颜色代码会被中和。 - 聊天格式 — 按权限和优先级选择的 MiniMessage 格式,当 MySQL 以共享模式运行时,通过 Redis 在多个服务器之间共享。
- 玩家列表、计分板、Boss 血条 — 页眉/页脚、名称格式化、排序、80 个槽位的布局、条件和动画。
- 加入物品 — 在加入或重生时给予的物品,带有点击命令和保护标志。
- 拾荒者 — 死亡时物品和经验按百分比损失、受保护的物品,以及基于占位符的惩罚。
- 自定义时间和日历 — 昼夜时长、带有月份、星期和事件的日历、日历菜单、fact、audience 过滤器和占位符。
- 快速旅行和维基 — 基于区域的旅行菜单(带有锁定条件),以及由章节和文章构成的游戏内指南。
安装
- 安装 PacketEvents,玩家列表功能需要它。
- 安装 TinyEssentials 声明为依赖的 MySQL 扩展(Redis 用于跨服务器聊天和玩家列表名册),以及用于菜单的 GUI 扩展。
- 可选:安装 Translate,为其他服务器上的玩家翻译全网络聊天。
- 将 TinyEssentials 的 JAR 放入
plugins/Typewriter/extensions/,然后重启服务器。 - 使用你的权限插件授予命令权限(参见权限表)。基于组的玩家列表功能会读取名为
group.<name>的权限。
快速上手
- 在 TypeWriter 网页面板中,打开一个 static 页面,添加一个 Tiny Essentials 条目。没有它,每个命令都会回复 TinyEssentials 尚未配置。调整
defaultTeleportCooldown、tpaTimeoutSeconds、backBufferSize和各项消息。 - 添加你想要的命令条目,例如 /fly、/tpa 和 /back。保留或更改
commandName和permission。 - 对于家,添加一个 Artifact Home 和一个在
artifact中引用它的 Home Manager,然后添加 /home 以及其他家相关命令。 - 对于聊天格式,添加一个 Chat Format,其
groups例如为owner(权限group.owner,priority为 10,format为<gold>[Owner] <player><white>: <message>),以及一个fallbackFormat。 - 发布,授予权限,并用一位玩家测试。
Tiny Essentials 和 Home Manager 中的消息使用 & 颜色代码和 {player} 形式的标记。聊天格式、玩家列表和菜单则使用 MiniMessage。
工作原理
每个功能条目会在需要时被读取。请为每种类型只使用一个条目(一个 Tiny Essentials、一个 Home Manager、一个 Chat Format、一个 Join Item、一个 Scavenger):扩展会取它找到的第一个。
配置
除了条目之外,TinyEssentials 还依赖以下运行时规则。
- 传送冷却 —
/back和/tpa会等待defaultTeleportCooldown秒,或者玩家所拥有权限对应的cooldownRules中最大的cooldownSeconds。除非开启了allowMovement,否则移动会取消传送。传送到末影珍珠或紫颂果的落点不会保存在/back历史记录中。 - 隐身和开关 — 隐身、
/msgtoggle和/tpatoggle的状态存储在玩家身上,因此在重启和重新连接后依然保留。 - 网络功能 — 当 MySQL 扩展以共享范围运行时,聊天和玩家列表名册会使用 Redis;否则它们仅限本地。
- Tiny Essentials 中的过时字段 —
...Command名称字段(msgCommand、flyCommand…)和basePermission不会被应用:命令名称和权限位于命令条目上。这些名称字段只出现在用法消息中。玩家列表字段bossbarToggleCommand和scoreboardToggleCommand同样没有被注册为命令。
菜单
TinyEssentials 为使用 GUI 扩展构建的页面提供了按钮类型。
| 菜单 | 条目 | 按钮类型 |
|---|---|---|
| 家 | Home Manager(菜单在条目自身中配置) | 无:布局在 homesMenu 和 homeEditorMenu 中设置。 |
| 日历 | Calendar Menu | calendar_button:DAY、WEEKDAY、EVENT、CALENDAR_SUMMARY、MONTH_NAV |
| 快速旅行 | Fast Travel Menu | travel_button:REGION_TAB、DESTINATION、REGION_SUMMARY |
| 维基 | Wiki Menu | wiki_button:SECTION_TAB、ARTICLE、PAGE_NAV |
日历、快速旅行和维基菜单采用相同的方式:共享的 open_gui 底板(baseMenuId)、一组布局池和视图。诸如 DAY 或 DESTINATION 之类的带索引按钮会依次由数据填充(网格是显示上限,多余的槽位保持为空)。
家菜单是分页的,带有上一页、下一页和关闭按钮、一个填充物品、一个用于空家槽位的物品,以及点击某个家时打开的编辑器:传送、在聊天中重命名(输入 cancel 可中止)、用手持物品设置图标、重置图标和删除。
命令
所有命令都是由条目注册的 brigadier 命令,因此客户端可以获得补全。没有任何命令带有别名。没有相应权限时,该命令是隐藏的。以玩家为目标的命令接受玩家选择器;对他人执行操作需要对应的 .others 权限,在命令运行时检查。
自身和管理员命令
| 命令 | 说明 | 权限 |
|---|---|---|
/fly [player] | 切换飞行。 | tinyessentials.fly(其他玩家:tinyessentials.fly.others) |
/god [player] | 切换无敌。 | tinyessentials.god(其他玩家:.god.others) |
/feed [player] | 恢复饥饿值和饱和度。 | tinyessentials.feed(其他玩家:.feed.others) |
/heal [player] | 恢复生命值、饥饿值、空气,并清除着火和冰冻。 | tinyessentials.heal(其他玩家:.heal.others) |
/vanish [player] | 切换对其他玩家的隐身;重新连接后保持。 | tinyessentials.vanish(其他玩家:.vanish.others) |
/gamemode <survival|creative|adventure|spectator> [player] | 更改游戏模式。 | tinyessentials.gamemode(其他玩家:.gamemode.others) |
/speed <value> [walk|fly|sneak] [player] 和 /speed reset [walk|fly|sneak] | 设置速度,范围从 -20 到 20。仅在创造模式下有效。不指定类型时,飞行中的玩家获得飞行速度,其他玩家获得行走速度。更改其他玩家的速度需要 .speed.others。 | tinyessentials.speed(其他玩家:.speed.others) |
/suicide | 杀死你自己。 | tinyessentials.suicide |
/repair | 修复手持的工具、武器或盔甲(不包括方块和不可破坏的物品)。 | tinyessentials.repair |
/invsee <player> | 打开另一位玩家的物品栏。编辑它需要 tinyessentials.inventory.edit。 | tinyessentials.inventory(目标:.inventory.others) |
/pocketmenu <type> [--consume] | 打开一个原版菜单:workbench、enchanting、anvil、smithing、grindstone、cartography、stonecutter、loom 或 brewing。--consume 会让附魔台消耗等级。 | tinyessentials.pocketmenu |
传送命令
| 命令 | 说明 | 权限 |
|---|---|---|
/back | 回到你之前的位置,带有冷却。 | tinyessentials.back |
/tpa <player> | 请求传送到某位玩家那里。 | tinyessentials.tpa |
/tpahere <player> | 请求某位玩家传送到你这里。 | tinyessentials.tpahere |
/tpaccept [player] | 接受最近的请求,或指定玩家发来的请求。 | tinyessentials.tpaccept |
/tpadeny [player] | 拒绝最近的请求,或指定玩家发来的请求。 | tinyessentials.tpadeny |
/tpatoggle | 停止或恢复接收请求。 | tinyessentials.tpatoggle |
/tppos <x> <y> [z] | 传送到坐标处。 | tinyessentials.tppos |
/tpall | 将所有在线玩家传送到你这里。 | tinyessentials.tpall |
/getpos | 显示你的位置、朝向和世界。 | tinyessentials.getpos |
消息
| 命令 | 说明 | 权限 |
|---|---|---|
/msg <player> <message> | 发送私信。 | tinyessentials.msg |
/reply <message> | 回复上一次对话。 | tinyessentials.reply |
/msgtoggle | 停止或恢复接收私信。 | tinyessentials.msgtoggle |
家 — 如果你设置了 Home Manager 的 basePermission,它们还需要该权限。
| 命令 | 说明 | 权限 |
|---|---|---|
/home [name] | 传送到某个家;不带名称时传送到名为 home 的家。 | tinyessentials.homes.teleport |
/home list(或 ls) | 打开家菜单。 | tinyessentials.homes.list |
/home set|add|create|save [name] | 在你的位置保存一个家。 | tinyessentials.homes.set |
/home delete|del|remove|rm [name] | 删除一个家。 | tinyessentials.homes.delete |
/sethome [name] | 保存一个家。 | tinyessentials.homes.set |
/delhome [name] | 删除一个家。 | tinyessentials.homes.delete |
/homes | 打开家菜单。 | tinyessentials.homes.list |
日历
| 命令 | 说明 | 权限 |
|---|---|---|
/calendar | 打开当前月份的日历。/calendar month <prev|next|current> <player> 由菜单按钮使用。 | tinyessentials.calendar(留空表示无需权限) |
/timefact | 输出所链接的 Time Fact 条目的各行内容。 | tinyessentials.timefact(留空表示无需权限) |
每个命令条目的 permission 字段默认是上表中的权限。可通过 commandName 更改命令名称。
权限
| 权限 | 授予 |
|---|---|
tinyessentials.<command> | 使用该命令,如上所列(permission 字段的默认值)。 |
tinyessentials.fly.others, god.others, feed.others, heal.others, vanish.others, gamemode.others, speed.others | 将命令应用于另一位玩家。 |
tinyessentials.inventory.others | 使用 /invsee 打开另一位玩家的物品栏。 |
tinyessentials.inventory.edit | 移动被查看的物品栏中的物品。 |
tinyessentials.homes.bypass(bypassPermission) | 忽略家的数量限制和传送冷却。 |
tab.staff | 被 <tab_staffonline> 统计。 |
group.<name> | 选择玩家列表的组,以及按组排序。 |
诸如 generalPermission、permission、cooldownRules、permissionLimits 之类的字段 | 你在条目中自行选择的权限。 |
占位符
TinyEssentials 注册了两个 MiniPlaceholders expansion,可用作 MiniMessage 标签。
| 占位符 | 返回值 |
|---|---|
<tab_online> | 在线玩家数。 |
<tab_staffonline> | 拥有 tab.staff 的在线玩家数。 |
<tab_worldonline> | 查看者所在世界的玩家数。 |
<tab_memory_used> / <tab_memory_max> | 已用和最大内存,单位 MB。 |
<tab_tps> | 服务器 TPS(1 分钟),保留两位小数。 |
<tab_date> / <tab_time> | 真实的机器日期(dd.MM.yyyy)和时间(HH:mm:ss)。 |
<tab_animation:name> | Tab Configuration 动画的当前帧。 |
<calendar_date> | 日历日期,例如 3 Spring, an 12。 |
<calendar_time> / <calendar_time_12h> | 24 小时制或 12 小时制的游戏内时间。 |
<calendar_day>, <calendar_month>, <calendar_month_index>, <calendar_year>, <calendar_weekday> | 日历日期的各个部分。 |
<calendar_day_of_year>, <calendar_total_day> | 一年中的第几天,以及自开始以来的天数。 |
<calendar_event> | 今天第一个事件的标题,没有则为空。 |
<calendar_next_event>, <calendar_next_event_days> | 下一个事件的标题以及距它还有几天。 |
每个 calendar 占位符都接受一个 Minecraft Time 条目的 id 作为参数,例如 <calendar_date:my_calendar_id>;不带参数时使用第一个日历。如果不存在 Minecraft Time 条目,它们会返回空文本。
Home Manager 的文本字段使用 {home}、{limit}、{cooldown}、{count}、{world} 以及各字段帮助中给出的类似标记;TPA 和消息文本使用 {player}、{time}、{sender}、{receiver} 和 {message}。
条目
50 个条目,由扩展源码生成。
动作3
- BTC Calendar MenuBTC Calendar Menu
- BTC Fast Travel MenuBTC Fast Travel Menu
- BTC Wiki MenuBTC Wiki Menu
事实3
- Calendar Event FactCheck calendar events
- Is Day FactCheck calendar day/night phases
- Time Period FactCheck if the time is inside a range
受众1
- Time Window AudienceFilter players using the TinyEssentials calendar
命令29
- Tinyessentials Back CommandCommande /back
- Tinyessentials Calendar CommandCommande d'ouverture du calendrier
- Tinyessentials Delhome CommandCommande /delhome
- Tinyessentials Feed CommandCommande /feed
- Tinyessentials Fly CommandCommande /fly
- Tinyessentials Gamemode CommandCommande /gamemode
- Tinyessentials Getpos CommandCommande /getpos
- Tinyessentials God CommandCommande /god
- Tinyessentials Heal CommandCommande /heal
- Tinyessentials Home CommandCommande /home
- Tinyessentials Homes CommandCommande /homes
- Tinyessentials Invsee CommandCommande /invsee
- Tinyessentials Msg CommandCommande /msg
- Tinyessentials Msgtoggle CommandCommande /msgtoggle
- Tinyessentials Pocketmenu CommandCommande /pocketmenu
- Tinyessentials Repair CommandCommande /repair
- Tinyessentials Reply CommandCommande /reply
- Tinyessentials Sethome CommandCommande /sethome
- Tinyessentials Speed CommandCommande /speed
- Tinyessentials Suicide CommandCommande /suicide
- Tinyessentials Timefact CommandCommande d'affichage de la date
- Tinyessentials Tpa CommandCommande /tpa
- Tinyessentials Tpaccept CommandCommande /tpaccept
- Tinyessentials Tpadeny CommandCommande /tpadeny
- Tinyessentials Tpahere CommandCommande /tpahere
- Tinyessentials Tpall CommandCommande /tpall
- Tinyessentials Tpatoggle CommandCommande /tpatoggle
- Tinyessentials Tppos CommandCommande /tppos
- Tinyessentials Vanish CommandCommande /vanish
占位符1
- Minecraft TimeCustomise the length of days and manage a calendar
构件2
- Artifact CalendarPersistent anchor for the custom calendar
- Artifact HomePersistent storage for player homes
清单11
- Chat FormatFormat chat messages based on player groups
- FactProvide time related facts based on the minecraft_time entry
- Fast Travel DestinationDestination de voyage rapide
- Fast Travel RegionRegion de voyage rapide
- Home ManagerManage player homes with permissions and cooldowns
- Join ItemGive players custom items when they join
- ScavengerSave inventory and experience with penalties
- Tab ConfigurationConfigure TAB features for tablist, scoreboard, bossbar and more
- Tiny EssentialsEssential commands with configurable messages and cooldowns
- Wiki ArticleArticle du guide en jeu
- Wiki SectionSection du guide en jeu
故障排查
TinyEssentials n'est pas configure : ajoutez une entree 'tiny_essentials' a une page. 在没有发布 Tiny Essentials 条目的情况下运行了命令。请向 static 页面添加一个并发布。
某个命令不存在或被隐藏。 每个命令都是一个条目:请添加对应的 tinyessentials_..._command 条目,发布,并给予玩家它的 permission。在 commandName 中更改的命令名称会取代旧的名称。
Les maisons ne sont pas configurees。 没有 Home Manager 条目。对于存储错误(stockage des homes est indisponible),请检查 Home Manager 的 artifact 是否指向一个 Artifact Home。
玩家完全无法聊天。 Chat Format 条目的 generalPermission 已设置,而玩家没有它:聊天消息会被取消。请让它留空,或授予该权限。
/back 提示没有上一个位置。 只有由命令和插件完成的传送才会被记录。末影珍珠和紫颂果会被忽略,历史记录会保留最近的 backBufferSize 个位置。
/speed 提示仅在创造模式下可用。 该命令被有意限制为仅在创造模式下可用,以免与 RPG 属性冲突。
玩家列表功能没有任何作用。 必须安装 PacketEvents。tablistFormattingEnabled、layoutEnabled、bossbarEnabled 和 scoreboardEnabled 是各自独立的开关,其中后三个默认关闭。
日历占位符为空。 没有发布任何 Minecraft Time 条目,或者参数与任何现有的条目 id 都不匹配。日历菜单或命令还需要它的 minecraft_time 链接。