真正永恒的伙伴

真正永恒的伙伴

让你心爱的宠物永远陪在你身边。

怪物

Truly Best Friends Forever

真正的永远的好朋友,让你的宠物永远陪伴在你身边 - 这个模组是一个针对 Minecraft 的宠物管理模组。

被驯服的宠物将被自动追踪并永久保存。即使宠物所在的区块未被加载或宠物死亡,你始终可以通过独立的宠物管理面板召回它们、复活它们,或传送到它们的位置(仅创造模式)。

核心功能

自动追踪与持久化: 驯服任何可驯服实体(如狼、猫、马、鹦鹉、模组宠物等)后,它将被自动注册。NBT 数据将存放于“<存档文件夹>/trulybestfriends/<玩家 UUID>/<宠物 UUID>.nbt”,并维护一个名为“pets_index.nbt”的索引。

宠物管理面板: 物品栏(基于 L2 Library)中新增了一个“宠物伙伴”标签页,也可以通过自定义快捷键开启(默认未绑定,请在“选项 → 控制”中设置)。 面板允许你查看每只宠物的名称、种族、生命值、维度及坐标。

实时数据同步: 服务端会定时向客户端推送已选中宠物的最新状态(生命值、坐标、维度等)。GUI 内的生命条和位置信息会自动刷新,无需重新打开面板。

召回/释放: 点击即可将宠物召回至存储(有距离限制和冷却时间),再次点击即可释放。

范围召回: 按住 Shift 键并点击召回按钮,可同时召回范围内的多只宠物。范围可通过滚轮调整(1~16 格,默认为 8 格)。

跨维度召唤: 支持将宠物从任意维度召唤至玩家身边,自动处理区块强制加载和实体去重,避免召唤重复实体。

传送: 创造模式下,在标签页中点击宠物的坐标即可传送至宠物身边。生存模式下,你可以随时将宠物传送至你身边。在区块未加载时,也支持“将宠物召唤至玩家”的机制,区块加载后会自动进行传送。

发光定位: 为选中的宠物施加持续 5 秒的发光效果,便于在复杂地形中定位。

死亡与复活: 当被追踪的宠物死亡时,将不再掉落任何战利品(为防止物品农场,此功能可在配置文件中关闭)。之后,你可以在面板中使用配置的复活物品(默认:1 个不死图腾)将其复活。复活时,它将获得不死图腾的状态效果(生命恢复、伤害吸收和抗火性)。可以在配置中将特定实体类型加入白名单,以保留其掉落物并阻止复活。

两步删除确认: 为防止误操作,删除宠物数据需要宠物处于“丢失”或“已回收”状态,并需要两步确认 - 首先左键点击删除按钮进入“待删除”状态,然后按住 Shift + 左键点击确认删除。(不过,已死亡的宠物只需左键点击即可删除。)

肩部宠物追踪: 自动追踪站在玩家肩膀上的实体(如鹦鹉),并在肩膀放下时自动重新关联 UUID,避免“跟丢下肩膀的宠物”。

优先级: 通过按住 Shift 并左键点击宠物图标,可以为每只宠物设置 1 到 6 级的优先级。用于面板内的排序和未来的阵型功能。

搜索框与筛选: 你可以通过筛选器按宠物的种族进行筛选,或点击放大镜按钮按宠物名称进行搜索。

背包备份: 对于带有容器的实体(如驮着箱子的马),独立备份其物品栏 NBT,兼容任意数量的基于插槽的模组实体。

多语言维度名称: 内置 20 多种常见维度的中英文显示名称(原始三界 + 暮色森林、天界、涅槃、极乐/极光之地、地下花园、蜜蜂领域、热带世界、盖亚维度、午夜维度,以及完整的 Ad Astra 系列行星和轨道),并支持在配置中自定义添加。

NBT 离线编辑: 服务端关闭时,可以直接修改存档目录中的“.nbt”文件。修改内容将在下次启动服务端时保留并应用于实体(仅针对已回收的实体)。

数据存储位置

所有数据都保存在存档目录中。删除存档文件也会删除宠物数据。删除此模组不会破坏存档文件:

存档/<存档文件夹>/trulybestfriends/
├─ pets_index.nbt: 宠物索引(按实体类型分组)
└── <玩家UUID>/<宠物UUID>.nbt 每只宠物的完整 NBT

服务端关闭时,你可以直接编辑 <宠物UUID>.nbt 文件来修改已回收宠物的属性(生命值、名称、最大生命值等)。修改将在下次启动时应用于召唤出的实体。请注意,坐标和维度在召唤时会被召唤定位逻辑覆盖。

兼容性

理论上兼容任何遵循可附加实体接口的模组宠物;

此模组通过反射搜索实体容器字段,兼容任意插槽数量的模组马/背包实体;

如果某个模组宠物的死亡掉落物不应被清除,请将其实体 ID 添加到“noReviveWhitelist”中;

如果某个模组的“可附加实体”不应被此模组追踪(例如临时召唤物),请将其实体 ID 或命名空间添加到“autoRegisterBlacklist”中。

已知限制

如果被追踪的宠物在其死亡前未被此模组同步和保存(例如,刚被驯服就立即死亡,尚未经过同步周期),它可能无法被复活;

在多人服务器上,跨维度召唤宠物受限于“maxPendingSummons”限制;

在 NBT 中直接将“Health”值改为“0”后召唤,实体将进入“死亡但未回收”状态,导致召唤按钮失效。必须通过复活功能恢复;

正在坐下的宠物在被传送后将保持坐下状态;

点击“传送”后,传送必定成功。因此,请确保传送时周围空间安全,否则存在窒息和摔落风险。

协议

此模组采用 GPL-3.0 许可。引用、整合或再分发时,请遵守许可条款,并注意兼容模组的各自许可约束。

反馈

如果你遇到错误或有功能建议,请在 GitHub 项目的 issue 页面提交,并附上:

Minecraft / Forge / 此模组的版本;

完整的“latest.log”或“crash-report”;

重现步骤。

https://github.com/whidte/trulybestfriends

未来计划

引入在性能方面更友好的性能模式;

添加更大的 GUI 并允许切换;

引入组队系统和群体召唤系统。