客户端绘制变体

客户端绘制变体

使用资源包添加自定义画作变体,而不覆盖现有画作

装饰

客户端画作变体

使用资源包添加新类型的画作,而无需移除任何现有画作,完全在客户端实现!

画作田野上方有标题和标志。一些画作是默认画作,但其他的是自定义的。

此模组需要 Fabric API,所以请确保与此模组一起安装它。

等等,这与 1.21 的画作变体有什么不同?

Minecraft 1.21 添加了依赖数据包来指定新变体的画作变体。不幸的是,这意味着这些画作必须按世界定义,或由服务器管理员设置。此模组所做的是进一步扩展这一想法,允许资源包为在客户端使用此模组的任何玩家定义更多画作变体。没有安装此模组的客户端只会看到普通的画作。

这确实导致了此模组的一个限制:它无法添加新尺寸的画作,只能为现有尺寸添加更多变体(无论它们是由 Minecraft 还是数据包定义的)。

这在多人游戏中如何运作?

  • 没有安装此模组的玩家将看到服务器发送的原始画作。
  • 安装了此模组的玩家将在原始画作之外看到自定义画作。
    • 如果两个安装了此模组的玩家安装了相同的资源包,那么他们将看到相同的画作。
    • 此模组永远不会用原版画作覆盖另一个原版画作,所以如果你看到一幅原版画作,那么没有安装此模组的玩家也会看到那幅相同的画作。

从无模组和已模组客户端查看相同画作的对比。自定义画作仅在已模组客户端上可见,但在无模组客户端上显示为普通画作。

致资源/数据包开发者

安装了此模组的玩家可以在任何地方将你的画作加入可用画作池中,而不仅仅是在带有数据包的服务器上。由于此模组不会移除 Minecraft 的任何默认画作,因此这是一种很好的非破坏性方式,可以将你的艺术作品整合到游戏中。

此模组要正常工作只有两个要求。

  1. 确保你的画作纹理位于资源包的 assets/<namespace>/textures/painting/ 文件夹中(游戏默认画作所在的位置,所以希望这也是你放置画作纹理的位置)。
  2. 将画作变体 JSON 文件添加到资源包的 assets/<namespace>/painting_variant/(注意:没有末尾的 s)文件夹中。
    • 这些与在数据包中添加画作变体的格式相同。
      • width:画作的宽度(以方块为单位)。必须在 1-16 的范围内。
      • height:画作的高度(以方块为单位)。必须在 1-16 的范围内。
      • asset_id:paintings 图集中纹理的标识符。<namespace>/<filename-without-ext>
    • 参考:24w18a 更新日志。
示例资源包结构
resourcepack.zip
├─pack.mcmeta
├─pack.png
└─assets/
  └─<namespace>/
    ├─painting_variant/
    │ ├─<id1>.json
    │ └─<id2>.json
    └ textures/
      └─painting/
        ├─<id1>.png
        └─<id2>.png

这与 1.21 由数据包驱动的画作变体系统尽可能相似。此模组从两种不同类型的包中取出两个文件夹并将它们放在一起。

原版中等效的数据包和资源包
datapack.zip
├─pack.mcmeta
└─data/
  └─<namespace>/
    └─painting_variant/
      ├─<id1>.json
      └─<id2>.json

resourcepack.zip
├─pack.mcmeta
├─pack.png
└─assets/
  └─<namespace>/
    └ textures/
      └─painting/
        ├─<id1>.png
        └─<id2>.png

我很想为包开发者做到毫不费力(这也会带来开箱即用的好处),但不幸的是,资源/数据包的分离使得此项目的理想版本不可能实现。相反,我认为这已经是次优选择了。我希望这是你可以直接完成而无需过多思考的小事。

许可证

此模组根据 Mozilla Public License 2.0 授权。你可以在你的模组包中使用此模组。源代码包含在每个版本附带的单独 sources.jar 文件中。