Ratatouille
doctor4t 的模组库与支持者饰品库
功能
库
- 基于 Lodestone 的渲染工具(作者 Sammy;以及 Lodestar,在 1.21.1 中移除)
- 饰品自定义工具:原本为我的支持者饰品制作,但也可开箱即用,适用于需要简单自定义功能的更通用饰品模组
- 物品自定义命中音效与粒子工具
-
第一人称特性渲染工具:通过在你的特性渲染器中实现
RendersArmInFirstPerson接口,允许添加可在第一人称下渲染于玩家手上的特性。 - 自定义模型盔甲工具:只需一次方法调用(以及自定义模型)即可添加带有自定义模型的盔甲,无需再制作模型层、特性渲染器、用于将该特性渲染器注入玩家与盔甲架渲染的 mixin、编写显示条件等……并且还会自动在第一人称下将该自定义盔甲显示在玩家手上。使用指南可在下方找到。
额外好东西
- RAT 玩偶(Rat Maid、Folly 和 Mauve)
- 可以被捏响
- 可在上方放置音符盒,以玩偶的鸣叫声作为乐器音色进行播放
- 在创造模式下,手持物品并潜行与生物交互,可为其装备物品和盔甲。在创造模式下空手潜行攻击它们,则会使其掉落所有已装备的物品。
支持者饰品
- 面向 Ko-Fi 或 YouTube 会员
- 名字旁边的图标以及彩色名字
- 头部玩偶:手持任意玩偶物品,在未瞄准方块时潜行使用以打开饰品界面
画廊
展开画廊


文档
展开文档
设置(build.gradle)
展开 Gradle 详情
repositories {
maven {
name = 'Ladysnake Mods'
url = 'https://maven.ladysnake.org/releases'
}
dependencies {
modImplementation "dev.doctor4t:ratatouille:${project.ratatouille_version}"
}
自定义模型盔甲工具
展开自定义模型盔甲工具详情
该工具允许你轻松注册使用自定义模型的新盔甲套装,只需一次方法调用即可(当然还需要那个自定义模型,因为游戏确实需要知道你想渲染什么)。
第 1 步:定义模型
在添加自定义盔甲之前,我们需要一个遵循若干规则的模型。你可以在仓库的 RESOURCES 文件夹中找到一个盔甲模板模型(Blockbench 模型文件)和纹理。你可以自由编辑此模型和纹理,打造你梦想中的盔甲外观,但请注意,现有分组非常重要;你可以向其中添加新的子分组,但不能也不应该删除任何现有分组,因为这些分组能让库知道当玩家(或盔甲架或生物)穿戴盔甲部件时应显示什么:
-
helmet在装备头盔物品时显示 -
bodychestplate、rightarmchestplate和leftarm_chestplate在装备胸甲物品时显示 -
bodyleggings、rightlegleggings和leftleg_leggings在装备护腿物品时显示 -
rightlegboot和leftlegboot在装备靴子物品时显示
完成模型后,你可以使用 Blockbench 导出:File -> Export -> Export Java Entity。打开生成的 Java 类,并将 getTexturedModelData() 中从 ModelPartData modelPartData = modelData.getRoot(); 到 return 前一行(包含该行)之间的代码复制出来。Ratatouille 添加了一种新的模型类类型,用于简化盔甲模型定义,名为 CustomArmorModelDefinition;继承该类并实现 addModelParts 方法,把你从生成模型类中复制的代码片段粘贴进去。然后实现 getTexture();最简单的做法是在你的模型定义类中为盔甲纹理设置一个静态 Identifier 并返回它,但如果你希望通过特殊逻辑动态返回不同纹理,当然也可以。
第 2 步:向 Ratatouille 注册自定义盔甲
第二步也是最后一步,是在客户端初始化时注册你的自定义盔甲渲染。调用 CustomModelArmorUtil.registerCustomArmor 并传入所需参数:
-
Identifier id:自定义盔甲的 id。它用于自动生成并注册盔甲的模型层,因此必须是唯一的。 -
ArmorDisplayConditions displayConditions:你的盔甲部件进行渲染所需满足的显示条件。如果你想要的是一种简单盔甲,即每装备一个物品就显示对应部件,那么ItemSetDisplayConditions允许你定义头盔、胸甲、护腿和靴子物品,并会自动检查已装备了哪些盔甲物品需要显示,同时阻止带缺失纹理的原版盔甲模型被渲染。如果你希望用自定义逻辑来决定显示哪些不同部件,而不是仅仅检查物品是否被穿戴,那么你可以实现ArmorDisplayConditions及其四个shouldDisplay方法。 -
CustomArmorModelDefinition armorModelDefinition:我们在第 1 步中创建的模型定义,直接创建一个它的新实例即可。 -
int textureWidth, int textureHeight:盔甲纹理的宽度和高度。
通过此方法注册你的盔甲后,它会为你处理所有事情,例如创建带纹理的模型数据、模型层,并将该特性附加到玩家 / 盔甲架 / 生物渲染器上。如果你需要访问盔甲的模型数据或模型层,可以在 CustomModelArmorUtil.CUSTOMARMORMODELS 这个 HashMap 中通过使用盔甲的 displayConditions 作为键来找到它们。
环境音工具
展开环境音工具详情
该工具允许你轻松注册环境循环音,既可作为通用背景音频,也可作为依赖方块实体的音频。
注册背景环境音
要注册背景环境音,你所需要做的就是在客户端初始化类中调用 AmbienceUtil.registerBackgroundAmbience 方法,并传入一个新的 BackgroundAmbience 对象及所需参数:
-
SoundEvent soundEvent:要播放的环境循环音效。 -
SoundCategory soundCategory:播放该声音时使用的音频类别。 -
PlayPredicate predicate:决定该声音是否允许播放的判定条件。接收一个ClientPlayerEntity并必须返回一个 boolean。 -
int fadeIn:环境循环音开始播放时的淡入时间(以 tick 为单位)。 -
int fadeOut:环境循环音停止播放时的淡出时间(以 tick 为单位)。
注册方块实体环境音
要注册方块实体环境音,你所需要做的就是在客户端初始化类中调用 AmbienceUtil.registerBlockEntityAmbience 方法,并传入应播放该环境音的 BlockEntityType 以及一个新的 BlockEntityAmbience 对象及所需参数:
-
SoundEvent soundEvent:要播放的环境循环音效。 -
SoundCategory soundCategory:播放该声音时使用的音频类别。 -
PlayPredicate predicate:决定该声音是否允许播放的判定条件。接收一个BlockEntity并必须返回一个 boolean。 -
int fadeIn:环境循环音开始播放时的淡入时间(以 tick 为单位)。 -
int fadeOut:环境循环音停止播放时的淡出时间(以 tick 为单位)。