[EMF] Entity Model Features 2.1.1
on 2024 Dec 01[2.1.1]
- 现在需要 ETF 6.1.3 或更高版本
- 添加了新的 EMFAnimationAPI 方法,以允许其他模组:
- 暂停/恢复实体的整个自定义模型动画
- 暂停/恢复实体动画中的单个自定义模型部分
- 锁定/解锁实体,使其仅使用其原生模型
- 将实体和块实体转换为 EMFEntity 接口的实用方法 这些将允许其他模组在需要时抑制特定实体的 EMF 动画和模型,例如用于表情
- 修复了 EMF 将值应用于具有给定 ID 的最后一部分,而不是第一部分的问题*(OptiFine 对等性)*
- 修复了
scale
模型部分的默认设置在具有新格式动画的生物(如守卫者和青蛙)上未正确应用的问题 - 修复了在 1.21 中导出模型时的崩溃
- 修复了 1.21 中的
not building
崩溃 - 修复了
root
部分在模型导出中未出现的问题 - 修复了一个错误,其中项目附件可能会延续到其他生物渲染中
- 修复了末影龙
spine
部分在具有纹理覆盖时未渲染的问题 - 当加载自定义块实体模型时,允许 EMF 禁用 EBE 设置的设置,现在在 EMF 配置警告屏幕中具有更详细和信息丰富的显示
- 修复了使用旧的
modded
目录格式的模组模型导出日志,导出日志现在还给出了从资产文件夹开始的 jem 的完整路径 - 模型导出现在放置在
.minecraft
目录中的emf/export/assets/
文件夹中,具有从资产文件夹开始的完全正确和命名空间的路径 - 修复了原生旗帜模型的摆动在 EMF 动画之上添加的问题,因为原生旗帜在多个阶段中渲染
- 将
pi
从 3.1415926 更改为 3.1415927,以匹配原生 pi 使用,并且似乎与 OptiFine 匹配,尽管文档如此 - 更改了各种数学方法,例如
sin() & cos()
,不再使用 java.lang.Math,而是使用 Minecraft 内部数学类 - 上述 2 个更改修复了 fa 1.9.1 中的复仇者
- 添加了对
inner_armor.jem
和outer_armor.jem
的支持,作为实体特定装甲模型未找到时的回退,例如zombie_inner_armor.jem
和zombie_outer_armor.jem
- 修复了一些缺失的生物对
is_aggressive
变量的支持 - 将
height_above_ground
变量更改为检测具有可站立顶部表面的块,而不仅仅是实体块 - 修复了一个导致某些块实体模型纹理覆盖在第一人称视图中出现在其虹膜着色器阴影传递位置的错误
- 添加了一个优化选项,将在虹膜阴影传递期间跳过重新计算实体模型动画,默认启用,并且应该始终保持启用,仅在未来虹膜 api 更改或虹膜端口出现奇怪行为的情况下才是一个选项。
- 修复了三叉戟模型部分在 OptiFine 映射中意外声明额外部分的问题,这可能导致原生三叉戟部分在许多自定义三叉戟模型中重新出现
[EMF] Entity Model Features 2.1.1
on 2024 Dec 01[2.1.1]
- 现在需要 ETF 6.1.3 或更新版本
- 添加了新的 EMFAnimationAPI 方法,以允许其他模组:
- 暂停/恢复实体的整个自定义模型动画
- 暂停/恢复实体动画中的单个自定义模型部分
- 锁定/解锁实体以仅使用其原版模型
- 将 Entity 和 BlockEntity 转换为 EMFEntity 接口的实用方法 这些将允许其他模组在需要时抑制特定实体的 EMF 动画和模型,例如用于表情
- 修复了 EMF 将值应用于具有给定 ID 的最后一部分,而不是第一部分的问题*(OptiFine 兼容性)*
- 修复了在 1.21 中
scale
模型部分的默认设置未正确应用于带有新格式动画的生物(如狱卒和青蛙)的问题 - 修复了在 1.21 中导出模型时的崩溃问题
- 修复了 1.21 中的
not building
崩溃问题 - 修复了
root
部分在模型导出中不出现的问题 - 修复了一个错误,其中物品附件可能会延续到其他生物渲染中
- 修复了末影龙
spine
部分在有纹理覆盖时不渲染的问题 - 当加载自定义块实体模型时,允许 EMF 禁用 EBE 设置的设置,现在在 EMF 配置警告屏幕中具有更详细和信息丰富的显示
- 修复了使用旧的
modded
目录格式的模组模型导出日志,导出日志现在还给出了从 assets 文件夹开始的 jem 的完整路径 - 模型导出现在放置在
.minecraft
目录中的emf/export/assets/
文件夹中,具有从 assets 文件夹开始的完全正确和命名空间的路径 - 修复了原版旗帜模型的摆动在 EMF 动画之上添加的问题,因为原版旗帜在多个阶段中渲染
- 将
pi
从 3.1415926 更改为 3.1415927,以匹配原版pi
的使用,并且似乎与 OptiFine 匹配,尽管文档如此 - 更改了各种数学方法,如
sin() & cos()
,不再使用 java.lang.Math,而是使用 Minecraft 内部数学类 - 上述 2 个更改修复了 fa 1.9.1 中的复仇者
- 添加了对
inner_armor.jem
和outer_armor.jem
的支持,作为实体特定装甲模型未找到时的回退,例如zombie_inner_armor.jem
和zombie_outer_armor.jem
- 修复了一些缺失的生物对
is_aggressive
变量的支持 - 将
height_above_ground
变量更改为检测具有可站立顶部表面的块,而不仅仅是实心块 - 修复了一个导致某些块实体模型纹理覆盖在第一人称视图中出现在其虹膜着色器阴影通道位置的错误
- 添加了一个优化选项,该选项将在虹膜阴影通道期间跳过重新计算实体模型动画,默认开启,并且应该始终保持开启,仅在未来虹膜 API 更改或虹膜端口出现奇怪行为的情况下才是一个选项。
- 修复了三叉戟模型部分在 OptiFine 映射中意外声明额外部分的问题,这可能导致原版三叉戟部分在许多自定义三叉戟模型中重新出现
[EMF] Entity Model Features 2.1
on 2024 Dec 01无
[EMF] Entity Model Features 2.0.2
on 2024 Dec 012.0.2
- 修复了 2.0.1 中第一人称手设置未正确重置的问题
- 添加了
is_swinging_right_arm
和is_swinging_left_arm
布尔变量, 用于区分双足模型中的右臂和左臂摆动,如果没有手臂在摆动,则两者都应为 false,如果swing_progress > 0
,则其中一个应为 true。 - 添加了对可选
player_cape.jem
模型文件的支持,用于更好地为玩家披风进行动画处理player_cape.jem
仅包含一个cloak
部分,其位置与常规player.jem
中的完全相同, 如果存在此模型,它将以一种特殊方式渲染,不会将原版动画应用于披风。 允许更轻松的自定义动画 (注意,此 jem 文件不能通过 EMF 配置导出,但导出的player.jem
模型将完美适用于它,从 v2.0.2 开始)
在渲染和自定义动画之前,EMF 应用于player_cape.jem
的唯一变换是:
- 围绕
y
轴将披风旋转 180 度。(与原版匹配) - 将披风向后平移 2 像素。(与原版匹配)
- 如果玩家穿着胸甲,则将披风再向后平移 1 像素并向上平移。(与原版匹配)
不会对披风应用其他旋转或平移,允许完全自定义动画。
如果player_cape.jem
不存在,常规player.jem
中的cloak
部分将渲染,但不会受益于 EMF 取消其原版动画
[EMF] Entity Model Features 2.0.2
on 2024 Dec 012.0.2
- 修复了 2.0.1 中第一人称手部设置未正确重置的问题
- 添加了
is_swinging_right_arm
和is_swinging_left_arm
布尔变量, 用于区分双足模型中的右臂和左臂摆动,如果没有手臂在摆动,则两者都应为 false,如果swing_progress > 0
,则其中一个应为 true。 - 添加了对可选的
player_cape.jem
模型文件的支持,用于更好地为玩家披风进行动画处理player_cape.jem
仅包含一个cloak
部分,其位置与常规player.jem
中的完全相同, 如果存在此模型,它将以一种特殊方式渲染,不会将香草动画应用于披风。 允许更轻松的自定义动画 (注意,此 jem 文件不能通过 EMF 配置导出,但导出的player.jem
模型将完美适用于它,从 v2.0.2 开始)
在渲染和自定义动画之前,EMF 对player_cape.jem
应用的唯一变换是:
- 围绕
y
轴将披风旋转 180 度。(与香草匹配) - 将披风向后平移 2 个像素。(与香草匹配)
- 如果玩家穿着胸甲,则将披风再向后平移 1 个像素并向上平移。(与香草匹配)
不会对披风应用其他旋转或平移,允许完全自定义动画。
常规player.jem
内部的cloak
部分将在player_cape.jem
不存在时渲染,但不会受益于其香草动画被 EMF 取消
[EMF] Entity Model Features 2.0.1
on 2024 Dec 01- 添加了
is_first_person_hand
变量,用于检测正在渲染的模型部分是否是第一人称玩家的手 - 在模型设置 GUI 中添加了
player settings
类别- 添加了一个设置,强制自定义玩家模型仅适用于你自己的玩家,而不适用于多人游戏中的其他玩家
- 添加了一个设置,强制阻止所有自定义手部动画在第一人称视图中播放
- 两者默认均为禁用状态
- 修复了
is_sneaking
变量无法正常工作的问题,现在应该与所有具有潜行姿势的模型对齐 - 在动画文档中添加了缺失的变量
- 修复了块实体和其他一些边缘情况,模型中的纹理覆盖完全不渲染的问题
[EMF] Entity Model Features 2.0.1
on 2024 Dec 01- 添加了
is_first_person_hand
变量,用于检测正在渲染的模型部分是否是第一人称玩家的手 - 在模型设置 GUI 中添加了
player settings
类别- 添加了一个设置,强制自定义玩家模型仅应用于你自己的玩家,而不是多人游戏中的其他玩家
- 添加了一个设置,强制阻止所有自定义手部动画在第一人称视图中播放
- 两者默认均为禁用状态
- 修复了
is_sneaking
变量无法正常工作的问题,现在应该与所有具有潜行姿势的模型一致 - 向动画文档中添加了缺失的变量
- 修复了块实体和其他一些边缘情况,模型中的纹理覆盖不会完全渲染
[EMF] Entity Model Features 2.0
on 2024 Dec 01-
纹理覆盖现在在未找到纹理时提供“缺失纹理”纹理,而不是不应用
-
修复了某些玩家动画资源包下的第一人称手抖动问题
-
添加了
ifb() randomb() catch()
动画函数ifb()
是if()
的布尔返回版本randomb()
是random()
的布尔返回版本catch(x, c, id)
是一个新的调试函数,它将始终返回x
,除非发生错误,在这种情况下它将返回c
。id
是可选的,它将使函数将c
返回的原因打印到带有此id
的日志中,以标识打印输出
-
添加了
is_jumping
is_swimming
is_gliding
is_right_handed
动画变量 -
添加了
modelRule modelSuffix var varb global_var global_varb
随机属性 -
移除了实体变量的限制,使其仅可从声明模型访问*(OptiFine 对等)* (wolf_collar.jem 现在可以正确访问同一狼上由 wolf.jem 设置的变量)
-
在 gui 的模型列表中添加了模型显示,以便在导出其.jem 文件之前查看模型
-
添加了附件点
-
添加了箭头和光谱箭头模型支持
-
添加了
OptiFine 1.20.4_HD_U_I8_pre3
中列出的新模型部件 -
添加了变量
distance
is_blocking
is_crawling
height_above_ground
fluid_depth
fluid_depth_down
fluid_depth_up
-
添加了全局变量,它们以“global_var.<name>”(浮点数)或“global_varb.<name>”(布尔值)的格式指定,它们由所有实体和方块实体共享,并允许进行更多技术方面的操作,如计数实体
-
改进了规则索引,现在在未满足任何规则时正确应用 0
-
修复了 v1.3 中返回的
cannot inherit from final class
forge 崩溃 -
将变体属性移动到 ETF 中
-
修复了崩溃
.jem 加载失败 java.lang.NullPointerException: 由于“textureSize”为 null,无法读取数组长度
-
在缺少的地方将模型文件名添加到崩溃消息中
-
在 emf 模型导出中添加了
sizeAdd
-
emf 模型导出现在对每个具有已知 OptiFine 部件名称的模型进行 2 次导出日志传递,一次传递带有 OptiFine 部件名称,一次传递不带有 OptiFine 部件名称。不带的那次可能会显示一些额外的部件,这些部件未被 OptiFine 使用,或者是由模组添加的
-
EMF 模型部件框现在可以额外声明
sizeAddX sizeAddY sizeAddZ
,与仅在 OptiFine 中使用的sizeAdd
不同,用于每个轴的模型膨胀。sizeAdd
仍将像以前一样工作,但如果存在其他尺寸,则将被覆盖。 -
为
breeze
breeze_eyes
breeze_wind
wind_charge
添加了 OptiFine 部件名称定义 -
修复了在 1.3 中“!(arms.visible)”有效但“!arms.visible”无效的情况
-
模组模型的目录格式已从
assets/minecraft/optifine/cem/modded/<namespace>/<modelname>.jem
更改为assets/<namespace>/optifine/cem/<modelname>.jem
- 带有/modded/文件夹的旧目录目前仍受支持,但已被视为已弃用
- 此更改使事情与模组命名空间更加一致
emf/cem/
目录在这些命名空间中也是有效的,并且可以将<modelname>.jem
文件放在同名的文件夹中,例如cem/<modelname>/<modelname>.jem
-
为动画距离 LOD 设置添加了一个设置,现在考虑实体的大小以减少对较大实体的影响
-
修复了直接反转方法时的崩溃,例如
!between(....)
-
当应用于模型部件或变量时,失败的动画表达式现在将解析为
0
(OptiFine 对等) -
支持 ETF 的新配置屏幕构建器
- 添加了一个类别“Animation math details”,其中列出并解释了注册到动画数学系统的所有函数和变量
- 添加了一个类别“All models”,允许针对每个.jem 文件应用某些设置,并选择性地禁用某些模型的加载
- 将一些设置(主要是距离 LOD 的设置)移动到新的类别“performance settings”中
- 在“per entity settings”类别中添加了设置,以允许仅对那些实体应用某些设置
[EMF] Entity Model Features 2.0
on 2024 Dec 01-
纹理覆盖现在在未找到纹理时提供
missing texture
纹理,而不是不应用 -
修复了某些玩家动画资源包的第一人称手抖动问题
-
添加了
ifb() randomb() catch()
动画函数ifb()
是if()
的布尔返回版本randomb()
是random()
的布尔返回版本catch(x, c, id)
是一个新的调试函数,它将始终返回x
,除非出现错误,在这种情况下它将返回c
。id
是可选的,它将使函数将c
返回的原因打印到带有此id
的日志中,以识别打印输出
-
添加了
is_jumping
is_swimming
is_gliding
is_right_handed
动画变量 -
添加了
modelRule modelSuffix var varb global_var global_varb
随机属性 -
移除了实体变量的限制,使其仅可从声明模型访问*(OptiFine 兼容性)**(wolf_collar.jem 现在可以正确访问同一狼上由 wolf.jem 设置的变量)*
-
在 gui 中的模型列表中添加了模型显示,以便在导出其.jem 文件之前查看模型
-
添加了附件点
-
添加了箭头和 spectral_arrow 模型支持
-
添加了在
OptiFine 1.20.4_HD_U_I8_pre3
中列出的新模型部件 -
添加了变量
distance
is_blocking
is_crawling
height_above_ground
fluid_depth
fluid_depth_down
fluid_depth_up
-
添加了全局变量,它们以"global_var.<name>"(浮点数)或"global_varb.<name>"(布尔值)的格式指定,它们由所有实体和方块实体共享,并允许更多技术相关的事情,如计数实体
-
改进了 rule_index,现在在未满足任何规则时正确应用 0
-
修复了 v1.3 中返回的
cannot inherit from final class
forge 崩溃 -
将变体属性移动到 ETF 中
-
修复了崩溃
.jem 加载失败 java.lang.NullPointerException: 由于"textureSize"为 null,无法读取数组长度
-
在缺少模型文件名的情况下,在崩溃消息中添加了模型文件名
-
在 emf 模型导出中添加了
sizeAdd
-
emf 模型导出现在对每个具有已知 OptiFine 部件名称的模型进行 2 次导出日志传递,一次传递带有 OptiFine 部件名称,一次传递不带有 OptiFine 部件名称。不带的那次可能会揭示一些额外的部件,这些部件未被 OptiFine 使用,或者已被 mod 添加
-
EMF 模型部件盒现在可以额外声明
sizeAddX sizeAddY sizeAddZ
,而不是仅针对 OptiFine 使用sizeAdd
进行每个轴的模型膨胀。sizeAdd
仍然将像以前一样工作,尽管如果存在其他值,它将被覆盖。 -
为
breeze
breeze_eyes
breeze_wind
wind_charge
添加了 OptiFine 部件名称定义 -
修复了在 1.3 中
!(arms.visible)
有效但!arms.visible
无效的情况 -
已修改 modded 模型的目录格式,从
assets/minecraft/optifine/cem/modded/<namespace>/<modelname>.jem
更改为assets/<namespace>/optifine/cem/<modelname>.jem
- 带有/modded/文件夹的旧目录目前仍受支持,但已被视为已弃用
- 此更改使事情与 modded 命名空间更加一致
emf/cem/
目录在这些命名空间中也是有效的,并且能够将<modelname>.jem
文件放在同名的文件夹中,例如cem/<modelname>/<modelname>.jem
-
为动画距离 LOD 设置添加了一个设置,现在考虑实体的大小以较少影响较大的实体
-
修复了直接反转方法时的崩溃,例如
!between(....)
-
应用于模型部件或变量的失败动画表达式现在将解析为
0
(OptiFine 兼容性) -
支持 ETF 的新配置屏幕生成器
- 添加了一个类别
Animation math details
,其中列出并解释了注册到动画数学系统的所有函数和变量 - 添加了一个类别
All models
,允许为每个.jem 文件应用某些设置,并选择性地禁用某些模型的加载 - 将一些设置,主要是距离 LOD 的设置,移动到新的类别
performance settings
中 - 在
per entity settings
类别中添加了设置,以允许仅将某些设置应用于那些实体
- 添加了一个类别
[EMF] Entity Model Features 1.3
on 2024 Dec 01- 添加了
EMFAnimationApi
,它允许其他模组向 EMF 注册自己的自定义动画变量和函数。- 可以通过
FloatSupplier
为简单数字变量向EMFAnimationApi
添加变量。- 通过
BooleanSupplier
为简单布尔变量添加变量。 - 如果你的变量需要更复杂的逻辑,例如读取复杂的变量名或在不同上下文中给出不同的结果,可以通过自定义变量工厂添加变量。
- 通过
- 可以通过
Function<Float, Float>
为具有 1 个参数的简单函数向EMFAnimationApi
添加函数。- 通过
BiFunction<Float, Float, Float>
为具有 2 个参数的简单函数添加函数。 - 通过
TriFunction<Float, Float, Float, Float>
为具有 3 个参数的简单函数添加函数。 - 通过
Function<List<Float>, Float>
为具有通过List<Float>
提供的可变数量参数的函数添加函数。 - 如果你的函数需要更复杂的逻辑,例如将参数字符串读取为除浮点数之外的值,可以通过自定义函数工厂添加函数。
- 通过
- 可以通过
- 将
未知模型打印
选项更改为模型导出
,并添加了将所有模型信息导出到.jem 文件或日志的选项,而不仅仅是未知/已修改的模型。- 模型现在以正确的枢轴、盒子和 UV 导出为
Blockbench
格式。 - 模型现在导出到
.minecraft/emf/export/
。
- 模型现在以正确的枢轴、盒子和 UV 导出为
- 实现了
is_on_head
、is_in_hand
和is_in_item_frame
,它们之前没有任何作用。 - 修复了一个
"newstate" is null
崩溃。 - 添加了
Animation LOD 距离
设置,允许你设置 EMF 开始跳过动画帧以节省性能的距离。 - 添加了
在低 fps 时保留 LOD
设置,当游戏运行在 60 fps 以下时,它将按比例减少上述 LOD 设置的影响,因为在较低的 fps 下跳过的帧可能会更明显。 - 重新设计了配置屏幕,在适当的地方使用滑块。
- 将
wolf_armor
添加到 OptiFine 名称映射中。 - 无效的纹理覆盖将不再导致模型无法加载,而是记录错误并使用原始纹理。
- EMF 日志消息现在以更短的
[EMF]
为前缀。 - 暂时禁用了三叉戟的纹理覆盖,因为它们存在问题且难以排查。
- 添加了调试渲染选项
纹理上的线框
,它同时渲染模型的线框和纹理。 - 添加了调试渲染选项
纹理上的闪烁线框
,它同时渲染模型的线框和纹理,但线框会淡入淡出。 - EMF 现在可以正确读取 OptiFine 设置的各种相对路径的所有纹理覆盖,例如
./
、~/
等。 - 添加了一个配置设置(默认启用),允许 EMF 修改
增强块实体(EBE)
模组的配置,以便在加载自定义 EMF 模型的块实体时禁用它。 - 修复了纹理覆盖与特征渲染器配合异常的问题(修复了 Ewan 的带有村民的实体健康条 cem 模型)。
- 将
left_ear
和right_ear
添加到head_piglin.jem
中,这似乎是正确的,但在 OptiFine 的文档中缺失了:/ - 减少并重新措辞了一些会让用户担心的加载日志垃圾信息(例如,Fresh Animations 1.9 现在在加载时不再发送日志错误)。
- 添加了仅适用于 EMF 的弧度和度的旋转逻辑函数
wrapdeg() wraprad() degdiff() raddiff()
。wrap
函数将旋转值向下包裹到其最小的相同值,例如wrapdeg(370)
将返回10
,wrapdeg(350)
将返回-10
。diff
函数将返回两个旋转值之间的结果差异,考虑到旋转,例如degdiff(10, 350)
将返回-20
,degdiff(10, 370)
将返回0
。
- 添加了许多仅适用于 EMF 的插值动画函数。
catmullrom() quadbezier() cubicbezier() hermite() easeinoutexpo() easeinexpo() easeoutexpo() easeinoutcirc() easeincirc() easeoutcirc() easeinoutelastic() easeinelastic() easeoutelastic() easeinoutback() easeinback() easeoutback() easeinoutbounce() easeinbounce() easeoutbounce() easeinquad() easeoutquad() easeinoutquad() easeincubic() easeoutcubic() easeinoutcubic() easeinquart() easeoutquart() easeinoutquart() easeinquint() easeoutquint() easeinoutquint() easeinsine() easeoutsine() easeinoutsine()
。- hermite 和 catmullrom 有 5 个参数,bezier 有 4 个参数,其余的有 3 个参数,并且都以与
lerp()
相同的方式使用,其中增量值是第一个参数。 - 这是一个了解这些函数大部分外观的好网站 https://easings.net/。
- 添加了
e
变量。 - 修复了某个 mixin 导致崩溃的问题。
- EMF 现在支持修改使用原始块实体模型的已修改块实体模型,与原始模型分开。
- (例如,
lootr
模组的箱子现在尝试读取modded/lootr/special_loot_chest.jem
,而不是与chest.jem
冲突)。 - 启用
打印未知模型
设置将在日志中打印这些示例。
- (例如,
- 完全重写了动画变量和函数的创建,这应该减少内存使用,并允许其他模组添加自己的变量和函数。
- 重新措辞了一些翻译。
[EMF] Entity Model Features 1.3
on 2024 Dec 01- 添加了
EMFAnimationApi
,它允许其他模组向 EMF 注册自己的自定义动画变量和函数。- 可以通过
FloatSupplier
为简单数字变量向EMFAnimationApi
添加变量。- 通过
BooleanSupplier
为简单布尔变量添加变量。 - 如果你的变量需要更复杂的逻辑,例如读取复杂的变量名或在不同上下文中给出不同的结果,可以通过自定义变量工厂添加变量。
- 通过
- 可以通过以下方式向
EMFAnimationApi
添加函数:- 通过
Function<Float, Float>
为具有 1 个参数的简单函数添加函数。 - 通过
BiFunction<Float, Float, Float>
为具有 2 个参数的简单函数添加函数。 - 通过
TriFunction<Float, Float, Float, Float>
为具有 3 个参数的简单函数添加函数。 - 通过
Function<List<Float>, Float>
为具有可变数量参数的函数添加函数,这些参数通过List<Float>
提供。 - 如果你的函数需要更复杂的逻辑,例如将参数字符串读取为除浮点数之外的值,可以通过自定义函数工厂添加函数。
- 通过
- 可以通过
- 将
未知模型打印
选项更改为模型导出
,并添加了将所有模型信息导出到.jem 文件或日志的选项,不仅仅是未知/修改过的模型。- 模型现在以正确的枢轴、盒子和 UV 导出为
Blockbench
准备好的格式。 - 模型现在导出到
.minecraft/emf/export/
。
- 模型现在以正确的枢轴、盒子和 UV 导出为
- 实现了
is_on_head
、is_in_hand
和is_in_item_frame
,它们之前没有任何作用。 - 修复了一个
"newstate" is null
崩溃。 - 添加了
Animation LOD 距离
设置,允许你设置 EMF 开始跳过动画帧以节省性能的距离。 - 添加了
在低 fps 时保留 LOD
设置,当游戏运行在 60 fps 以下时,该设置将成比例地减少上述 LOD 设置的影响,因为在较低的 fps 下跳过的帧可能会更明显。 - 重新设计了配置屏幕,在适当的地方使用滑块。
- 将
wolf_armor
添加到 OptiFine 名称映射中。 - 无效的纹理覆盖将不再导致模型无法加载,而是记录错误并使用原版纹理。
- EMF 日志消息现在以更短的
[EMF]
为前缀。 - 暂时禁用带有三叉戟的纹理覆盖,因为它们有问题且难以排查。
- 添加了调试渲染选项
纹理上的线框
,它同时渲染模型的线框和纹理。 - 添加了调试渲染选项
纹理上闪烁的线框
,它同时渲染模型的线框和纹理,但线框会淡入淡出。 - EMF 现在可以正确读取 OptiFine 设置的各种相对路径的所有纹理覆盖,例如
./
、~/
等。 - 添加了一个配置设置(默认启用),允许 EMF 修改
增强块实体 (EBE)
模组的配置,以禁用为加载了自定义 EMF 模型的块实体启用该设置。 - 修复了纹理覆盖与特征渲染器配合时出现的奇怪行为(修复了 Ewan 的带有村民的实体健康条 cem 模型)。
- 将
left_ear
和right_ear
添加到head_piglin.jem
中,这似乎是正确的,但在 OptiFine 的文档中缺失了:/ - 减少并重新措辞了一些会让用户担心的加载日志垃圾信息(例如,Fresh Animations 1.9 现在在加载时不会发送任何日志错误)。
- 添加了仅用于 EMF 的弧度和度的旋转逻辑函数
wrapdeg() wraprad() degdiff() raddiff()
。wrap
函数将旋转值向下包装到其最小的相同值,例如wrapdeg(370)
将返回10
,wrapdeg(350)
将返回-10
。diff
函数将返回两个旋转值之间的结果差异,并考虑旋转,例如degdiff(10, 350)
将返回-20
,degdiff(10, 370)
将返回0
。
- 添加了许多仅用于 EMF 的插值动画函数。
catmullrom() quadbezier() cubicbezier() hermite() easeinoutexpo() easeinexpo() easeoutexpo() easeinoutcirc() easeincirc() easeoutcirc() easeinoutelastic() easeinelastic() easeoutelastic() easeinoutback() easeinback() easeoutback() easeinoutbounce() easeinbounce() easeoutbounce() easeinquad() easeoutquad() easeinoutquad() easeincubic() easeoutcubic() easeinoutcubic() easeinquart() easeoutquart() easeinoutquart() easeinquint() easeoutquint() easeinoutquint() easeinsine() easeoutsine() easeinoutsine()
。- hermite 和 catmullrom 有 5 个参数,bezier 有 4 个参数,其余的有 3 个参数,并且都以与
lerp()
相同的方式使用,其中增量值是第一个参数。 - 这是一个了解这些函数外观的好网站:https://easings.net/。
- 添加了
e
变量。 - 修复了某个混入导致的崩溃。
- EMF 现在支持修改使用原版块实体模型的修改过的块实体模型,与原版模型分开。
- (例如,
lootr
模组的箱子现在尝试读取modded/lootr/special_loot_chest.jem
,而不是与chest.jem
冲突)。 - 启用
打印未知模型
设置将在日志中打印这些示例。
- (例如,
- 完全重写了动画变量和函数的创建,这应该减少内存使用,并允许其他模组添加自己的变量和函数。
- 重新措辞了一些翻译。
[EMF] Entity Model Features 1.2.3
on 2024 Dec 011.2.3
- 添加了以下动画插值方法
easein
、easeout
、easeinout
、cubiceasein
、cubiceaseout
、cubiceaseinout
。它们的功能与lerp
相同,但提供了不同的插值行为 - 模型.jem 文件中的
shadow_size
现在应该适用 - 更健壮的狼项圈.jem 实现
- 修复了一个崩溃
layer is null
- 修复了由于完全不相关的 forge 模组缺少其依赖项而导致的
cannot inherit from final class
崩溃。 - 将新蝙蝠模型的
feet
部分添加到 optifine 名称映射中(如果 optifine 也不这样做,可能会还原) - 修复了一个问题,该问题阻止了
mob2.jem
在没有mob.jem
的情况下正确加载(修复了重新构想的船只纹理) - 自定义动画变量现在应该可以在不同部分之间正确寻址(OptiFine 对等)
- 允许 emf 动画多次声明相同的变量,以便在同一帧内多次更新它(OptiFine 对等)
- emf 更新为使用 etf 5.2
[EMF] Entity Model Features 1.2.3
on 2024 Dec 011.2.3
- 添加了以下动画插值方法
easein
、easeout
、easeinout
、cubiceasein
、cubiceaseout
、cubiceaseinout
。它们的功能与lerp
相同,但提供了不同的插值行为 - 模型.jem 文件中的
shadow_size
现在应该适用 - 更健壮的 wolf_collar.jem 实现
- 修复了一个崩溃
layer is null
- 修复了由完全不相关的 forge 模组缺失其依赖项导致的
cannot inherit from final class
崩溃。 - 将新蝙蝠模型的
feet
部分添加到 optifine 名称映射中(如果 optifine 也不这样做,可能会还原) - 修复了一个问题,该问题阻止了
mob2.jem
在没有mob.jem
的情况下正确加载(修复了 reimagined 的船纹理) - 自定义动画变量现在应该可以在不同部分之间正确寻址(OptiFine 对等)
- 允许 emf 动画多次声明相同的变量,以在同一帧内多次更新它(OptiFine 对等)
- emf 更新为使用 etf 5.2
[EMF] Entity Model Features 1.2.3
on 2024 Dec 011.2.3
- 添加了以下动画插值方法
easein
、easeout
、easeinout
、cubiceasein
、cubiceaseout
、cubiceaseinout
。它们的功能与lerp
相同,但提供了不同的插值行为 - 模型.jem 文件中的
shadow_size
现在应该适用 - 更健壮的 wolf_collar.jem 实现
- 修复了一个崩溃
layer is null
- 修复了由于完全不相关的 forge 模组缺少其依赖项而导致的
cannot inherit from final class
崩溃。 - 将新蝙蝠模型的
feet
部分添加到 optifine 名称映射中(如果 optifine 也不这样做,可能会回滚) - 修复了一个问题,该问题阻止了
mob2.jem
在没有mob.jem
的情况下正确加载(修复了重新想象的船只纹理) - 自定义动画变量现在应该在不同部分之间正确可寻址(OptiFine 对等)
- 允许 emf 动画多次声明相同的变量,以便在同一帧内多次更新它(OptiFine 对等)
- emf 更新为使用 etf 5.2
[EMF] Entity Model Features 1.2.1
on 2024 Dec 01现在与 ETF 5.1+ 一起工作并需要它,包括相同的稳定性修复
in()
动画方法现在允许 2 个或更多参数,而不是之前的 3 个或更多(OptiFine 兼容性)
[EMF] Entity Model Features 1.2.1
on 2024 Dec 01- 现在可与并需要 ETF 5.1+ 一起使用,包括相同的稳定性修复
in()
动画方法现在允许 2 个或更多参数,而不是之前的 3 个或更多 (OptiFine 同等功能)
[EMF] Entity Model Features 1.2.1
on 2024 Dec 01- 现在可与 ETF 5.1+ 配合使用并需要它,包括相同的稳定性修复
in()
动画方法现在允许 2 个或更多参数,而不是之前的 3 个或更多 (OptiFine 兼容性)
[EMF] Entity Model Features 1.2
on 2024 Dec 01-
添加了仅 EMF 的随机属性,以使模型变体在通常不需要 ETF 属性的情况下更易于处理。 例如,在 ETF 中不需要属性来检查猫变体,因为您已经直接使用了黑猫纹理。 属性名称为
variant
或variants
。 该属性允许使用正则表达式、模式或简单的变体名称列表。 如果属性以"print:"
开头,它将在游戏日志中打印为实体找到的变体,并像往常一样使用属性文本的其余部分。 此属性将适用于任何实现了VariantHolder<T>
类的修改实体,并将使用类型的字符串表示形式,例如猫的“black”,船的“oak”。 此属性还与以下块实体独特地配合使用: 标志(木材)、床(颜色)、鞘翅箱(颜色)、装饰罐(所有 4 种碎片面类型)。 对于所有其他常规和块实体,它将返回EntityType
或BlockEntityType
注册表 ID。这允许分离可能使用相同模型名称的不同实体类型,例如各种修改实体所做的那样。 -
添加了 NeoForge 1.20.2 支持,所有先前版本都不会有单独的 forge 和 neoforge jars。
-
修复了布尔反相方法
-
修复了大多数(如果不是全部)模型变体问题
-
更好的纹理覆盖代码
-
覆盖中的自发光纹理现在可以正确工作
-
为 ETF 重写进行了返工
-
在 EMF 设置中添加了模型变体率设置
-
修复了配置 GUI 屏幕变黑且不显示 mob 的问题
-
添加了一个调试打印设置,当右键单击实体时,它将在聊天和日志中打印调试信息
-
EMF 现在可以接受没有.properties 文件的模型变体,您甚至不需要声明“default”模型, 您只需创建 villager2.jem,变体 #1 将自动成为香草模型。
-
修复了持有实体(如玩家持有箱子)的问题,该问题会干扰为该实体渲染的其他模型,例如 Elytra
-
修复了其他几个小问题
-
还修复了纹理覆盖也影响村民服装层的问题
-
纹理覆盖现在使用基础模型的渲染层工厂*(修复了基础模型有纹理覆盖时的村民服装层和其他一些问题)*
-
确保纹理覆盖不会在实体多次重用模型时再次应用*(例如,村民服装重用基础村民模型)*
-
修复了 sodium 0.5.4 兼容性
[EMF] Entity Model Features 1.2
on 2024 Dec 01-
添加了仅 EMF 的随机属性,以使模型变体在通常不需要 ETF 属性的情况下更易于处理。 例如,在 ETF 中不需要属性来检查猫变体,因为您已经直接使用黑猫纹理。 属性名称为
variant
或variants
。 该属性允许使用正则表达式、模式或简单的变体名称列表。 如果属性以"print:"
开头,它将在游戏日志中打印为实体找到的变体,并将属性文本的其余部分用作常规内容。 此属性将适用于任何实现了 VariantHolder<T>类的修改实体,并将使用类型的字符串表示形式,例如“黑色”表示猫,“橡木”表示船。 此属性还与以下块实体独特地配合使用: 标志(木材)、床(颜色)、箱子(颜色)、装饰罐(所有 4 种碎片面类型)。 对于所有其他常规和块实体,它将返回 EntityType 或 BlockEntityType 注册表 ID。这允许分离可能使用相同模型名称的不同实体类型,例如各种修改实体所做的那样。 -
添加了 NeoForge 1.20.2 支持,所有先前版本都不会有单独的 forge 和 neoforge jar。
-
修复了布尔反转方法
-
修复了大多数(如果不是全部)模型变体问题
-
更好的纹理覆盖代码
-
覆盖中的自发光纹理现在可以正确工作
-
为 ETF 重写进行了返工
-
在 EMF 设置中添加了模型变体率设置
-
修复了配置 GUI 屏幕变黑且不显示怪物的问题
-
添加了一个调试打印设置,当实体被右键单击时,它将在聊天和日志中打印调试信息
-
EMF 现在可以接受没有.properties 文件的模型变体,您甚至不需要声明“默认”模型, 您可以只创建 villager2.jem,变体 #1 将自动成为香草模型。
-
修复了持有实体(如持有箱子的玩家)的问题,该问题会干扰该实体要渲染的其他模型,例如 Elytra
-
修复了其他几个小问题
-
修复了纹理覆盖也影响村民服装层的问题
-
纹理覆盖现在使用基础模型的渲染层工厂*(修复了基础模型有纹理覆盖时的村民服装层和其他一些问题)*
-
确保纹理覆盖不会在实体多次重用模型时再次应用*(例如,村民服装重用基础村民模型)*
-
修复了与 sodium 0.5.4 的兼容性
[EMF] Entity Model Features 1.1.0
on 2024 Dec 011.1.0
- 修复了使用错误值的
rule_index
变量 - 修复了
random()
方法在未使用参数时的中断问题 - 修复了带有模型 ID 的模组实体导致的
Non [a-z0-9/._-] character in path
崩溃问题,这些模型 ID 不会创建有效的标识符/资源位置 - 修复了只有在存在
wolf_collar.jem
时狼项圈模型才与基础模型分离的问题*(在原版中,狼与项圈渲染器共享它们的基础模型)* - 修复了
!
布尔值反转未应用于varb
变量布尔值的问题 - 添加了
keyframe()
和keyframeloop()
动画方法,以简化关键帧格式动画,格式为keyframe(k, a, b, c,...)
,其中k
是关键帧的线性进度(通常是一个计时器),所有其他值是各个关键帧的值。实际上,k = 0 将输出关键帧a
的值,k = 1 将输出关键帧b
的值,k = 1.5 将在b
和c
之间给出线性输出。实际上,k
是播放通过关键帧的计时器,每个关键帧值为整数,a
为 0。keyframeloop()
将从最后一帧回绕到帧a
,依此类推,随着k
超过最后一帧。而keyframe()
对于较高的k
值将仅显示最后一帧。即使k
为负数,也将将其视为正数。 - 修复了
print()
和printb()
方法仅在x
值逻辑上解析为常量时才打印一次的问题 - 现在需要
ETF 4.6.1
或更高版本 - 添加了
nan
变量,在运行时解析为Float.NaN
,主要用于调试目的,使用它应该会使任何数学函数/方程给出其失败结果。