![[KGweight]KG重量](https://cdn8.newbeebox.com/nbbnext/2026/07/02/e1581da21131d9f1c678d019427bf458.png)
[KGweight]KG重量
这是一个由codex编写的模组,可以根据NBT区分MC中的物品,并增加它们的KG重量。同时,它会根据物品的重量减少移动速度。
AI生成内容披露
本模组包含的所有内容(纹理、模型、代码、音效等)均完全由AI工具生成。展示图片是游戏内的实际截图,能真实反映模组效果,但其中的所有视觉元素皆为AI生成。如有疑问,欢迎留言交流。
KG重量


KG重量为Minecraft Forge 1.20.1添加了一个可配置的物品重量系统。你可以为不同物品分配KG重量。玩家背包、护甲、副手、扩展背包以及某些扩展槽位中的物品都会被计算在内,并根据携带重量降低移动速度。
主要功能
- 物品默认无重量;管理员可以在游戏中实时设置重量。
- 重量通过“物品注册名 + 稳定NBT指纹”进行区分,支持附魔、自定义名称和稳定附件等差异。
- 对来自TaCZ、卓驭前线、枪包、刀包等模组的动态NBT物品应用了稳定的NBT处理,防止因弹药数量、换弹状态、开火模式、瞄准状态、经验、等级和击杀数等变化而导致重量失效。
- 对于改装的TaCZ枪械,重量计算为“枪械基础重量 + 已安装附件重量”;附件重量可以单独设置。
- 支持装饰性重量:物品显示重量,但不计入本模组的减速效果,适用于重量惩罚已由其他模组处理的物品。
- 背包、护甲、副手、Forge
ITEM_HANDLER扩展槽位以及容器(内部物品栏)内的物品都会被计算。 - 尝试兼容Curios槽位,但不会将Curios作为硬性依赖。
- 右上角的HUD会显示总重量、减速重量、速度降低和负载针效果。
- HUD自定义:默认按
K键打开编辑界面,可以拖动位置、调整大小和透明度。 - 查看其他在线玩家的重量,并单独切换某个玩家是否受本模组减速影响。
- 添加了3个进度:首次设置重量、总重量超过3000 KG、首次制作负载针。
- 内置简体中文和英文文本。
减速模式
本模组提供三种减速策略:
stage:阶段模式 – 每达到一个完整的KG间隔,就应用一次减速增量。linear:线性模式 – 每增加1 KG,移动速度降低一个固定值。segmented:分段线性模式 – 不同的重量范围可以有不同的减速强度。
限速方式也可以切换:
simple:默认方法,仅调整玩家的移动速度属性,兼容性更好。complex:额外限制空中水平速度,用于减少疾跑跳跃带来的额外位移。
负载针
本模组添加了5个等级的负载针,可暂时减少有效重量。负载针不使用原版药水效果;同一时间最多只有一根针生效。使用任何等级的负载针都会完全替换当前针的效果和剩余持续时间,并显示“药剂已使用”的消息。
默认效果:
- 1级:减少25 KG,持续60秒
- 2级:减少50 KG,持续90秒
- 3级:减少100 KG,持续120秒
- 4级:减少200 KG,持续180秒
- 5级:减少400 KG,持续240秒
配方主要使用矿物和玻璃瓶:
- 1级:玻璃瓶、铜锭、铁锭、红石粉
- 2级:玻璃瓶、铁锭、金锭、红石粉
- 3级:玻璃瓶、青金石、钻石、红石粉
- 4级:玻璃瓶、绿宝石、钻石、金锭
- 5级:玻璃瓶、下界合金碎片、钻石、绿宝石
负载针的效果、持续时间和使用时间都可以通过指令进行调整。
常用指令
所有管理指令都需要权限等级2。
/kgweight help
/kgweight setheld <kg> [affectsSlowdown]
/kgweight queryheld
/kgweight slowdownheld <true|false>
/kgweight mode <stage|linear|segmented>
/kgweight speedlimit <simple|complex>
/kgweight needle list
/kgweight needle set <level> <reductionKg> <durationSeconds> [useSeconds]
/kgweight player query <player>
/kgweight player slowdown <player> <true|false>
/kgweight nbtignore list
中文别名:
/重量
完整说明请参阅下方提供的 完整使用指南。
兼容性说明
- 提供内部物品栏能力的背包(如精妙背包)会被计算。
- 如果其他模组直接扩展了玩家的背包槽位,只要它们以Forge
ITEM_HANDLER的形式暴露,本模组会尝试进行计算。 - Curios槽位通过可选反射进行读取。
- 如果某个模组使用了完全私有的数据结构且未暴露能力,则需要单独适配。
- TaCZ、卓驭前线及其非官方枪包/刀包通常可以通过稳定的NBT和NBT忽略规则进行适配;继承TaCZ附件NBT的枪械会自动累加已安装附件的重量。
环境
- Minecraft 1.20.1
- Forge 47.x
- Java 17
- 客户端和服务端都需要安装
完整使用指南
环境要求:
- Minecraft 1.20.1
- Forge 47.x
- Java 17
安装步骤:
- 将
kgweight-3.0.0.jar放入客户端和服务端的mods文件夹。 - 在多人游戏中,服务端和所有需要看到HUD及使用负载针的客户端都必须安装。
- 进入世界后,使用
/kgweight help或/重量查看游戏内指令帮助。
基本功能
- 物品默认无重量;未设置的物品计为0 KG。
- 重量单位为KG。
- 堆叠物品计算为“单件物品重量 × 数量”。
- 背包、护甲和副手都会计入玩家的总重量。
- 当前版本额外读取Forge
ITEM_HANDLER能力,当其他模组直接扩展玩家背包时尝试兼容。 - 当前版本递归读取物品自身的内部物品栏,适配像精妙背包这样内部装有物品的扩展背包物品。
- 当前版本尝试通过可选反射读取Curios槽位;当安装了Curios或装饰性背包槽位时,Curios不是硬性依赖。
- 为防止背包套背包导致无限循环,内部物品栏的递归深度限制为4层。
- 物品可以设置为“仅装饰重量”:显示在总重量中,但不计入本模组的减速效果。
- 屏幕HUD显示总重量、减速重量、速度降低和负载针效果。
兼容性说明:
- 扩展背包和扩展槽位是否能被计算,取决于对应模组是否将这些槽位暴露为Forge
ITEM_HANDLER或Curios槽位。 - 像精妙背包这样正确提供内部物品栏能力的背包会被计算。
- 如果某个背包模组使用完全私有的数据结构并且没有暴露能力,本模组无法通用读取,需要单独适配。
K键可视化设置
HUD调整以及部分减速/限速配置可以通过UI进行,无需输入指令。
默认按键:
K
UI有三个选项卡:
- 显示:拖动预览文本调整位置,使用滑块调整大小和透明度(最低透明度限制为1%)。
- 减速策略:在
stage、linear和segmented模式之间切换,并调整相应的KG阶段、步长和减速百分比。 - 分段减速列表支持鼠标滚轮和右侧滚动条,你可以在UI中直接查看和编辑所有分段。
- 限速:在
simple和complex之间切换,并调整复杂模式的最大速度系数、最小速度系数和曲线。
说明:
- 显示设置是客户端本地设置,每个客户端单独保存到
config/kgweight-hud.json。 - 减速策略和限速设置是服务器/世界规则;只有当你点击“应用到服务器”时才会写入。
- 在多人游戏中,修改服务器/世界规则需要权限等级2(单人游戏开启作弊,或多人游戏服主)。
- 如果跑酷、跳跃或移动模组行为异常,建议在“限速”页面切换回
simple。
如果 K 键与其他模组冲突,你可以在Minecraft的控制设置中更改“打开KG重量设置”按键。
完整指令列表
(限速模式及其逻辑以及负载针自定义现在也可以通过UI进行操作。)
所有管理指令都需要权限等级2(单人游戏开启作弊,或多人游戏服主)。
主指令:
/kgweight
中文别名:
/重量
完整列表:
/kgweight help
/kgweight setheld <kg> [affectsSlowdown]
/kgweight slowdownheld <true|false>
/kgweight queryheld
/kgweight removeheld
/kgweight clear
/kgweight status
/kgweight player query <player>
/kgweight player slowdown <player> <true|false>
/kgweight mode <stage|linear|segmented>
/kgweight speedlimit <simple|complex>
/kgweight speedcap <maxFactor> <minFactor> <curve>
/kgweight slowdown <stageKg> <slowdownPerStage>
/kgweight linear <stepKg> <slowdownPerStep>
/kgweight segment list
/kgweight segment set <index> <endKg> <stepKg> <slowdownPerStep>
/kgweight segment remove <index>
/kgweight segment reset
/kgweight needle list
/kgweight needle set <level> <reductionKg> <durationSeconds> [useSeconds]
/kgweight needle usetime <level> <useSeconds>
/kgweight nbtignore list
/kgweight nbtignore add <rule>
/kgweight nbtignore remove <rule>
/kgweight nbtignore reset
百分比参数统一以小数形式输入:
0.01表示1%0.05表示5%0.20表示20%
物品重量指令
/kgweight setheld <kg> [affectsSlowdown]
设置主手物品的单件重量。
示例:
/kgweight setheld 12.5
/kgweight setheld 12.5 false
/kgweight setheld 12.5 true
说明:
- 如果省略
affectsSlowdown,默认为true,计入本模组的减速效果。 affectsSlowdown=false使其仅作为装饰重量,显示但不计入本模组的减速效果。- 将
<kg>设置为0等同于移除当前主手物品的重量规则。 - 规则通过“物品注册名 + 稳定NBT指纹”保存。
/kgweight queryheld
查询匹配主手物品的重量规则、它是否影响减速、稳定键和稳定NBT。
/kgweight removeheld
移除匹配当前主手物品的重量规则。
/kgweight slowdownheld <true|false>
切换主手物品的现有重量规则是否计入本模组的减速效果,而不改变重量值。
/kgweight clear
清除当前世界中的所有物品重量规则。减速模式、负载针配置和NBT忽略规则不会被清除。
玩家重量与玩家减速
/kgweight status
查看你的当前总重量、减速重量、有效减速重量、当前世界的减速配置以及NBT忽略规则的数量。
/kgweight player query <player>
查看一个在线玩家的重量。
示例:
/kgweight player query Steve
输出:
- 总重量
- 减速重量
- 有效减速重量
- 当前移动速度降低百分比
- 该玩家是否启用了本模组的减速效果
/kgweight player slowdown <player> <true|false>
设置某个特定的在线玩家是否受本模组减速效果影响。
示例:
/kgweight player slowdown Steve false
/kgweight player slowdown Steve true
说明:
false:重量仍然被计算和显示,但本模组不会对该玩家应用减速。true:恢复本模组的减速效果。- 设置通过玩家UUID保存,改名后仍然有效。
减速模式
本模组有三种减速模式:
stage:阶段模式 – 每达到一个完整的KG间隔,应用一次减速增量。linear:线性模式 – 基于总重量进行连续线性减速。segmented:分段线性模式 – 不同的重量范围使用不同的线性减速规则。
最终移动速度保持在最低5%,即最大降低幅度为95%。
/kgweight mode <stage|linear|segmented>
切换减速模式。
/kgweight slowdown <stageKg> <slowdownPerStage>
配置 stage 模式。
示例:
/kgweight mode stage
/kgweight slowdown 100 0.05
含义:每满100 KG,移动速度降低5%。
/kgweight linear <stepKg> <slowdownPerStep>
配置 linear 模式。
示例:
/kgweight mode linear
/kgweight linear 10 0.01
含义:每增加10 KG,移动速度降低1%。
/kgweight segment set <index> <endKg> <stepKg> <slowdownPerStep>
配置 segmented 模式。
示例:
/kgweight mode segmented
/kgweight segment set 1 100 10 0.01
/kgweight segment set 2 200 10 0.02
/kgweight segment set 3 350 10 0.04
含义:
- 0到100 KG:每10 KG降低1%
- 100到200 KG:每10 KG降低2%
- 200到350 KG:每10 KG降低4%
- 超过350 KG后继续使用最后一个分段
其他分段指令:
/kgweight segment list
/kgweight segment remove <index>
/kgweight segment reset
限速方法
/kgweight speedlimit <simple|complex>
simple:默认方法,仅通过玩家MOVEMENT_SPEED属性减速,兼容性更好。complex:在属性减速的基础上,额外限制客户端和服务端的水平速度,以限制疾跑跳跃带来的额外水平位移。
如果跑酷、跳跃、二段跳或移动类模组行为异常,建议使用:
/kgweight speedlimit simple
/kgweight speedcap <maxFactor> <minFactor> <curve>
设置 complex 模式的水平速度上限系数。
公式:
水平上限 = 当前移动速度属性 × (minFactor + (maxFactor - minFactor) × 当前减速倍率 ^ curve)
默认值:
/kgweight speedcap 2.35 1.00 1.00
负载针
本模组提供了5个负载针物品:
kgweight:load_needle_1kgweight:load_needle_2kgweight:load_needle_3kgweight:load_needle_4kgweight:load_needle_5
所有配方都在工作台中有序合成,主要使用矿物和玻璃瓶;每次合成产出2根针:
1级负载针

2级负载针

3级负载针

4级负载针

5级负载针

默认效果:
- 1级:减少25 KG,持续60秒,使用时间1秒
- 2级:减少50 KG,持续90秒,使用时间1.5秒
- 3级:减少100 KG,持续120秒,使用时间2秒
- 4级:减少200 KG,持续180秒,使用时间2.5秒
- 5级:减少400 KG,持续240秒,使用时间3秒
规则:
- 不使用原版药水效果。
- 每个玩家同一时间最多只有一根针生效。
- 使用任何等级的负载针都会完全替换当前针的效果和剩余时间。
- 使用时消耗1根针,并显示“药剂已使用”的消息。
- 不再有“浪费负载针”的机制。
指令:
/kgweight needle list
/kgweight needle set <level> <reductionKg> <durationSeconds> [useSeconds]
/kgweight needle usetime <level> <useSeconds>
TaCZ、卓驭前线、枪包、刀包与NBT忽略
本模组不再直接使用完整NBT作为重量键,而是使用“稳定NBT指纹”:
- 保留附魔、自定义名称、TaCZ武器身份、附件、皮肤等稳定信息。
- 默认忽略弹药、弹匣、换弹、冷却、开火状态、时间戳等动态字段。
- 默认忽略
GunFireMode、SelectedFireMode、FireMode、ShootMode等动态开火模式字段,防止在全自动和半自动之间切换时导致重量规则失效。 - 默认忽略
Exp、Level、KillCount、ShotsFired等经验、等级、击杀数、射击数、命中数和使用次数字段,以适配像卓驭前线这样会写入动态成长NBT的模组。 - 默认忽略
Aim、Aiming、ADS、Scoped、Zooming等临时瞄准、开镜和缩放字段,防止在瞄准时重量规则暂时失效。
当前版本为改装的TaCZ枪械提供了额外处理:
- 为一把枪设置重量时,已安装的附件会自动从枪的基础键中剥离。
- 实际枪械重量 = 枪械基础重量 + 已安装附件重量。
- 要设置附件重量:手持附件物品,运行
/kgweight setheld <kg>。 - 附件是否计入减速效果遵循其自身的
affectsSlowdown设置。 - 如果更新后,一把已经配置好的枪在某种状态下显示为0 KG,请在该状态下手持这把枪重新运行
/kgweight setheld <kg> [affectsSlowdown]以写入新的稳定键。
NBT忽略规则格式:
contains:ammo– 忽略路径中包含ammo的字段。name:Damage– 忽略名称恰好等于Damage的字段。path:tag.gun.current_round– 忽略确切的完整路径。
指令:
/kgweight nbtignore list
/kgweight nbtignore add <rule>
/kgweight nbtignore remove <rule>
/kgweight nbtignore reset
remove 命令支持对现有规则进行Tab自动补全。
枪械模组故障排除流程:
- 手持一把枪,执行
/kgweight queryheld。 - 让枪械经历换弹、开火、击杀、升级、切换开火模式、开镜/关镜等变化。
- 再次执行
/kgweight queryheld。 - 比较稳定NBT,看看是否出现了新的动态字段。
- 如果出现动态字段,添加一条忽略规则,例如:
/kgweight nbtignore add current_round
/kgweight nbtignore add Exp
/kgweight nbtignore add Level
/kgweight nbtignore add Aiming
/kgweight setheld <kg>
TaCZ附件重量示例:
# 手持枪械主体,设置其基础重量
/kgweight setheld 4.5手持一个附件(瞄具、枪口、握把等),设置其重量
/kgweight setheld 0.8
当该附件被安装后,枪械的总重量会自动增加0.8 KG。
修改名称与提示文本
语言文件路径:
src/main/resources/assets/kgweight/lang/zh_cn.json
src/main/resources/assets/kgweight/lang/en_us.json
你可以修改:
- 物品名称
- HUD文本
- 按键绑定名称
- 指令反馈文本
- 负载针提示文本
如果通过资源包进行覆盖,请将文件以相同路径放入资源包内。
还没有人评论,去客户端里说两句吧。
评论在新手盒子客户端中发表,这里同步展示。