Pommel

Pommel

允许资源包创作者覆盖手持物品模型的Fabric模组,就像望远镜和三叉戟那样

装饰

Pommel 图标

Pommel - 手持物品模型




Blade - 资源包

—手持物品模型资源包—

Pommel 是什么?

Pommel 是一个 Fabric 模组,它允许资源包替换物品手持版本的模型——就像望远镜和三叉戟那样——让你自定义物品在你手中的外观。想要在手中展示一个 3D 的狼牙棒模型、一把炽热的巨剑,或者一根古老的魔法法杖,同时保留原始物品?使用 Pommel,这些都可以实现! 同时也适用于模组物品!

如果你使用 Pommel 制作了资源包,欢迎与我分享你的作品!我很想看看你能做出什么!


给资源包制作者

新增以下物品谓词(Item Predicates):

  • pommel:is_held — 当物品在第一人称或第三人称手中持有

  • pommel:first_third_person — 物品在第一人称与第三人称的区分

    • 值为 0.5 时切换第一人称模型,值为 1.0 时切换第三人称模型。
  • pommel:is_offhand — 物品在用户的副手槽中

  • pommel:is_fixed — 当物品在物品展示框中

  • pommel:is_head — 当物品戴在头盔槽位时

  • pommel:is_ground — 当物品被丢弃在地上

  • pommel:is_thrown — 可投掷物品被投掷时(鸡蛋、雪球、末影珍珠等)

  • pommel:is_used — 当物品正在被使用(即按住使用/右键键);如果模组在服务器和玩家端都安装,则与多人游戏同步

  • pommel:item_use — 使用/消耗物品的持续时间,例如吃食物

  • pommel:is_submerged — 物品浸没在 minecraft:water 中(不适用于其他液体)

    • 当物品实体被扔入水中但之后不再在水中(例如你移除了水),物品仍会保持“浸没”状态
  • pommel:is_enchanted — 物品是否附魔

  • pommel:is_misc_entity_holding — 由村民、女巫、熊猫和狐狸手持的物品。

    • 请注意,这三个实体仍会采用该模型的地面展示设置。如有需要,你可以更改地面的旋转、平移和缩放,使物品在这些实体手中看起来更好。
  • is_using 和 is_submerged 也会在 GUI 中改变物品模型

例如,通过修改模型 iron_pickaxe.json,你可以告诉模组当物品被手持时(通过 pommel:is_held)应显示什么模型。

提供的持有模型及其纹理可以放在任何位置,只要在物品模型 JSON 文件中指定即可。

JSON 示例:

{
  "parent": "item/handheld",
  "textures": {
    "layer0": "minecraft:item/2d_model_texture"
  },
  "overrides": [
    { "predicate": { "pommel:is_held": 1.0 }, "model": "minecraft:item/my_held_item" },
    { "predicate": { "pommel:is_fixed": 1.0 }, "model": "minecraft:item/my_framed_item" },
    { "predicate": { "pommel:is_head": 1.0 }, "model": "minecraft:item/my_worn_item" },
    { "predicate": { "pommel:is_ground": 1.0 }, "model": "minecraft:item/my_ground_item" }
  ]
}

吃苹果示例:

{
  "parent": "minecraft:item/generated",
  "textures": {
    "layer0": "minecraft:item/apple"
  },
  "overrides": [
    { "predicate": { "pommel:is_held": 1 }, "model": "minecraft:item/held_items/apple_3d" },
    { "predicate": { "pommel:item_use": 0.25 }, "model": "minecraft:item/apple_eat_0" },
    { "predicate": { "pommel:is_held": 1, "pommel:item_use": 0.25 }, "model": "minecraft:item/held_items/apple_eat_0_3d" },
    { "predicate": { "pommel:item_use": 0.50 }, "model": "minecraft:item/apple_eat_1" },
    { "predicate": { "pommel:is_held": 1, "pommel:item_use": 0.50 }, "model": "minecraft:item/held_items/apple_eat_1_3d" },
    { "predicate": { "pommel:item_use": 0.75 }, "model": "minecraft:item/apple_eat_2" },
    { "predicate": { "pommel:is_held": 1, "pommel:item_use": 0.75 }, "model": "minecraft:item/held_items/apple_eat_2_3d" }
  ]
}

在此示例中,苹果物品在食用时会从 apple_eat_0 变为 apple_eat_2。苹果物品在手持时也会变为 3D 版本,并且在食用时还有独特的手持模型。

你还可以为手持模型指定文件目录以便整理,也可以将父模型更改为其他内容。

其他示例

  • 额外提示: 如果你使用模组 Arsenal (仅限 1.20.1),该模组的背部/枪套槽位使用物品展示框的渲染类型。你可以使用 pommel:is_fixed 来替换背部物品(如下所示),以便显示模型而不是物品。请注意,物品展示框中的物品也会使用这个模型。

  • 将头上的雕刻南瓜替换为绿宝石。就像模拟人生一样。使用 Arsenal (1.20.1) 和 pommel:is_fixed 谓词将剑放在背上。

常见问题

问:这与 CIT [自定义物品纹理] 兼容吗?

答:只要 CIT 用物品模型(而非纹理)替换物品,CIT Resewn 和 Optifine 就可以正常工作。CIT 允许你替换物品的模型,因此 Pommel 仍然允许你拥有自定义手持模型。

问:这与原版我的世界的物品谓词(如自定义模型数据或弓拉弦)兼容吗?

答:是的,但请确保你也为 custom_model_data 模型指定了 pommel:is_held。

以下是一个使用原版物品谓词和手持物品模型的示例:
{
  "parent": "item/handheld",
  "textures": {
    "layer0": "item/base_item"
  },
  "overrides": [
    { "predicate": { "pommel:is_held": 1.0 }, "model": "minecraft:item/base_item_held" },
    { "predicate": { "custom_model_data": 1 }, "model": "minecraft:item/custom_item" },
    { "predicate": { "custom_model_data": 1, "pommel:is_held": 1.0 }, "model": "minecraft:item/custom_item_held" }
  ]
}

问:这与 Eating Animation 模组兼容吗?

答:是的,Eating Animation 允许你在食用物品时使用 Pommel 替换你选择的模型。该模组有两个谓词,eating 和 eat(前面没有模组 ID),你可以将其与 Pommel 谓词结合。代码将类似于上面 custom_model_data 的示例,但使用 Eating Animation 的谓词。还有一个 视频指南(也在模组页面有链接),将向你展示如何设置!请查看这个模组!

答:第二个答案,你也可以直接使用 pommel:item_use,效果完全相同,且无需使用 Eating Animation 模组。我并不想“取代” Eating Animation。相反,item_use 谓词的制作是因为 Eating Animation 模组与 CIT 存在一些兼容性问题,因此这可以用作替代方案。Eating Animation 可能无法正确更改/渲染 CIT 模型,而 Pommel 没有此类问题。

问:我该如何替换模组物品的手持模型?

答:与 JSON 示例 中的 JSON 结构相同,但将 ID 前的 minecraft 替换为 <mod_id>。

问:我的手持模型无法正常工作,我该去哪里排查?

答:首先检查你的 JSON 代码是否有错误,因为不小心弄乱 JSON 代码是很容易的。大多数 IDE 会检查错误,但也有一些其他网站可以检查。如果仍有问题,老实说,最好的支持方式是到 Discord 上联系我(用户名是 timmychips),或者到 Github 上提交 Issue!