
棱镜中继
通过捕捉独特的双属性宝可梦,在时间耗尽前连锁宝可梦类型。
Prism Relay
Prism Relay 是一个服务端权威的 Pixelmon 属性连锁小游戏,适用于 Minecraft 1.21.1、NeoForge 21.1.200+ 以及 Pixelmon 9.3.16+。
玩家携带一个宝可梦属性作为接力棒,在限时路线中完成一系列独特的双属性捕获。服务器掌管所有规则、分数、奖励、存档、权限检查和排行榜记录。可选的客户端伴侣模组添加了响应式动画界面、Pixelmon 精灵图、辅助功能控制以及专属的 Top 10 显示。
模组套件
Prism Relay 以两个独立的 jar 文件分发:
prism_relay-1.0.0.jar是必需的服务器模组。它包含游戏逻辑、命令、配置、奖励、持久化存储、权限、箱子界面和网络功能。prism_relay_client-1.0.0.jar是可选的客户端伴侣模组。它包含 30 个自定义界面和视觉设置。
服务器 jar 无需客户端伴侣即可运行。没有安装客户端伴侣的玩家可以使用受保护的原版箱子菜单。将服务器 jar 放在专用服务器上,玩家客户端只需安装伴侣 jar。
两个 jar 均需要 Pixelmon。伴侣协议为版本 4;替换构建时请同步更新服务器和客户端 jar。
游戏玩法
开始一轮游戏会随机分配 18 种标准宝可梦属性中的一种作为首个接力棒。要创建连锁:
- 捕获一只包含当前接力棒属性的独特双属性宝可梦。
- 该宝可梦的另一属性成为下一个接力棒。
- 继续此过程,直到完成配置的连锁数量、时间耗尽或超过单属性宽限次数。
示例:
水 -> 莲叶童子 -> 草 -> 妙蛙种子 -> 毒 -> 超音蝠 -> 飞行
默认情况下,一轮游戏需要在三十分钟内完成八个连锁。同一轮游戏中不能重复使用相同物种。
单属性宽限
捕获与当前接力棒属性相同的单属性宝可梦不会推进路线,也永远不会获得积分。它会消耗一次宽限次数。使用默认的 game.monotype-grace-strikes: 2 设置:
- 第一次匹配的单属性记录为第 1/2 次并警告玩家。
- 第二次记录为第 2/2 次并警告再有一次将结束本轮游戏。
- 第三次立即将本轮状态改为
FAILED。
该值可设置为 0 到 10。设为 0 时,第一次匹配的单属性即导致失败。
捕获来源
野生捕获、团战捕获和孵蛋可以分别开启。默认值:
| 来源 | 启用 |
|---|---|
| 野生捕获 | 是 |
| 团战捕获 | 是 |
| 孵蛋 | 否 |
默认计分和速度倍率
| 有效连锁组件 | 原始积分 |
|---|---|
| 有效接力连锁 | 100 |
| 首次到达目标属性 | 40 |
| 闪光捕获 | 500 |
| 传说或幻之宝可梦捕获 | 150 |
| 团战捕获 | 50 |
原始总分根据剩余游戏时间进行倍乘。默认情况下,在开始时捕获的连锁获得 2.00x 倍率,中途为 1.50x,截止时为 1.00x。倍率线性递减,适用于基础连锁分以及新属性、闪光、传说和团战加成。最终积分四舍五入到最接近的整数。
所有积分值以及最小/最大时间倍率均可配置。
安装
专用服务器
- 安装 Minecraft 1.21.1、NeoForge 21.1.200 或更高版本,以及 Pixelmon 9.3.16 或更高版本。
- 将
server/build/libs/prism_relay-1.0.0.jar放入服务器的mods目录。 - 启动服务器一次以生成
config/PrismRelay/config.yml和messages.yml。 - 编辑生成的文件并运行
/relay reload或重启服务器。
可选的客户端伴侣
- 在客户端安装匹配的 Minecraft、NeoForge 和 Pixelmon 版本。
- 将
client/build/libs/prism_relay_client-1.0.0.jar放入客户端的mods目录。 - 不要在客户端安装主服务器 jar。
伴侣模组通过可选的握手进行标识。缺少伴侣模组不会阻止服务器模组加载,除非启用了 ui.require-client。
玩家命令
别名:/relay、/prismrelay 和 /pr。
| 命令 | 用途 |
|---|---|
/relay |
打开首选界面 |
/relay start |
开始新一轮限时游戏 |
/relay status |
在聊天中显示接力棒、计时器、分数、连锁数、宽限次数和记录 |
/relay abandon |
结束当前进行中的游戏而不完成 |
/relay top |
打开自定义 Top 10 界面或箱子备用界面 |
/relay chest |
强制打开仅服务器的接力箱子界面 |
/relay client |
在已安装时打开伴侣界面 |
/relay help |
显示简要游戏规则和命令 |
管理命令
| 命令 | 用途 |
|---|---|
/relay reload |
重新加载 config.yml 和 messages.yml |
/relay reset <player> |
删除玩家的进行中游戏和终生记录 |
/relay forcecomplete <player> |
通过正常奖励路径完成进行中的游戏 |
/relay settype <player> <type> |
替换当前接力棒属性;建议使用标准属性 ID |
管理权限默认使用 commands.admin-permission,默认为操作员等级 2。
权限
Prism Relay 注册了原生的 NeoForge 权限节点。LuckPerms 和其他兼容的权限提供者可以覆盖它们。
玩家节点默认允许。管理节点默认使用配置的操作员等级。
| 权限节点 | 控制 | 默认 |
|---|---|---|
prism_relay.prismrelay.play |
游戏参与和捕获进度 | 所有人 |
prism_relay.prismrelay.open |
/relay |
所有人 |
prism_relay.prismrelay.help |
/relay help |
所有人 |
prism_relay.prismrelay.start |
从命令或界面开始游戏 | 所有人 |
prism_relay.prismrelay.status |
/relay status |
所有人 |
prism_relay.prismrelay.abandon |
放弃游戏 | 所有人 |
prism_relay.prismrelay.top |
Top 10 排行榜 | 所有人 |
prism_relay.prismrelay.chest |
服务器箱子界面 | 所有人 |
prism_relay.prismrelay.client |
可选的客户端界面 | 所有人 |
prism_relay.prismrelay.reload |
配置重新加载 | 操作员 |
prism_relay.prismrelay.reset |
重置玩家数据 | 操作员 |
prism_relay.prismrelay.forcecomplete |
强制完成游戏 | 操作员 |
prism_relay.prismrelay.settype |
更改玩家的接力棒 | 操作员 |
命令、服务器菜单、客户端操作数据包和捕获进度会独立检查权限。修改过的客户端无法绕过服务器规则。
界面
仅服务器箱子界面
服务器提供两个受保护的行原版菜单:
- 接力控制台:游戏状态、接力棒、路线、分数、单属性宽限、速度计分、控制、帮助和界面选择。
- Top 10 排行榜:领奖台、第 4-10 名、最佳分数、最快时间、完成次数、个人排名、刷新和导航。
显示槽位拒绝放置、拾取、快速移动、拖动和全部拾取操作。
客户端伴侣
伴侣显示服务端权威的快照。它可以请求操作,但无法在本地更改游戏、分数、奖励或排行榜。
常用控制:
| 输入 | 操作 |
|---|---|
R |
刷新接力快照 |
| 方向键 | 查看上一条或下一条路线连锁 |
| 鼠标滚轮 | 滚动浏览路线连锁 |
M |
在服务器动画启用时切换减少动态效果 |
S |
在服务器声音启用时切换本地 UI 声音 |
L |
切换紧凑排行榜的可见性 |
本地偏好设置存储在 config/prism_relay_client.json 中。
两个旗舰主题都遵循服务器动画设置和玩家的减少动态效果偏好。减少动态效果会立即解析所有过渡,而不会移除信息或控制。
UI 主题
工作人员通过 config/PrismRelay/config.yml 中的 ui.theme 选择一个主题。玩家无法覆盖服务器选择的主题。
| 主题 ID | 界面概念 |
|---|---|
constellation |
天体链式导航器和遥测档案 |
field_journal |
双页博物学家日志和野外笔记 |
wanted_poster |
边境悬赏墙和中央接力棒海报 |
radar_sweep |
战术捕获瞄准镜和实时接触信息流 |
dna_lab |
双属性基因组工作站和螺旋路线 |
pokedex_handheld |
实体双屏宝可梦图鉴接力设备 |
guild_board |
软木和绳线合同墙,带固定任务 |
orbital_holo |
带移动宝可梦轨道的立体天文台 |
biome_atlas |
羊皮纸地形测量和探险航点 |
minimal_bento |
简洁模块化操作仪表板 |
clockwork_relay |
黄铜擒纵机构和齿轮传动路线 |
arcade_cabinet |
CRT 计分柜、扫描线和最高分滑轨 |
train_signal |
铁路发车时刻表和调度清单 |
weather_station |
气象工作站和移动属性锋面 |
crystal_cavern |
晶洞腔室和多面信号水晶 |
deep_sea_sonar |
深海声纳扫描和深度接触日志 |
volcanic_forge |
砖砌铸造厂、熔融接力棒熔炉和传送带 |
royal_tapestry |
纹章继承宫廷和皇家接力棒徽章 |
postal_route |
挂号包裹地图、路由和邮票 |
cassette_mixer |
实体磁带机、卷轴、计量表和波形 |
noir_casefile |
侦探证据板、红绳和案件笔记 |
dream_cloud |
柔和梦幻天空、云朵和漂浮路线气泡 |
circuit_board |
PCB 布线主板、芯片、总线和寄存器 |
temporal_archive |
钟面年表和时间线档案 |
festival_lanterns |
夜市巡游和悬挂灯笼 |
skyship_navigation |
空中测绘桌、指南针和飞行路径 |
mosaic_temple |
镶嵌朝圣殿堂和棱镜祭坛 |
quantum_terminal |
纠缠粒子处理器和遥测 |
Top 10 排行榜
/relay top 和界面中的 Top 10 按钮会打开专用菜单,而不是在聊天中打印排名。
- 伴侣玩家会获得主题化的自定义排行榜界面。
- 其他玩家会获得受保护的箱子排行榜。
- 每位玩家出现一次,使用他们的个人最佳完成记录。
- 分数越高排名越靠前。
- 分数相同时使用更快的完成时间。
ui.leaderboard-cooldown-seconds限制每位玩家的菜单重新打开和刷新频率。
自定义排行榜支持按 R 刷新,按 Backspace 返回接力界面。
配置
服务器会生成:
config/PrismRelay/config.yml:游戏规则、计分、捕获来源、奖励、界面行为、所有主题 ID、奖励占位符、冷却时间和管理员默认设置。config/PrismRelay/messages.yml:面向玩家的文本、帮助、状态输出、错误和排行榜消息。config/PrismRelay/data/players/<uuid>.properties:玩家存档和排行榜记录。
编辑任一 YAML 文件后运行 /relay reload。
已在进行中的游戏会保留其开始时的目标长度和截止时间。重新加载配置不会静默重写进行中的目标。
重要游戏设置
| 设置 | 用途 |
|---|---|
enabled |
主游戏开关 |
game.target-links |
所需路线长度,限制在 3 到 14 |
game.duration-seconds |
游戏时间限制 |
game.restart-cooldown-seconds |
单个玩家两次游戏开始之间的最短时间 |
game.monotype-grace-strikes |
在下一个匹配单属性导致失败前可被原谅的次数;0-10 |
game.require-unique-species |
一轮游戏中拒绝重复物种 |
game.notify-invalid-captures |
显示被拒绝捕获的说明 |
scoring.time-scaling.minimum-percent |
截止时的连锁倍率;默认为 100(1.00x) |
scoring.time-scaling.maximum-percent |
开始时的连锁倍率;默认为 200(2.00x) |
ui.prefer-client |
检测到时优先打开伴侣界面 |
ui.allow-chest-fallback |
允许仅服务器备用菜单 |
ui.require-client |
主接力界面需要伴侣模组 |
ui.theme |
工作人员选择的界面主题 |
ui.sounds |
允许伴侣 UI 声音控制 |
ui.animations |
允许伴侣动画和减少动态效果控制 |
ui.leaderboard-cooldown-seconds |
Top 10 打开/刷新冷却时间 |
将任一冷却时间设为 0 可禁用。
奖励
奖励命令从服务器控制台运行,可以调用原版、Pixelmon、经济、权限、宝箱或其他已安装的命令系统。
支持三种奖励触发条件:
rewards.link-commands:每次有效双属性连锁后。rewards.completion-commands:游戏完成时一次。rewards.score-ranges:游戏完成时匹配一个最终分数段。
基础完成命令和匹配的分数段都会执行。
示例:
rewards:
broadcast-completion: true
link-commands:
- "experience add %player% 2 points"
- "give %player% minecraft:amethyst_shard 1"
completion-commands:
- "experience add %player% 100 points"
- "give %player% minecraft:diamond 3"
score-ranges:
0-999:
- "give %player% minecraft:iron_ingot 8"
1000-1499:
- "give %player% minecraft:gold_ingot 8"
1500-1999:
- "give %player% minecraft:diamond 5"
2000+:
- "give %player% minecraft:netherite_ingot 1"
分数段包含边界值。支持的关键字:
0-9990..9990_to_999500表示精确分数2000+表示无上限范围
保持分数段不重叠。如果配置的范围重叠,只按分数升序授予第一个匹配项。
奖励占位符
以下占位符可用于连锁、完成和分数段命令:
| 类别 | 占位符 |
|---|---|
| 玩家 | %player%、%uuid% |
| 游戏 | %state%、%state_colored%、%links%、%target%、%score%、%points%、%raw_points% |
| 单属性宽限 | %grace_strikes%、%grace_limit%、%grace_remaining%、%monotypes_until_failure% |
| 时间和速度 | %remaining%、%duration%、%time_bonus%、%time_multiplier%、%time_multiplier_percent%、%speed_percent% |
| 终生记录 | %best_score%、%best_duration%、%completions%、%attempts% |
| 起始属性 | %starting_type%、%starting_type_id%、%starting_type_colored% |
| 当前属性 | %current_type%、%current_type_id%、%current_type_colored% |
| 连锁起点 | %from_type%、%from_type_id%、%from_type_colored% |
| 连锁终点 | %to_type%、%to_type_id%、%to_type_colored% |
| 捕获的宝可梦 | %pokemon%、%dex%、%shiny%、%legendary%、%source% |
分数段命令额外接收 %reward_range%、%reward_min% 和 %reward_max%。
命令可以以 / 开头,但不是必须的。
消息
messages.yml 支持:
- 传统
&格式代码。 - 十六进制颜色,如
<#8B5CF6>。 - 双色渐变,如
<gradient:#8B5CF6:#22D3EE>Prism Relay</gradient>。 - 相关游戏事件提供的相同上下文占位符。
持久化和排行榜安全
每位玩家独立保存在 UTF-8 properties 文件中。存档包括:
- 进行中的游戏状态和截止时间。
- 起始和当前接力棒属性。
- 精确的路线连锁和已使用物种。
- 单属性宽限次数和最终的
FAILED状态。 - 时间缩放后的连锁得分。
- 尝试次数和完成次数。
- 个人最佳成绩和最快匹配完成时间。
写入使用临时文件和原子替换(在支持的情况下)。格式错误的单个路线记录会被跳过,而不是阻止其余档案加载。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。