注意:本教程参考Minecraft 1.12.2 Forge(国际Java版)的 车万女仆 (1.2.5) 模组,且本版本的模组采用 Minecraft 基岩版 1.10.0 JSON 文件(旧版本基岩版1.10.0模型)描述的模型格式 。
本教程内所用示例图中用到的小女仆模型等均系 模组官方预设模型 或 仅用于作为示例的模型(若无特殊说明,几乎都并非来自于已发布的资源包)
本模组其他版本的相关内容可能与此资料内有差异。
模组官方Wiki(偶尔连接不稳定): http://tlmwiki.cfpa.team/ 或 自定义模型包 | Touhou Little Maid 开发 Wiki (cfpa.team) (更新的)
或者可以考虑去参考作者发布的另一篇教程:如何快速制作一个女仆自定义模型包 - [TLM]车万女仆 (Touhou Little Maid)
本教程部分内容来自于此模组官方Wiki。
使用自定义女仆资源包
手动安装
将资源包(通常都是适用于安装了本模组的任何Minecraft版本的,但必须是 未加密的ZIP压缩文件 或 文件夹)移动至:
Minecraft 1.12.2 :
(如果是版本隔离格式)
.minecraft\versions\<目标游戏版本文件夹名>\resourcepacks\
(否则)
.minecraft\resourcepacks\
Minecraft 1.16.5 :
(如果是版本隔离格式)
.minecraft\versions\<目标游戏版本文件夹名>\tlm_custom_pack\
(否则)
.minecraft\tlm_custom_pack\
自动安装(推荐,更安全且简单)
自动安装的资源包下载于以下目录:
Minecraft 1.12.2 :
(如果是版本隔离格式)
.minecraft\versions\<目标游戏版本文件夹名>\resourcepacks\<资源包本体名称>.zip
(否则)
.minecraft\resourcepacks\<资源包本体名称>.zip
Minecraft 1.16.5 :
(如果是版本隔离格式)
.minecraft\versions\<目标游戏版本文件夹名>\config\touhou_little_maid\file\<下载的资源包本体名称>.zip
(否则)
.minecraft\tlm_custom_pack\config\touhou_little_maid\file\<下载的资源包本体名称>.zip
对任意一个玩家已经驯服的小女仆进行交互,在女仆的GUI界面内下方按钮以找到打开女仆资源包的下载界面,在女仆资源包的下载界面内可以找到已经授权并且安全的其他玩家上传的资源包:
加载资源包
在Minecraft游戏设置内的资源包界面配置或者在女仆资源包的下载界面内点击“打开资源包加载界面”以打开资源包配置以选择加载资源包,如果加载的资源包如果可以让模组识别,那么一般情况下在女仆模型切换界面或者是坐垫模型切换界面会增加相关的资源。
此模组的资源包模型支持热重载,可以通过按键“F3 +T ”以重载资源包。(也包括已加载的其他资源包)
需要注意:在扭蛋机内默认情况下是不能抽出资源包对应的女仆模型券的,需要手动在配置文件内进行修改。
制作自定义女仆资源包
利用 BlockBench 配合 tlm-utils 插件 以制作资源包
此方式仅可用于制作小女仆与女仆坐垫的材质与模型,以及制作小女仆的音效包。
(tlm-utils 插件是模组作者提供的,此处为引用相关链接)
tlm-utils 插件的信息与下载:http://tlmwiki.cfpa.team/zh/blockbench.html#%E4%BB%80%E4%B9%88%E6%98%AF-blockbench%EF%BC%9F
tlm-utils 插件的备用下载链接:
1.0.4 版本(适用于BlockBench 3.x) :https://baka943.coding.net/s/9a1ec756-5623-48a3-84ba-fb325569f2be
2.0 版本(适用于BlockBench 4.x):车万女仆插件 (cfpa.team)
前往作者的GitHub页面下载其他版本(访问不太稳定):GitHub - TartaricAcid/TLM-Utils-Plugins: A Blockbench Plugins Designed For Touhou Little Maid Mod
安装 tlm-utils 插件至BlockBench时请不要更改插件的文件名,同时不要用错插件版本,否则会加载失败或功能异常!
要点:
应当自行熟练BlockBench的一些基本操作与概念。
在编辑模式下,你才能添加预设骨骼,同时请注意骨骼一定要正确对应材质文件的区域。
如果要预设骨骼在游戏内正常实现默认的对应动画,请勿随意更改最上层组(文件夹)名,但其中的组和模型可以随意。
如果要给某些骨骼设定自定义动画,应当避免让此骨骼的组(文件夹)名 等于 以下”模型说明“处所列的骨骼名称。
使用 对应 BlockBench 3.x 的 tlm-utils 插件制作
注:以下教程图片(对应 BlockBench 3.x,但 4.x 的表现与此比较相似)搬运源为模组官方Wiki(图片源)
使用 对应 BlockBench 4.x 的 tlm-utils 插件制作(建议使用,功能更多更方便)
注意:此处演示图片的BlockBench版本是4.10.3,语言设定为自带的简体中文,使用了自带的Contrast主题,且开启了直播模式。
安装插件后,打开“车万女仆”选项卡
如果已有 小女仆 或 女仆坐垫 的模型或 小女仆 的资源包 ,要创建一个仅含有 模型 的资源包,请选择“创建新的模型包”
如果要修改已有的 女仆模型包内的模型,请选择“加载模型包”或“加载历史模型包”(如果你打开过)
创建 小女仆 的模型
选择“创建新工作区”后创建类型选择“女仆”:
然后,此处要求选择给你预配的女仆模型参考(后续可在编辑模式添加):
接下来,你可以按照BlockBench的操作规范开始制作女仆模型:
在编辑模式下,你在大纲内可以按下鼠标副按钮(默认为右键)打开 菜单,可以看到附加选项来快速添加一个骨骼组:
例子:(注意,图中为默认预设的模型框架;还有很多预设的骨骼组,详情请自行体验,可查看下文的“小女仆模型的更多参数”来部分了解这一些预设骨骼组有什么用)
在绘画模式下,你可以给设计的女仆上色:
在动画模式下,你可以给设计的女仆自己设定的骨骼组设定自定义动画(女仆模型中的 骨骼组 呆毛 是有预设动画的无需设置,下图仅为示例):
创建 女仆坐垫 的模型
选择“创建新工作区”后创建类型选择“坐垫”:
然后,你可以几乎完全自由的制作女仆坐垫:
剩余部分类似于上文小女仆制作中的说明
[h3=创建资源包]
最好在有要加入的 小女仆 或 女仆坐垫 的模型,或者有要 用于小女仆的音效之音频文件时,再考虑创建资源包。
资源包里面没资源,加载了个寂寞
选择“创建新的模型包”后,会出现以下内容:
设定完成后,你可以看到“加载的模型包信息”界面:
你可以在“加载历史模型包”内再次看到并编辑此资源包。
编辑示例(此处为示例图内仅为示例,请勿当真真的别当真):
打包并编辑小女仆模型
在“加载的模型包信息”对话框中点击“新建女仆列表",然后点“添加模型”按照里面的描述以导入自定义小女仆模型:
添加后,你可以在“加载的模型包信息”对话框中点击右侧选项卡以编辑相应女仆的相关信息。
示例(此处为示例图内内容仅供示例,请勿当真真的别当真):
其他手动自定义
尽量使用自己熟练的编辑器进行操作,代码等文本的编码 应为 UTF-8 无 BOM 编码。
由于原版的设计机制所限制,暂且无法为的单个材质的女仆单独使用某些音效。
模组官方教程(官方中文)(可能会出现连接已重置的情况):http://tlmwiki.cfpa.team/
小女仆的模型
模型包设定文件格式(maid_model.json)
{
"pack_name": "<模型包名>", // 模型包包名(必要)
"author": ["<名称1>", "<名称2>","<名称X>"], // 作者列表
"description": ["<文本>"], // 模型包的描述文本
"version": "<文本>", // 模型包的版本,推荐格式为"x.x.x"(如"1.1.4")
"date": "<文本>", // 模型包的制作时间,推荐格式为"年-月-日"(如"2021-1-4")
"icon": "<资源包ID>:textures/<模型名>.png", // 模型包的图标,缺失此字段,材质包将没有图标
"model_list": [{ // 模型列表(必要,而且不能为空)
//小女仆 模型部分
"model_id": "<资源包ID>:<模型ID>", //模型 id,必须使用原版资源格式写法(必要且资源域必须为当前所处的资源域)
"model": "<资源包ID>:models/entity/<模型ID>.json", // 模型所在的位置,使用完整的资源地址
"texture": "<资源包ID>:textures/entity/<模型ID>.png", // 模型所使用的材质位置,使用完整的资源地址
"render_item_scale": <数值>, // 渲染成物品形态时的模型大小
"render_entity_scale": <数值>, // 渲染成实体时的大小,范围为 0.7~1.3
"name": "<模型名>", // 模型名
"description": ["<材质模型描述文本>"], // 该模型的描述文本
"animation": ["<资源包ID>:animation/<文件名>.js"] , // 动画脚本,如果没有此字段,将会自动调用默认动画
"easter_egg": { //当小女仆的名称为以下"tag"所指向的文本时,将切换为此模型
"encrypt": true, //是否将以下"tag"字段的文本以 SHA-1 的格式识别
"tag": "<文本>"
},
"show_hata": <布尔值>, // 是否允许旗指物的显示
"show_backpack": <布尔值>, // 是否允许背包的显示
"can_hold_trolley": <布尔值>, // 是否允许女仆持有拉杆箱
"can_hold_vehicle": <布尔值>, // 是否允许女仆持有载具
"can_riding_broom": <布尔值>, // 是否允许女仆骑乘扫帚
"show_custom_head": <布尔值> // 是否允许女仆显示自定义头颅
},{
"model_list": [{
//座垫 模型部分
"model_id": "touhou_little_maid:cushion", // 模型 id,使用原版资源格式写法(必要且资源域必须为当前所处的资源域)
"model": "<资源包ID>:models/entity/<模型ID>.json", // 模型所在的位置,使用完整的资源地址
"texture": "<资源包ID>:textures/entity/<模型ID>.png", // 模型所使用的材质位置,使用完整的资源地址
"render_item_scale": <数值>, // 渲染成物品形态时的模型大小
"mounted_height": <数值>, // 坐上去的实体距离地面的高度,单位为距离地面的像素点数
"tameable_can_ride":<布尔值>, // 女仆等可驯服生物是否会主动坐上去(主要用于一些不可坐的模型)
"name": "<文本>", // 模型名
"description": ["<文本>"], // 该模型的描述文本
"animation": ["touhou_little_maid:animation/maid.default.js"] // 动画脚本,如果没有此字段,坐垫将不会拥有任何动画
}]
}
小女仆音效包
音效设定文件(sounds.json) 注意:直接调用原版的声音材质包系统,可于 Minecraft wiki 获取更多信息。
{
"<音效所属类别ID>": {
"category": "<音效类别ID>", // 音效所属类别,一般不需要更改
"subtitle": "<字幕提示ID>", // 播放音效时显示的字幕提示文字,一般不需要更改
"replace": true, // 是否替换先前的声音素材,如果为否,那么会随机播放所有加载的可用音效
"sounds": [
"<音效资源包ID>:<音效文件路径>" // 音效文件所在的位置
]
}}
自定义旗指物
自定义旗指物适用于 Minecraft 1.12.2 下 1.1.4 版本及以后版本的本模组。
任意一个宽高比为 2:3 的 png 图片均可,支持透明图层。
将做好的旗指物图片放置进客户端的配置文件夹下的"touhou_little_maid"文件夹中的"hata_texture"文件夹中,在游戏内输入 /hata reload 指令即可重载。
旗指物图片只包含旗子部分的自定义,旗杆材质不能自定义,图片只需放置在客户端,无需放置在服务端,放置在服务端也不会加载;且旗指物图片的命名没有任何限制。
自定义祭坛合成
自定义祭坛合成需要玩家安装模组CraftTweaker,且本模组版本在Minecraft 1.12.2下至少为1.1.9
// 导入相关的 ZenClass,简化后面合成的书写
import mods.touhoulittlemaid.Altar;
// 添加物品合成
// 第一个参数:字符串,表明该合成的 ID,建议书写格式 xxxx:xxxx,且最好与其他合成不重名
// 第二个参数:浮点数,表明该合成需要消耗的 P 点 // 第三个参数:IItemStack 类型,该合成的输出物品
// 后续几个为可变参数,可书写 1-6 个参数,均为 IIngredient 类型,表示该合成的输入物品
Altar.addItemCraftRecipe("touhou_little_maid:craft_camera", 0.2,
<touhou_little_maid:camera>*2,
<ore:blockGlass>, <ore:sand>, <minecraft:diamond_sword>);
// 可变参数的示例,这里仅写成一个合成的输入物品
Altar.addItemCraftRecipe("touhou_little_maid:craft_apple", 0.2,
<touhou_little_maid:apple>*2, <ore:blockGlass>);
// 生成女仆的合成添加Altar.addMaidSpawnCraftRecipe("test:replace_maid", 0.5,
<minecraft:grass>, <minecraft:grass>, <minecraft:grass>);
// 女仆手办复活的合成添加 // 这个合成只能书写 1-5 个物品,手办物品是直接强制内嵌在合成中的
Altar.addMaidReviveCraftRecipe("test:reborn_maid", 0.3,
<minecraft:grass>, <minecraft:grass>, <minecraft:grass>);
// 其他生物的合成
// 第三个参数需要书写完整的实体
idAltar.addEntitySpawnCraftRecipe("test:spawn_pig", 0.2, "minecraft:pig",
<minecraft:stone>, <minecraft:stone>, <minecraft:stone>);
// 删除合成,通过合成的 id 来删除合成,这也是为什么上面多次提到需要设置独立合成 id 的原因
// 只有一个参数,即合成的 id,只需要通过 JEI 就能查到模组自带合成的 idAltar.removeRecipe("touhou_little_maid:craft_camera");
使用此功能前请确保你已经了解基本的 CraftTweaker 模组的脚本书写方式。
自定义手提音响的歌单
本模组在Minecraft 1.12.2 下至少1.2.1后才可实现自定义歌单。
给物品 手提音响 添加更多网络歌单,目前仅支持 网易云音乐 源。
网络歌单(music.json)文件内容
[
{
"site": "netease", // 目前仅支持 网易云音乐 此站点,必须填写
"creator": "<文本>", // 歌单创建者名
"version": "<文本>", // 歌单版本,随意写都行
"date": "<文本>", // 创建歌单的时间,随意写都行
"desc": "<文本>", // 歌单的描述,随意写都行
"content": {
"play_list": [
<数值>, // 歌单的 id,可以通过网页版本的 url 里面获取
<数值> // 你可以添加多个歌单,没有限制
]
}
}]
安装资源包后,必须重启游戏才会应用歌单
资源包更多信息
资源包图标
此模组的自定义资源包内图标大小未设限制(尽可能使用 .png 格式的图片),1:1比例的图片将解析为静态图标,否则将会视为动态图标以每秒10次的频率(0.1秒每次)逐次显示以表现。
小女仆模型的更多参数
本模组使用基岩版 1.10.0 JSON 文件来进行模型的加载,该文件可以通过Blockbench直接导出,不需要对其做任何修改。
Blockbench 3.x 版本默认启用 1.12.0 版本基岩版模型,请在绘制前请在 文件 -> 转换工程菜单中将其转换为旧版基岩版模型。
如模型对应骨骼没有设置对应自定义动画,当骨骼对应以下名称时,将会以对应模组预设方式拥有动画效果:(注意:如配合本模组的BlockBench插件编辑模型并在编辑模式时,于骨骼栏打开选项菜单,可一键生成对应的骨骼组与预设模型)
骨骼名称 | 默认 动画 / 动作 | BlockBench一键生成 |
---|---|---|
head | 头部动作,祈求时歪头动作 | 头部 |
armLeft armRight | 手臂动作 | 左臂 右臂 |
legLeft legRight | 腿部动作 | 左腿 右腿 |
wingLeft wingRight | 往复运动 | 左翅膀 右翅膀 |
ahoge | 随头部运动,祈求时摆动 | 呆毛 |
blink | 随机显示此骨骼 | 眨眼 |
tail | 往复运动 | 尾巴 |
sinFloat cosFloat -sinFloat -cosFloat _sinFloat _cosFloat | 以旋转点为中心的上下小距离浮动 | 函数飘带 |
helmet | 小女仆装备头盔时显示此骨骼模型 | 装备头盔时显示 |
chestPlate chestPlateLeft chestPlateMiddle chestPlateRight | 小女仆装备胸甲时显示此骨骼模型 | 装备胸甲时显示 |
leggings leggingsLeft leggingsMiddle leggingsRight | 小女仆装备护腿时显示此骨骼模型 | 装备护腿时显示 |
bootsLeft bootsRight | 小女仆装备靴子时显示此骨骼模型 | 装备靴子时显示 |
hat | 随头部旋转,装备头盔时显示 | 帽子 |
-helmet _helmet | 小女仆未装备头盔时显示此骨骼模型 | 反向头盔 |
-chestPlate -chestPlateLeft -chestPlateMiddle -chestPlateRight _chestPlate _chestPlateLeft _chestPlateMiddle _chestPlateRight | 小女仆未装备胸甲时显示此骨骼模型 | 反向胸甲 |
-leggings -leggingsLeft -leggingsMiddle -leggingsRight _leggings _leggingsLeft _leggingsMiddle _leggingsRight | 小女仆未装备护腿时显示此骨骼模型 | 反向护腿 |
-bootsLeft -bootsRight _bootsLeft _bootsRight | 小女仆未装备靴子时显示此骨骼模型 | 反向靴子 |
-hat _hat | 小女仆未装备头盔时显示此骨骼模型 | 反向帽子 |
armLeftPositioningBone armRightPositioningBone | 女仆手持物品的定位骨骼。该骨骼必须位于对应的 armLeft armRight 骨骼下,且为空骨骼。空骨骼的旋转点决定了手持物品的起始位置 | 左手臂定位骨骼 右手臂定位骨骼 |
backpackPositioningBone | 女仆背包的定位骨骼,该骨骼没有父骨骼,该骨骼为空骨骼。空骨骼的旋转点决定了背包肩带的中心点 | 背包定位骨骼 |
小女仆音效的类型
音效ID | 小女仆行为状态与描述 | 示例台词 |
---|---|---|
maid.mode.idle | 空闲 模式 | 啊哈 嗯嗯 唉唉唉 好闲啦 主人~啊~ 哈? 呀吼 嘿嘿嘿 |
maid.mode.attack | 攻击 模式 | 吃我一剑! 去死吧! |
maid.mode.range_attack | 弓兵 模式 | 瞄准 发射! |
maid.mode.danmaku_attack | 弹幕攻击 模式 | 梦想封印! 吃我弹幕! biu~biu~ |
maid.mode.farm | 农场 模式 | 种种田 我真勤劳 快快长大吧 锄禾日当午 |
maid.mode.feed | 喂食 模式下 喂食玩家 | 快吃快吃 好好吃 饿了吧 多吃饭 不要挑食 真香! |
maid.mode.shears | 剪刀 模式下 剪羊毛 | 羊羊别怕 羊羊别跑 羊毛! 嘿嘿 毛绒绒 咔嚓 |
maid.mode.milk | 牛奶 模式下 获取牛奶 | 牛牛别怕 牛牛别跑 |
maid.mode.torch | 照明 模式 插火把 | 好黑啊 要有光! 插个火把 |
maid.mode.feed_animal | 繁殖动物 模式下 喂养动物 | 生小宝宝啦 |
maid.ai.find_target | 攻击 类模式下 发现目标 | 是敌人! 危险! 往哪跑! 看到你了! |
maid.ai.hurt | 受到伤害 | 疼疼疼 哎呀 好疼啊 呜呜呜 |
maid.ai.hurt_fire | 受到火焰伤害 | 好烫 着火啦 快灭火! |
maid.ai.hurt_player | 受到 玩家 为伤害来源的伤害 | 别打我啊啊啊啊啊啊啊 为什么要打我—— |
maid.ai.tamed | 首次被驯服后 | 初次见面请多关照 你就是我的主人吗? 欢迎回家,主人~ |
maid.ai.item_get | 捡起物品 | 捡到宝了 好东西 捡垃圾 拾起来,嘿 |
maid.ai.death | 死亡 | 啊,我死了 主人再见...... |
maid.environment.hot | 处于炎热生物群系 | 好~热~啊 热死啦 这里是非洲? 要熔化了 |
maid.environment.cold | 处于寒冷生物群系 | 阿嚏~ 呜呜,感冒了 好冷啊 冻死啦—— |
maid.environment.rain | 天气非为无天气时(下雨) | 是雨诶 下雨啦 雨天真好 |
maid.environment.snow | 处于寒冷生物群系且天气非为无天气时(下雪) | 下雪啦! 是雪花诶 嘿嘿嘿,雪花 |
maid.environment.morning | 处于白天时间段 | 早上好 早安 早上空气不错哦 一天之计在于晨 |
maid.environment.night | 处于晚上时间段 | 下午好 天黑啦 早点睡觉吧 早睡早起身体好 |
other.credit | 声音素材来源界面的提示音 | 本音效由 ⬛⬛ 配音制作 |
资源包的多语言支持
于此模组的资源包内"pack_name"(资源包名)和"description"(资源包描述)与模型列表的"name"(模型名)和"description"(模型描述)字段支持多语言支持。
部分疑难解答
问题 | 描述 | 解决方案 |
---|---|---|
Z-fighting (模型特定区域渲染异常,表现为重叠闪烁) | OpenGL 本身的一个问题,常因在制作模型过程中使用了平面、或者是两个重合的立方体。 | 对于平面图形导致的问题,只为其中某一面附上材质,另一面留空可以解决此问题; 对于两个重合几何体,只需要微移几何体,或者对重合部分的材质进行剔除即可。 |
文件名大小写 | 文件名是否包含或仅使用大写或小写英文字母 | Minecraft 的资源包中文件名大小写全部由资源包的"pack.mcmeta"文件的"pack_format"字段决定, 如该字段为 3,则所有内部文件名均需小写(也推荐始终以小写方式命名文件) |
动画不协调 | 模型进行动作时不协调或不满意 | 制作对应骨骼的自定义动画 |
持有物品位置异常 | 小女仆持有物品时,此物品所在位置错位 | 利用 左手臂定位骨骼 或 右手臂定位骨骼 进行手持物品的定位 |
手持物品未显示 | 小女仆持有物品时,此物品未显示 | 检查骨骼 armLeft 或 armRight 是否存在(若不存在将不会显示手持物品) |
背包位置不正常 | 小女仆装备背包后,背包未显示或显示错位 | 利用 背包定位骨骼 进行背包装备的定位 |
移除背包、拉杆箱、载具、扫帚,自定义头颅的显示 | 使小女仆装备背包、拉杆箱、载具、扫帚,自定义头颅时不进行对应装备显示 | 于BlockBench导出小女仆模型时在模型相关参数界面进行配置; 或者修改模型列表中对应小女仆的设置: "show_hata": <布尔值>, // 是否允许旗指物显示 "show_backpack": <布尔值>, // 是否允许背包的显示 "can_hold_trolley": <布尔值>, // 是否允许女仆持有拉杆箱 "can_hold_vehicle": <布尔值>, // 是否允许女仆持有载具 "can_riding_broom": <布尔值>, // 是否允许女仆骑乘扫帚 "show_custom_head": <布尔值> // 是否允许女仆显示自定义头颅 |
仅能以资源包来添加歌单 | 为什么要通过资源包这么麻烦的方式来添加歌单? | 模组官方为那些制作女仆模型资源包的作者提供便利,在制作女仆模型资源包时还能够塞入歌单, 分享给那些下载使用此资源包的玩家们,这算是对他们的一种福利。 |
必须重启游戏以加载歌单 | 为什么加载歌单需要重启游戏? | 重启游戏来加载歌单是为了减少获取网易云歌单 api 的频率, 网易云歌单 api 对访问频率做了很高的限制,如果过于频繁的访问,会导致你的 IP 被封禁。 如果设计为重载资源包时就获取歌单,那么玩家切换语言、光影时都会尝试重新获取一遍歌单,访问频率大大提高了,这是很危险的。 |
歌单重复与覆盖问题 | 歌单直接用的是同一位置,同一个名称的文件,那岂不是会把之前别人资源包中的歌单覆盖了? | 只要是加载的资源包,所有的歌单都会记录上,不存在覆盖的问题。 与原版的材质加载机制有所不同。 |