NeoForge 1.21.5
on 2025 Apr 25壁虎库v5.0
新内容
- 新增了
手中物品地理层
- 新增了
逐骨渲染
- 新增了
数据票据#是否为左手
- 新增了
数据票据#是否蹲下
- 新增了
地理渲染#为渲染调整位置
- 新增了
定向投射物渲染器
- 新增了
纹理层地理层
- 新增了
自定义骨骼纹理地理层
内部改动
- 在加载不带后缀的动画或模型文件时,移除了一些不必要的警告
- 使用旧格式修复了
默认地理模型
中的Java文档 - 将缩放属性处理移到了
地理实体渲染器
的为渲染缩放模型
中,并移动了睡眠姿势的平移以更好地适应缩放 - 将
为渲染缩放模型
从预渲染
中移出,使其成为独立调用 - 优化了
渲染工具#获取纹理尺寸
,并使其能考虑加载后的修改 - 优化了
烘焙地理模型#获取骨骼
API改动
- 移除了
地理渲染器#为骨骼应用渲染层
。现在逐骨渲染在#预应用渲染层
中添加。 - 新增了
地理渲染层#添加逐骨渲染
- 更改了
物品护甲地理层
的工作方式,使其更高效,并支持鞘翅(尽管目前还不是百分之百正确) - 更改了
方块与物品地理层
的工作方式,使其更高效且更简洁 - 将
物品护甲地理层#为渲染准备模型部件
更改为为渲染准备人形模型
- 将
壁虎库客户端#获取物品的护甲模型
改为返回一个人形模型
而非基础模型
,因为非人形模型从未被使用过 - 在
地理渲染器#最终渲染
中添加了压缩光
、压缩覆盖
和渲染颜色
- 从
地理实体渲染器#计算Y轴旋转
中移除了final
关键字 - 移除了
骨骼过滤地理层
和快速骨骼过滤地理层
漏洞修复
- 修复了
壁虎库动画纹理
在加载纹理失败时崩溃的问题 - 修复了逐骨渲染任务干扰查询值的问题
- 修复了渲染层中的姿态栈操作干扰骨骼位置获取器的问题
- 修复了
地理物品渲染器
和地理对象渲染器
在缩放时定位不正确的问题 - 修复了
地理替换实体渲染器
不传播姿态栈操作的问题 - 修复了
物品护甲地理层
与使用相同数据票据的其他层冲突的问题
Forge 1.21.5
on 2025 Apr 25壁虎库v5.0
新特性
- 新增了
ItemInHandGeoLayer
(手持物品地理层) - 新增了
PerBoneRender
(逐骨骼渲染) - 新增了
DataTickets#IS_LEFT_HANDED
(数据票据#是否为左手) - 新增了
DataTickets#IS_CROUCHING
(数据票据#是否为蹲下状态) - 新增了
GeoRender#adjustPositionForRender
(地理渲染#为渲染调整位置) - 新增了
DirectionalProjectileRenderer
(定向投射物渲染器) - 新增了
TextureLayerGeoLayer
(纹理层地理层) - 新增了
CustomBoneTextureGeoLayer
(自定义骨骼纹理地理层)
内部改动
- 在加载不带后缀的动画或模型文件时,移除了一些不必要的警告
- 使用旧格式修复了
DefaultedGeoModel
中的Java文档 - 将
GeoEntityRenderer
的缩放属性处理移到了scaleModelForRender
中,并将睡眠姿势的平移进行了调整以更好地适应缩放 - 将
scaleModelForRender
从preRender
中移出,使其成为独立的调用 - 优化了
RenderUtil#getTextureDimensions
,并使其能够考虑加载后的修改 - 优化了
BakedGeoModel#getBone
API改动
- 移除了
GeoRenderer#applyRenderLayersForBone
。现在逐骨骼渲染在#preApplyRenderLayers
中添加。 - 新增了
GeoRenderLayer#addPerBoneRender
(地理渲染层#添加逐骨骼渲染) - 更改了
ItemArmorGeoLayer
的工作方式,使其更高效,并支持鞘翅(尽管目前还不是百分之百正确) - 更改了
BlockAndItemGeoLayer
的工作方式,使其更高效且更简洁 - 将
ItemArmorGeoLayer#prepModelPartForRender
更改为prepHumanoidModelForRender
(为人形模型渲染准备模型部件) - 将
GeckoLibClient#getArmorModelForItem
更改为返回一个HumanoidModel
(人形模型)而非基础的Model
(模型),因为非人形模型从未被使用过。 - 在
GeoRenderer#renderFinal
中添加了packedLight
(压缩光)、packedOverlay
(压缩覆盖层)和renderColor
(渲染颜色) - 从
GeoEntityRenderer#calculateYRot
中移除了final
- 移除了
BoneFilterGeoLayer
和FastBoneFilterGeoLayer
漏洞修复
- 修复了
GeckoLibAnimatedTexture
在加载纹理失败时崩溃的问题 - 修复了逐骨骼渲染任务干扰查询值的问题
- 修复了渲染层中的姿势栈操作干扰骨骼位置获取器的问题
- 修复了
GeoItemRenderer
和GeoObjectRenderer
在缩放时定位不正确的问题 - 修复了
GeoReplacedEntityRenderer
不传播姿势栈操作的问题 - 修复了
ItemArmorGeoLayer
与使用相同数据票据的其他层发生冲突的问题
Fabric 1.21.5
on 2025 Apr 25壁虎库v5.0
新特性
- 新增了
手中物品地理层
- 新增了
逐骨骼渲染
- 新增了
数据票据#是否为左手
- 新增了
数据票据#是否蹲下
- 新增了
地理渲染#调整渲染位置
- 新增了
定向投射物渲染器
- 新增了
纹理层地理层
- 新增了
自定义骨骼纹理地理层
内部改动
- 在加载不带后缀的动画或模型文件时,移除了一些不必要的警告
- 使用旧格式修复了
默认地理模型
中的Java文档 - 将
地理实体渲染器
的缩放属性处理移至为渲染缩放模型
中,并移动了睡眠姿势的平移以更好地适应缩放 - 将
为渲染缩放模型
从预渲染
中移出,使其成为独立调用 - 优化了
渲染工具#获取纹理尺寸
,使其能够考虑加载后的修改 - 优化了
烘焙地理模型#获取骨骼
API改动
- 移除了
地理渲染器#为骨骼应用渲染层
。现在在#预应用渲染层
中添加逐骨骼渲染。 - 新增了
地理渲染层#添加逐骨骼渲染
- 更改了
物品护甲地理层
的工作方式,使其更高效,并支持鞘翅(尽管目前还不是百分百正确) - 更改了
方块与物品地理层
的工作方式,使其更高效且更简洁 - 将
物品护甲地理层#为渲染准备模型部件
更改为为渲染准备人形模型
- 将
壁虎库客户端#获取物品的护甲模型
改为返回一个人形模型
而非基础模型
,因为非人形模型从未被使用过 - 在
地理渲染器#最终渲染
中添加了压缩光
、压缩覆盖
和渲染颜色
- 从
地理实体渲染器#计算Y轴旋转
中移除了final
关键字 - 移除了
骨骼过滤地理层
和快速骨骼过滤地理层
漏洞修复
- 修复了
壁虎库动画纹理
在加载纹理失败时崩溃的问题 - 修复了逐骨骼渲染任务干扰查询值的问题
- 修复了渲染层中的姿态栈操作干扰骨骼位置获取器的问题
- 修复了
地理物品渲染器
和地理对象渲染器
在缩放时定位不正确的问题 - 修复了
地理替换实体渲染器
不传播姿态栈操作的问题 - 修复了
物品护甲地理层
与使用相同数据票据的其他层发生冲突的问题
NeoForge 1.21.5
on 2025 Apr 25壁虎库v5.0-alpha2
注意事项
- 由于Mojang已使之前的动态渲染器变得不实用,仍在研究针对逐骨骼渲染处理的替代解决方案。
漏洞修复
- 修复了地理对象渲染器未存储压缩光的问题(#712)
- 修复了地理实体渲染器不允许通用可扩展渲染状态的问题
- 修复了
AutoGlowingGeoLayer
中一些不正确的Java文档注释 - 修复了地理装甲渲染器未考虑发光或隐形数据标签的问题
- 重新加载纹理会导致发光和动画纹理出现奇怪的问题
内部改动
- AutoGlowingGeoLayer不再移除基础纹理的部分区域,从而允许选择性动态发射率
- AutoGlowingGeoLayer不再禁用光影兼容性
- 动画纹理和发光遮罩不再相互依赖。你可以在动画纹理上使用非动画的发光遮罩等等。
新增内容
- 添加了
RenderUtil#getEmissiveResource
辅助方法 - AutoGlowingGeoLayer现在有一个
shouldRespectWorldLighting
方法,允许你在绝对发射率和与世界光照协同遮光的发射率之间进行选择
移除内容
- 壁虎库发光纹理不再支持创建mcmeta。请改用发光遮罩图像(反正这样更容易)
Forge 1.21.5
on 2025 Apr 25壁虎库(GeckoLib)v5.0-alpha2
注意事项
- 由于Mojang使得之前的动态渲染器不再实用,仍在研究针对逐骨骼渲染处理的替代解决方案。
漏洞修复
- 修复了地理对象渲染器(GeoObjectRenderer)未存储压缩光的问题(#712)
- 修复了地理实体渲染器(GeoEntityRenderer)不允许通用可扩展渲染状态的问题
- 修复了
AutoGlowingGeoLayer
中一些不正确的Java文档注释 - 修复了地理装甲渲染器(GeoArmorRenderer)未考虑发光或隐形数据标签的问题
- 重新加载纹理会导致发光和动画纹理出现奇怪的问题
内部改动
AutoGlowingGeoLayer
不再移除基础纹理的部分区域,允许进行选择性动态发射率设置AutoGlowingGeoLayer
不再禁用光影兼容性- 动画纹理和发光遮罩不再相互依赖。你可以在动画纹理上设置非动画的发光遮罩等等。
新增内容
- 添加了
RenderUtil#getEmissiveResource
辅助方法 AutoGlowingGeoLayer
现在有一个shouldRespectWorldLighting
方法,允许你在绝对发射率和与世界光照协同遮光的发射率之间进行选择
移除内容
- 壁虎库(GeckoLib)的发光纹理不再支持创建mcmeta文件。请改用发光遮罩图像(反正这样更容易)
Fabric 1.21.5
on 2025 Apr 25壁虎库v5.0-alpha2
注意事项
- 由于Mojang已经使得之前的动态渲染器不实用了,所以仍在研究针对每块骨骼渲染处理的替代解决方案。
漏洞修复
- 修复了GeoObjectRenderer不存储压缩光的问题(#712)
- 修复了GeoEntityRenderer不允许通用可扩展渲染状态的问题
- 修复了
AutoGlowingGeoLayer
中一些不正确的Java文档注释 - 修复了GeoArmorRenderer不考虑发光或隐形数据标签的问题
- 重新加载纹理会导致发光和动画纹理出现奇怪的问题
内部改动
- AutoGlowingGeoLayer不再移除基础纹理的部分区域,从而允许选择性的动态发射率
- AutoGlowingGeoLayer不再禁用光影兼容性
- 动画纹理和发光遮罩不再相互依赖。你可以在动画纹理上设置非动画的发光遮罩等等。
新增内容
- 添加了
RenderUtil#getEmissiveResource
辅助方法 - AutoGlowingGeoLayer现在有一个
shouldRespectWorldLighting
方法,允许你在绝对发射率和与世界光照协同遮荫的发射率之间进行选择
移除内容
- 壁虎库的发光纹理不再支持创建mcmeta文件。请改用发光遮罩图像(反正这样更容易)
NeoForge 1.21.5
on 2025 Apr 08壁虎库(GeckoLib)v5.0-alpha1
注意事项
- 自
alpha1
版本起,发光遮罩和动画纹理功能暂不可用。这一问题将很快得到解决哦 :) - 此外,由于Mojang使得之前的动态渲染器不再实用,我正在研究针对逐骨骼渲染处理的替代解决方案。
- 如果您使用到这些功能中的任何一项,请等到5.0正式版发布后再使用,谢谢。
常规变更
- 已更新至《我的世界》1.21.5版本
- 已将更新日志转换为Markdown格式
内部变更
- 重写了资源加载系统,以便在不影响输入输出(I/O)的情况下正确处理并行化的资源
- 让GeoArmorRenderer从HumanoidArmorLayer#setPartVisibility继承骨骼可见性,以便更好地与第三方模组协同工作
- 将boneResetTime的默认值设为5刻,并且当刻时间为0时自动完成重置。这可避免不可避免的部分刻骨骼重置情况
- 修复了在同步可动画物品上中键点击时,若使用触发动画或同步数据会导致冲突的问题(#681)
- 现在,使用动画进行完整旋转的骨骼在重置时不应再反向旋转,从而使旋转动画更加流畅
- 同步可动画物品之间不再相互阻碍堆叠
- 为动画数据添加了内存压缩功能。较大的模组包应能减少内存使用量
- 为molang中对角色变量(Actor Variables)的无效使用添加了一项安全检查
- 壁虎库(GeckoLib)实体渲染现在自动与NeoForge实体渲染状态(EntityRenderState)修饰符兼容
- 覆盖了原版对实体名称牌渲染的64格默认硬限制。现在您可以将其扩展至256格
- 修复了GeoBones的世界空间定位未考虑部分刻线性插值的问题
- 修复了非生物实体在渲染时未考虑其Y轴旋转的问题
- 修复了死亡旋转在部分刻上加倍的问题
- 修复了在
GeoObjectRenderer
中BufferSource未正确设置为非空的问题 - 修复了
GeoEntityRenderer
在重新渲染时重新应用其他PoseStack操作的问题 - 将大量渲染值创建工作移回原版,以便更好地与原版及其他模组兼容
- 移除了
AnimationProcessor
中多处多余的方法参数 - 将
AnimationController#process
重命名为AnimationController#startTick
- 修复了
DefaultAnimations#genericFlyController
在不移动时不停下来的问题 - 将动画状态(AnimationState)移至渲染之前,以便优化molang查询填充
- 修复了
AnimationController
的动画速度可能在每次渲染过程中多次重新计算,导致动画处理不一致的问题 - 将
Keyframes
重命名为KeyframeMarkers
- 壁虎库(GeckoLib)现在会预先确定在任何给定渲染帧中将使用哪些molang查询,并预先计算所有相关值并进行缓存。这使得复杂动画成为可能
- 将
AnimatableManager
及其所有派生类移至不同的包 - 将
AnimationController
、AnimationProcessor
、AnimationState
移至不同的包 - 将
AutoPlayingSoundKeyframeHandler
移至不同的包 - 移除了
AnimationPointQueue
- 将逐骨骼渲染层渲染移至其余渲染完成之后
- 更改了
DyeableGeoArmorRenderer
的工作方式,使其更加准确 - 修复了各个GeoRenderEvent类中的一些Javadoc错误
API变更
- 所有壁虎库(GeckoLib)资源现在都存放在/assets/geckolib/目录下
- 动画存放在
/assets/<模组ID>/geckolib/animations/
目录下 - 模型存放在
/assets/<模组ID>/geckolib/models/
目录下
- 动画存放在
- 所有GeoRenderers现在都基于GeoRenderStates运行,而不是传递可动画对象。Mojang已经明确表示这是我们必须要走的方向 :(
- 移除了
GeoRenderer#getAnimatable
- 移除了GeoRenderer方法中的各种参数,默认将它们移至
GeoRenderState
- 移除了
GeoEntityRenderer#isShaking
- 移除了
AnimationState
现在是一个内部类,用于在处理过程中传递动画状态。用户现在应使用AnimationTest
。它们在功能上是相同的- GeoRenderers扩展现在接受第二种泛型类型;即渲染状态类型(以及GeoRenderState)
- GeoModel的模型/动画引用不再需要文件路径前缀或后缀(也就是说,您在返回的模型资源中无需包含
geo/
或.geo.json
) DataTicket
现在需要通过工厂方法创建,以确保身份一致性SerializableDataTicket
不再需要注册,但在模组构建期间仍必须创建GeoRenderer
中的所有渲染方法在参数中将PoseStack和渲染状态(之前是可动画对象)的位置进行了互换- Molang变量现在都是针对当前渲染过程的
AnimationState
进行操作的函数 AnimationController
不再需要传递可动画对象给它- 在
AutoGlowingGeoLayer
中拆分了纹理获取和使用方式,以便模组可以根据需要覆盖纹理 - 所有
DefaultAnimations
助手现在为了一致性和清晰性,默认过渡时间为0刻 - 将格式版本(FormatVersion)转换为字符串,并将其转换为一个更灵活的系统
- 为同步单例可动画对象引入了基于身份的查找方式,有望消除类重复冲突
- 将
AnimationState#getData
标记为可空,以避免混淆 - 将
EasingType
中的easingType参数标记为可空,以避免混淆 - 清理了
EasingType
的Javadoc GeoReplacedEntityRenderer
现在在尝试将一个实体作为可动画对象插入时会明确报错,以防止内存泄漏- 使
GeoReplacedEntityRenderer
与GeoEntityRenderer
更加一致,以确保准确性 CustomInstructionKeyframeEvent
、SoundKeyframeEvent
和ParticleKeyframeEvent
都已整合到KeyFrameEvent
中CustomInstructionKeyframeHandler
、SoundKeyframeHandler
和ParticleKeyframeHandler
都已整合到KeyframeEventHandler
中- 将
KeyFrameEvent
转换为记录(record)类型 - 将
Calculation
转换为记录(record)类型 MolangQueries
再次与侧面无关- GeoRenderers的各个部分另外还提供了一个相关联的对象用于处理(物品堆、被替换的实体等)
- 将
prepLivingEntityRenderState
移至GeoEntityRenderer
中,以便在需要时可以被重写 - 移除了
EntityModelData
- 移除了
DeferredGeoRenderProvider
- 移除了
InternalUtil
- 移除了
FileLoader
- 移除了
Color
。它已完全被net.minecraft.util.ARGB
所取代 - 移除了各个
GeoModel
获取器中的GeoRenderer
参数,因为它已不再需要 - 重命名了
GeoArmorRenderer
中的骨骼变量,以防止与HumanoidArmorModel
的字段名冲突 - 重命名了
GeckoLibCache
为GeckoLibResources
- 重命名了
AnimatableManager#setData
为AnimatableManager#setAnimatableData
(及其相关的获取器) - 为重命名
AutoGlowingTexture#getEmissiveResource
为#getOrCreateEmissiveTexture
,以使其更清晰 - 将
GeoEntityRenderState
移至GeoRenderState
- GeckoLibUtil中的各种单例注册助手已移至新的
SyncedSingletonAnimatableCache
,相关方法的层级范围已缩小,以使其更清晰和安全 - 重命名了
GeoRenderLayer#renderForBone
为#createPerBoneRender
,现在要求您将操作作为一个可运行对象返回,以便稍后运行 - 移除了
DynamicGeoBlockRenderer
、DynamicGeoEntityRenderer
和DynamicGeoItemRenderer
。请使用渲染层来进行针对骨骼的特定处理。我将考虑为此创建一个辅助类或其他替代选项 - 改进了各个
GeoRenderEvent
的泛型类型,使其更有用
新内容
- 为
SingletonGeoAnimatable
添加了stopTriggeredAnimation
方法 - 添加了
triggerArmorAnim
方法,用于触发盔甲动画(#433) - 添加了
query.controller_speed
molang查询 - 添加了
query.limb_swing
molang查询 - 添加了
query.limb_swing_amount
molang查询 - 为基岩版风格的动画json添加了对卡特穆尔-罗姆(平滑)缓动的原生支持(感谢Zigy的前期工作)
- 动画纹理现在支持发光遮罩(#456)
- 在
GeoRenderer
中添加了#setBonesVisible
辅助方法,以便于使用 - 添加了
AnimationController#isTriggeredAnimation
方法,用于检查当前触发的动画 - 添加了
AnimationController#setAnimationState
方法,必要时可直接设置控制器的状态 - 为每种渲染器类型添加了
CompileRenderState
事件钩子
Forge 1.21.5
on 2025 Apr 08壁虎库v5.0-alpha1
注意事项
- 截至
alpha1
版本,发光遮罩和动画纹理尚无法正常使用。这一问题很快就会解决哦 :) - 此外,由于莫江(Mojang)使得之前的动态渲染器变得不实用了,我正在研究针对逐骨骼渲染处理的替代解决方案。
- 如果您使用了这些功能中的任何一项,请等到5.0正式版发布后再使用,谢谢。
常规变更
- 已更新至《我的世界》1.21.5版本
- 已将更新日志转换为Markdown格式
内部变更
- 重写了资源加载系统,以便在不影响输入输出(I/O)的情况下正确处理并行化的资源
- 让GeoArmorRenderer从HumanoidArmorLayer#setPartVisibility继承骨骼可见性,以便更好地与第三方模组协同工作
- 将默认的boneResetTime设置为5刻,并且当刻时间为0时自动完成重置。这可以防止不可避免的部分刻骨骼重置
- 修复了在同步可动画物品上中键点击时,若使用触发动画或同步数据会导致冲突的问题(#681)
- 现在使用动画进行完整旋转的骨骼在重置时不应再反向旋转,从而使旋转动画更加流畅
- 同步可动画物品之间不再相互阻碍堆叠
- 为动画数据添加了内存压缩。较大的模组包应能减少内存使用量
- 为在Molang中对角色变量的不当使用添加了一项安全检查
- 壁虎库实体渲染现在自动与新Forge(NeoForge)实体渲染状态修饰符兼容
- 覆盖了原版对实体名称牌渲染的64格默认硬限制。现在您可以将其扩展至256格
- 修复了GeoBones上的世界空间定位未考虑部分刻线性插值的问题
- 修复了非生物实体在渲染时未考虑其Y轴旋转的问题
- 修复了部分刻上死亡旋转加倍的问题
- 修复了在
GeoObjectRenderer
中BufferSource未正确设置为非空的问题 - 修复了
GeoEntityRenderer
在重新渲染时重新应用其他姿态栈(PoseStack)操作的问题 - 将大量渲染值创建工作移回原版,以便更好地与原版及其他模组兼容
- 移除了
AnimationProcessor
中许多多余的方法参数 - 将
AnimationController#process
重命名为AnimationController#startTick
- 修复了
DefaultAnimations#genericFlyController
在不移动时不停下来的问题 - 将动画状态移至渲染之前,以便优化Molang查询填充
- 修复了
AnimationController
的动画速度可能在每次渲染过程中多次重新计算,导致动画处理不一致的问题 - 将
Keyframes
重命名为KeyframeMarkers
- 壁虎库现在会预先确定在任何给定渲染帧中将使用哪些Molang查询,并预先计算所有相关值并进行缓存。这使得复杂动画成为可能
- 将
AnimatableManager
及其所有派生类移至不同的包 - 将
AnimationController
、AnimationProcessor
、AnimationState
移至不同的包 - 将
AutoPlayingSoundKeyframeHandler
移至不同的包 - 移除了
AnimationPointQueue
- 将逐骨骼渲染层渲染移至其余渲染完成之后
- 更改了
DyeableGeoArmorRenderer
的工作方式,使其更加准确 - 修复了各种GeoRenderEvent类中的一些Java文档错误
API变更
- 所有壁虎库资源现在都存放在/assets/geckolib/中
- 动画存放在
/assets/<模组ID>/geckolib/animations/
中 - 模型存放在
/assets/<模组ID>/geckolib/models/
中
- 动画存放在
- 所有GeoRenderers现在都基于GeoRenderStates运行,而不是传递可动画对象。莫江(Mojang)已经明确表示我们必须这样做了 :(
- 移除了
GeoRenderer#getAnimatable
- 移除了GeoRenderer方法中的各种参数,默认将它们移至
GeoRenderState
- 移除了
GeoEntityRenderer#isShaking
- 移除了
AnimationState
现在是一个内部类,用于在处理过程中携带动画状态。用户现在应该使用AnimationTest
。它们在功能上是相同的- GeoRenderers扩展现在接受第二种泛型类型;即渲染状态类型(以及GeoRenderState)
- GeoModel模型/动画引用不再需要文件路径前缀或后缀(也就是说,您在返回的模型资源中不需要包含
geo/
或.geo.json
) DataTicket
现在需要通过工厂方法创建,以确保标识一致性SerializableDataTicket
不再需要注册,但在模组构建期间仍必须创建GeoRenderer
中的所有渲染方法在参数中将姿态栈(PoseStack)和渲染状态(之前是可动画对象)的位置进行了互换- Molang变量现在都是针对当前渲染过程中的
AnimationState
进行操作的函数 AnimationController
不再需要传递可动画对象给它- 在
AutoGlowingGeoLayer
中拆分了纹理获取和使用方式,以便模组可以根据需要覆盖纹理 - 所有
DefaultAnimations
助手现在为了一致性和清晰性,默认将过渡时间设置为0刻 - 将格式版本转换为字符串,并将其转换为一个更灵活的系统
- 为同步单例可动画对象引入了基于标识的查找方式,有望消除类重复冲突
- 将
AnimationState#getData
标记为可空,以避免混淆 - 将
EasingType
中的easingType参数标记为可空,以避免混淆 - 清理了
EasingType
的Java文档 GeoReplacedEntityRenderer
现在在尝试将一个实体作为可动画对象插入时会明确报错,以防止内存泄漏- 使
GeoReplacedEntityRenderer
与GeoEntityRenderer
更加一致,以确保准确性 CustomInstructionKeyframeEvent
、SoundKeyframeEvent
、ParticleKeyframeEvent
都已合并到KeyFrameEvent
中CustomInstructionKeyframeHandler
、SoundKeyframeHandler
、ParticleKeyframeHandler
都已合并到KeyframeEventHandler
中- 将
KeyFrameEvent
转换为记录类型 - 将
Calculation
转换为记录类型 MolangQueries
再次与平台无关- GeoRenderers的各个部分另外还会提供一个相关联的对象用于处理(物品堆、被替换的实体等)
- 将
prepLivingEntityRenderState
移至GeoEntityRenderer
中,以便在需要时可以被重写 - 移除了
EntityModelData
- 移除了
DeferredGeoRenderProvider
- 移除了
InternalUtil
- 移除了
FileLoader
- 移除了
Color
。它已完全被net.minecraft.util.ARGB
所取代 - 移除了各种
GeoModel
获取器中的GeoRenderer
参数,因为它已不再需要 - 重命名了
GeoArmorRenderer
中的骨骼变量,以防止与HumanoidArmorModel
的字段名冲突 - 重命名了
GeckoLibCache
为GeckoLibResources
- 重命名了
AnimatableManager#setData
为AnimatableManager#setAnimatableData
(及其相关的获取器) - 为重命名
AutoGlowingTexture#getEmissiveResource
为#getOrCreateEmissiveTexture
以提高清晰度 - 将
GeoEntityRenderState
移至GeoRenderState
- GeckoLibUtil中的各种单例注册助手已移至新的
SyncedSingletonAnimatableCache
,相关方法的层级范围已缩小,以提高清晰度和安全性 - 重命名了
GeoRenderLayer#renderForBone
为#createPerBoneRender
,现在要求您将操作作为一个可运行对象返回,以便稍后运行 - 移除了
DynamicGeoBlockRenderer
、DynamicGeoEntityRenderer
、DynamicGeoItemRenderer
。请使用渲染层来进行骨骼特定的处理。我会考虑为此创建一个辅助类或其他替代选项 - 改进了各种
GeoRenderEvent
的泛型类型,使其更有用
新内容
- 为
SingletonGeoAnimatable
添加了stopTriggeredAnimation
方法 - 添加了
triggerArmorAnim
用于触发盔甲动画(#433) - 添加了
query.controller_speed
Molang查询 - 添加了
query.limb_swing
Molang查询 - 添加了
query.limb_swing_amount
Molang查询 - 为基岩风格动画JSON添加了对卡特穆尔-罗姆(平滑)缓动的原生支持(感谢齐吉(Zigy)的前期工作)
- 动画纹理现在支持发光遮罩(#456)
- 在
GeoRenderer
中添加了#setBonesVisible
辅助方法,以便于使用 - 添加了
AnimationController#isTriggeredAnimation
用于检查当前触发的动画 - 添加了
AnimationController#setAnimationState
,如有必要可直接设置控制器的状态 - 为每种渲染器类型添加了
CompileRenderState
事件钩子
Fabric 1.21.5
on 2025 Apr 08壁虎库(GeckoLib)v5.0-alpha1
注意事项
- 截至
alpha1
版本,发光遮罩和动画纹理尚无法正常使用。这一问题很快就会解决哦 :) - 此外,由于Mojang使得之前的动态渲染器不再实用,我正在研究针对逐骨骼渲染处理的替代解决方案。
- 如果您使用了这些功能中的任何一项,请等到5.0正式版发布后再使用,谢谢。
常规变更
- 已更新至《我的世界》1.21.5版本
- 已将更新日志转换为Markdown格式
内部变更
- 重写了资源加载系统,以便在不影响输入输出(I/O)的情况下正确处理并行化的资源。
- 让GeoArmorRenderer从HumanoidArmorLayer#setPartVisibility继承骨骼可见性,以便更好地与第三方模组协同工作。
- 将默认的boneResetTime设置为5刻,并在刻时间为0时自动完成重置。这可避免不可避免的部分刻骨骼重置。
- 修复了在同步可动画物品上中键点击时,若使用触发动画或同步数据会导致冲突的问题(#681)。
- 现在,使用动画进行完整旋转的骨骼在重置时不应再反向旋转,从而使旋转动画更加流畅。
- 同步可动画物品之间不再相互阻止堆叠。
- 为动画数据添加了内存压缩。较大的模组包应能减少内存使用量。
- 为在Molang中无效使用角色变量添加了一项安全检查。
- 壁虎库(GeckoLib)实体渲染现在自动与新Forge(NeoForge)实体渲染状态修饰符兼容。
- 覆盖了原版对实体名牌渲染的64格默认硬限制。现在您可以将其扩展至256格。
- 修复了GeoBones上的世界空间定位未考虑部分刻线性插值的问题。
- 修复了非生物实体在渲染时未考虑其Y轴旋转的问题。
- 修复了死亡旋转在部分刻加倍的问题。
- 修复了在
GeoObjectRenderer
中BufferSource未正确设置为非空的问题。 - 修复了
GeoEntityRenderer
在重新渲染时重新应用其他PoseStack操作的问题。 - 将大量渲染值创建工作移回原版,以便更好地与原版及其他模组兼容。
- 在整个
AnimationProcessor
中删除了一些多余的方法参数。 - 将
AnimationController#process
重命名为AnimationController#startTick
。 - 修复了
DefaultAnimations#genericFlyController
在不移动时不停下来的问题。 - 将动画状态移至渲染之前,以便优化Molang查询填充。
- 修复了
AnimationController
的动画速度可能在每次渲染过程中多次重新计算,导致动画处理不一致的问题。 - 将
Keyframes
重命名为KeyframeMarkers
。 - 壁虎库(GeckoLib)现在会预先确定在任何给定渲染帧中将使用哪些Molang查询,并预先计算所有相关值并进行缓存。这使得复杂动画成为可能。
- 将
AnimatableManager
及其所有派生类移至不同的包。 - 将
AnimationController
、AnimationProcessor
、AnimationState
移至不同的包。 - 将
AutoPlayingSoundKeyframeHandler
移至不同的包。 - 删除了
AnimationPointQueue
。 - 将逐骨骼渲染层渲染移至其余渲染完成之后。
- 更改了
DyeableGeoArmorRenderer
的工作方式,使其更加准确。 - 修复了各种GeoRenderEvent类中的一些Javadoc错误。
API变更
- 所有壁虎库(GeckoLib)资源现在都放在/assets/geckolib/中
- 动画放在
/assets/<模组ID>/geckolib/animations/
中 - 模型放在
/assets/<模组ID>/geckolib/models/
中
- 动画放在
- 所有GeoRenderers现在都基于GeoRenderStates运行,而不是传递可动画对象。Mojang已经明确表示我们必须这样做 :(
- 删除了
GeoRenderer#getAnimatable
。 - 从GeoRenderer的方法中删除了各种参数,默认将它们移至
GeoRenderState
。 - 删除了
GeoEntityRenderer#isShaking
。
- 删除了
AnimationState
现在是一个内部类,用于在处理过程中携带动画状态。用户现在应使用AnimationTest
。它们在功能上是相同的。- GeoRenderers扩展现在接受第二种泛型类型;即渲染状态类型(以及GeoRenderState)。
- GeoModel模型/动画引用不再需要文件路径前缀或后缀(即,您在返回的模型资源中无需包含
geo/
或.geo.json
)。 DataTicket
现在需要通过工厂方法创建,以确保标识一致性。SerializableDataTicket
不再需要注册,但在模组构造期间仍必须创建。GeoRenderer
中的所有渲染方法在参数中将PoseStack和渲染状态(之前是可动画对象)的位置进行了交换。- Molang变量现在都是针对当前渲染过程中的
AnimationState
进行操作的函数。 AnimationController
不再需要传递可动画对象给它。- 在
AutoGlowingGeoLayer
中拆分了纹理检索和使用,以便模组可以根据需要覆盖纹理。 - 所有
DefaultAnimations
助手现在为了一致性和清晰性,默认过渡时间为0刻。 - 将格式版本转换为字符串,并将其转换为一个更灵活的系统。
- 为同步单例可动画对象引入了基于标识的查找,希望能消除类重复冲突。
- 将
AnimationState#getData
标记为可空,以避免混淆。 - 将
EasingType
中的easingType参数标记为可空,以避免混淆。 - 清理了EasingType的Javadoc。
GeoReplacedEntityRenderer
现在在尝试将一个实体作为可动画对象插入时会明确报错,以防止内存泄漏。- 使
GeoReplacedEntityRenderer
与GeoEntityRenderer
更加一致,以确保准确性。 CustomInstructionKeyframeEvent
、SoundKeyframeEvent
和ParticleKeyframeEvent
都已合并到KeyFrameEvent
中。CustomInstructionKeyframeHandler
、SoundKeyframeHandler
和ParticleKeyframeHandler
都已合并到KeyframeEventHandler
中。- 将
KeyFrameEvent
转换为记录类型。 - 将
Calculation
转换为记录类型。 MolangQueries
再次与边无关。- GeoRenderers的各个部分还额外提供了一个相关对象用于处理(物品堆、被替换的实体等)。
- 将
prepLivingEntityRenderState
移至GeoEntityRenderer
中,以便在需要时可以被重写。 - 删除了
EntityModelData
。 - 删除了
DeferredGeoRenderProvider
。 - 删除了
InternalUtil
。 - 删除了
FileLoader
。 - 删除了
Color
。它已完全被net.minecraft.util.ARGB
所取代。 - 从各种
GeoModel
获取器中删除了GeoRenderer
参数,因为它已不再需要。 - 重命名了
GeoArmorRenderer
中的骨骼变量,以防止与HumanoidArmorModel
的字段名冲突。 - 重命名了
GeckoLibCache
为GeckoLibResources
。 - 重命名了
AnimatableManager#setData
为AnimatableManager#setAnimatableData
(及其相关的获取器)。 - 为重命名
AutoGlowingTexture#getEmissiveResource
为#getOrCreateEmissiveTexture
,以提高清晰度。 - 将
GeoEntityRenderState
移至GeoRenderState
。 - GeckoLibUtil中的各种单例注册助手已移至新的
SyncedSingletonAnimatableCache
,相关方法的层级范围已缩小,以提高清晰度和安全性。 - 重命名了
GeoRenderLayer#renderForBone
为#createPerBoneRender
,现在要求您将操作作为一个可运行对象返回,以便稍后运行。 - 删除了
DynamicGeoBlockRenderer
、DynamicGeoEntityRenderer
和DynamicGeoItemRenderer
。请使用渲染层来进行针对骨骼的特定处理。我将考虑为此创建一个辅助类或其他替代选项。 - 改进了各种
GeoRenderEvent
的泛型类型,使其更有用。
新内容
- 为
SingletonGeoAnimatable
添加了stopTriggeredAnimation
方法。 - 添加了
triggerArmorAnim
用于触发盔甲动画(#433)。 - 添加了
query.controller_speed
Molang查询。 - 添加了
query.limb_swing
Molang查询。 - 添加了
query.limb_swing_amount
Molang查询。 - 为基岩版风格的动画JSON添加了对卡特穆尔-罗姆(平滑)缓动的原生支持(感谢Zigy的前期工作)。
- 动画纹理现在支持发光遮罩(#456)。
- 在
GeoRenderer
中添加了#setBonesVisible
辅助方法,以便于使用。 - 添加了
AnimationController#isTriggeredAnimation
用于检查当前触发的动画。 - 添加了
AnimationController#setAnimationState
,如有必要可直接设置控制器的状态。 - 为每种渲染器类型添加了
CompileRenderState
事件钩子。
Forge 1.20.1
on 2025 Apr 04v4.7.1.2
Fabric:
- 将重定向混合(Mixin)移至包裹操作(WrapOperations)以防止与其他模组发生冲突
Forge:
- 将物品堆叠(itemstacks)的可堆叠性更改回退至4.7.1版本的状态,因为Forge没有混合扩展(MixinExtras),添加它会偶尔导致冲突解决方面的问题
Fabric 1.20.1
on 2025 Apr 04v4.7.1.2
Fabric:
- 将重定向混合(Mixin)移至包裹操作(WrapOperations),以防止与其他模组发生冲突
Forge:
- 将物品堆叠(itemstacks)的可堆叠性更改回退到4.7.1版本时的状态,因为Forge没有混合扩展(MixinExtras),添加它会偶尔导致冲突解决方面的问题
Forge 1.20.1
on 2025 Apr 04v4.7.1.1
- 修复了一些导致卡顿/问题的错误堆叠比较情况(#689)
Fabric 1.20.1
on 2025 Apr 04v4.7.1.1
- 修复一些导致卡顿/问题的错误的堆栈比较(#689)
NeoForge 1.21.1
on 2025 Apr 04v4.7.5.1
- 从样条插值中移除帧外推
Forge 1.21.1
on 2025 Apr 04Fabric 1.21.1
on 2025 Apr 04v4.7.5.1
- 从样条曲线插值中移除帧外推
NeoForge 1.21.1
on 2025 Apr 04v4.7.5
- 重新处理无效的动作动画关键帧。顺利处理而非失败。
- 添加
query.controller_speed
Molang查询。 - 移除GeoModel中针对
getTextureResource
和getModelResource
的待移除弃用内容。
Forge 1.21.1
on 2025 Apr 04v4.7.5
- 重新处理无效的动作动画关键帧。平稳处理而非失败处理
- 添加
query.controller_speed
Molang查询。 - 移除GeoModel中针对
getTextureResource
(获取纹理资源)和getModelResource
(获取模型资源)的待移除弃用内容
Fabric 1.21.1
on 2025 Apr 04v4.7.5
- 重新处理无效的动作动画关键帧。优雅地处理成功情况而非失败情况
- 添加
query.controller_speed
莫朗查询。 - 移除地理模型中针对
getTextureResource
和getModelResource
的待移除废弃内容
NeoForge 1.21.1
on 2025 Apr 04v4.7.4.1
- 修复了一些非标准动画json文件的加载问题
- 修复了单例可动对象的停止触发动画大多无法正常工作的问题
- 修复了仅部分发光的动画发光纹理无法正确加载的问题