Cinepoly 2025-05-06 13:17 采纳率: 40%
浏览 8

我的世界Java模组开发遇到问题

我在自己开发自己的我的世界fabric端mod的时候,已经相关的物品已经注册,并且资源文件当中的texture文件夹内也已经放入了对应物品的纹理贴图(但是这个图片我只是使用ai生成再压缩制作的,不知道是不是这个的原因)
下面是文件结构:

img

下面这些是代码部分:

public class ModItems {

    public static  final  Item SCHOLAR_SCEPTRE = registerItem("scholar_sceptre",new Item(new Item.Settings()));
    //写入一个物品,使用全局变量的方法进行写入
    //学识权杖
    ······

这个是资源文件当中的models文件夹当中的scholar_sceptre.json文件

{
  "parent": "minecraft:item/generated",
  "textures": {
    "layer0": "primalmagic:item.scholar_sceptre"
  }
}

上述文件设置好之后,使用gradle构建。
然后运行游戏,然后在游戏里面使用指令给予这个物品,但是最终我加入的图片并没有被渲染出来

img

  • 写回答

2条回答 默认 最新

  • 紫雾凌寒 新星创作者: 人工智能技术领域 2025-05-06 13:18
    关注

    让 “紫雾凌寒” 来帮你回答,本回答结合 DeepSeek

    如果还有问题,请评论或点击头像私信,如果有帮助到您, 请关注、采纳、点赞

    1. 关键点分析:
      - 正在开发Minecraft Fabric端mod,物品已注册。
      - 纹理贴图已放置在资源文件的texture文件夹中,但贴图是由AI生成并压缩制作的,不确定是否可行。
    2. 解决方案:
      - 首先,要确保纹理贴图的格式符合Minecraft的要求。通常支持的格式有PNG等。
      - 关于AI生成的纹理,虽然理论上是可行的,但需要注意以下几点:

      • 尺寸和分辨率:Minecraft中物品纹理一般有特定的尺寸要求,比如常见的16x16像素等。需要检查生成的纹理尺寸是否符合你所使用的物品模型对应的标准尺寸。
      • 颜色模式:确保纹理是正确的颜色模式,一般为RGB。
      • 在代码中,加载纹理的方式如下(以Fabric为例):
        ```java
        import net.fabricmc.fabric.api.client.rendering.v1.ColorProviderRegistry;
        import net.fabricmc.fabric.api.client.rendering.v1.ItemRendererRegistry;
        import net.fabricmc.fabric.api.client.rendering.v1.SpriteRegistry;
        import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
        import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener;
        import net.minecraft.client.MinecraftClient;
        import net.minecraft.client.render.TexturedRenderLayers;
        import net.minecraft.client.texture.Sprite;
        import net.minecraft.client.texture.SpriteAtlasTexture;
        import net.minecraft.client.util.SpriteIdentifier;
        import net.minecraft.resource.ResourceManager;
        import net.minecraft.util.Identifier;
        import net.minecraftforge.api.distmarker.Dist;
        import net.minecraftforge.api.distmarker.OnlyIn;
        import net.minecraftforge.fml.common.Mod;

      @Mod(“your_mod_id”)
      @OnlyIn(Dist.CLIENT)
      public class YourMod {
      public static final Identifier TEXTURE_ID = new Identifier(“your_mod_id:textures/item/your_item.png”);
      public static SpriteIdentifier SPRITE_IDENTIFIER;

       public YourMod() {
           ResourceManagerHelper.getClientInstance().registerReloadListener(new SimpleSynchronousResourceReloadListener() {
               @Override
               public void reload(ResourceManager resourceManager) {
                   SpriteAtlasTexture textureAtlas = MinecraftClient.getInstance().getTextureManager().getAtlas(TexturedRenderLayers.ITEM_ATLAS);
                   Sprite sprite = textureAtlas.apply(TEXTURE_ID);
                   SPRITE_IDENTIFIER = new SpriteIdentifier(TexturedRenderLayers.ITEM_ATLAS, sprite);
               }
           });
      
           ItemRendererRegistry.INSTANCE.register((stack, renderContext, light) -> {
               renderContext.getModel().render(renderContext, stack, light, false, renderContext.getVertexConsumerProvider(), renderContext.getBuffers(), 0, 15728880, true, SPRITE_IDENTIFIER);
           }, new Identifier("your_mod_id:your_item"));
      
           ColorProviderRegistry.ITEM.register((stack, tintIndex) -> 0xFFFFFF, new Identifier("your_mod_id:your_item"));
       }
      

      }
      `` - 上述代码展示了如何在Fabric mod中加载物品纹理并进行渲染相关的注册。需要将your_mod_id替换为你自己的mod的ID,your_item替换为你物品的名称,同时确保纹理路径textures/item/your_item.png`与实际放置纹理的路径一致。
      3. 多种解决方案优缺点:
      - 手动检查纹理
      - 优点:可以最直接地发现纹理的尺寸、颜色模式等明显问题,及时进行调整。
      - 缺点:比较繁琐,对于大量纹理时效率较低。
      - 使用工具检查
      - 优点:一些图像编辑工具或专门的Minecraft纹理检查工具可以快速批量检查纹理是否符合要求,提高效率。
      - 缺点:可能需要额外安装工具,并且工具可能存在兼容性问题或不准确的情况。
      4. 总结:
      在开发Minecraft Fabric端mod时,对于由AI生成的纹理,要确保其格式、尺寸、颜色模式等符合游戏要求。通过代码示例中的方式加载纹理,并可以通过手动或工具检查的方法来验证纹理的正确性,以确保mod中物品纹理能够正常显示。

    希望以上解答对您有所帮助。如果您有任何疑问,欢迎在评论区提出。

    评论

报告相同问题?

问题事件

  • 修改了问题 5月6日
  • 创建了问题 5月6日