6

我正在尝试自学 Java 语法并使用 minecraft 作为潜水平台。但我遇到了问题,因为我的纹理都没有被加载。就此而言,我的本地化也不是。这是我的块的代码

package net.richbaird.testtutorial.blocks;

import cpw.mods.fml.common.registry.GameRegistry;
//import cpw.mods.fml.common.registry.LanguageRegistry;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.richbaird.testtutorial.lib.constants;

public class OrangeBlock extends Block {
    private String blockName = "orangeBlock";
    public OrangeBlock() {
        super(Material.rock);
        this.setBlockName(constants.MODID + "_" + blockName);
        this.setCreativeTab(CreativeTabs.tabBlock);
        GameRegistry.registerBlock(this,blockName);
        this.setBlockTextureName(constants.MODID + ":" + blockName);
        //LanguageRegistry.addName(this,"tutorial block");

    }

}

这是我的常量类

package net.richbaird.testtutorial.lib;
public class constants {
  public static final String MODID = "testtutorial";
  public static final String MODNAME = "Test Tutorial";
  public static final String VERSION = "1.0";
}

我的纹理保存在

~/IdeaProjects/testmod/src/main/resources/assets/testtutorial/textures/blocks/orangeBlock.png

根据日志,它无法找到我的纹理。这是我收到的信息

[08:08:14] [Client thread/ERROR]: 
Using missing texture, unable to load 
testtutorial:textures/blocks/orangeBlock.png
java.io.FileNotFoundException: testtutorial:textures/blocks/orangeBlock.png

客户端加载并显示我的项目,但具有默认的黑色和紫色纹理。我做错了什么?我认为这可能与我的命名约定有关,因为 .lang 文件也永远不会被读取,而我可以给我的块起一个友好名称的唯一方法是使用现在已弃用的LanguageRegistry.addName()方法

4

2 回答 2

21

对于那些好奇的人来说,这是 intellij 14 看起来的一个错误。将此行添加到 forge 附带的 build.gradle 的底部

sourceSets {
    main { output.resourcesDir = output.classesDir }
}

并运行gradle setupDecompWorkspace idea --refresh-dependencies

解决了这个问题。

于 2014-12-23T16:42:50.120 回答
0

我最近在更新 IntelliJ 后遇到了这个错误,虽然 richbai90 的解决方案确实解决了当前的问题,但它也破坏了将 mod 编译到 jar 中(资产文件夹被包含两次)。经过一番挖掘,我最终找到了问题的根源:IntelliJ 将构建任务委托给 Gradle,Gradle 将资产和类放在不同的文件夹中,而 Forge 不知道它们属于同一个 mod。对我有用的解决方案是使用 IDE 构建和运行,它位于Build、Execution、Deployment下的 Settings 对话框中。构建工具 | Gradle帮助页面有更详细的说明)。在旧版本的 IntelliJ 上,这称为“将 IDE 构建/运行操作委托给 gradle”(参见帮助页面)。

于 2021-04-10T03:13:49.103 回答