注意:本教程内使用到的车万女仆模组均为对应Minecraft 1.12.2 Forge(国际Java版)。

模组官方Wiki(可能会出现连接已重置的情况):http://tlmwiki.cfpa.team/

本教程部分内容来自于此模组官方Wiki。

需要注意:目前版本(模组 1.2.5)采用 Minecraft 基岩版 1.10.0 JSON 文件(旧版本基岩版1.10.0模型)描述的模型格式。



  • 手动安装

将资源包(格式仅为仅未加密的ZIP压缩文件或者文件夹)移动至:

(如果是版本隔离格式)
.minecraft\versions\<目标游戏版本文件夹名>\resourcepacks\
(否则)
.minecraft\resourcepacks\
  • 自动安装

对任意一个玩家已经驯服的小女仆进行交互,在女仆的GUI界面内下方按钮以找到打开女仆资源包的下载界面,在女仆资源包的下载界面内可以找到已经授权并且安全的其他玩家上传的资源包:

[TLM]车万女仆 - 自定义女仆资源包-第1张图片小女仆-第2张图片

  • 加载资源包

Minecraft游戏设置内的资源包界面配置或者在女仆资源包的下载界面内点击“打开资源包加载界面”以打开资源包配置选择加载资源包,如果加载的资源包如果可以让模组识别,那么一般情况下在女仆模型切换界面或者是坐垫模型切换界面会增加相关的资源。

此模组的资源包模型支持热重载,可以通过按键“F3 +T ”重载资源包。也包括已加载的其他资源包

需要注意:在扭蛋机内默认情况下是不能抽出资源包对应的女仆模型券的,需要手动在配置文件内进行修改。


  • (推荐)配合利用BlockBench与模组官方BlockBench插件以制作资源包模型

此方式仅可用于制作小女仆女仆坐垫的材质与模型

关于模组官方的BlockBench插件的信息与下载:http://tlmwiki.cfpa.team/zh/blockbench.html#%E4%BB%80%E4%B9%88%E6%98%AF-blockbench%EF%BC%9F

模组官方BlockBench插件(1.0.4)备用下载链接:https://baka943.coding.net/s/9a1ec756-5623-48a3-84ba-fb325569f2be

目前(插件1.0.4)版本的BlockBench插件只支持BlockBench 3.x 版本。

安装插件至BlockBench时请不要更改插件的文件名,否则会加载失败!

注:以下教程图片搬运源为模组官方Wiki(图片源

[TLM]车万女仆 - 自定义女仆资源包-第2张图片

[TLM]车万女仆 - 自定义女仆资源包-第3张图片

[TLM]车万女仆 - 自定义女仆资源包-第4张图片

由于原版的设计机制所限制,暂且无法为的单个材质的女仆单独使用某些音效。

模组官方教程(官方中文)(可能会出现连接已重置的情况):http://tlmwiki.cfpa.team/

资源包结构:
资源包文件夹   (命名随意,最好为英文)
├─pack.mcmeta   (原版的资源包描述文件,固定名称和位置)

└─assets    (资源文件夹,固定名称和位置,一个资源文件夹下面可以放任意多个资源域文件夹)
    └─<模型资源包ID> (资源域,命名随意,只要为小写英文字符和下划线即可,切记不要和已有资源域重名)
     |   ├─maid_model.json   (模型包描述文件,固定名称和位置)
     |   │
     |   ├─lang   (多语言支持文件夹,固定名称和位置)
     |   │    ├─en_us.lang(美国英语)
     |   │    ├─zh_cn.lang(简体中文)
     |    |    └─<语言标识名>.lang 
     |   ├─models   (模型文件夹)
     |   │     └─entity
     |   │           └─<模型名>.json
     |   ├─textures   (材质文件夹)
     |    |        └─entity
     |    |               └─<模型名>.png
    ├─<音效资源包ID>(资源域,命名随意,只要为小写英文字符和下划线即可)
    │    ├─sounds (声音文件夹,往下面赛你的各种音效)
    │    │     └─<文件名>.ogg
    │    └─maid_sound.json (声音资源包的描述文件)
    └─touhou_little_maid (必须为这个名称)
                ├─sounds.json (声音描述文件)
                └─music.json   (歌单描述文件,固定名称和位置)//自定义歌单

模型包描述文件(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>:<音效文件路径>"    // 音效文件所在的位置
        ]
    }}
  • 自定义旗指物(适用于 1.1.4 版本及以后版本的本模组)

    任意一个宽高比为 2:3 的 png 图片均可,支持透明图层。

    将做好的旗指物图片放置进客户端的配置文件夹下的"touhou_little_maid"文件夹中的"hata_texture"文件夹中,在游戏内输入 /hata reload 指令即可重载。

    旗指物图片只包含旗子部分的自定义,旗杆材质不能自定义,图片只需放置在客户端,无需放置在服务端,放置在服务端也不会加载;且旗指物图片的命名没有任何限制。

  • 自定义祭坛合成(需要模组CraftTweaker,且本模组版本至少为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 脚本书写方式

  • 自定义歌单(本模组至少1.2.1后)

    给物品 手提音响 添加更多网络歌单,目前仅支持 网易云音乐 源。

网络歌单(music.json)文件内容

[
  {
    "site": "netease",          // 目前仅支持 网易云音乐 此站点,必须填写
    "creator": "<文本>", // 歌单创建者名
    "version": "<文本>",         // 歌单版本,随意写都行
    "date": "<文本>",                 // 创建歌单的时间,随意写都行
    "desc": "<文本>",                 // 歌单的描述,随意写都行
    "content": {
      "play_list": [
        <数值>,  // 歌单的 id,可以通过网页版本的 url 里面获取
        <数值>  // 你可以添加多个歌单,没有限制
      ]
    }
  }]

安装资源包后,必须重启游戏才会应用歌单


  • 资源包图标说明

    此模组的自定义资源包内图标大小未设限制,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 被封禁
    如果设计为重载资源包时就获取歌单,那么玩家切换语言、光影时都会尝试重新获取一遍歌单,访问频率大大提高了,这是很危险的
    歌单重复与覆盖问题歌单直接用的是同一位置,同一个名称的文件,那岂不是会把之前别人资源包中的歌单覆盖了?
    只要是加载的资源包,所有的歌单都会记录上,不存在覆盖的问题。
    与原版的材质加载机制有所不同。