基本信息
我的世界Java版本
26.1.2
26.1
1.21.10–1.21.11
1.21.3–1.21.8
1.21–1.21.1
1.20.4–1.20.6
1.20–1.20.2
1.19.1–1.19.4
1.18.2
1.17.1
1.16.5
1.15.2
1.12.2
平台
Fabric
运行环境
分类
搬运团队
搬运资源声明
对于可进行 JAR 文件搬运的许可证,我们提供站内下载服务;其他资源会跳转到原帖下载。资源更新可能不及时,建议前往资源内提供的原帖链接下载最新版本。
详情信息
许可证 MIT
发布于 2024-11-28
更新于 2026-04-25
更新日志
GeckoLib 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事件钩子



