Fabric 26.1.2-5.5.1
on 2026 Apr 12GeckoLib v5.5.1
变更
API
- 添加了
CustomBoneTextureGeoLayer#shouldRenderBone,以支持处理自定义隐藏的骨骼
Bug 修复
- 修复了
query.limb_swing插值不正确的问题(#834)
NeoForge 26.1-5.5
on 2026 Mar 24GeckoLib v5.5
- 移植到 26.1
变更
API
- 将 GeckoLib 的基础包从
software.bernie.geckolib重构为com.geckolib - 添加了
GeoLocator- 一种用于定位器的对象实现。它们仅用于监听渲染位置- 添加了
BakedGeoModel#getLocator和BakedGeoModel#locators - 添加了
GeoBone#locators - 添加了
RenderPassUtil#addLocatorPositionListener - 将
GeoBone#updateBonePositionListeners提取为RenderUtil#providePositionsToListeners
- 添加了
- 修改了 GeckoLib 的资源加载方式,以允许完全自定义的资源格式
- 提供对
Resource实例的根级访问。编写一个适配器,即可从你想要的任何格式中读取资源文件! - 将
GeckoLibLoader从 SPI 改为可注册接口 - 添加了
GeckoLibUtil#addResourceLoader - 移除了
GeckoLibUtil#addCustomBakedModelFactory - 将
BakedGeoModel转换为非 record、可扩展的类,以便潜在的第三方适配器使用 - 将
Animation转换为非 record、可扩展的类,以便潜在的第三方适配器使用 - 将
ModelProperties转换为非 record、可扩展的类,以便潜在的第三方适配器使用 - 将
MathParser改回可实例化对象,以支持可扩展实现,并为其添加了去重方案,同时进行了整体清理 - 改进了
MathParser的去重方案,进一步降低内存占用 - 移除了
BakedAnimationsAdapter和KeyFrameMarkersAdapter - 移除了旧版加载对象:
BoneCubeFaceUVLocatorClassLocatorValueMinecraftGeometryModelPolyMeshPolysUnionTextureMeshUVFacesUVUnionBoneStructureGeometryTree- 将
ModelProperties移动到geckolib.cache.model - 将
BakedAnimations移动到geckolib.cache.animation
- 提供对
- 清理了
EasingType- 为
EasingType和GeckoLibUtil添加了无参数工厂构造器 - 添加了
EasingState#interpolate - 添加了
EasingState#getFirstEasingArg - 添加了
EasingType#modifyKeyframes - 将
EasingType#register改为返回泛型类型,而不是EasingType - 移除了
EasingType#easeIn - 移除了
EasingType#lerpWithOverride - 移除了
EasingType#fromJson
- 为
- 添加了
BakedAnimationCache#size和BakedModelCache#size - 为
BakedGeoModel的ModelProperties添加了.json资源路径 - 移除了
GeoReplacedEntity#getReplacingEntityType,因为它已不再使用 - 将所有 Javadocs 转换为 Markdown 格式
- 折叠了
BakedGeoModel和GeoBone中的内部实现方法,以优化 API 可见性 - 移除了基于 TokenType 的
DataTickets的类参数,并正确为内置 GeckoLib tickets 添加了类型 - 移除了
MiscUtil#WORLD_TO_MODEL_SIZE - 移除了
MiscUtil#MODEL_TO_WORLD_SIZE - 添加了
JsonUtil#worldToModelUnits和JsonUtil#modelToWorldUnits - 从以下类中移除了渲染状态的双类型泛型:
DirectionalProjectileRendererDyeableGeoArmorRendererGeoArmorRendererGeoBlockRendererGeoEntityRendererGeoReplacedEntityRenderer
- 将
ModelFormatVersion移动到com.geckolib.loading.definition.geometry.object - 将
Rotation重命名为UvFaceRotation,并移动到com.geckolib.loading.definition.geometry.object - 由于已不再使用,移除了
DefaultedEntityGeoModel中的headBone及其相关构造器 - 为
DefaultedBlockGeoModel、DefaultedEntityGeoModel和DefaultedItemGeoModel添加了直接对象构造器 - 移除了
GeckoLibPlatform#getGameDir,因为它已不再使用 - 移除了
SerializableDataTickets。自 1.21.x 早期版本以来,它们在 GeckoLib 中就已经没有位置了,而且始终存在无法解决的实现问题。 - 添加了
VanillaModelModifier- 这主要是一个内部实现类,用来弥补原版实现留下的空缺 - 修复并重新启用了
ItemArmorGeoLayer,并为非Equippable物品添加了支持 GeoRenderer#performRenderPass现在在开始渲染通道时支持多个预制BoneUpdaters- 按照 Minecraft 标准,将渲染中的一些
BlockState和ItemStack引用转换为ItemStackRenderState和BlockModelRenderState- 原版尚未建立能让这套系统无处不在的完整机制,所以我只是尽可能在能做的地方做了
- 添加了
RenderUtil#createRenderStateForItem - 添加了
RenderUtil#createRenderStateForBlock
- 添加了
DataTickets#create,作为创建 DataTickets 的快捷/辅助方法 - 将
DataTicket.GLOW_COLOUR更改为DataTicket.OUTLINE_COLOR - 将
DataTicket.BLOCK_FACING移动到GeoBlockRenderer.DIRECTION_FACING - 将
DataTicket.ITEM移动到GeoItemRenderer.CURRENT_ITEM - 将
DataTicket.EQUIPMENT_SLOT移动到GeoArmorRenderer.CURRENT_SLOT - 将
DataTicket.IS_GECKOLIB_WEARER移动到GeoArmorRenderer.IS_GECKOLIB_WEARER - 将
DataTicket.HUMANOID_MODEL移动到GeoArmorRenderer.BASE_MODEL - 在
GeoBlockRenderer的构造器中添加了BlockEntityRendererProvider.Context
其他
- 将
1.16.0和1.19.30添加到已知的几何模型定义中 - 提升了资源加载性能
- 为
BlockEntityRenderState->GeoRenderState添加了接口注入 - GeckoLib 在无法找到模型时将不再崩溃;取而代之的是渲染一个缺失材质的立方体
Bug 修复
- 修复了
RenderUtil#transformToBone以反向顺序运行的问题 - 修复了
AnimationController使用了错误 InternalApi 注解的问题 - 修复了顶层骨骼不总是向
BonePositionListeners提供正确位置的问题 - 修复了 GeckoLib 模型骨骼在嵌套于父骨骼下时不按正确顺序渲染的问题
- 修复了 GeckoLib 模型加载未正确遵循
mirror和inflate值的问题 - 减少了 0 深度立方体背面的 z-fighting。别再把你的立方体做成 0 厚度了!
Fabric 26.1-5.5
on 2026 Mar 24GeckoLib v5.5
- 移植到 26.1
变更
API
- 将 GeckoLib 的基础包从
software.bernie.geckolib重构为com.geckolib - 添加了
GeoLocator—— 用于定位器的对象实现。它们仅用于监听渲染位置- 添加了
BakedGeoModel#getLocator和BakedGeoModel#locators - 添加了
GeoBone#locators - 添加了
RenderPassUtil#addLocatorPositionListener - 将
GeoBone#updateBonePositionListeners提取为RenderUtil#providePositionsToListeners
- 添加了
- 修改了 GeckoLib 的资源加载方式,以支持完全自定义的资源格式
- 提供对
Resource实例的根级访问。你可以编写一个适配器,从任意你想要的格式中读取资源文件! - 将
GeckoLibLoader从 SPI 改为可注册接口 - 添加了
GeckoLibUtil#addResourceLoader - 移除了
GeckoLibUtil#addCustomBakedModelFactory - 将
BakedGeoModel转换为非 record、可继承的类,以支持潜在的第三方适配器 - 将
Animation转换为非 record、可继承的类,以支持潜在的第三方适配器 - 将
ModelProperties转换为非 record、可继承的类,以支持潜在的第三方适配器 - 将
MathParser改回可实例化对象,以支持可扩展实现,并为其添加了去重方案,同时进行了整体清理 - 改进了
MathParser的去重方案,进一步降低了内存占用 - 移除了
BakedAnimationsAdapter和KeyFrameMarkersAdapter - 移除了旧版加载对象:
BoneCubeFaceUVLocatorClassLocatorValueMinecraftGeometryModelPolyMeshPolysUnionTextureMeshUVFacesUVUnionBoneStructureGeometryTree- 将
ModelProperties移动到geckolib.cache.model - 将
BakedAnimations移动到geckolib.cache.animation
- 提供对
- 清理了
EasingType- 为
EasingType和GeckoLibUtil添加了无参数工厂构造方法 - 添加了
EasingState#interpolate - 添加了
EasingState#getFirstEasingArg - 添加了
EasingType#modifyKeyframes - 将
EasingType#register的返回类型改为泛型,而不是EasingType - 移除了
EasingType#easeIn - 移除了
EasingType#lerpWithOverride - 移除了
EasingType#fromJson
- 为
- 添加了
BakedAnimationCache#size和BakedModelCache#size - 为
BakedGeoModel的ModelProperties添加了.json资源路径 - 移除了
GeoReplacedEntity#getReplacingEntityType,因为它已不再使用 - 将所有 Javadocs 转换为 Markdown 格式
- 为了 API 可见性,折叠了
BakedGeoModel和GeoBone中的内部实现方法 - 移除了基于 TokenType 的
DataTickets的类参数,并为 GeckoLib 内置 tickets 正确添加了类型 - 移除了
MiscUtil#WORLD_TO_MODEL_SIZE - 移除了
MiscUtil#MODEL_TO_WORLD_SIZE - 添加了
JsonUtil#worldToModelUnits和JsonUtil#modelToWorldUnits - 从以下类中移除了渲染状态的双类型泛型:
DirectionalProjectileRendererDyeableGeoArmorRendererGeoArmorRendererGeoBlockRendererGeoEntityRendererGeoReplacedEntityRenderer
- 将
ModelFormatVersion移动到com.geckolib.loading.definition.geometry.object - 将
Rotation重命名为UvFaceRotation,并移动到com.geckolib.loading.definition.geometry.object - 由于已不再使用,移除了
DefaultedEntityGeoModel中的headBone及其相关构造器 - 为
DefaultedBlockGeoModel、DefaultedEntityGeoModel和DefaultedItemGeoModel添加了直接对象构造器 - 移除了
GeckoLibPlatform#getGameDir,因为它已不再使用 - 移除了
SerializableDataTickets。自 1.21.x 早期版本以来,它们在 GeckoLib 中就已经没有合适的位置,而且始终存在无法解决的实现问题。 - 添加了
VanillaModelModifier—— 这主要是一个内部实现类,用于弥补原版实现留下的空缺 - 修复并重新启用了
ItemArmorGeoLayer,并添加了对非Equippable物品的支持 GeoRenderer#performRenderPass现在在开始渲染通道时支持多个预制BoneUpdaters- 根据 Minecraft 标准,将渲染中的部分
BlockState和ItemStack引用转换为ItemStackRenderState和BlockModelRenderState- 原版目前还没有把这些系统全面铺开,所以我只能先在能做的地方进行处理
- 添加了
RenderUtil#createRenderStateForItem - 添加了
RenderUtil#createRenderStateForBlock
- 添加了
DataTickets#create,作为创建 DataTickets 的快捷/辅助方法 - 将
DataTicket.GLOW_COLOUR改为DataTicket.OUTLINE_COLOR - 将
DataTicket.BLOCK_FACING移动到GeoBlockRenderer.DIRECTION_FACING - 将
DataTicket.ITEM移动到GeoItemRenderer.CURRENT_ITEM - 将
DataTicket.EQUIPMENT_SLOT移动到GeoArmorRenderer.CURRENT_SLOT - 将
DataTicket.IS_GECKOLIB_WEARER移动到GeoArmorRenderer.IS_GECKOLIB_WEARER - 将
DataTicket.HUMANOID_MODEL移动到GeoArmorRenderer.BASE_MODEL - 在
GeoBlockRenderer的构造器中添加了BlockEntityRendererProvider.Context
其他
- 将
1.16.0和1.19.30添加到已知几何模型定义中 - 提升了资源加载性能
- 为
BlockEntityRenderState->GeoRenderState添加了接口注入 - 当无法找到模型时,GeckoLib 将不再崩溃;取而代之的是渲染一个缺失材质的立方体
Bug 修复
- 修复了
RenderUtil#transformToBone以反向顺序运行的问题 - 修复了
AnimationController使用了错误的 InternalApi 注解的问题 - 修复了顶级骨骼并不总是能向
BonePositionListeners提供正确位置的问题 - 修复了 GeckoLib 模型骨骼在嵌套于父骨骼下时未按正确顺序渲染的问题
- 修复了 GeckoLib 模型加载未正确遵循
mirror和inflate值的问题 - 减少了 0 深度立方体背面的 z-fighting。别再把你的立方体做成 0 厚度了!
NeoForge 1.21.11-5.4.5
on 2026 Mar 03GeckoLib v5.4.5
错误修复
- 修复了动画在结束时有时会过渡到自身的问题
- 修复了 CustomBoneTextureGeoLayer 未在正确位置渲染的问题
- 修复了 MathParser 未能正确解析组内负数的问题
Forge 1.21.11-5.4.5
on 2026 Mar 03GeckoLib v5.4.5
修复的错误
- 修复了动画在结束时有时会过渡到自身的问题
- 修复了 CustomBoneTextureGeoLayer 未在正确位置渲染的问题
- 修复了 MathParser 未能正确解析组内负数的问题
Fabric 1.21.11-5.4.5
on 2026 Mar 03GeckoLib v5.4.5
修复的错误
- 修复了动画在结束时有时会过渡到自身的问题
- 修复了 CustomBoneTextureGeoLayer 渲染位置不正确的问题
- 修复了 MathParser 无法正确解析组内负数的问题
NeoForge 1.21.11-5.4.4
on 2026 Feb 27GeckoLib v5.4.4
更改
API
- 新增
RenderPassInfo#getPreRenderMatrixPose与RenderPassInfo#getModelRenderMatrixPose,用于捕获完整的 PoseStack 姿态,而不仅限于矩阵姿态本身 - 新增
OverridingDataTicket—— 一种DataTicket实现,优先使用已存在的 RenderState 字段值,再应用自身逻辑- 此机制可捕获那些在渲染器提取后、由原版或其他模组修改的 RenderState 字段值(修复 #818)
错误修复
- 修复循环动画有时导致实体消失的问题
- 修复 GeckoLib 在关键帧键为空字符串时无法加载动画的问题
- 修复
RenderUtil#transformToBone对PoseStack执行反向操作的问题(#819) - 修复
RenderUtil#transformToBone未考虑回退至支点位置的问题(#822) - 修复
MathParser有时错误解析数学表达式的问题(#820) - 修复未注册为同步动画实体的
GeoItem有时发生 ID 冲突的问题 - 修复在极特定情况下某些动画偶尔重复播放最后几帧的问题
Forge 1.21.11-5.4.4
on 2026 Feb 27GeckoLib v5.4.4
更改
API
- 新增
RenderPassInfo#getPreRenderMatrixPose与RenderPassInfo#getModelRenderMatrixPose,用于捕获完整的 PoseStack 姿态,而不仅限于矩阵姿态本身 - 新增
OverridingDataTicket—— 一种DataTicket实现,优先使用已存在的 RenderState 字段值,再应用自身逻辑- 此机制可捕获那些在渲染器提取后被原版或其他模组修改的 RenderState 字段值(修复 #818)
问题修复
- 修复了循环动画有时导致实体消失的问题
- 修复了 GeckoLib 在关键帧键为空字符串时无法加载动画的问题
- 修复了
RenderUtil#transformToBone对PoseStack的操作顺序颠倒的问题(#819) - 修复了
RenderUtil#transformToBone未考虑回退至支点位置的问题(#822) - 修复了
MathParser有时错误解析数学表达式的问题(#820) - 修复了未注册为同步可动画物品的
GeoItem有时发生 ID 冲突的问题 - 修复了在极特定情况下某些动画偶尔重复播放最后几帧的问题
Fabric 1.21.11-5.4.4
on 2026 Feb 27GeckoLib v5.4.4
更改
API
- 新增
RenderPassInfo#getPreRenderMatrixPose与RenderPassInfo#getModelRenderMatrixPose,用于捕获完整的 PoseStack 姿态,而不仅限于矩阵姿态本身 - 新增
OverridingDataTicket—— 一种DataTicket实现,优先使用已存在的 RenderState 字段值,再应用自身逻辑- 此机制可捕获那些在渲染器提取后、由原版或其他模组修改的 RenderState 字段值(修复 #818)
Bug 修复
- 修复循环动画有时导致实体消失的问题
- 修复 GeckoLib 在关键帧键为空字符串时无法加载动画的问题
- 修复
RenderUtil#transformToBone对PoseStack执行反向操作的问题(#819) - 修复
RenderUtil#transformToBone未考虑回退至支点位置的问题(#822) - 修复
MathParser有时错误解析数学表达式的问题(#820) - 修复未注册为同步动画实体的
GeoItem有时发生 ID 冲突的问题 - 修复某些动画在极特定情况下偶尔重复播放最后几帧的问题
NeoForge 1.21.11-5.4.3
on 2026 Jan 28GeckoLib v5.4.3
新增内容
- 新增
RenderUtil#prepMatrixForBoneAndUpdateListeners - 新增
RenderUtil#addPosToMatrix
错误修复
- 修复骨骼位置监听器未能获取正确位置的问题
Forge 1.21.11-5.4.3
on 2026 Jan 28GeckoLib v5.4.3
新增内容
- 新增
RenderUtil#prepMatrixForBoneAndUpdateListeners - 新增
RenderUtil#addPosToMatrix
错误修复
- 修复骨骼位置监听器未获取正确位置的问题
Fabric 1.21.11-5.4.3
on 2026 Jan 28GeckoLib 5.4.3 版
新增内容
- 新增
RenderUtil#prepMatrixForBoneAndUpdateListeners - 新增
RenderUtil#addPosToMatrix
错误修复
- 修复骨骼位置监听器未能获取正确位置的问题
NeoForge 1.21.11-5.4.2
on 2026 Jan 11GeckoLib v5.4.2
新增内容
- 添加了基于骨骼名称的
RenderPassInfo#addBonePositionListener等效功能 - 为 Common、NeoForge 和 Fabric 添加了传递性接口注入
- 为
DataTickets添加了类的TypeToken替代方案,以支持泛型类型的 DataTickets
错误修复
- 修复了导致动画的第一个关键帧被完全跳过的问题 (#807, #805)
- 修复了“保持在最后一帧”循环类型无法正常工作的问题 (#806)
Forge 1.21.11-5.4.2
on 2026 Jan 11GeckoLib v5.4.2
新增内容
- 添加了基于骨骼名称的
RenderPassInfo#addBonePositionListener等效功能 - 为 Common、NeoForge 和 Fabric 添加了传递性接口注入
- 为
DataTickets添加了TypeToken替代类,以支持泛型类型的 DataTickets
错误修复
- 修复了导致动画的第一个关键帧被完全跳过的错误 (#807, #805)
- 修复了“保持在最后一帧”的循环类型无法正常工作的问题 (#806)
Fabric 1.21.11-5.4.2
on 2026 Jan 11GeckoLib v5.4.2
新增
- 添加了基于骨骼名称的
RenderPassInfo#addBonePositionListener等效功能 - 为 Common、[Neo] 和 Fabric 添加了传递性接口注入
- 为
DataTickets添加了类的TypeToken替代方案,以支持泛型类型的 DataTickets
Bug 修复
- 修复了导致动画的第一个关键帧被完全跳过的问题 (#807, #805)
- 修复了“保持在最后一帧”循环类型不生效的问题 (#806)
NeoForge 1.21.11
on 2026 Jan 01GeckoLib v5.4.1
更新内容:
- 清理了一些过时的提示信息
- 为
RenderPassInfo#addBoneUpdater中的 DeferredCache 错误添加了更多上下文信息
错误修复:
- 修复了
AnimationController有时认为时间倒流的问题(感谢 Mojang?) - 修复了
AnimationController在处理触发动画时使用了游戏刻而非秒数的问题 - 修复了关键帧标记未被正确触发(或有时完全不触发)的问题
- 修复了代码中循环类型设置未被遵守的问题
Forge 1.21.11
on 2026 Jan 01GeckoLib v5.4.1
更新内容:
- 清理了一些过时的提示信息
- 为
RenderPassInfo#addBoneUpdater中的 DeferredCache 错误添加了更多上下文信息
修复内容:
- 修复了
AnimationController有时认为时间倒流的问题(感谢 Mojang?) - 修复了
AnimationController在处理触发动画时以游戏刻而非秒为单位的问题 - 修复了关键帧标记未被正确触发(或有时根本不触发)的问题
- 修复了代码中设置的循环类型未被遵守的问题
Fabric 1.21.11
on 2026 Jan 01GeckoLib v5.4.1
更新内容:
- 清理了一些过时的提示信息
- 为来自
RenderPassInfo#addBoneUpdater的 DeferredCache 错误添加了更多上下文信息
问题修复:
- 修复了
AnimationController有时认为时间倒流的问题(感谢 Mojang?) - 修复了
AnimationController在处理触发动画时使用的是游戏刻而非秒数的问题 - 修复了关键帧标记未被正确触发(或有时根本不触发)的问题
- 修复了代码中设置的循环类型未被遵守的问题
NeoForge 1.21.11
on 2025 Dec 29GeckoLib v5.4
变更:
修复:
- 修复 GeoArmorRenderer 渲染异常的问题
- 修复在使用渲染层时 GeoArmorRenderer 崩溃的问题
- 修复动画在已完成的前一个动画基础上继续插值的问题
- 修复当过渡时间存在时,动画结束未能正确返回基础姿态的问题
- 修复骨骼默认旋转时动画旋转不正确的问题
- 修复骨骼缩放未生效的问题
API:
- GeoRenderState#addGeckolibData 不再接受
null值 - 重新添加
#setTransitionTicks到AnimationController - 添加
JsonUtil#jsonToVec3直接辅助方法 - 开始构建基于 SPI 的 .json 反序列化管道,以实现更安全、更可扩展的模型与动画加载
- 默认情况下,GeckoLib 将继续使用 GSON 反序列化为中间的未烘焙对象
- 我正考虑开发一个 GeckoLib 附加组件,使用更快的库(可能是 FastJson?)来加速资源加载,可能大幅提升性能
- 此系统尚未完全实现,但大部分代码已编写并审查完毕,确保其符合当前 Bedrock 几何体与动画规范(分别为 1.21.0 和 1.8.0)
- 理论上这将允许模组作者创建自己的适配器,用于自定义加载或处理,同时不牺牲安全性
- 默认情况下,GeckoLib 将继续使用 GSON 反序列化为中间的未烘焙对象
- 移除
GeckoLibClient#getGeoModelForItem,因其未被使用且多余,请改用RenderUtil#getGeckoLibItemRenderer并按需获取模型 - 将
GeckoLibServices.Client提取为GeckoLibClientServices,因为 Java 编译时常无故失败 - 创建
GeoBone#positionAndRender,用于实现指定骨骼的完整渲染操作 - 为
GeoRenderState#getOrDefaultGeckolibData添加基于 supplier 的备用重载,支持延迟计算 - 添加
SerializableDataTicket#enforceValidTicket
内部:
- 将 GeckoLib 的空值注解迁移至 JSpecify 规范
- 您会发现库中空值标注和空值处理显著增加,有助于消除对代码状态的困惑
- 进一步清理 Javadoc
- 新增大量文档,特别是 package-info 文件和参数类型描述
- 将 RawAnimation#additionalTicks 重命名为 RawAnimation#waitTicks
- 从骨骼格式中移除
bind_pose_rotation旧版支持 - 移除未使用的
AnimationVariables类 - 将
GeoObjectRenderer的关联对象泛型类型从E更改为O,以与其他部分保持一致 - 将
BoneSnapshots、PerBoneRender和RenderPassInfo移至渲染器基础包 - 将各种内置的
GeoRenderLayer类移至 builtin 子包 - 将 GeckoLib 的 GSON 实例从
KeyFramesAdapter移至GeckoLibResources - 将
KeyFramesAdapter重命名为KeyFrameMarkersAdapter - 在整个库中清理并标准化空值处理
- 更新部分更新前遗留的过时 Javadoc
Forge 1.21.11
on 2025 Dec 29GeckoLib v5.4
变更:
修复:
- 修复了 GeoArmorRenderer 无法正确渲染的问题
- 修复了在使用 renderlayers 时 GeoArmorRenderer 崩溃的问题
- 修复了动画在已完成的前一个动画基础上继续插值的问题
- 修复了当动画结束且存在过渡时间时,未能正确返回基础姿态的问题
- 修复了默认旋转的骨骼在动画过程中旋转不正确的问题
- 修复了骨骼缩放未生效的问题
API:
- GeoRenderState#addGeckolibData 不再接受
null值 - 重新添加了
AnimationController中的#setTransitionTicks方法 - 添加了
JsonUtil#jsonToVec3直接辅助方法 - 开始构建基于 SPI 的 .json 反序列化管道,以实现更安全、更可扩展的模型和动画加载
- 默认情况下,GeckoLib 将继续使用 GSON 反序列化为中间的未烘焙对象
- 我正在考虑开发一个 GeckoLib 附加组件,使用更快的库(可能是 FastJson?)来加速资源加载,可能大幅提升性能
- 该系统尚未完全实现,但大部分代码已经编写并审查完毕,确保其符合当前 Bedrock 几何与动画规范(分别为 1.21.0 和 1.8.0)
- 理论上这将允许模组作者创建自己的适配器,用于自定义加载或处理,同时不牺牲安全性
- 默认情况下,GeckoLib 将继续使用 GSON 反序列化为中间的未烘焙对象
- 移除了未使用且不必要的
GeckoLibClient#getGeoModelForItem,请改用RenderUtil#getGeckoLibItemRenderer并按需获取模型 - 将
GeckoLibServices.Client提取为GeckoLibClientServices,因为 Java 在编译时无故失败 - 创建了
GeoBone#positionAndRender,实现了对指定骨骼的完整渲染操作 - 为
GeoRenderState#getOrDefaultGeckolibData添加了基于 Supplier 的备用重载,支持延迟计算 - 添加了
SerializableDataTicket#enforceValidTicket
内部:
- 将 GeckoLib 的空值注解迁移至 JSpecify 规范
- 您会发现库中显著增加了空值注解和空值处理,有助于消除对代码状态的困惑
- 进一步清理了 Javadoc
- 添加了大量额外文档——特别是 package-info 文件和参数类型描述
- 将 RawAnimation#additionalTicks 重命名为 RawAnimation#waitTicks
- 从 Bone 格式中移除了
bind_pose_rotation的旧版支持 - 移除了未使用的
AnimationVariables类 - 将
GeoObjectRenderer中相关对象的泛型类型从E更改为O,以与其他部分保持一致 - 将
BoneSnapshots、PerBoneRender和RenderPassInfo移至渲染器基础包 - 将各种内置的
GeoRenderLayer类移至 builtin 子包 - 将 GeckoLib 的 GSON 实例从
KeyFramesAdapter移至GeckoLibResources - 将
KeyFramesAdapter重命名为KeyFrameMarkersAdapter - 在整个库中清理并标准化了空值处理
- 更新了一些更新前遗留的过时 Javadoc



