基本信息
我的世界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 方块
- 修复了 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事件钩子



