Fabric 1.21.11
on 2026 Apr 25GeckoLib v5.4-alpha-1
变更:
NeoForge 1.21.10
on 2026 Apr 25GeckoLib v5.3-alpha-3
Alpha 3 更新说明:
- 修复了世界加载时崩溃的问题(#776)
- 对盔甲渲染和 ItemArmorGeoLayer 进行了更多内部调整
- 很抱歉地通知大家,下个版本中还会出现更多 API 变更 :(
Alpha 2 更新说明:
- 修复在较新 Forge 版本上加载时 Forge 崩溃的问题(#773)
- 修复未渲染完整套装时 GeoArmorRenderer 崩溃的问题(#771)
- 将
BlockAndItemGeoLayer#renderStackForBone和#renderBlockForBone分别重命名为#submitItemStackRender和#submitBlockRender - 将
OBJECT_RENDER_POSE与MODEL_RENDER_POSEDataTickets 移至基础GeoRenderer类中,子类无需再在覆写方法中处理它们 - 修复了每个
GeoBone仅处理一个PerBoneRenderTask的问题 - 新增
GeoBone#transformToBone - 将
PerBoneRender任务拆分至GeoRenderer#submitPerBoneRenderTasks - 移除了多个
GeoRenderer方法调用中的skipPerBoneTasks参数,因其已不再需要 - 新增
PerBoneRenderTasks类,用于更清晰地处理日益复杂的逐骨骼渲染任务 - 限制
GeoArmorLayer的泛型类型必须为AvatarRenderState,因为所用模型实际需要该类型 - 新增
RenderStateUtil
更改内容
- 移植至 1.21.10
- 注意:此为 ALPHA 版本,在移除 alpha 标签前可能包含破坏性变更。
- 大多数 GeoRenderer 不再填充 PACKED_LIGHT DataTicket,因为基础 RenderState 类现在默认已包含
lightCoords - 新增
GeoRenderState#getPackedLight GeoRenderer#defaultRender已重命名为#submitRenderTasks,以更准确反映其当前功能(此时并未真正执行渲染)GeoRenderer#actuallyRender已重命名为#buildRenderTask,以更准确反映其功能GeoLayer#render已重命名为#buildRenderTask,以更准确反映其功能- 移除了
GeoRenderer#reRender。现在渲染层或渲染器应通过GeoRenderer#buildRenderTask提交新的渲染任务。因此,渲染器方法中不再需要检查isReRender preRender、scaleModelForRender和adjustPositionForRender均已移至预渲染事件检查之后- 新增
GeoRenderer#createRenderState - 移除了
GeoEntityRenderer#createBaseRenderState—— 请改用#createRenderState - 从默认设置中移除了多个 DataTicket,因其只是对现有原版属性的直接复制,此举旨在消除多重数据来源并提升性能
- GeckoLib 渲染器中的各类 Matrix4f 变量现已移至 DataTicket
- 移除了
GeoRenderer#doPostRenderCleanup - 在
GeoArmorLayer.RenderData中添加了关联的 HumanoidModel - 新增
RenderModelPositioner
- 重写了
GeoArmorRenderer—— 现在应该显著更易于使用和理解 - 修改 DefaultedEntityGeoModel,使其接受可自定义的骨骼名称而非简单的布尔值
- 为各类
GeoRenderer添加了#withRenderLayer方法,以支持函数式实例化 GeoObjectRenderer现在对其GeoRenderState使用泛型,从而支持泛型扩展- 直接将 partialTick 传递给
GeoRenderer#addRenderData、GeoRenderLayer#addRenderData、GeoModel#prepareForRenderPass以及各类CompileRenderState事件/钩子(#762) - 将
GeoRenderer#adjustPositionForRender重命名为#adjustRenderPose,以更准确反映其预期用途 ItemArmorGeoLayer.RenderData现在使用GeoArmorRenderer.ArmorSegment,而非手动指定槽位和部件获取器- 使
GeoRenderEvent及其各类子事件兼容多加载器(multiloader) - 所有平台特定的 GeckoLib 事件现已拆分为各自独立的类,以便更轻松地查找和管理。例如:
CompileBlockRenderLayersEvent
新增内容
- 添加了“无状态”(Stateless)动画实体。这是处理 GeckoLib 动画实体动画的另一种方式。
- 参见:https://github.com/bernie-g/geckolib/wiki/Stateless-Animatable-Handling-(Geckolib5)
- 新增:
StatelessGeoBlockEntityStatelessGeoEntityStatelessGeoObjectStatelessGeoReplacedEntityStatelessGeoSingletonAnimatableStatelessAnimationController
- 新增
attack.punch默认动画常量 - 新增
misc.idle.flying默认动画常量 - 新增
move.dive默认动画常量 - 新增
DefaultAnimations#triggerOnlyController,用于创建专用于任意触发动画的控制器 - 新增
RawAnimation#getStageCount - 新增
AnimationController#getStateHandler - 新增
DefaultAnimations#genericWalkFlyIdleController - 为各类 GeckoLib 渲染器添加了构造函数重载,可直接传入物品并使用对象注册的 ID 创建默认实例,便于快速简易处理
- 例如:
new GeoEntityRenderer(ModEntities.MY_ENTITY);
- 例如:
- 新增
GeoRenderEvent#hasData - 新增
RenderUtil#getReplacedEntityRenderer - 新增
RenderUtil#getGeckoLibItemRenderer - 新增
RenderUtil#getGeckoLibEntityRenderer - 新增
RenderUtil#getGeckoLibBlockRenderer - 新增
RenderUtil#getGeckoLibArmorRenderer
修复内容
- 添加双深度基岩关键帧解析,因为我不清楚为何 Blockbench 会导出这种格式
- 修复多人游戏中其他玩家无法看到全新物品堆栈上触发的动画视觉效果的问题
- 修复 AnimationController 中部分不正确的 Javadoc
- 确保在传递给
GeoArmorRenderer提取前正确提取EntityRenderState
内部更改
- 将 GeckoLib 的数据包重新组织到文件夹中
- 为
Animation.Stage添加了 StreamCodec 实现 - 为
RawAnimation添加了 StreamCodec 实现 - 为更多内部方法及所有 Mixin 添加了 Javadoc 注释以提升清晰度
- 改进了
GeoRenderEvent#getRenderData的 Javadoc - 移除了
RenderUtil#getCurrentSystemTick - 移除了
RenderUtil#booleanToFloat - 移除了
RenderUtil#getGeoModelForEntityType - 移除了
RenderUtil#getGeoModelForEntity - 移除了
RenderUtil#getGeoModelForItem - 移除了
RenderUtil#getGeoModelForBlock - 移除了
RenderUtil#getGeoModelForArmor - 将
RenderUtil#getCurrentTick移至ClientUtil - 将
RenderUtil#arrayToVec移至JsonUtil - 从
GeoRenderProvider#getGeoArmorRenderer中移除了部分冗余参数 - 将
ItemArmorGeoLayer#prepHumanoidModelForRender重命名为#positionModelPartFromBone
Forge 1.21.10
on 2026 Apr 25GeckoLib v5.3-alpha-3
Alpha 3 更新说明:
- 修复了世界加载时崩溃的问题(#776)
- 对盔甲渲染和 ItemArmorGeoLayer 进行了更多内部调整
- 很抱歉,下一版本中还会带来更多 API 变更 :(
Alpha 2 更新说明:
- 修复在较新 Forge 版本上加载时 Forge 崩溃的问题(#773)
- 修复未渲染完整套装时 GeoArmorRenderer 崩溃的问题(#771)
- 将
BlockAndItemGeoLayer#renderStackForBone和#renderBlockForBone分别重命名为#submitItemStackRender和#submitBlockRender - 将
OBJECT_RENDER_POSE和MODEL_RENDER_POSEDataTickets 移至基类GeoRenderer中,使子类在覆写时无需再处理它们 - 修复了每个
GeoBone仅处理一个PerBoneRenderTask的问题 - 新增
GeoBone#transformToBone - 将
PerBoneRender任务拆分为GeoRenderer#submitPerBoneRenderTasks - 移除了多个
GeoRenderer方法调用中的skipPerBoneTasks参数,因其已不再需要 - 新增
PerBoneRenderTasks类,用于更清晰地处理日益复杂的按骨骼渲染任务 - 限制
GeoArmorLayer的泛型类型必须为AvatarRenderState,因为模型实际需要的就是该类型 - 新增
RenderStateUtil
更改内容
- 移植至 1.21.10
- 注意:此为 ALPHA 版本,在移除 alpha 标签前可能会有破坏性变更。
- 大多数 GeoRenderer 不再填充 PACKED_LIGHT DataTicket,因为基础 RenderState 类现在默认已包含
lightCoords - 新增
GeoRenderState#getPackedLight GeoRenderer#defaultRender已重命名为#submitRenderTasks,以更准确反映其当前功能(此时并未实际渲染)GeoRenderer#actuallyRender已重命名为#buildRenderTask,以更准确反映其功能GeoLayer#render已重命名为#buildRenderTask,以更准确反映其功能- 移除了
GeoRenderer#reRender。现在,渲染层或渲染器应通过GeoRenderer#buildRenderTask提交另一个渲染任务。因此,渲染器方法中不再需要检查isReRender preRender、scaleModelForRender和adjustPositionForRender均已移至预渲染事件检查之后执行- 新增
GeoRenderer#createRenderState - 移除了
GeoEntityRenderer#createBaseRenderState—— 请改用#createRenderState - 从默认设置中移除了多个 DataTickets,这些 DataTickets 仅是原版已有属性的直接复制,此举旨在消除多源真相并提升性能
- GeckoLib 渲染器中的各类 Matrix4f 变量现已移至 DataTickets
- 移除了
GeoRenderer#doPostRenderCleanup - 在
GeoArmorLayer.RenderData中新增关联的 HumanoidModel - 新增
RenderModelPositioner
- 重写了
GeoArmorRenderer—— 现在应该显著更易于使用和理解 - 修改 DefaultedEntityGeoModel,使其接受可自定义的骨骼名称,而非简单的布尔值
- 为各类
GeoRenderer新增#withRenderLayer方法,以支持函数式实例化 GeoObjectRenderer现在对其GeoRenderState使用泛型,以支持泛型扩展- 将 partialTick 直接传递给
GeoRenderer#addRenderData、GeoRenderLayer#addRenderData、GeoModel#prepareForRenderPass以及各类CompileRenderState事件/钩子(#762) - 将
GeoRenderer#adjustPositionForRender重命名为#adjustRenderPose,以更准确反映其预期用途 ItemArmorGeoLayer.RenderData现在使用GeoArmorRenderer.ArmorSegment,而非手动的槽位和部件获取器- 使
GeoRenderEvent及其各类子事件兼容多加载器(multiloader) - 所有平台特定的 GeckoLib 事件现已拆分为各自的独立类,以便于查找和管理。例如:
CompileBlockRenderLayersEvent
新增内容
- 新增“无状态”(Stateless)动画实体。这是处理 GeckoLib 动画实体的另一种方式。
- 参见:https://github.com/bernie-g/geckolib/wiki/Stateless-Animatable-Handling-(Geckolib5)
- 新增:
StatelessGeoBlockEntityStatelessGeoEntityStatelessGeoObjectStatelessGeoReplacedEntityStatelessGeoSingletonAnimatableStatelessAnimationController
- 新增
attack.punch默认动画常量 - 新增
misc.idle.flying默认动画常量 - 新增
move.dive默认动画常量 - 新增
DefaultAnimations#triggerOnlyController,用于创建专用于任意触发动画的控制器 - 新增
RawAnimation#getStageCount - 新增
AnimationController#getStateHandler - 新增
DefaultAnimations#genericWalkFlyIdleController - 为各类 GeckoLib 渲染器新增构造函数重载,可直接传入物品并使用对象注册的 ID 创建默认实例,便于快速便捷地处理
- 例如:
new GeoEntityRenderer(ModEntities.MY_ENTITY);
- 例如:
- 新增
GeoRenderEvent#hasData - 新增
RenderUtil#getReplacedEntityRenderer - 新增
RenderUtil#getGeckoLibItemRenderer - 新增
RenderUtil#getGeckoLibEntityRenderer - 新增
RenderUtil#getGeckoLibBlockRenderer - 新增
RenderUtil#getGeckoLibArmorRenderer
问题修复
- 添加对双深度基岩关键帧的解析,因为我不清楚为何 Blockbench 会导出这种格式
- 修复多人游戏中其他玩家无法看到全新物品堆叠上触发的动画视觉效果的问题
- 修复 AnimationController 中部分错误的 Javadoc
- 确保在传递给
GeoArmorRenderer提取前正确提取EntityRenderState
内部更改
- 将 GeckoLib 的数据包重新组织到文件夹中
- 为
Animation.Stage新增 StreamCodec 实现 - 为
RawAnimation新增 StreamCodec 实现 - 为更多内部方法及所有 Mixin 添加 Javadoc 以提高清晰度
- 改进了
GeoRenderEvent#getRenderData的 Javadoc - 移除了
RenderUtil#getCurrentSystemTick - 移除了
RenderUtil#booleanToFloat - 移除了
RenderUtil#getGeoModelForEntityType - 移除了
RenderUtil#getGeoModelForEntity - 移除了
RenderUtil#getGeoModelForItem - 移除了
RenderUtil#getGeoModelForBlock - 移除了
RenderUtil#getGeoModelForArmor - 将
RenderUtil#getCurrentTick移至ClientUtil - 将
RenderUtil#arrayToVec移至JsonUtil - 从
GeoRenderProvider#getGeoArmorRenderer中移除了部分冗余参数 - 将
ItemArmorGeoLayer#prepHumanoidModelForRender重命名为#positionModelPartFromBone
Forge 1.21.10
on 2026 Apr 25GeckoLib v5.3-alpha-2
Alpha 2 更新说明:
- 修复在较新 Forge 版本上加载时崩溃的问题(#773)
- 修复未渲染完整套装时 GeoArmorRenderer 崩溃的问题(#771)
- 将
BlockAndItemGeoLayer#renderStackForBone和#renderBlockForBone分别重命名为#submitItemStackRender和#submitBlockRender - 将
OBJECT_RENDER_POSE与MODEL_RENDER_POSEDataTicket 移至基类GeoRenderer中,子类在覆写时无需再手动处理 - 修复每个
GeoBone仅处理一个PerBoneRenderTask的问题 - 新增
GeoBone#transformToBone - 将
PerBoneRender任务拆分为GeoRenderer#submitPerBoneRenderTasks - 移除多个
GeoRenderer方法调用中的skipPerBoneTasks参数,因其已不再需要 - 新增
PerBoneRenderTasks类,用于更清晰地管理日益复杂的骨骼级渲染任务 - 将
GeoArmorLayer的泛型类型限制为必须使用AvatarRenderState,因为所用模型实际需要该类型 - 新增
RenderStateUtil
变更内容
- 移植至 1.21.10
- 注意:此为 ALPHA 版本,在移除 alpha 标签前可能会有破坏性变更。
- 大多数
GeoRenderer不再填充PACKED_LIGHTDataTicket,因为基础RenderState类现在默认包含lightCoords - 新增
GeoRenderState#getPackedLight GeoRenderer#defaultRender已重命名为#submitRenderTasks,以更准确反映其当前功能(此时并未实际渲染)GeoRenderer#actuallyRender已重命名为#buildRenderTask,以更准确反映其功能GeoLayer#render已重命名为#buildRenderTask,以更准确反映其功能- 移除了
GeoRenderer#reRender。现在,渲染层或渲染器应通过GeoRenderer#buildRenderTask提交新的渲染任务。因此,渲染器方法中不再需要检查isReRender preRender、scaleModelForRender和adjustPositionForRender现在均移至预渲染事件检查之后执行- 新增
GeoRenderer#createRenderState - 移除了
GeoEntityRenderer#createBaseRenderState—— 请改用#createRenderState - 从默认设置中移除了多个 DataTicket,因其仅为原版已有属性的直接复制,此举旨在消除多源真相并提升性能
- GeckoLib 渲染器中的各类
Matrix4f变量现已移至 DataTicket - 移除了
GeoRenderer#doPostRenderCleanup - 在
GeoArmorLayer.RenderData中添加了关联的HumanoidModel
- 重写了
GeoArmorRenderer—— 现在应显著更易于使用和理解 - 修改
DefaultedEntityGeoModel,使其接受可自定义的骨骼名称,而非简单的布尔值 - 为各类
GeoRenderer添加了#withRenderLayer方法,支持函数式实例化 GeoObjectRenderer现在对其GeoRenderState使用泛型,以支持泛型扩展- 直接将
partialTick传递给GeoRenderer#addRenderData、GeoRenderLayer#addRenderData、GeoModel#prepareForRenderPass以及各类CompileRenderState事件/钩子(#762) - 将
GeoRenderer#adjustPositionForRender重命名为#adjustRenderPose,以更准确反映其预期用途 ItemArmorGeoLayer.RenderData现在使用GeoArmorRenderer.ArmorSegment,而非手动插槽和部件获取器- 使
GeoRenderEvent及其各类子事件兼容多加载器(multiloader) - 所有平台特定的 GeckoLib 事件现已拆分为独立类,便于查找和管理,例如
CompileBlockRenderLayersEvent
新增内容
- 新增“无状态”(Stateless)动画实体。这是处理 GeckoLib 动画实体动画的另一种方式。
- 参见:https://github.com/bernie-g/geckolib/wiki/Stateless-Animatable-Handling-(Geckolib5)
- 新增:
StatelessGeoBlockEntityStatelessGeoEntityStatelessGeoObjectStatelessGeoReplacedEntityStatelessGeoSingletonAnimatableStatelessAnimationController
- 新增
attack.punch默认动画常量 - 新增
misc.idle.flying默认动画常量 - 新增
move.dive默认动画常量 - 新增
DefaultAnimations#triggerOnlyController,用于创建专用于任意触发动画的控制器 - 新增
RawAnimation#getStageCount - 新增
AnimationController#getStateHandler - 新增
DefaultAnimations#genericWalkFlyIdleController - 为各类 GeckoLib 渲染器新增构造函数重载,可直接传入物品并基于其注册 ID 快速创建默认实例
- 例如:
new GeoEntityRenderer(ModEntities.MY_ENTITY);
- 例如:
- 新增
GeoRenderEvent#hasData - 新增
RenderUtil#getReplacedEntityRenderer - 新增
RenderUtil#getGeckoLibItemRenderer - 新增
RenderUtil#getGeckoLibEntityRenderer - 新增
RenderUtil#getGeckoLibBlockRenderer - 新增
RenderUtil#getGeckoLibArmorRenderer
问题修复
- 添加对双深度基岩关键帧的解析,因为我不清楚为何 Blockbench 会导出这种格式
- 修复在多人游戏中,其他玩家无法看到全新物品堆栈上触发的动画的问题
- 修复
AnimationController中部分错误的 Javadoc - 确保在传递给
GeoArmorRenderer提取前正确提取EntityRenderState
内部变更
- 将 GeckoLib 的数据包按文件夹重新组织
- 为
Animation.Stage添加StreamCodec实现 - 为
RawAnimation添加StreamCodec实现 - 为更多内部方法及所有 Mixin 添加 Javadoc 以提高可读性
- 改进了
GeoRenderEvent#getRenderData的 Javadoc - 移除了
RenderUtil#getCurrentSystemTick - 移除了
RenderUtil#booleanToFloat - 移除了
RenderUtil#getGeoModelForEntityType - 移除了
RenderUtil#getGeoModelForEntity - 移除了
RenderUtil#getGeoModelForItem - 移除了
RenderUtil#getGeoModelForBlock - 移除了
RenderUtil#getGeoModelForArmor - 将
RenderUtil#getCurrentTick移至ClientUtil - 将
RenderUtil#arrayToVec移至JsonUtil - 从
GeoRenderProvider#getGeoArmorRenderer中移除了部分冗余参数 - 将
ItemArmorGeoLayer#prepHumanoidModelForRender重命名为#positionModelPartFromBone
NeoForge 1.21.10
on 2026 Apr 25GeckoLib v5.3-alpha-2
Alpha 2 更新说明:
- 修复在较新版本 Forge 上加载时崩溃的问题 (#773)
- 修复未渲染完整套装时 GeoArmorRenderer 崩溃的问题 (#771)
BlockAndItemGeoLayer#renderStackForBone和#renderBlockForBone分别重命名为#submitItemStackRender和#submitBlockRender- 将
OBJECT_RENDER_POSE和MODEL_RENDER_POSEDataTickets 移至基础GeoRenderer,子类无需在覆盖方法中处理它们 - 修复每个
GeoBone仅处理一个PerBoneRenderTask的问题 - 新增
GeoBone#transformToBone - 将
PerBoneRender任务拆分至GeoRenderer#submitPerBoneRenderTasks - 移除多个
GeoRenderer方法调用中的skipPerBoneTasks,因其已不再需要 - 创建
PerBoneRenderTasks以更清晰地处理日益复杂的逐骨骼渲染任务 - 限制
GeoArmorLayer的泛型类型必须为AvatarRenderState,因为这是其模型实际所需的类型 - 新增
RenderStateUtil
变更内容
- 移植至 1.21.10
- 注意:此为 ALPHA 版本,移除 alpha 标签前可能包含破坏性变更。
- 大多数 GeoRenderers 不再填充 PACKED_LIGHT DataTicket,因为基础 RenderState 类现已默认包含
lightCoords - 新增
GeoRenderState#getPackedLight GeoRenderer#defaultRender已重命名为#submitRenderTasks,以更准确反映其当前功能(此时并未实际渲染)GeoRenderer#actuallyRender已重命名为#buildRenderTask,以更准确反映其功能GeoLayer#render已重命名为#buildRenderTask,以更准确反映其功能- 移除
GeoRenderer#reRender。渲染层或渲染器应通过GeoRenderer#buildRenderTask提交另一个渲染任务。因此,渲染器方法中不再需要检查isReRender preRender、scaleModelForRender和adjustPositionForRender均已移至预渲染事件检查之后- 新增
GeoRenderer#createRenderState - 移除
GeoEntityRenderer#createBaseRenderState—— 请改用#createRenderState - 从默认设置中移除多个 DataTickets(因它们只是现有原版属性的直接复制),以消除多重数据来源并提升性能
- GeckoLib 渲染器中的多个 Matrix4f 变量已移至 DataTickets
- 移除
GeoRenderer#doPostRenderCleanup - 在
GeoArmorLayer.RenderData中添加关联的 HumanoidModel
- 重写
GeoArmorRenderer—— 现在应该显著更易于使用和理解 - 修改 DefaultedEntityGeoModel,使其接受自定义骨骼名称而非简单的布尔值
- 在各类
GeoRenderer中新增#withRenderLayer,以支持函数式实例化 GeoObjectRenderer现在对其GeoRenderState使用泛型,允许泛型扩展- 直接将 partialTick 传递给
GeoRenderer#addRenderData、GeoRenderLayer#addRenderData、GeoModel#prepareForRenderPass以及各类CompileRenderState事件/钩子 (#762) - 将
GeoRenderer#adjustPositionForRender重命名为#adjustRenderPose,以更准确反映其预期用途 ItemArmorGeoLayer.RenderData现在使用GeoArmorRenderer.ArmorSegment而非手动插槽和部件获取器- 使
GeoRenderEvent及其各类子事件兼容多加载器 - 所有平台特定的 GeckoLib 事件现已拆分为独立类,便于查找和管理。例如:
CompileBlockRenderLayersEvent
新增内容
- 新增“无状态”动画对象。这是处理 GeckoLib 动画对象动画的另一种方式。
- 参见:https://github.com/bernie-g/geckolib/wiki/Stateless-Animatable-Handling-(Geckolib5)
- 新增:
StatelessGeoBlockEntityStatelessGeoEntityStatelessGeoObjectStatelessGeoReplacedEntityStatelessGeoSingletonAnimatableStatelessAnimationController
- 新增
attack.punch默认动画常量 - 新增
misc.idle.flying默认动画常量 - 新增
move.dive默认动画常量 - 新增
DefaultAnimations#triggerOnlyController,用于创建专门处理任意触发动画的控制器 - 新增
RawAnimation#getStageCount - 新增
AnimationController#getStateHandler - 新增
DefaultAnimations#genericWalkFlyIdleController - 为各类 GeckoLib 渲染器新增构造函数重载,可直接传入物品并使用对象注册 ID 创建默认实例,实现快速便捷处理
- 例如:
new GeoEntityRenderer(ModEntities.MY_ENTITY);
- 例如:
- 新增
GeoRenderEvent#hasData - 新增
RenderUtil#getReplacedEntityRenderer - 新增
RenderUtil#getGeckoLibItemRenderer - 新增
RenderUtil#getGeckoLibEntityRenderer - 新增
RenderUtil#getGeckoLibBlockRenderer - 新增
RenderUtil#getGeckoLibArmorRenderer
修复内容
- 添加双深度基岩关键帧解析,因为我完全不知道为什么 Blockbench 会导出这种格式
- 修复多人游戏中其他玩家对全新堆叠物品触发的动画无法正确显示的问题
- 修复 AnimationController 中部分错误的 javadoc
- 确保在传递给
GeoArmorRenderer进行提取前正确提取EntityRenderState
内部变更
- 将 GeckoLib 数据包重新组织到文件夹中
- 为
Animation.Stage新增 StreamCodec 实现 - 为
RawAnimation新增 StreamCodec 实现 - 为更多内部方法及所有 Mixin 添加 javadoc 以提高清晰度
- 改进
GeoRenderEvent#getRenderData的 Javadoc - 移除
RenderUtil#getCurrentSystemTick - 移除
RenderUtil#booleanToFloat - 移除
RenderUtil#getGeoModelForEntityType - 移除
RenderUtil#getGeoModelForEntity - 移除
RenderUtil#getGeoModelForItem - 移除
RenderUtil#getGeoModelForBlock - 移除
RenderUtil#getGeoModelForArmor - 将
RenderUtil#getCurrentTick移至ClientUtil - 将
RenderUtil#arrayToVec移至JsonUtil - 从
GeoRenderProvider#getGeoArmorRenderer中移除部分冗余参数 - 将
ItemArmorGeoLayer#prepHumanoidModelForRender重命名为#positionModelPartFromBone
NeoForge 1.21.10
on 2026 Apr 25GeckoLib v5.3-alpha-1
更改
-
移植至 1.21.10
- 注意:这是一个 ALPHA 版本,在移除 alpha 标签前可能会发生破坏性变更。
- 大多数 GeoRenderer 不再填充 PACKED_LIGHT DataTicket,因为基础 RenderState 类现在默认已包含
lightCoords - 新增
GeoRenderState#getPackedLight GeoRenderer#defaultRender已重命名为#submitRenderTasks,以更准确地反映其当前功能(此时实际并未进行渲染)GeoRenderer#actuallyRender已重命名为#buildRenderTask,以更准确地反映其功能GeoLayer#render已重命名为#buildRenderTask,以更准确地反映其功能GeoRenderer#reRender已被移除。现在应通过GeoRenderer#buildRenderTask提交另一个渲染任务来替代重渲染。因此,在渲染器方法中不再需要检查isReRenderpreRender、scaleModelForRender和adjustPositionForRender均已移至预渲染事件检查 之后- 新增
GeoRenderer#createRenderState - 移除了
GeoEntityRenderer#createBaseRenderState—— 请改用#createRenderState - 在默认设置中移除了多个 DataTicket,这些 DataTicket 只是原版已有属性的明显重复,此举旨在消除多重数据源并提升性能
- GeckoLib 渲染器中的各类 Matrix4f 变量现已移至 DataTicket
- 移除了
GeoRenderer#doPostRenderCleanup - 将关联的 HumanoidModel 添加到
GeoArmorLayer.RenderData中
-
重写了
GeoArmorRenderer—— 现在应该显著更易于使用和理解 -
修改 DefaultedEntityGeoModel,使其接受可自定义的骨骼名称,而非简单的布尔值
-
为各类
GeoRenderer添加了#withRenderLayer方法,以支持函数式实例化 -
GeoObjectRenderer现在对其GeoRenderState使用泛型,从而支持泛型扩展 -
直接将 partialTick 传递给
GeoRenderer#addRenderData、GeoRenderLayer#addRenderData、GeoModel#prepareForRenderPass以及各类CompileRenderState事件/钩子 (#762) -
将
GeoRenderer#adjustPositionForRender重命名为#adjustRenderPose,以更准确地反映其预期用途 -
ItemArmorGeoLayer.RenderData现在使用GeoArmorRenderer.ArmorSegment,而非手动的槽位和部件获取器 -
使
GeoRenderEvent及其各类子事件兼容多加载器(multiloader) -
所有平台特定的 GeckoLib 事件现已拆分为各自独立的类,以便更轻松地查找和管理。例如:
CompileBlockRenderLayersEvent
新增内容
-
新增“无状态”(Stateless)动画对象。这是处理 GeckoLib 动画对象动画的一种替代方式。
- 参见:https://github.com/bernie-g/geckolib/wiki/Stateless-Animatable-Handling-(Geckolib5)
- 新增:
StatelessGeoBlockEntityStatelessGeoEntityStatelessGeoObjectStatelessGeoReplacedEntityStatelessGeoSingletonAnimatableStatelessAnimationController
-
新增
attack.punch默认动画常量 -
新增
misc.idle.flying默认动画常量 -
新增
move.dive默认动画常量 -
新增
DefaultAnimations#triggerOnlyController,用于创建专用于任意触发动画的控制器 -
新增
RawAnimation#getStageCount -
新增
AnimationController#getStateHandler -
新增
DefaultAnimations#genericWalkFlyIdleController -
为各类 GeckoLib 渲染器新增了一个构造函数重载,该构造函数直接接收物品并使用该对象注册的 ID 创建默认实例,便于快速简便地处理
- 例如:
new GeoEntityRenderer(ModEntities.MY_ENTITY);
- 例如:
-
新增
GeoRenderEvent#hasData -
新增
RenderUtil#getReplacedEntityRenderer -
新增
RenderUtil#getGeckoLibItemRenderer -
新增
RenderUtil#getGeckoLibEntityRenderer -
新增
RenderUtil#getGeckoLibBlockRenderer -
新增
RenderUtil#getGeckoLibArmorRenderer
错误修复
- 添加双层深度 bedrock 关键帧解析,因为我不清楚为何 Blockbench 会导出这种格式
- 修复了在多人游戏中,其他玩家看到全新物品堆栈时触发动画无视觉效果的问题
- 修复了 AnimationController 中部分不正确的 Javadoc
- 确保在传递给
GeoArmorRenderer进行提取前,正确提取EntityRenderState
内部更改
- 将 GeckoLib 的数据包重新组织到文件夹中
- 为
Animation.Stage添加了 StreamCodec 实现 - 为
RawAnimation添加了 StreamCodec 实现 - 为更多内部方法及所有 Mixin 添加了 Javadoc,以提高清晰度
- 改进了
GeoRenderEvent#getRenderData的 Javadoc - 移除了
RenderUtil#getCurrentSystemTick - 移除了
RenderUtil#booleanToFloat - 移除了
RenderUtil#getGeoModelForEntityType - 移除了
RenderUtil#getGeoModelForEntity - 移除了
RenderUtil#getGeoModelForItem - 移除了
RenderUtil#getGeoModelForBlock - 移除了
RenderUtil#getGeoModelForArmor - 将
RenderUtil#getCurrentTick移至ClientUtil - 将
RenderUtil#arrayToVec移至JsonUtil - 从
GeoRenderProvider#getGeoArmorRenderer中移除了部分冗余参数 - 将
ItemArmorGeoLayer#prepHumanoidModelForRender重命名为#positionModelPartFromBone
Forge 1.21.10
on 2026 Apr 25GeckoLib v5.3-alpha-1
变更
- 移植至 1.21.10
- 注意:此为 ALPHA 版本,移除 alpha 标签前可能发生破坏性变更。
- 大多数 GeoRenderer 不再填充 PACKED_LIGHT DataTicket,因为基础 RenderState 类现在默认包含
lightCoords - 新增
GeoRenderState#getPackedLight GeoRenderer#defaultRender已重命名为#submitRenderTasks,以更准确反映其当前功能(调用时实际并未渲染)GeoRenderer#actuallyRender已重命名为#buildRenderTask,以更准确反映其功能GeoLayer#render已重命名为#buildRenderTask,以更准确反映其功能- 移除
GeoRenderer#reRender。渲染层或渲染器应通过GeoRenderer#buildRenderTask提交另一个渲染任务。因此,渲染器方法中不再需要检查isReRender preRender、scaleModelForRender和adjustPositionForRender均已移至预渲染事件检查_之后_- 新增
GeoRenderer#createRenderState - 移除
GeoEntityRenderer#createBaseRenderState—— 请改用#createRenderState - 从默认设置中移除多个 DataTicket(因其仅为现有原版属性的明显复制品),以消除多重数据源并提升性能
- GeckoLib 渲染器中的各类 Matrix4f 变量已移至 DataTicket
- 移除
GeoRenderer#doPostRenderCleanup - 在
GeoArmorLayer.RenderData中添加关联的 HumanoidModel
- 重写
GeoArmorRenderer—— 现在应该显著更易于使用和理解 - 将 DefaultedEntityGeoModel 改为接受可自定义骨骼名称,而非单一布尔值
- 在各类
GeoRenderer中新增#withRenderLayer,以支持函数式实例化 GeoObjectRenderer现在对其GeoRenderState使用泛型,允许泛型扩展- 直接将 partialTick 传递给
GeoRenderer#addRenderData、GeoRenderLayer#addRenderData、GeoModel#prepareForRenderPass以及各类CompileRenderState事件/钩子 (#762) - 将
GeoRenderer#adjustPositionForRender重命名为#adjustRenderPose,以更准确反映其预期用途 ItemArmorGeoLayer.RenderData现在使用GeoArmorRenderer.ArmorSegment,而非手动插槽与部件获取器- 使
GeoRenderEvent及其各类子事件兼容 multiloader - 所有平台特定的 GeckoLib 事件现已拆分为独立类,以便更轻松地查找和管理。例如:
CompileBlockRenderLayersEvent
新增内容
- 新增“无状态”动画对象。这是处理 GeckoLib 动画对象动画的另一种方式。
- 参见:https://github.com/bernie-g/geckolib/wiki/Stateless-Animatable-Handling-(Geckolib5)
- 新增:
StatelessGeoBlockEntityStatelessGeoEntityStatelessGeoObjectStatelessGeoReplacedEntityStatelessGeoSingletonAnimatableStatelessAnimationController
- 新增
attack.punch默认动画常量 - 新增
misc.idle.flying默认动画常量 - 新增
move.dive默认动画常量 - 新增
DefaultAnimations#triggerOnlyController,用于创建专门处理任意触发动画的控制器 - 新增
RawAnimation#getStageCount - 新增
AnimationController#getStateHandler - 新增
DefaultAnimations#genericWalkFlyIdleController - 为各类 GeckoLib 渲染器新增构造函数重载,可直接传入物品并使用对象注册 ID 创建默认实例,实现快速便捷处理
- 例如:
new GeoEntityRenderer(ModEntities.MY_ENTITY);
- 例如:
- 新增
GeoRenderEvent#hasData - 新增
RenderUtil#getReplacedEntityRenderer - 新增
RenderUtil#getGeckoLibItemRenderer - 新增
RenderUtil#getGeckoLibEntityRenderer - 新增
RenderUtil#getGeckoLibBlockRenderer - 新增
RenderUtil#getGeckoLibArmorRenderer
修复问题
- 添加双深度 bedrock 关键帧解析,原因不明(Blockbench 导出如此)
- 修复多人游戏中全新堆叠物品的触发动画对其他玩家无视觉效果的问题
- 修复 AnimationController 中部分错误的 javadoc
- 确保在传递给
GeoArmorRenderer提取前正确提取EntityRenderState
内部变更
- 将 GeckoLib 数据包重组至文件夹中
- 为
Animation.Stage新增 StreamCodec 实现 - 为
RawAnimation新增 StreamCodec 实现 - 为更多内部方法及所有 mixin 添加 javadoc 以明确说明
- 改进
GeoRenderEvent#getRenderData的 Javadoc - 移除
RenderUtil#getCurrentSystemTick - 移除
RenderUtil#booleanToFloat - 移除
RenderUtil#getGeoModelForEntityType - 移除
RenderUtil#getGeoModelForEntity - 移除
RenderUtil#getGeoModelForItem - 移除
RenderUtil#getGeoModelForBlock - 移除
RenderUtil#getGeoModelForArmor - 将
RenderUtil#getCurrentTick移至ClientUtil - 将
RenderUtil#arrayToVec移至JsonUtil - 从
GeoRenderProvider#getGeoArmorRenderer中移除部分冗余参数 - 将
ItemArmorGeoLayer#prepHumanoidModelForRender重命名为#positionModelPartFromBone
NeoForge 1.21.1
on 2026 Apr 25v4.8.1
- 将 NeoForge 的网络注册设为可选,允许仅在客户端使用 GeckoLib
Forge 1.21.1
on 2026 Apr 25v4.8.1
- 使 NeoForge 的网络注册变为可选,允许仅在客户端使用 GeckoLib
NeoForge 1.21.1
on 2026 Apr 25v4.7.7
- 正确处理在尝试对动画纹理应用发光遮罩时抛出的异常(Pull #758)
- 将 DefaultedEntityGeoModel 的头部转向逻辑改为使用可为空的骨骼名称输入,而非简单的布尔值(#753)
- 修复了某些特定 Bedrock 格式的动画在使用新版 Blockbench 导出时无法解析的问题
Forge 1.21.1
on 2026 Apr 25v4.7.7
- 正确处理对带动画的纹理应用发光遮罩(glowmask)时抛出的异常(Pull #758)
- 修改 DefaultedEntityGeoModel,使其头部转向功能使用可为空的骨骼名称输入,而非简单的布尔值(#753)
- 修复了某些特定 Bedrock 格式的动画在使用新版 Blockbench 导出时解析失败的问题
NeoForge 1.21.8
on 2026 Apr 25GeckoLib v5.2.2
问题修复
- 修复了 AnimationProcessor 中错误信息的一处拼写错误
- 修复了 GeoModel 中对后备资源位置的错误处理
内部调整
- 优化了 GeoArmorRenderer 的虚拟 ID 查找逻辑,以提升微性能
Forge 1.21.8
on 2026 Apr 25GeckoLib v5.2.2
修复的错误
- 修复了 AnimationProcessor 中错误信息的一个拼写错误
- 修复了 GeoModel 中对后备位置的错误处理
内部调整
- 调整了 GeoArmorRenderer 的虚拟 ID 查找逻辑,以提升微性能
NeoForge 1.21.7
on 2026 Apr 25GeckoLib v5.2.1
移植至 1.21.7
错误修复
- 临时修复实体物品渲染不可见的问题。可能需要进行破坏性变更才能彻底解决,很快就会有结果
Forge 1.21.7
on 2026 Apr 25GeckoLib v5.2.1
移植至 1.21.7
错误修复
- 临时修复 Entity Item 渲染不可见的问题。可能需要进行破坏性更改才能彻底解决,具体情况将很快确认
NeoForge 1.21.6
on 2026 Apr 25GeckoLib v5.2.0
破坏性变更 - 抱歉!
新增内容
- GeoItemRenderer 的渲染对象已从 ItemStack 更改为 GeoItemRenderer$RenderData。
- 这意味着 GeoItemRenderer 现在可以访问一些额外的上下文对象,包括持有该物品的玩家。
问题修复
- 修复了 GeoItem 在
AnimationTest阶段无法使用ItemRenderContext的问题(#735)
Forge 1.21.6
on 2026 Apr 25GeckoLib v5.2.0
破坏性变更 - 抱歉!
新增内容
- GeoItemRenderer 的渲染对象已从 ItemStack 更改为 GeoItemRenderer$RenderData。
- 这意味着 GeoItemRenderer 现在可以访问一些额外的上下文对象,包括持有该物品的玩家。
问题修复
- 修复了在
AnimationTest阶段 GeoItem 无法获取ItemRenderContext的问题 (#735)
NeoForge 1.21.1
on 2026 Apr 25v4.7.6
- 清理 GeckoLibUtil#getSyncedAnimatable 的 Javadoc 和参数命名
- 允许手动更改的 GeckoLib 物品堆叠 ID(???)能像普通情况一样同步
- 修复 GeoArmorRenderer 在未注册为同步动画实体时共享其动画的问题(#730)
Forge 1.21.1
on 2026 Apr 25v4.7.6
- 清理 GeckoLibUtil#getSyncedAnimatable 的 Javadoc 和参数命名
- 允许手动更改的 GeckoLib 堆栈 ID(???)像往常一样同步
- 修复 GeoArmorRenderer 在未注册为同步动画对象时共享其动画的问题 (#730)
NeoForge 1.21.5
on 2026 Apr 25GeckoLib v5.1.0
新增内容
- 新增
AutoGlowingGeoLayer#shouldAddZOffset—— 一个开关,用于提升对特定渲染类型或特殊情况的兼容性 - 新增
AutoGlowingGeoLayer#getBrightness—— 一个可配置值,用于调整自发光层的亮度
更改内容
- 在
AutoGlowingGeoLayer#shouldRespectWorldLighting方法参数中添加了 RenderState - 少量代码清理
问题修复
- 修复 GeoArmorRenderer 不支持 Glowmasks 的问题。此修复需要小幅重写,会造成轻微破坏性变更,敬请谅解。
- 修复当 GeoArmorRenderer 未注册为可同步的 GeoAnimatable 时,在多个穿戴实例间共享动画的问题(#730)



