
角色非容器
为构筑添加角色界面,同时用更有用的界面替换饰品界面
查看大图角色而非容器
角色而非容器(Character Not Container)是一个 NeoForge 1.21.1 的角色和装备界面。它通过可配置按键(默认为 C)独立打开;Minecraft 的 E 物品栏保持原版不变,而生存和创造模式玩家物品栏中的 Curios 按钮默认会打开这个角色界面。
特性
- 显示每个与该玩家自身基础值不同的属性的当前有效值。新的模组玩家属性会在每次加入世界或客户端资源重载时一次性添加到平面目录中。
- 以精确的加法或百分比数值说明护甲、手持物品、Curios、活跃效果以及直接的“需求,而非必需”来源带来的属性变化。活跃餐食使用食物的物品图标和名称;未解析的修正符会合并为一个
???余项,而不是进行猜测。 - 渲染真实的本地玩家,包括皮肤、已装备的护甲、动画、正常渲染层,以及朝向鼠标的明确头部/身体追踪。
- 将宽大的透明头部/胸部/腿部/脚部身体区域转换为装备控制,而不是显示护甲网格。
- 在所选身体槽位旁打开一个内容自适应的选择器,其中包含兼容的物品和附近来源的物品,以及一个明确的“清空/卸下”操作。
- 当服务器也安装了该模组时,从附近的盔甲架以及任何暴露 NeoForge 通用物品处理能力的方块或实体提取物品。
- 执行经过验证的、服务器权威的交换,不会掉落或删除物品。一对一替换不需要空余槽位;当没有物品栏容量时,独立卸下操作会被拒绝。
- 动态发现可见的、活跃的 Curios 槽位,使用其原生图标和验证,支持多个槽位,并在回退区域保持未知槽位类型可见。
- 在角色界面内切换功能性(functional)和装饰性(cosmetic)Curios 槽位,两条路径都使用经过验证的服务器权威交换。
- 无需安装 Curios 即可运行;Curios 类隔离在受保护的兼容性入口点之后。
配置
首次使用会在 config/characternotcontainer/ 下创建以下文件:
general.json
stats.json
equipment_screen.json
界面和所有锚点位置内置于模组中。equipment_screen.json 仅将 Curios 槽位类型 ID 绑定到固定锚点。生成的文件预填了常见的 Curios 名称:
{
"slots": {
"head": "head",
"hat": "head",
"face": "head",
"mask": "head",
"neck": "neck",
"necklace": "neck",
"amulet": "neck",
"back": "back",
"cape": "back",
"wings": "back",
"belt": "belt",
"spellbook": "belt",
"waist": "belt",
"sheath": "belt",
"body": "belt",
"hands": "hands",
"hand": "hands",
"ring": "hands",
"bracelet": "hands",
"feet": "feet",
"shoes": "feet",
"anklet": "feet",
"charm": "other",
"curio": "other"
}
}
有效的固定锚点为 head、neck、back、belt、hands、left_hand、right_hand、feet 和 other。添加一个模组槽位 ID 作为另一个键来绑定它;支持带命名空间的键。未知类型使用 other。旧的 UI 构建器和可移动锚点副本会自动迁移,废弃字段会被移除。
general.json 包含:
{
"enableSeparateKeybind": true,
"redirectCuriosInventoryButton": true,
"enableNearbyEquipmentSources": true,
"nearbyEquipmentSearchRadius": 8.0,
"equipmentPickerOpensLeft": false,
"equipmentPickerColumns": 5,
"equipmentPickerVisibleRows": 3,
"debugEquipmentHitboxes": false,
"showEquippedItemIcons": false
}
将 redirectCuriosInventoryButton 设为 false 可恢复 Curios 的正常按钮目的地。调试身体区域时,将 debugEquipmentHitboxes 设为 true。showEquippedItemIcons 控制已装备的原版护甲是否也在模型上显示一个小型物品指示器;空槽位始终显示原版的空装备图标。
附近装备是服务器权威的,仅当“角色而非容器”存在于服务器上时才激活。仅客户端安装仍可正常连接并保留角色 UI,但装备更改和附近提取不可用。nearbyEquipmentSearchRadius 上限为 32 格。将 equipmentPickerOpensLeft 设为 true 可将选择器放置在所选槽位的左侧;equipmentPickerColumns 和 equipmentPickerVisibleRows 控制换行和滚动(默认值:5 列和 3 行)。
stats.json 是一个平面有序的属性目录。定义可以设置 visible 为 false、覆盖其本地化的 name、提供 icon 精灵图,或调整数值格式化。类别和旧的增量特定字段不再使用。在加入世界或客户端资源重载时,文件中缺失的受支持的玩家属性会以通用十进制格式追加一次;界面不会每帧重写或重新发现它们。
示例:
{
"attributes": [
{
"attribute": "minecraft:generic.movement_speed",
"visible": true,
"format": "DECIMAL",
"decimalPlaces": 0,
"scale": 1000.0,
"suffix": "%"
}
]
}
将 name 留空以使用属性的本地化显示名称。如果属性没有翻译,注册表 ID 会被转换为可读名称(例如,minecraft:generic.movement_speed 变为 Movement Speed)。非空的 JSON name 始终具有优先权。
运行 /characterui attributes 可记录已注册的属性 ID。管理员可以在编辑 general.json 或 stats.json 后运行 /characterui reload;最小的装备锚点文件会在界面打开时重新读取。
该界面会将每个有效值与玩家当前属性实例的基础值进行比较。故意替换基础值的模组因此会建立新的基线,不会显示为变化。来源仅在从装备、活跃效果或直接的“需求,而非必需”集成中明确识别时才被命名。其余所有内容以一行合并的 ??? 表示,附有其净数值或百分比效果。
可选 GUI 精灵图
布局仍然内置于模组中,但资源包可以通过固定的 GUI 精灵图资源位置来皮肤化其主要元素。“角色而非容器”不捆绑这些位置的文件:如果 PNG 缺失,该元素使用当前的程序化颜色、边框、字母和原版工具提示背景。无需配置项。
每个精灵图 ID 以 characternotcontainer:character_screen/ 开头,并映射到以下路径下的 PNG:
assets/characternotcontainer/textures/gui/sprites/character_screen/
例如,characternotcontainer:character_screen/picker/background 从以下路径加载:
assets/characternotcontainer/textures/gui/sprites/character_screen/picker/background.png
支持的精灵图 ID 及其目标尺寸如下:
character_screen/ 之后的资源位置 |
目标尺寸和用途 |
|---|---|
screen/background |
整个 400 x 320 逻辑屏幕 |
screen/player_preview_background |
220 x 296,玩家背后 |
screen/player_preview_frame |
220 x 296,玩家之上、装备控制之下 |
stats/panel |
134 像素宽;高度随可见行数收缩 |
stats/row_hovered |
134 x 26 逻辑行 |
stats/scrollbar_track |
8 x 258 逻辑轨道 |
stats/scrollbar_thumb |
6 像素宽,高度动态 |
stats/fallback_icon |
16 x 16,替换生成的字母图标 |
equipment/slot |
基础身体控制覆盖层;目标尺寸为头部 60 x 52、胸部 112 x 88、腿部 78 x 75 或脚部 78 x 56 |
equipment/slot_hovered、equipment/slot_selected |
悬停/选中覆盖层,使用相同身体控制目标尺寸 |
equipment/curio_slot、equipment/curio_slot_hovered、equipment/curio_slot_selected |
功能性 Curios 槽位和状态覆盖层,18 x 18 |
equipment/cosmetic_curio_slot、equipment/cosmetic_curio_slot_hovered、equipment/cosmetic_curio_slot_selected |
装饰性 Curios 槽位和状态覆盖层,18 x 18 |
equipment/show_cosmetics_button、equipment/show_cosmetics_button_hovered |
功能模式下显示的完整 18 x 18 按钮;自定义精灵图替换默认的 C 标签 |
equipment/show_equipment_button、equipment/show_equipment_button_hovered |
装饰模式下显示的完整 18 x 18 按钮;自定义精灵图替换默认的 E 标签 |
picker/background |
动态选择器面板:列 x 20 + 10 像素,滚动时再加 5 像素;行 x 20 + 10 像素高 |
picker/cell、picker/cell_hovered |
选择器单元格和悬停覆盖层,18 x 18 |
picker/unequip |
16 x 16,替换红色的 x |
picker/scrollbar_track、picker/scrollbar_thumb |
2 像素宽,高度动态 |
tooltip/source_background |
自定义属性来源工具提示使用的动态背景 |
正在加载版本记录…


正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。