跳到主要内容

TinyEssentials

29 个基础指令、家、TPA、聊天格式、玩家列表、日历、快速旅行和 Wiki。

私有v0.0.2实用工具
依赖TypeWriter0.9.0-beta-177 (BTC build)PacketEventsMySQLGUITranslate可选

专为 BornToCraft 服务器网络打造。此扩展仅作参考文档,不对外分发。

概述​

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 过滤器和占位符。
  • 快速旅行和维基 — 基于区域的旅行菜单(带有锁定条件),以及由章节和文章构成的游戏内指南。

安装​

  1. 安装 PacketEvents,玩家列表功能需要它。
  2. 安装 TinyEssentials 声明为依赖的 MySQL 扩展(Redis 用于跨服务器聊天和玩家列表名册),以及用于菜单的 GUI 扩展。
  3. 可选:安装 Translate,为其他服务器上的玩家翻译全网络聊天。
  4. 将 TinyEssentials 的 JAR 放入 plugins/Typewriter/extensions/,然后重启服务器。
  5. 使用你的权限插件授予命令权限(参见权限表)。基于组的玩家列表功能会读取名为 group.<name> 的权限。

快速上手​

  1. 在 TypeWriter 网页面板中,打开一个 static 页面,添加一个 Tiny Essentials 条目。没有它,每个命令都会回复 TinyEssentials 尚未配置。调整 defaultTeleportCooldown、tpaTimeoutSeconds、backBufferSize 和各项消息。
  2. 添加你想要的命令条目,例如 /fly、/tpa 和 /back。保留或更改 commandName 和 permission。
  3. 对于家,添加一个 Artifact Home 和一个在 artifact 中引用它的 Home Manager,然后添加 /home 以及其他家相关命令。
  4. 对于聊天格式,添加一个 Chat Format,其 groups 例如为 owner(权限 group.owner,priority 为 10,format 为 <gold>[Owner] <player><white>: <message>),以及一个 fallbackFormat。
  5. 发布,授予权限,并用一位玩家测试。
消息使用旧式颜色代码

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 Menucalendar_button:DAY、WEEKDAY、EVENT、CALENDAR_SUMMARY、MONTH_NAV
快速旅行Fast Travel Menutravel_button:REGION_TAB、DESTINATION、REGION_SUMMARY
维基Wiki Menuwiki_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
事实3
受众1
命令29
占位符1
构件2
清单11

故障排查​

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 链接。

相关扩展​

  • MySQL — 用于全网络聊天和玩家列表名册的 Redis。
  • GUI — 渲染家、日历、快速旅行和维基菜单。
  • Translate — 为其他服务器上的玩家翻译全网络聊天。
  • UiCore — 维基文章可以引用 UiCore 的图像。