Forge 1.21.5
on 2026 Apr 25GeckoLib v5.1.0
新增内容
- 新增
AutoGlowingGeoLayer#shouldAddZOffset—— 用于提升对特定渲染类型或特殊情形的兼容性 - 新增
AutoGlowingGeoLayer#getBrightness—— 可配置值,用于调整自发光层的亮度
变更内容
- 在
AutoGlowingGeoLayer#shouldRespectWorldLighting方法参数中添加了 RenderState - 小幅代码清理
修复内容
- 修复 GeoArmorRenderer 不支持发光遮罩的问题。需小幅重写,略有破坏性变更,敬请谅解。
- 修复当未注册为可同步的 GeoAnimatable 时,GeoArmorRenderer 在穿戴实例间共享动画的问题(#730)
NeoForge 1.21.4
on 2026 Apr 25v4.8.5
- 修复 stopTriggeredSingletonAnim 实际上启动了触发动画而非停止它
Forge 1.21.4
on 2026 Apr 25v4.8.5
- 修复 stopTriggeredSingletonAnim 实际上启动了一个触发动画而非停止它的问题
NeoForge 1.21.5
on 2026 Apr 25GeckoLib v5.0.2
修复的错误
- 修复了 stopTriggeredSingletonAnim 实际上会启动一个触发动画而非停止它的问题
Forge 1.21.5
on 2026 Apr 25GeckoLib v5.0.2
修复的错误
- 修复了 stopTriggeredSingletonAnim 实际上会启动一个触发动画,而非停止它的问题
Forge 1.20.1
on 2026 Apr 25v4.7.1.3
Fabric:
- 更新 MixinItemRenderer 以提升第三方模组的兼容性
NeoForge 1.21.5
on 2026 Apr 25GeckoLib v5.0.1
修复的错误
- 修复了 AutoGlowingGeoLayer 渲染出黑色和紫色模型的问题
Forge 1.21.5
on 2026 Apr 25GeckoLib v5.0.1
修复的漏洞
- 修复了 AutoGlowingGeoLayer 渲染出黑色和紫色模型的问题
NeoForge 1.21.5
on 2026 Apr 25GeckoLib v5.0
新增内容
- 新增
ItemInHandGeoLayer - 新增
PerBoneRender - 新增
DataTickets#IS_LEFT_HANDED - 新增
DataTickets#IS_CROUCHING - 新增
GeoRender#adjustPositionForRender - 新增
DirectionalProjectileRenderer - 新增
TextureLayerGeoLayer - 新增
CustomBoneTextureGeoLayer
内部变更
- 移除了在加载无后缀的动画或模型文件时产生的一些不必要的警告
- 修复了
DefaultedGeoModel中使用旧格式的 Javadoc - 将缩放属性处理移入
GeoEntityRenderer的scaleModelForRender方法中,并调整了睡眠姿势的位移以更好地适配缩放 - 将
scaleModelForRender从preRender中移出,改为独立调用 - 优化了
RenderUtil#getTextureDimensions,并使其能够考虑加载后的修改 - 优化了
BakedGeoModel#getBone
API 变更
- 移除了
GeoRenderer#applyRenderLayersForBone。现在逐骨骼渲染在#preApplyRenderLayers中添加 - 新增
GeoRenderLayer#addPerBoneRender - 修改了
ItemArmorGeoLayer的实现方式,使其更高效,并支持鞘翅(尽管目前尚未完全正确) - 修改了
BlockAndItemGeoLayer的实现方式,使其更高效且代码更清晰 - 将
ItemArmorGeoLayer#prepModelPartForRender重命名为prepHumanoidModelForRender - 将
GeckoLibClient#getArmorModelForItem的返回类型从基础Model改为HumanoidModel,因为非人形模型从未被使用过 - 在
GeoRenderer#renderFinal中新增了packedLight、packedOverlay和renderColor参数 - 移除了
GeoEntityRenderer#calculateYRot中的final修饰符 - 移除了
BoneFilterGeoLayer和FastBoneFilterGeoLayer
问题修复
- 修复了
GeckoLibAnimatedTexture在纹理加载失败时崩溃的问题 - 修复了逐骨骼渲染任务干扰查询值的问题
- 修复了渲染层中的 PoseStack 操作干扰骨骼位置获取的问题
- 修复了
GeoItemRenderer和GeoObjectRenderer在缩放时定位错误的问题 - 修复了
GeoReplacedEntityRenderer未正确传递 PoseStack 操作的问题 - 修复了
ItemArmorGeoLayer与其他使用相同 DataTicket 的图层发生冲突的问题
Forge 1.21.5
on 2026 Apr 25GeckoLib v5.0
新增内容
- 新增
ItemInHandGeoLayer - 新增
PerBoneRender - 新增
DataTickets#IS_LEFT_HANDED - 新增
DataTickets#IS_CROUCHING - 新增
GeoRender#adjustPositionForRender - 新增
DirectionalProjectileRenderer - 新增
TextureLayerGeoLayer - 新增
CustomBoneTextureGeoLayer
内部变更
- 移除了在加载无后缀的动画或模型文件时产生的一些不必要的警告
- 修正了
DefaultedGeoModel中使用旧格式的 Javadoc - 将缩放属性处理移入
GeoEntityRenderer的scaleModelForRender方法中,并调整了睡眠姿态的位移以更好地适配缩放 - 将
scaleModelForRender从preRender中移出,改为独立调用 - 优化了
RenderUtil#getTextureDimensions,并使其能够处理加载后的修改 - 优化了
BakedGeoModel#getBone
API 变更
- 移除了
GeoRenderer#applyRenderLayersForBone。现在逐骨骼渲染在#preApplyRenderLayers中添加 - 新增
GeoRenderLayer#addPerBoneRender - 修改了
ItemArmorGeoLayer的实现方式,使其更高效,并支持鞘翅(尽管目前尚未完全正确) - 修改了
BlockAndItemGeoLayer的实现方式,使其更高效且代码更清晰 - 将
ItemArmorGeoLayer#prepModelPartForRender重命名为prepHumanoidModelForRender - 将
GeckoLibClient#getArmorModelForItem的返回类型由基础Model改为HumanoidModel,因为非人形模型从未被使用 - 在
GeoRenderer#renderFinal中新增了packedLight、packedOverlay和renderColor参数 - 移除了
GeoEntityRenderer#calculateYRot的final修饰符 - 移除了
BoneFilterGeoLayer和FastBoneFilterGeoLayer
问题修复
- 修复了
GeckoLibAnimatedTexture在纹理加载失败时崩溃的问题 - 修复了逐骨骼渲染任务干扰查询值的问题
- 修复了渲染层中的 PoseStack 操作干扰骨骼位置获取的问题
- 修复了
GeoItemRenderer和GeoObjectRenderer在缩放时定位不正确的问题 - 修复了
GeoReplacedEntityRenderer未正确传递 PoseStack 操作的问题 - 修复了
ItemArmorGeoLayer与其他使用相同 DataTicket 的图层发生冲突的问题
NeoForge 1.21.5
on 2026 Apr 25GeckoLib v5.0-alpha2
注意
- 仍在探索每根骨骼渲染处理的替代方案,因为Mojang已使先前的动态渲染器变得不切实际。
修复内容
- 修复了 GeoObjectRenderer 未存储打包光照的问题(#712)
- 修复了 GeoEntityRenderer 不允许通用扩展 RenderStates 的问题
- 修复了
AutoGlowingGeoLayer中部分错误的 Javadoc 注释 - 修复了 GeoArmorRenderer 未考虑发光或隐身 DataTickets 的问题
- 重载纹理会导致发光与动画纹理出现异常问题
内部变更
- AutoGlowingGeoLayer 不再移除基础纹理的部分区域,从而支持选择性动态发光
- AutoGlowingGeoLayer 不再禁用着色器兼容性
- 动画纹理与发光遮罩(glowmask)不再相互依赖。你现在可以在动画纹理上使用非动画的发光遮罩,反之亦然。
新增内容
- 新增了
RenderUtil#getEmissiveResource辅助方法 - AutoGlowingGeoLayer 现在包含
shouldRespectWorldLighting方法,允许你在绝对发光与结合世界光照进行明暗变化的发光之间进行选择
移除内容
- GeckoLib 的发光纹理不再支持 mcmeta 文件创建。请改用发光遮罩图像(反正也简单得多)
Forge 1.21.5
on 2026 Apr 25GeckoLib v5.0-alpha2
注意
- 仍在研究骨骼级渲染处理的替代方案,因为Mojang已使之前的动态渲染器不再实用。
问题修复
- 修复了GeoObjectRenderer未存储打包光照的问题(#712)
- 修复了GeoEntityRenderer不允许通用扩展RenderStates的问题
- 修复了
AutoGlowingGeoLayer中部分错误的Java文档 - 修复了GeoArmorRenderer未考虑发光或隐身DataTickets的问题
- 重新加载纹理会导致发光与动画纹理出现异常问题
内部变更
- AutoGlowingGeoLayer不再移除基础纹理的部分区域,允许选择性动态自发光
- AutoGlowingGeoLayer不再禁用着色器兼容性
- 动画纹理与发光遮罩不再相互依赖。你可以在动画纹理上使用非动画发光遮罩,反之亦可。
新增内容
- 新增
RenderUtil#getEmissiveResource辅助方法 - AutoGlowingGeoLayer现在包含
shouldRespectWorldLighting方法,允许你在绝对自发光与随世界光照变化的自发光之间进行选择
移除内容
- GeckoLib的自发光纹理不再支持mcmeta生成。请改用发光遮罩图像(反正也更简单)
NeoForge 1.21.5
on 2026 Apr 25GeckoLib v5.0-alpha1
注意
- 自
alpha1起,发光遮罩(glowmasks)和带动画的纹理尚不可用。此问题将很快修复 :) - 此外,我正在研究骨骼级渲染处理的替代方案,因为 Mojang 已使原先的动态渲染器不再实用。
- 如果你使用了上述任何功能,请等待 5.0 正式版发布,谢谢。
通用变更
- 更新至 Minecraft 1.21.5
- 将更新日志转换为 Markdown 格式
内部变更
- 重写了资源加载系统,以正确支持并行化资源处理,避免过度占用 I/O
- 使 GeoArmorRenderer 从 HumanoidArmorLayer#setPartVisibility 继承骨骼可见性,以更好地兼容第三方模组
- 默认将 boneResetTime 设为 5 游戏刻,并在重置时间设为 0 时自动完成重置。这可防止不可避免的部分游戏刻骨骼重置
- 修复了对同步动画物品中键点击时,在使用触发动画或同步数据时产生冲突的问题 (#681)
- 现在使用动画进行完整旋转的骨骼在重置时不再反向旋转,从而使旋转动画更流畅
- 同步动画物品现在彼此之间可以正常堆叠
- 为动画数据添加内存压缩。大型整合包的内存占用应有所降低
- 为 Molang 中 Actor 变量的无效使用添加了安全检查
- 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/<modid>/geckolib/animations/ - 模型文件位于
/assets/<modid>/geckolib/models/
- 动画文件位于
- 所有 GeoRenderer 现在基于 GeoRenderStates 运行,而非传递 animatable 对象。Mojang 已明确表示这是我们必须采用的方式 :(
- 移除了
GeoRenderer#getAnimatable - 从 GeoRenderer 的方法中移除了多个参数,默认移至
GeoRenderState - 移除了
GeoEntityRenderer#isShaking
- 移除了
AnimationState现在是用于在处理过程中传递动画状态的内部类。用户现在应使用AnimationTest,其功能相同- GeoRenderer 扩展现在接受第二个泛型类型,即 RenderState 类型(以及 GeoRenderState)
- GeoModel 的模型/动画引用不再需要文件路径前缀或后缀(例如,返回的模型资源中无需包含
geo/或.geo.json) DataTicket现在必须通过工厂方法创建,以确保身份一致性SerializableDataTicket不再需要注册,但仍必须在模组构造阶段创建GeoRenderer中所有渲染方法的参数顺序已调整:PoseStack 和 RenderState(原 Animatable)位置互换- Molang 变量现在均为基于当前渲染通道的
AnimationState运行的函数 AnimationController不再需要传入 animatable 对象- 拆分了
AutoGlowingGeoLayer中纹理获取与使用逻辑,以便模组按需覆盖纹理 - 所有
DefaultAnimations辅助方法现在默认使用 0 游戏刻过渡时间,以保持一致性与清晰性 - 将 FormatVersion 转换为字符串,并采用更灵活的系统
- 引入基于身份的查找机制用于同步单例 animatable 对象,以期消除类重复冲突
- 将
AnimationState#getData标记为可空,以避免混淆 - 将
EasingType中的 easingType 参数标记为可空,以避免混淆 - 清理了 EasingType 的 Javadoc
GeoReplacedEntityRenderer现在在尝试将实体作为 animatable 插入时会显式崩溃,以防止内存泄漏- 使
GeoReplacedEntityRenderer与GeoEntityRenderer更加一致,以确保准确性 CustomInstructionKeyframeEvent、SoundKeyframeEvent和ParticleKeyframeEvent已合并为KeyFrameEventCustomInstructionKeyframeHandler、SoundKeyframeHandler和ParticleKeyframeHandler已合并为KeyframeEventHandler- 将
KeyFrameEvent转换为 record 类型 - 将
Calculation转换为 record 类型 MolangQueries再次变为环境无关(side-agnostic)- GeoRenderer 的多个部分现在额外提供关联对象用于处理(ItemStack、替换实体等)
- 将
prepLivingEntityRenderState移入GeoEntityRenderer,以便必要时可被覆写 - 移除了
EntityModelData - 移除了
DeferredGeoRenderProvider - 移除了
InternalUtil - 移除了
FileLoader - 移除了
Color,现已完全由net.minecraft.util.ARGB取代 - 从各类
GeoModelgetter 方法中移除了GeoRenderer参数,因其已不再需要 - 重命名了
GeoArmorRenderer中的骨骼变量,以避免与HumanoidArmorModel的字段名冲突 - 将
GeckoLibCache重命名为GeckoLibResources - 将
AnimatableManager#setData重命名为AnimatableManager#setAnimatableData(及其对应的 getter) - 将
AutoGlowingTexture#getEmissiveResource重命名为#getOrCreateEmissiveTexture以提高清晰度 - 将
GeoEntityRenderState移至GeoRenderState GeckoLibUtil中的各类单例注册辅助方法已移至新的SyncedSingletonAnimatableCache,相关方法的层级作用域也已缩小,以提高清晰度与安全性- 将
GeoRenderLayer#renderForBone重命名为#createPerBoneRender,现在要求你返回一个稍后执行的 Runnable 操作 - 移除了
DynamicGeoBlockRenderer、DynamicGeoEntityRenderer和DynamicGeoItemRenderer。请改用渲染层处理骨骼特定逻辑。我将研究为此创建辅助类或其他替代方案 - 改进了各类
GeoRenderEvent的泛型类型,使其更具实用性
新增内容
- 为
SingletonGeoAnimatable添加了stopTriggeredAnimation - 添加了
triggerArmorAnim用于触发护甲动画 (#433) - 添加了
query.controller_speedMolang 查询 - 添加了
query.limb_swingMolang 查询 - 添加了
query.limb_swing_amountMolang 查询 - 为基岩版风格动画 JSON 添加了 Catmull-Rom(平滑)缓动原生支持(感谢 Zigy 的初始工作)
- 带动画的纹理现已支持发光遮罩 (#456)
- 在
GeoRenderer中添加了#setBonesVisible辅助方法,便于使用 - 添加了
AnimationController#isTriggeredAnimation用于检查当前触发的动画 - 添加了
AnimationController#setAnimationState用于在必要时直接设置控制器状态 - 为每种渲染器类型添加了
CompileRenderState事件钩子
Forge 1.21.5
on 2026 Apr 25GeckoLib v5.0-alpha1
注意
- 自
alpha1起,发光遮罩(glowmasks)和动画纹理暂不可用。此问题将很快修复 :) - 此外,我正在研究骨骼级渲染处理的替代方案,因为 Mojang 已使之前的动态渲染器不再实用。
- 如果你使用了上述任何功能,请等待 5.0 正式版发布,谢谢。
通用变更
- 更新至 Minecraft 1.21.5
- 将更新日志转换为 Markdown 格式
内部变更
- 重写了资源加载系统,以正确支持并行化资源处理,避免对 I/O 造成过大压力
- 使
GeoArmorRenderer继承自HumanoidArmorLayer#setPartVisibility的骨骼可见性逻辑,以更好地兼容第三方模组 - 默认将
boneResetTime设为 5 刻,并在重置刻数为 0 时自动完成重置,避免无法避免的部分刻骨骼重置问题 - 修复了中键点击同步动画物品时,在使用触发式动画或同步数据时产生冲突的问题(#681)
- 现在使用动画进行完整旋转的骨骼在重置时将不再反向旋转,从而实现更干净的旋转动画
- 同步动画物品现在可以相互堆叠
- 为动画数据添加内存压缩,大型整合包应能减少内存占用
- 为 Molang 中无效使用 Actor 变量的情况添加安全检查
- GeckoLib 实体渲染现已自动兼容 NeoForge 的
EntityRenderState修改器 - 覆盖了原版对实体命名牌渲染距离 64 格的硬性上限,现在最大可支持 256 格
- 修复了
GeoBone的世界空间定位未考虑部分刻线性插值(lerping)的问题 - 修复了非生物实体渲染时未考虑其 Y 轴旋转的问题
- 修复了死亡旋转在部分刻(partialTick)下重复叠加的问题
- 修复了
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/<modid>/geckolib/animations/ - 模型文件存放于
/assets/<modid>/geckolib/models/
- 动画文件存放于
- 所有
GeoRenderer现在基于GeoRenderState运行,而非传递 animatable 对象。Mojang 已明确表示这是必须采用的方式 :(- 移除了
GeoRenderer#getAnimatable - 从
GeoRenderer的多个方法中移除了若干参数,默认移至GeoRenderState - 移除了
GeoEntityRenderer#isShaking
- 移除了
AnimationState现为内部类,用于在处理过程中携带动画状态。用户应改用AnimationTest,其功能相同GeoRenderer扩展类现在接受第二个泛型类型,即渲染状态类型(RenderState和GeoRenderState)GeoModel的模型/动画引用不再需要文件路径前缀或后缀(例如:返回的模型资源无需包含geo/或.geo.json)DataTicket现需通过工厂方法创建,以确保身份一致性SerializableDataTicket不再需要注册,但仍须在模组构造阶段创建GeoRenderer中所有渲染方法的参数顺序已调整:PoseStack与RenderState(原为Animatable)位置互换- Molang 变量现均为作用于当前渲染帧
AnimationState的函数 AnimationController不再需要传入 animatable 对象- 拆分了
AutoGlowingGeoLayer中的纹理获取与使用逻辑,以便模组按需覆盖纹理 - 所有
DefaultAnimations辅助方法现默认使用 0 刻过渡时间,以保证一致性与清晰性 - 将
FormatVersion转换为字符串,并改为更灵活的系统 - 引入基于身份的查找机制用于同步单例 animatable,以期消除类重复导致的冲突
- 将
AnimationState#getData标记为可空,避免混淆 - 将
EasingType中的easingType参数标记为可空,避免混淆 - 清理了
EasingType的 Javadoc GeoReplacedEntityRenderer现在在尝试将实体作为 animatable 插入时会显式崩溃,以防止内存泄漏- 使
GeoReplacedEntityRenderer与GeoEntityRenderer更加一致,确保准确性 - 将
CustomInstructionKeyframeEvent、SoundKeyframeEvent和ParticleKeyframeEvent合并为KeyFrameEvent - 将
CustomInstructionKeyframeHandler、SoundKeyframeHandler和ParticleKeyframeHandler合并为KeyframeEventHandler - 将
KeyFrameEvent转换为 record 类型 - 将
Calculation转换为 record 类型 MolangQueries再次变为环境无关(side-agnostic)GeoRenderer的多个部分现在额外提供关联对象用于处理(如ItemStack、替换实体等)- 将
prepLivingEntityRenderState移入GeoEntityRenderer,以便按需重写 - 移除了
EntityModelData - 移除了
DeferredGeoRenderProvider - 移除了
InternalUtil - 移除了
FileLoader - 移除了
Color,现已完全由net.minecraft.util.ARGB取代 - 从多个
GeoModel获取方法中移除了GeoRenderer参数,因其已不再需要 - 将
GeoArmorRenderer中的骨骼变量重命名,以避免与HumanoidArmorModel的字段名冲突 - 将
GeckoLibCache重命名为GeckoLibResources - 将
AnimatableManager#setData重命名为AnimatableManager#setAnimatableData(及其对应的 getter) - 将
AutoGlowingTexture#getEmissiveResource重命名为#getOrCreateEmissiveTexture,以更清晰表达其用途 - 将
GeoEntityRenderState移至GeoRenderState GeckoLibUtil中的各种单例注册辅助方法现已移至新的SyncedSingletonAnimatableCache,相关方法的作用域层级也已缩小,以提高清晰度与安全性- 将
GeoRenderLayer#renderForBone重命名为#createPerBoneRender,现需返回一个Runnable供稍后执行 - 移除了
DynamicGeoBlockRenderer、DynamicGeoEntityRenderer和DynamicGeoItemRenderer。请改用渲染层处理骨骼级逻辑。我将考虑为此创建辅助类或替代方案 - 改进了各类
GeoRenderEvent的泛型类型,使其更具实用性
新增内容
- 为
SingletonGeoAnimatable添加stopTriggeredAnimation方法 - 添加
triggerArmorAnim用于触发射甲动画(#433) - 添加
query.controller_speedMolang 查询 - 添加
query.limb_swingMolang 查询 - 添加
query.limb_swing_amountMolang 查询 - 为 Bedrock 风格动画 JSON 添加原生 Catmull-Rom(平滑)缓动支持(感谢 Zigy 的初步工作)
- 动画纹理现已支持发光遮罩(#456)
- 在
GeoRenderer中添加便捷方法#setBonesVisible - 添加
AnimationController#isTriggeredAnimation以检查当前触发的动画 - 添加
AnimationController#setAnimationState以在必要时直接设置控制器状态 - 为每种渲染器类型添加
CompileRenderState事件钩子
Forge 1.20.1
on 2026 Apr 25v4.7.1.2
Fabric:
- 将 Redirect mixins 移至 WrapOperations,以避免与其他模组发生冲突
Forge:
- 回滚 4.7.1 版本中对物品堆叠数量的更改,因为 Forge 不包含 MixinExtras,而强行添加会导致偶尔出现冲突解决的问题
Forge 1.20.1
on 2026 Apr 25v4.7.1.1
- 修复了一些错误的物品堆叠比较,这些问题曾导致卡顿/异常(#689)
NeoForge 1.21.1
on 2026 Apr 25Forge 1.21.1
on 2026 Apr 25v4.7.5.1
- 移除样条插值中的帧外推
NeoForge 1.21.1
on 2026 Apr 25Forge 1.21.1
on 2026 Apr 25v4.7.5
- 重新处理无效的动画关键帧。优雅地成功处理,而非直接失败
- 新增
query.controller_speedMolang 查询 - 移除 GeoModel 中
getTextureResource和getModelResource的 forRemoval 弃用标记



