本帖最后由 ⊙v⊙ 于 2022-11-19 10:49 编辑 
Optifine拥有比原版更优秀的贴图/模型修改能力。
虽不可能列出Optifine的所有功能和用法,但会尽可能详解部分内容。
如果希望提及没在此贴中提到的功能,可在下方留言,我会考虑加进贴子里哦~
希望各位能运用到制作中,创造出更优质的地图~
更完整的内容
你可以在这些地方查看作者提供的使用文本。
[Mod教程] [Doc] |高清修复OptiFine| 官方帮助文档翻译
官方在Github上存放的使用文本
也可以看这贴,但要注意mcpatcher和optifine非同一个东西,并推荐使用optifine,因为mcpatcher貌似停更了。
[教程] [] [给点打赏呗~]hukk的mcpatcher&optifine高级材质教程系列[1.6+]
〓〓〓
事前注意| 
 尽可能地使用最新版本的Optifine路径因版本而异:1.12或早前版本,assets\minecraft\mcpatcher\
 1.13之后的版本,assets\minecraft\optifine\
若自定义物品完全没有显示,按顺序排查⬤ 选项 > 视频设置 > 品质 > 自定义物品:开
 ⬤ 如果properties里有 nbt= 匹配条目,尝试去掉
 (若去掉后能显示,则是nbt匹配上出了问题。若去掉后仍然无变动,检测properties的位置和文本内容拼写)
 
 
 | 
〓〓〓
NBT匹配| ⬤ 直接写匹配内容的话,两边字串必须完全匹配
 ⬤ 匹配内容前使用pattern的话,匹配的内容可以使用通配符
 ⬤ 匹配内容前使用ipattern,则在匹配时不区分字母大小写
 ⬤ ?通配符 - 代表单个占位符
 ⬤ *通配符 - 代表单个或以上的占位符
 
 | 匹配行 | 备注 |  | nbt.display.Name=pattern:Grade ? | 当命名为 Grade A、Grade B、Grade + 时匹配 |  | nbt.dispaly.Name=ipattern:Grade * | 当命名为 Grade A、gRADE B、Grade ABCD 时匹配 |  | nbt.display.Lore.0 | 当首行Lore与定义文本完全匹配 |  | nbt.display.Lore.1 | 当第二行Lore与定义文本完全匹配 |  | nbt.display.Lore.* | 当有任意行Lore与定义文本完全匹配 |  | nbt.single.*=1 | 当single的列表内存在值为1的对象时。例 single:[0,1]、single:["any","1","is","better","than","no-one"] |  | nbt.single=1 | 当single值为1时匹配 |  | nbt.single=!1 | 当single值不为1时匹配 |  | nbt.single=iregex:(3|6) | 当single值为3或6时匹配 |  | nbt.Potion=iregex:(minecraft:water|minecraft:night_vision) | 当药水瓶为水或夜视药水时匹配 | 
 
 | 
〓〓〓
CIT - 替换物品的贴图(或模型)| "Work smart, not hard." 尽量不使用匹配物品Lore或Name这种老方法。
 论其制作、获取、修改、和调用上的各种麻烦与限制,外加存在能被玩家直接改掉物品名字的风险。
 从你,制作者的角度考虑,检测自定义nbt吧。
 但如果不能适用于某些插件的话(点名批评BossShop),就只能乖乖匹配Name/Lore了。
 
 CIT路径
 
 | 配置里的texture行 | 贴图搜寻路径 |  | texture=footexture=foo.pngtexture=./foo
 | 与properties相同位置下的foo.png |  | 配置里没有填写texture行 | 与properties相同位置下,且命名与properties相同的.png |  | texture=optifine/dial/clock0.pngtexture=minecraft:optifine/dial/clock0.png
 | assets/minecraft/optifine/dial/clock0.png | 
 
 
 Custom NBT
 
 以上内容,在以下路径新建txt文本,保存后修改文件后缀为.properties复制代码type=item
items=minecraft:diamond_sword
texture=drops.png
nbt.single=1
 1.12或早前版本,assets\minecraft\mcpatcher\cit\dropsmile.properties1.13之后的版本,assets\minecraft\optifine\cit\dropsmile.properties
 
 贴图文件则存放于此.properties文件的同一文件夹下。如
 
 1.12或早前版本,assets\minecraft\mcpatcher\cit\drops.png1.13之后的版本,assets\minecraft\optifine\cit\drops.png
 
 关于匹配
 
 nbt,所检测的nbt,若物品与此nbt匹配,(当此物品存在 single:1 这个nbt且值为1时)使用所指向的贴图。同理,可以为 nbt.display.Name,nbt.display.Lore。id可以为数字id,但强烈建议使用英文id。
 
 获取此物品的命令根据你的版本将为以下其中一条
 复制代码/give @p 276 1 0 {single:1}
/give @p minecraft:diamond_sword 1 0 {single:1}
/give @s minecraft:diamond_sword{single:1}
TL;DR
 
  
 
 
 
 Name
 
 复制代码type=item
items=minecraft:diamond_sword
texture=drops.png
nbt.display.Name=pattern:\u76ae
任何非字母或数字的字符请转换成unicode。其中,\u76ae为unicode转码后的皮。
 获取此物品的命令根据你的版本将为以下其中一条
 复制代码/give @p minecraft:diamond_sword 1 0 {display:{Name:"皮"}}
/give @s minecraft:diamond_sword{display:{Name:"{"text":"皮"}"}}
/give @s minecraft:diamond_sword{display:{Name:'{"text":"皮","color":"blue"}'}} 1
 
 
 
 
 Lore
 不清楚便捷的自定义nbt不用,为什么偏爱Lore就是了...
 *已在1.19测试
 
 复制代码type=item
items=minecraft:diamond_sword
texture=drops.png
nbt.display.Lore.*=\u5931\u53bb\u68a6\u60f3\u7684\u54b8\u9c7c
复制代码/give @p diamond_sword 1 0 {display:{Lore:["失去梦想的咸鱼"]}}
/give @s diamond_sword{display:{Lore:['{"text":"失去梦想的咸鱼"}']}} 1
Lore后面斜杠跟着的是unicode万国码,转换后为命令里的中文
 
 通过CIT里定义model引用其他物品模型
 ⬤ 把properties内的texture=替换为model=,路径指向一个原版json格式的物品模型
 ⬤ 若希望json模型读取位于相同位置下的贴图文件,打开json,修改textures下面定义的贴图路径,例 "particle":"./usethis"
 ⬤ 请不要同时定义texture=和model=,两个并不会同时运作
 
 | 
〓〓〓
附魔相关| 根据附魔,判断使用的贴图
 当钻石剑拥有标签single:1和任意附魔时,使用properties相同位置下的指定贴图
 
 复制代码type=item
items=minecraft:diamond_sword
texture=drops.png
nbt.single=1
enchantmentLevels=0-255
还能判定指定的附魔。如:当拥有 精准、锋利或亡灵时
 enchantments=minecraft:silk_touch sharpness smite
 
 
 
 
 根据条件,修改附魔特效
 从1.14到此贴编辑时的1.19.2,type=enchantment依旧没有被修复
 这里的texture将修改原版特效贴图textures\misc\enchanted_item_glint.png
 
 如例,拥有标签single:1和锋利附魔的物品,修改其附魔特效
 当然,去掉nbt一行,将变为 所有拥有锋利附魔的物品
 assets\minecraft\optifine\cit\helloworld.properties
 
 复制代码type=enchantment
texture=drops.png
nbt.single=1
enchantmentLevels=0-255
enchantments=sharpness
 可定义附魔特效项
 blend=add
 *有点ps基础的估计都清楚是什么意思,就不细说了。详情见作者文档
 add(默认),subtract,multiply,dodge,burn,screen,replace(替换),overlay(叠加),alpha
 
 speed=0          默认速度为0。取值0.0 - 1.0(?)
 rotation=0      默认旋转角度为0。取值0-360
 layer=0           默认为最低图层0
 duration=1     默认为1秒。特效循环的时长(?)
 weight=0        该配置的权重
 
 
 复制代码type=enchantment
texture=optifine/cit/drops.png
nbt.single=1
enchantmentLevels=0-255
enchantments=sharpness
blend=multiply
speed=0.2
rotation=30
duration=1
  | 
〓〓〓
实体贴图(random_entities)| 目前可通过匹配实体的y轴高度、所在群系和命名改变贴图。
 其中,实用性最高的当属名字匹配和群系检测
 
 首先,原版末影人的贴图存放路径为minecraft\textures\entity\enderman
 一张为身体的材质enderman.png,另一张则为眼睛enderman_eyes.png
 
 那么,材质包assets\minecraft\mcpatcher\mob\enderman这个位置下放入enderman.properties
 同时放入材质enderman2.png和enderman_eyes2.png
 enderman.properties内容如下
 
 规则1:当名字为apple时,使用贴图enderman2。复制代码skins.1=2
name.1=apple
skins.2=2
biomes.2=Hell
规则2:当位于下界群系时,使用贴图enderman2。
 
 会优先查看规则1,如果匹配则使用此贴图,而不继续往下匹配
 
  
  
 一个通过命名为apple修改,另一个则为替换所有下界的末影人贴图
 | 
〓〓〓
根据匹配替换CEM实体模型(非random_entities做法)| 传统的方法是好几个实体模型压在一个实体jem里,然后根据random_entities的匹配让实体显示对应的模型贴图。
 这么做的坏处是,制作和管理麻烦,实体渲染指数级的上升,还会与其他资源包撞车。
 
 而在 OptiFine HD U I1 pre2 版本新增了能直接在cem目录下创建properties,来对实体进行匹配,然后显示对应的实体模型。
 *制作CEM用的jem模型,可参考{链接url}(我暂时没见到有较好的教程贴...)
 
 properties创建在cem路径下,内容写法与random_entities一致,只是textures=要换成models=并指向至少一个jem格式的实体模型。如下。
 
  
 | 
〓〓〓
仿发光| 最后一个,也是最近在群里无意中看到的,原来optifine还藏着这个功能,真香...
 并非像火把或灯那样的光源,而是在方块/物品/实体上贴上一层亮度始终为最高的材质。既是仿发光。
 而此贴图的非透明部分就会以亮度15的形式附加在方块/物品/实体上。
 
 
 材质包assets\minecraft\optifine这个路径下放入emissive.properties,内容如下
 定义发光那层的贴图名字的后缀为_e(非格式的那个后缀)
 然后在assets\minecraft\textures\blocks这个位置放入redstone_block_e.png
 
  
  在光影和夜晚的双重助攻下,这发光的感觉特别明显
 
 时间关系就不弄生物发光了,做法是一样的有无光影的发光对比,可能是光影的原因,颜色略不同
 
  | 
〓〓〓
拥有玩家皮肤的盔甲架| reddit用户u/Franxy制作了一个修改盔甲架模型的optifine资源包。
 原理是通过修改cem,给盔甲架添加两层透明材质,当被命名为指定名字时这层材质便读取对应的皮肤材质
 
 
 要求Optifine版本至少为 HD-U-E5_pre6
 下载链点原文 Download Link 后面的 mediafire
 
 以下是此包的使用教程
 
 资源包这个路径下
 assets\minecraft\optifine\mob\armorstand
 
 打开 skin.properties 或 skin_slim.properties
 前者为steve格式(手臂4像素)
 后者则为alex格式(手臂3像素,手偏细)
 
 
 #skin_slim.properties
 
 为例复制代码skins.1=2
name.1=2
skins.2=3
name.2=bear
skins.<规则>=<数值>
 name.<规则>=<命名>
 
 规则,从1数起
 数值,不能为1
 命名,游戏内盔甲架被命名时,使用与规则下数值对应的皮肤
 
 当盔甲架被命名为2时,显示材质 assets\minecraft\optifine\mob\armorstand\skin_slim2.png
 而当被命名为bear时,将显示材质 assets\minecraft\optifine\mob\armorstand\skin_slim3.png
 
 
 
 资源包相同路径下,还有另一个文本 wood.properties
 其中这行,意为当盔甲架名为1,2或bear时,盔甲架的木头和底座的材质将变为透明
 可自行添加
 
 
  | 
真想把cem也给说了...无奈又懒又没动力
CEM教程有大佬写了,第一章
在画这个末影人的时候找到了一个不错的在线绘制网站
https://minecraft.novaskin.me/resourcepacks
 
            
        很实用的教程,做地图很方便。
            
        伪发光是高版本才有的吗?1.12可以,1.7试了好像不行
            
        
optifine这玩意不好说,感觉就是调用原版里的东西给玩家用
就是说尽量保证你的optifine版本为最新...
1.7.2的话最新版本为
OptiFine 1.7.2 HD U F7
1.7.10的话最新版本为
OptiFine 1.7.10 HD U E7
如果还是不行的话可能就是那个版本下做不出来吧
毕竟optifine看着像是尽量给每个主流mc版本都保持最新
            
        自定义实体贴图+CEM其实是可以做到一定程度的自定义实体模型的
            
        很实用,简洁易懂的教程,希望带佬更更新
            
        设置怪物名字的时候好像不支持中文啊,有中文就没有效果了
            
        
那就要把文本内的中文转换为unicode。
比如你要怪物名字为
皮时换皮,
皮的unicode是
\u76ae
Unicode转换
            
        
            
        
特殊符号比如'['之类的也需要转码吗
我想让名字为§a[Lv.5]§e史莱姆 的怪物有一个不同的皮肤要怎样做呢
            
        
没试过的话哪敢随便告诉你...
保险起见这个
§也要转。
§a[Lv.5]§e史莱姆
§ >   \u00a7
史 >   \u53f2
莱 >   \u83b1
姆 >   \u59c6
            
        
            
        牛啊  支持  请问怎么读取自定义怪物的模型为obj格式的
            
        不错很好看顶一下
            
        novaskin倒是挺好的,就是没梯子用不了
我试试开google helper可不可以
            
        很漂亮的材质包感谢分享
            
        666感谢楼主
            
        请问下可以做到不同的附魔效果么 就是附魔后被附魔武器上冒的那个紫光 可以通过这个方法制作出更多的附魔效果么
            
        
教程已更新
可以做到特定nbt物品的特定附魔使用不同的效果
            
        
有一些地方有点不大明白,问一下
①那个drop.png文件是放在哪个文件里,是和.proerties一个文件里么
②您写的那个代码是可以直接复制使用的嘛
③我用的1.9.4的客户端,使用的是支持194的高清修复,可以做到附魔的这个嘛
我研究了半天了还是没法实现,跪求大大帮助!