Fabric 1.21.11
on 2025 Dec 10GeckoLib v5.4-alpha-1
变更内容:
NeoForge 1.21.11
on 2025 Dec 10GeckoLib v5.4-alpha-1
变更:
NeoForge 1.21.10
on 2025 Nov 05GeckoLib v5.3-alpha-3
Alpha 3 更新说明:
- 修复了加载世界时崩溃的问题 (#776)
- 对护甲渲染和 ItemArmorGeoLayer 进行了更多内部调整
- 抱歉通知,下一个版本还将带来更多的 API 变动 :(
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 标签前可能会有破坏性更改。
- 大多数 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均已移至 preRender 事件检查之后执行- 新增
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及其各类子事件支持多加载器平台 - 所有平台特定的 GeckoLib 事件现已拆分为独立类,便于查找与管理。例如:
CompileBlockRenderLayersEvent
新增功能
- 新增“无状态”可动画对象(Stateless Animatables)。这是处理 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
Bug 修复
- 添加对双深度 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 2025 Nov 05GeckoLib v5.3-alpha-3
Alpha 3 说明:
- 修复了加载世界时的崩溃问题 (#776)
- 对护甲渲染和 ItemArmorGeoLayer 进行了更多内部修改
- 很抱歉,下一个版本还将带来更多的 API 变动 :(
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 标签移除前可能会有破坏性变更。
- 大多数 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均已移至 preRender 事件检查之后执行- 新增
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及其各类子事件支持多加载器平台 - 所有平台特定的 GeckoLib 事件现已拆分为独立类,便于查找和管理。例如:
CompileBlockRenderLayersEvent
新增功能
- 新增“无状态”可动画对象(Stateless Animatables)。这是处理 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
Bug 修复
- 添加对双深度 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
Fabric 1.21.10
on 2025 Nov 05GeckoLib v5.3-alpha-3
Alpha 3 说明:
- 修复了加载世界时崩溃的问题 (#776)
- 对护甲渲染和 ItemArmorGeoLayer 进行了更多内部调整
- 很抱歉,下一个版本还将带来更多的 API 变动 :(
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_LIGHT DataTicket,因为基础 RenderState 类现在默认包含
lightCoords - 新增
GeoRenderState#getPackedLight GeoRenderer#defaultRender已重命名为#submitRenderTasks,以更准确反映其功能(此时并未真正执行渲染)GeoRenderer#actuallyRender已重命名为#buildRenderTask,以更准确反映其功能GeoLayer#render已重命名为#buildRenderTask,以更准确反映其功能- 移除了
GeoRenderer#reRender。取而代之的是,渲染层或渲染器应通过GeoRenderer#buildRenderTask提交新的渲染任务。因此,你不再需要在渲染器方法中检查isReRender preRender、scaleModelForRender和adjustPositionForRender均已移至 preRender 事件检查之后执行- 新增
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及其各类子事件支持多加载器环境 - 所有平台特定的 GeckoLib 事件现已拆分为独立类,便于查找和管理。例如:
CompileBlockRenderLayersEvent
新增功能
- 新增“无状态”可动画对象(Stateless Animatables)。这是处理 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
Bug 修复
- 添加对双深度 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 2025 Nov 05GeckoLib 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 标签移除前可能包含破坏性变更。
- 大多数 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现在均在 preRender 事件检查之后执行- 新增
GeoRenderer#createRenderState - 移除
GeoEntityRenderer#createBaseRenderState—— 改用#createRenderState - 从默认设置中移除多个 DataTicket,这些原本只是对现有原版属性的重复拷贝,此举可消除多数据源并提升性能
- 将 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
新增功能
- 新增“无状态”可动画对象(Stateless Animatables)。这是处理 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
Bug 修复
- 添加对双深度 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.10
on 2025 Nov 05GeckoLib 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_LIGHT DataTicket,因为基础 RenderState 类现在默认包含
lightCoords - 新增
GeoRenderState#getPackedLight GeoRenderer#defaultRender已重命名为#submitRenderTasks,以更准确反映其功能(此时并未真正执行渲染)GeoRenderer#actuallyRender已重命名为#buildRenderTask,以更准确反映其功能GeoLayer#render已重命名为#buildRenderTask,以更准确反映其功能- 移除了
GeoRenderer#reRender。取而代之的是,渲染层或渲染器应通过GeoRenderer#buildRenderTask提交新的渲染任务。因此,你不再需要在渲染器方法中检查isReRender preRender、scaleModelForRender和adjustPositionForRender现在都移动到了 preRender 事件检查之后- 新增
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及其各类子事件支持多加载器环境 - 所有平台特定的 GeckoLib 事件现已拆分为独立类,便于查找和管理。例如:
CompileBlockRenderLayersEvent
新增功能
- 新增“无状态”可动画对象(Stateless Animatables)。这是处理 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
Bug 修复
- 添加对双层 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
Fabric 1.21.10
on 2025 Nov 05GeckoLib 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_LIGHT DataTicket,因为基础 RenderState 类默认已包含
lightCoords - 新增
GeoRenderState#getPackedLight GeoRenderer#defaultRender已重命名为#submitRenderTasks,以更准确反映其功能(此时并未真正执行渲染)GeoRenderer#actuallyRender已重命名为#buildRenderTask,以更准确反映其功能GeoLayer#render已重命名为#buildRenderTask,以更准确反映其功能- 移除了
GeoRenderer#reRender。取而代之的是,渲染层或渲染器应通过GeoRenderer#buildRenderTask提交新的渲染任务。因此,现在无需再检查isReRender preRender、scaleModelForRender和adjustPositionForRender现在均在 preRender 事件检查之后执行- 新增
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及其各类子事件支持多加载器环境 - 所有平台特定的 GeckoLib 事件现已拆分为独立类,便于查找和管理。例如:
CompileBlockRenderLayersEvent
新增功能
- 新增“无状态”可动画对象(Stateless Animatables)。这是处理 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
Bug 修复
- 添加对双层 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.10
on 2025 Oct 13GeckoLib v5.3-alpha-1
变更内容
- 移植至 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现在都已移至 preRender 事件检查之后- 新增
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
新增功能
- 新增“无状态”可动画对象(Stateless Animatables)。这是处理 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
Bug 修复
- 添加对双深度 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 2025 Oct 13GeckoLib v5.3-alpha-1
变更内容
- 移植至 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
新增功能
- 新增“无状态”可动画对象(Stateless Animatables)。这是处理 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
Bug 修复
- 添加对双深度 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
Fabric 1.21.10
on 2025 Oct 13GeckoLib v5.3-alpha-1
变更内容
- 移植至 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
新增功能
- 新增“无状态”可动画对象(Stateless Animatables)。这是处理 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
Bug 修复
- 添加对双深度 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.1
on 2025 Oct 08NeoForge 1.21.1
on 2025 Oct 08Fabric 1.21.1
on 2025 Oct 08v4.8.1
- 使 NeoForge 的网络注册变为可选,允许仅在客户端使用 GeckoLib
NeoForge 1.21.1
on 2025 Aug 24v4.7.7
- 在尝试为动画纹理添加辉光蒙版时正确处理异常(拉取请求 #758)
- 将 DefaultedEntityGeoModel 更改为使用可空的骨骼名称输入来进行头部转动,而不是使用简单的布尔值(#753)
- 修复了某些特定的基岩格式动画在 Blockbench 较新版本中导出时无法解析的问题
Forge 1.21.1
on 2025 Aug 24v4.7.7
- 在尝试为动画纹理添加辉光遮罩时正确处理异常(拉取请求 #758)
- 将 DefaultedEntityGeoModel 更改为使用可空的骨骼名称输入来进行头部转动,而不是使用简单的布尔值(#753)
- 修复了某些特定的基岩格式动画在 Blockbench 新版本中导出时无法解析的问题
Fabric 1.21.1
on 2025 Aug 24v4.7.7
- 在尝试为动画纹理添加辉光遮罩时正确处理异常(拉取请求 #758)
- 将 DefaultedEntityGeoModel 更改为使用可空的骨骼名称输入来进行头部转动,而不是使用扁平的布尔值(#753)
- 修复了一些特定的基岩格式动画在 Blockbench 的较新版本中导出时无法解析的问题
NeoForge 1.21.8
on 2025 Aug 08GeckoLib v5.2.2
错误修复
- 修复了 AnimationProcessor 中错误消息中的拼写错误
- 修复了 GeoModel 中回退位置的错误处理
内部
- 调整了 GeoArmorRenderer 的虚拟 ID 查找,以提高微性能
Forge 1.21.8
on 2025 Aug 08Fabric 1.21.8
on 2025 Aug 08GeckoLib v5.2.2
Bug 修复
- 修复了 AnimationProcessor 中错误消息中的拼写错误
- 修复了 GeoModel 中回退位置的错误处理
内部
- 调整了 GeoArmorRenderer 的虚拟 ID 查找,以提高微性能


