[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,主要用于调试目的,使用它应该会使任何数学函数/方程给出其失败结果。
[EMF] Entity Model Features 1.1.0
on 2024 Dec 011.1.0
- 使用错误值修复了
rule_index变量 - 修复了在未使用参数时
random()方法中断的问题 - 修复了带有模型 ID 的模组实体导致的路径中出现非
[a-z0-9/._-]字符的崩溃问题,这些模型 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,主要用于调试目的,使用它应使任何数学函数/方程给出其失败结果。
[EMF] Entity Model Features 1.0.2
on 2024 Dec 01- 修复了块实体代码中的一个错误,该错误导致了不必要的延迟
[EMF] Entity Model Features 1.0.1
on 2024 Dec 01修复了资源重载在 1.19.2 和 1.19.3 上破坏自定义模型的问题
[EMF] Entity Model Features 1.0
on 2024 Dec 01是时候了,EMF 已经走了很长的路,在 9.5 个月的时间里,现在似乎与 OptiFine CEM 非常接近,因为它实际上不是 OptiFine,总会有一些小问题或差异,请继续在发现时报告这些问题。
然而,总体而言,EMF 似乎已经准备就绪。
一些需要注意的事情:EMF 1.0 实际上与最后一个测试版 0.2.13 和旧的私人 alpha 是不同的模组,几乎整个模型创建代码都不同,并且几乎所有使用旧测试版报告的问题在未来都将不相关。(特别是如果是关于损坏的模型)
话虽如此,如果问题是我预期在开发过程中会被动解决的问题,我已经忽略了许多 GitHub 问题,在接下来的几个月里,我将仔细检查这些问题,以剔除任何现在不相关的问题。
(与上一个测试版的更改)
- 模型创建已完全重写,OptiFine CEM 在 EMF 中似乎处于平等地位,并且似乎对几乎每个模型都完全有效
- 动画代码和模型变体检查的大规模返工、重新实现和内部化。防止所有动画不同步的情况,并为所有修改/替换的实体/模型和块实体修复动画。
- 各种模型变体的稳定性修复,包括纹理支持。
- 块实体完全支持
- 物理模组兼容性现在可以选择尝试渲染原版模型部分或自定义 EMF 模型部分
- 不应再导致“未找到部分”崩溃或模型故障
- 减少了模型加载错误的日志消息长度
- 修复了 emf/和 mobName/mobName 目录问题
- 动画现在支持模型部分名称层次结构,就像 OptiFine 一样。即
left_arm:hand:finger1可以将left_arm模型组中的finger1部分与right_arm部分分开 - 在“防止模型覆盖”设置中添加了警告,提示用户如果导致崩溃则禁用设置,或警告用户其他模组正在修改模型
- 为所有以前缺失的实体添加了 OptiFine 名称格式支持,包括嗅探器和骆驼以及块实体
- 在动画中添加了对渲染变量的支持
e.g. render.shadow_size - 将动画模型变量支持扩展到块实体,似乎与 OptiFine 的输出匹配。
- 块实体动画支持变量“var.???”
- 为自定义部分添加了各种渲染模式,
NORMAL, GREEN FLASHING, WIREFRAME, OFF,不会影响原版部分。 - 我可能忘记了很多其他的。
- 删除了现在不必要的配置设置
- 现在仅在设置更改时才触发资源重新加载离开配置屏幕
- 在配置屏幕中添加了随机实体显示
- 各种小的优化和代码清理
- 由于之前的测试版没有 OptiFine 对等性而导致的无数修复

![[EMF]实体模型特性 - Entity Model Features](https://cdn.bbsmc.net/bbsmc/data/VaVrZ5zG/images/6a28d3a7f7178334c22d2c7878b3c816128f39d8_350.webp)
![[EMF]实体模型特性 - Entity Model Features](https://cdn.bbsmc.net/bbsmc/data/VaVrZ5zG/d79bad19d862aa4923ef3b6c1876c9f867a517fc_96.webp)
