- 版权类型
- 原创
- 插件中文名称
- GhostPF
- 插件英文名称
- GhostPF
- 原帖地址
- 无
- 支持的核心(服务端)
- Spigot
- 语言支持
- 中文(简体)
- 前置组件
- Tacz
- 适配版本(Java)
- 1.20
模组简介
GhostPF 是一款面向 TACZ(Tactical Arms eXtension)武器模组 的 武器皮肤所有权与预览管理系统。
它解决了以下实际问题:
- 玩家之间复制武器皮肤导致皮肤滥用的问题
- 皮肤预览体验差、无法直观感受皮肤效果的问题
- 管理员手动管理皮肤所有权效率低的问题
- 服务器缺乏皮肤下发与回收机制的问题
- 皮肤所有权管理:玩家绑定皮肤,所有权持久化存储,可设定有效期
- 装备/卸下皮肤:每个武器可单独装备不同皮肤,一键切换
- 临时预览系统:无需拥有即可临时试用,体验后再决定是否获取
- 拾取保护校验:未授权皮肤自动替换为默认外观,防止复制窃取
- 库存定期校验:登录、重生、打开容器、定时扫描,全方位防护
- 指令化管理:完整的指令体系,管理员可灵活发放、回收、配置皮肤
- 零外部依赖:内置JSON解析,不引入任何第三方库,兼容性好
- 内置皮肤包:附带47款皮肤(BO6系列32款 + LRADD系列11款 + LRL系列4款)
核心特色
1)皮肤所有权体系:你的皮肤就是你的
玩家通过指令或外部系统(如商城插件)获得皮肤所有权后,数据持久化到 JSON 文件中。- 永久持有:管理员通过指令下发后永久生效
- 限时持有:可设置到期时间,到期后自动失去权限
- 皮肤复用:一个皮肤可绑定到多个不同武器(按需灵活配置)
皮肤下发示例:
代码:
/ghostpf give <玩家> ghostpf:bo6_xm4_redacted 30
2)装备系统:每个武器独立皮肤
每个武器槽位可独立装备不同皮肤,互不影响。装备皮肤:
代码:
/ghostpf equip <武器ID> <皮肤ID>
卸下皮肤:
代码:
/ghostpf unequip <武器ID>
- 装备后武器外观自动切换为对应皮肤
- 切换即时生效,无需重启或重登
- 切换武器不影响已装备皮肤的武器槽位
3)临时预览:先试后买
玩家无需拥有皮肤也能临时试用,直观感受皮肤外观后再决定是否获取。开始预览:
代码:
/ghostpf preview <武器ID> <皮肤ID> [秒数]
停止预览:
代码:
/ghostpf preview stop
- 默认预览时长 45 秒,最长可设 120 秒
- 预览期间武器外观切换为试用皮肤
- 预览结束后自动恢复原外观
- 配置项 allowPreviewUnowned 可控制是否允许未拥有皮肤时预览
4)拾取保护与库存校验:防止皮肤复制
GhostPF 的核心安全机制,确保未授权皮肤无法在服务器流通。拾取校验(WeaponSkinNormalizer):
- 玩家捡起武器时,服务器校验该皮肤是否被授权
- 未授权皮肤自动替换显示ID为默认皮肤
- 同时记录 GhostPF 皮肤标签与原始显示ID用于恢复
库存校验(InventorySkinNormalizer):
触发时机:
- 玩家登录时全量扫描
- 玩家重生时全量扫描
- 玩家关闭容器(箱子/末影箱等)时扫描
- 服务端每 100 tick 定时批量扫描
5)TACZ深度集成:无需修改TACZ源码
GhostPF 通过 NBT 字段操作与 TACZ 交互,完全独立运行,不侵入 TACZ 内部逻辑。读写字段说明:
- GunId:TACZ武器ID(GhostPF 不修改此字段)
- GunDisplayId:TACZ显示ID(GhostPF 用于切换皮肤外观)
- GhostPfSkin:GhostPF皮肤ID(记录当前装备的皮肤)
- GhostPfPreviewSkin:预览中的皮肤ID(临时预览时使用)
- GhostPfPreviewOriginalDisplay:预览前原始显示ID(预览结束后恢复)
6)内置47款皮肤:开箱即用
模组已内置三个皮肤包,无需额外下载:| 皮肤包 | 数量 | 武器来源 |
| BO6 系列 | 11 款 | Black Ops 6 武器(XM4、AEK973、HDR、KSV等) |
| LRADD 系列 | 32 款 | LRADD 武器包 |
| LRL 系列 | 4 款 | Legacy 武器(AK47 Asiimov等经典皮肤) |
所有皮肤均已配置好 skinId、displayId、texture、modelOverride、rarity,可直接使用或按需修改。
安装指南
前置要求
- Minecraft 1.20.1
- Forge 47.3.19 或兼容版本
- TACZ(Tactical Arms eXtension)模组 1.1.7+
安装步骤
- 安装 Minecraft 1.20.1 + Forge 47.3.19 服务端
- 安装 TACZ 模组 1.1.7+
- 将 GhostPF 模组放入 mods 文件夹
- 启动服务器,配置文件自动生成于 config/ghostpf/
- 根据需要修改 config/ghostpf/config.json
- 使用 /ghostpf reload 重载配置
命令大全
通用命令(所有玩家可用)
| 命令 | 说明 |
| /ghostpf help | 显示帮助菜单 |
| /ghostpf status | 显示模组状态、皮肤数量、配置路径 |
| /ghostpf equip [武器ID] [皮肤ID] | 为指定武器装备皮肤 |
| /ghostpf unequip [武器ID] | 卸下指定武器的皮肤 |
| /ghostpf list [武器ID] | 查看已拥有的皮肤(可选按武器筛选) |
| /ghostpf skins [武器ID] | 查看服务器所有可用皮肤(可选按武器筛选) |
| /ghostpf info [皮肤ID] | 查看指定皮肤详细信息 |
| /ghostpf preview [武器ID] [皮肤ID] [秒数] | 开始临时预览 |
| /ghostpf preview stop | 停止当前预览 |
管理员命令(OP/Level 2+)
| 命令 | 说明 |
| /ghostpf reload | 重载所有皮肤配置 |
| /ghostpf skin set [皮肤ID] [武器ID] [显示ID] [贴图] [模型] [稀有度] [true/false] [名称] | 创建或更新皮肤定义 |
| /ghostpf skin remove [皮肤ID] | 删除皮肤定义文件 |
| /ghostpf give [玩家] [皮肤ID] [天数] | 给玩家下发皮肤(永久/限时) |
| /ghostpf giveuuid [UUID] [皮肤ID] [天数] | 通过UUID下发皮肤(供商城等外部系统调用) |
| /ghostpf remove [玩家] [皮肤ID] | 回收玩家指定皮肤 |
快速上手示例
场景:让服务器所有武器都有默认皮肤
代码:
# 在 config.json 中配置默认皮肤
"defaultSkinsByWeapon" : {
"tacz:ak47" : "ghostpf:lrl_ak47_asiimov",
"tacz:m4a1" : "ghostpf:lradd_m4a1_cqb",
"tacz:awp" : "ghostpf:bo6_awp_dragonlord"
}
# 然后执行重载
/ghostpf reload
场景:举办活动发放限时皮肤
代码:
# 发放7天有效期皮肤
/ghostpf give Steve ghostpf:bo6_xm4_redacted 7
# 发放永久皮肤
/ghostpf give Steve ghostpf:lrl_ak47_asiimov
场景:添加新皮肤包
- 将新皮肤资源放入 assets/ 对应目录
- 在 config/ghostpf/skins/ 下创建 .json 定义文件
- 执行 /ghostpf reload 加载新皮肤
- 通过 /ghostpf skin set 或直接编辑JSON创建皮肤
皮肤包清单
BO6 系列(11款)
XM4 Redacted、AEK973 Redacted、HDR Redacted、KSV Redacted 等(BO6系列武器皮肤)LRADD 系列(32款)
涵盖多款LRADD武器包中的武器皮肤LRL 系列(4款)
- LRL AK47 Asiimov
- (其余LRL系列皮肤...)
功能总览
| 功能 | 说明 |
| 皮肤所有权管理 | 永久/限时持有,JSON持久化 |
| 装备/卸下系统 | 每个武器独立装备不同皮肤 |
| 临时预览 | 无需拥有即可试用,支持限时自动结束 |
| 拾取校验 | 捡起武器时自动校验,未授权则替换外观 |
| 库存校验 | 登录/重生/开容器/定时全服扫描 |
| TACZ NBT集成 | 通过GunDisplayId切换外观,不修改TACZ源码 |
| 内置47款皮肤 | BO6/LRADD/LRL三大皮肤包 |
| 指令化管理 | 完整指令体系,含帮助/状态/下发/回收 |
| 外部系统接口 | giveuuid 指令供商城等外部插件调用 |
| 零外部依赖 | 内置JSON解析,兼容Mohist/Arclight |
| 框架无关设计 | 核心与Forge解耦,易于二次开发 |
| 配置热重载 | /ghostpf reload 无需重启服务器 |