我试图自学java语法并使用我的世界作为潜水的平台。虽然因为我的纹理都没有加载,但我遇到了问题。就此而言,我的本地化也不是。这是我的块的代码
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()
方法< / p>
答案 0 :(得分:14)
对于那些好奇的人来说,这是intellij 14的错误。将此行添加到伪造
附带的build.gradle的底部sourceSets {
main { output.resourcesDir = output.classesDir }
}
正在运行gradle setupDecompWorkspace idea --refresh-dependencies
修复了问题。
答案 1 :(得分:0)
我最近在更新 IntelliJ 后遇到了这个错误,虽然richbai90 的解决方案确实解决了眼前的问题,但它也破坏了将 mod 编译成 jar(资产文件夹被包含两次)。经过一番挖掘,我最终找到了问题的根源:IntelliJ 将构建任务委托给 Gradle,Gradle 将资产和类放在不同的文件夹中,而 Forge 不知道它们属于同一个 mod。对我有用的解决方案是使用 IDE 构建和运行,IDE 位于构建、执行、部署 | 下的设置对话框中。构建工具 | Gradle(help page 有更详细的说明)。在旧版本的 IntelliJ 上,这称为“将 IDE 构建/运行操作委托给 gradle”(请参阅 help page)。