owngus 2025-10-06 18:25 采纳率: 100%
浏览 2
已结题

我的世界geckolib武器geo模型导入失败

Model loader 'geckolib:geo' not found.
排了一下午一直给我爆这个错,
我自制了一个geo模型,想为我的mod武器进行导入
mc版本为forge1.20.1

img


文件应该没问题吧
游戏可以启动,启动后拿出物品为紫黑格

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2025-10-06 18:26
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    你遇到的错误信息是:

    Model loader 'geckolib:geo' not found

    这个错误表明你的模组没有正确加载 GeckoLib 的模型解析器,也就是说,GeckoLib 未被正确引入到你的项目中,或者你的模型文件路径/格式不正确。


    ✅ 问题分析

    1. GeckoLib 未被添加到依赖中
      如果你使用的是 Forge 1.20.1,你需要在 build.gradle 中正确引用 GeckoLib 的依赖。

    2. 模型文件路径或格式错误
      GeckoLib 要求 .geo.json 文件必须放在正确的资源路径下(如 assets/modid/models/item/weapon.geo.json)。

    3. 模型注册方式不正确
      你需要通过 GeoModelRegistry 正确注册你的模型。

    4. Forge 或 GeckoLib 版本不兼容
      确保你使用的 GeckoLib 版本与 Forge 1.20.1 兼容。


    🔧 解决方案

    1. 确保 GeckoLib 已正确添加到依赖中

    在你的 build.gradle 文件中添加以下内容(注意版本号要匹配你使用的 GeckoLib):

    dependencies {
        modImplementation "dev.architectury:architectury:9.2.5" // 如果你用的是 Architectury
        modImplementation "com.github.GeoLib-Mod:geckolib:3.0.8" // 示例版本,根据实际情况修改
    }
    

    注意: 如果你使用的是 Forge,建议查看 GeckoLib GitHub 获取最新版本和正确的依赖方式。


    2. 检查模型文件路径是否正确

    GeckoLib 的 .geo.json 文件应该放在如下路径:

    src/main/resources/assets/yourmodid/models/item/weapon.geo.json
    

    示例文件结构:

    yourmodid/
    ├── assets/
    │   └── yourmodid/
    │       └── models/
    │           └── item/
    │               └── weapon.geo.json
    

    3. 确保模型文件格式正确

    一个简单的 weapon.geo.json 示例:

    {
      "format_version": "1.12",
      "models": {
        "main": {
          "parent": "item/generated",
          "textures": {
            "layer0": "yourmodid:item/weapon"
          },
          "elements": [
            {
              "name": "body",
              "type": "cube",
              "from": [ -2, -2, -2 ],
              "to": [ 2, 2, 2 ],
              "rotation": { "x": 0, "y": 0, "z": 0 }
            }
          ]
        }
      }
    }
    

    注意: 这个 JSON 是用于定义模型结构的,如果你只是想用 GeckoLib 动画功能,可能需要使用更复杂的结构。


    4. 在代码中注册模型

    你需要在你的主类中使用 GeoModelRegistry 注册模型:

    import dev.architectury.eventbus.EventBus;
    import dev.architectury.registry.client.model.ModelProvider;
    import net.minecraft.client.renderer.block.model.ItemTransforms;
    import net.minecraft.resources.ResourceLocation;
    
    public class YourMod {
    
        public static final ResourceLocation WEAPON_MODEL = new ResourceLocation("yourmodid", "item/weapon");
    
        public static void init() {
            EventBus.registerClient(YourMod::registerModels);
        }
    
        private static void registerModels() {
            ModelProvider.registerItemModel(WEAPON_MODEL, ItemTransforms.NO_TRANSFORM, (stack, context, world) -> {
                return GeoModelRegistry.getModel(WEAPON_MODEL);
            });
        }
    }
    

    注意: 如果你使用的是 Forge 而不是 Architectury,请使用 IEventBus 注册事件。


    5. 确保模型类型为 geckolib:geo

    在你的 item.properties 或者模型注册时,确保模型类型为 geckolib:geo

    public class WeaponItem extends Item {
        public WeaponItem(Properties properties) {
            super(properties);
            this.setISTER(() -> new GeoItemRenderer<>(new WeaponModel()));
        }
    }
    

    6. 检查 GeckoLib 是否加载成功

    在游戏启动时,你可以通过控制台查看是否加载了 GeckoLib 模块。如果看到类似以下信息,说明 GeckoLib 已加载:

    [INFO] GeckoLib is loaded and ready to use!
    

    如果没有看到该信息,说明依赖未正确加载。


    🛠️ 常见错误排查

    | 错误信息 | 可能原因 | |----------|----------| | Model loader 'geckolib:geo' not found | GeckoLib 未正确添加到依赖或未加载 | | Resource not found: yourmodid:item/weapon.geo.json | 模型路径错误或文件不存在 | | Class not found: dev.architectury... | 依赖版本不匹配或未添加 Architectury |


    ✅ 总结

    为了让你的 GeckoLib 模型正常加载,请确保:

    1. GeckoLib 依赖已正确添加
    2. 模型文件路径正确且格式无误
    3. 模型已通过 GeoModelRegistry 注册
    4. 模型类型为 geckolib:geo
    5. Forge 和 GeckoLib 版本兼容

    如果你愿意提供你的 build.gradle 文件和模型文件结构,我可以帮你进一步诊断问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月6日
  • 已采纳回答 10月6日
  • 修改了问题 10月6日
  • 创建了问题 10月6日