⊙v⊙ 发表于 2018-7-7 17:49:04

Optifne 小型实用教程

本帖最后由 ⊙v⊙ 于 2020-5-20 22:55 编辑

Optifine拥有比原版更优秀的材质/模型修改能力。

虽不可能列出Optifine的所有功能,但会尽可能地列出常用的几个。
如果希望提及没在此贴中提到的功能,可在下方留言,我会考虑加进贴子里哦~
希望各位能运用到制作中,创造出更优质的地图~



更完整的内容
你可以在这个地方查看作者写的使用方法。
https://github.com/sp614x/optifine/tree/master/OptiFineDoc/doc
也可以看这贴,但要注意mcpatcher和optifine非同一个东西,并推荐使用optifine,因为mcpatcher貌似停更了。
http://www.mcbbs.net/thread-269774-1-1.html




〓〓〓事前注意

[*]尽可能地使用最新版本的Optifine
[*]路径变动,如
1.12或早前版本,assets\minecraft\mcpatcher\
1.13之后的版本,assets\minecraft\optifine\
[*]若自定义物品材质没有显示
选项>视频设置>品质>自定义物品:开
[*]CIT路径

配置里填写的texture路径寻找的路径
foo与properties相同位置下的foo.png
foo.png与properties相同位置下的foo.png
./foo与properties相同位置下的foo.png
foo.properties(配置里没有提供路径) 与properties相同位置下的foo.png


〓〓〓NBT匹配

[*]nbt.display.Name=pattern:a cup of *   名字为a cup of water, a cup of lava, a cup of air...时匹配
[*]nbt.display.Lore.0                                  当首行Lore完全匹配
[*]nbt.display.Lore.1                                  当第二行Lore完全匹配
[*]nbt.display.Lore.*                                 当有任意行Lore完全匹配
[*]nbt.single=1                                       当single值为1时匹配
[*]nbt.single=!1                                        当single值不为1时匹配


〓〓〓物品贴图"Work smart, not hard."
尽量不使用匹配物品Lore或Name这种老方法。
论其制作、获取、修改、和调用上的各种麻烦与限制,外加存在能被玩家直接改掉物品名字的风险。
从你,制作者的角度考虑,检测自定义nbt吧。
但如果不能适用于某些插件的话(点名批评BossShop),就只能乖乖匹配Name/Lore了。





Custom NBT
type=item
items=minecraft:diamond_sword
texture=drops.png
nbt.single=1以上内容,在以下路径新建txt文本,保存后修改文件后缀为.properties

[*]1.12或早前版本,assets\minecraft\mcpatcher\cit\dropsmile.properties
[*]1.13之后的版本,assets\minecraft\optifine\cit\dropsmile.properties


贴图文件则存放于此.properties文件的同一文件夹下。如

[*]1.12或早前版本,assets\minecraft\mcpatcher\cit\drops.png
[*]1.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
https://s2.ax1x.com/2019/07/26/emyyHx.jpg




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\"}"}}





Lore
不清楚便捷的自定义nbt不用,为什么偏爱Lore就是了...
*暂未在1.14测试
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 minecraft:diamond_sword{display:{Lore:["失去梦想的咸鱼"]}}
Lore后面斜杠跟着的是unicode万国码,转换后为命令里的中文
〓〓〓附魔相关
根据附魔,判断使用的贴图
当钻石剑拥有标签single:1和任意附魔时,使用properties相同位置下的指定贴图
type=item
items=minecraft:diamond_sword
texture=drops.png
nbt.single=1
enchantmentLevels=0-255
还能判定指定的附魔。如:当拥有 精准、锋利或亡灵时
enchantments=minecraft:silk_touch sharpness smite




根据条件,修改附魔特效
这里的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
https://s2.ax1x.com/2019/08/01/eUkpGR.gif
〓〓〓实体贴图
目前可通过匹配实体的y轴高度、所在群系和命名改变贴图。
其中,实用性最高的当属名字匹配和群系检测

首先,原版末影人的贴图存放路径为minecraft\textures\entity\enderman
一张为身体的材质enderman.png,另一张则为眼睛enderman_eyes.png

那么,材质包assets\minecraft\mcpatcher\mob\enderman这个位置下放入enderman.properties
同时放入材质enderman2.png和enderman_eyes2.png
enderman.properties内容如下
skins.1=2
name.1=apple

skins.2=2
biomes.2=Hell规则1:当名字为apple时,使用贴图enderman2。
规则2:当位于下界群系时,使用贴图enderman2。

会优先查看规则1,如果匹配则使用此贴图,而不继续往下匹配
https://s2.ax1x.com/2019/07/26/emygUK.jpg
https://s2.ax1x.com/2019/07/26/emy24O.jpg

一个通过命名为apple修改,另一个则为替换所有下界的末影人贴图
〓〓〓仿发光
最后一个,也是最近在群里无意中看到的,原来optifine还藏着这个功能,真香...
并非像火把或灯那样的光源,而是在方块/物品/实体上贴上一层亮度始终为最高的材质。既是仿发光。
而此贴图的非透明部分就会以亮度15的形式附加在方块/物品/实体上。


材质包assets\minecraft\optifine这个路径下放入emissive.properties,内容如下
suffix.emissive=_e定义发光那层的贴图名字的后缀为_e(非格式的那个后缀)
然后在assets\minecraft\textures\blocks这个位置放入redstone_block_e.png
https://s2.ax1x.com/2019/07/26/emyruR.jpg
https://s2.ax1x.com/2019/07/26/emysD1.jpg
在光影和夜晚的双重助攻下,这发光的感觉特别明显
时间关系就不弄生物发光了,做法是一样的
有无光影的发光对比,可能是光影的原因,颜色略不同
https://s2.ax1x.com/2019/07/26/emyBv9.jpg
〓〓〓拥有玩家皮肤的盔甲架
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时,盔甲架的木头和底座的材质将变为透明
可自行添加
name.1=iregex:1|2|bear
https://s2.ax1x.com/2019/07/26/emycE6.jpg




真想把cem也给说了...无奈又懒又没动力
CEM教程有大佬写了,第一章(别问我为什么贴子写得那么杂...
平时没事的时候翻一翻,还是挺好的...
https://github.com/sp614x/optifi ... 5df/OptiFineDoc/doc

在画这个末影人的时候找到了一个不错的在线绘制网站
https://minecraft.novaskin.me/resourcepacks

chasing6 发表于 2021-1-11 01:57:44

敢问大佬这款支持1.12.2吗?

低热皮皮虾 发表于 2020-11-9 14:39:21

辛苦了 谢谢

深拥v 发表于 2020-10-19 16:57:22

/give @s minecraft:diamond_sword{single:1}
如果想给予的这个物品的名字是1,lore是2,指令该怎么写呢,,,(不会用原版的东西。。。)

和煦樱 发表于 2020-5-21 23:40:04

感谢 学会了[:sikao:]

ha4617286 发表于 2020-5-5 20:14:18

非常有用感谢教学

抱枕丶蓝晨 发表于 2020-4-8 07:29:56

感谢楼主的教程

⊙v⊙ 发表于 2020-3-7 05:25:56

a23323833 发表于 2020-3-4 22:14
牛啊支持请问怎么读取自定义怪物的模型为obj格式的

obj要拿去cubik studio转换成json格式。
cem自定义实体模型只读取两种格式的json。
jem-json entity model
jpm-json part model

a23323833 发表于 2020-3-5 16:14:34


牛啊支持请问怎么读取自定义怪物的模型为obj格式的

阿哈神烦 发表于 2020-3-5 16:06:48

话说,可以改怪物模型吗?

uiopjklkk 发表于 2019-8-21 15:28:37

老哥可以问一下嘛 就是这个optifne制作出来的材质包可以做到物品放在背包里是一个贴图 然后穿戴上后又是一个贴图么? 或者穿戴上后在上面叠加一个贴图。。 我之前看到一个服务器就是一个衣服拿在手上放在背包栏里没什么效果 穿戴到身上后那个装备栏的衣服格GUI就会出现一些别的特效..

o刘某某o 发表于 2019-8-4 23:31:56

谢谢楼主分享

金子89 发表于 2019-8-4 21:50:07

拥有玩家皮肤的盔甲架
那个资源包能转一下吗?reddit上不去,谢了

uiopjklkk 发表于 2019-8-2 04:55:30

⊙v⊙ 发表于 2019-8-2 04:52
texture=drops.png
如果像这么写,就是和properties同一位置下。



有可能就是没有这个功能呢吧 唉..

⊙v⊙ 发表于 2019-8-2 04:52:51

uiopjklkk 发表于 2019-8-1 01:10
有一些地方有点不大明白,问一下
①那个drop.png文件是放在哪个文件里,是和.proerties一个文件里么
②您 ...

texture=drops.png
如果像这么写,就是和properties同一位置下。

贴内代码都是亲自测试过的。

1.9.4的话可能properties要保存到mcpatcher下而非optifine
如果optifine是版本最新,那有可能是没有这功能。毕竟1.9是多少年前的东西了...

uiopjklkk 发表于 2019-8-1 21:24:46

⊙v⊙ 发表于 2019-8-1 09:28
教程已更新

可以做到特定nbt物品的特定附魔使用不同的效果
大大 有个私人请求 可以要你个联系方式QQ之类的吗 我想详细的问您一下 可以给报酬的
页: [1] 2 3
查看完整版本: Optifne 小型实用教程