跳到主要内容

工具类总览

FPSMatch 的 util 包提供跨模块复用的“小而稳定”能力。它们不负责创建地图或推进回合,而是把编码、标识、物品分类、伤害归因、颜色计算和文件处理等重复逻辑集中起来。调用工具类前先确认运行端:FPSMUtilMapIdSpawnPointSafety 面向服务端;RenderUtilPreviewColorUtil 和部分 FPSMFormatUtil 方法只能在客户端使用。

按任务查找

任务入口说明
保存对象为 JSONFPSMCodec使用 Mojang Codec,失败时抛出 DataPersistenceException
校验地图 IDMapId小写字母、数字、_-,最多 48 个字符
检查出生点SpawnPointSafety检查脚下支撑、两格净空和流体
处理枪械弹药FPSMUtil通过 IGunProvider 读写真实弹药和虚拟弹药
归类或整理物品栏FPSMUtil可注册自定义谓词,再按主武器、手枪、投掷物等槽位整理
获取击杀者/武器FPSMUtil支持直接伤害、投射物、区域效果和伤害记录回退
绘制 HUDRenderUtil颜色、插值、贴图翻转、玩家列表和文字缩放
给预览分配颜色PreviewColorUtil根据游戏类型生成稳定的地图/点位颜色
计算文件摘要FileHashUtilMD5、SHA-1、SHA-256、SHA-512
实现地图编辑物品FPSMToolItem处理点击、双击、NBT 选择和服务端分发

生命周期与线程

工具类不会切换线程。服务端工具应在 Forge 事件的服务端阶段或地图 tick 中调用;客户端工具应在屏幕、HUD 或渲染事件中调用。RenderUtil 内部缓存玩家列表直到客户端 tick 变化,若在同一 tick 手动修改队伍投影,调用 invalidatePlayerInfoCache() 清除缓存。

工具类通常直接修改传入对象。例如 fixGunItem 会更新 ItemStack 的弹药字段,setTag 会写入工具物品的 NBT。需要保留原值时先 copy()

源码位置

net.ptcrys.fpsmatch.util
net.ptcrys.fpsmatch.util.hash
net.ptcrys.fpsmatch.core.persistence.PersistenceUtils
net.ptcrys.fpsmatch.common.item.tool

继续阅读:标识、Codec 与格式化 · 武器、库存与击杀 · 客户端渲染 · 地图编辑工具