不能让Minecraft盔甲纹理起作用

时间:2014-03-30 21:04:54

标签: java textures minecraft

我对编码很新,我想做的就是制作一个Minecraft mod。我正在尝试添加装甲,但我无法让纹理起作用。这是控制台中的代码和错误:

package com.halo.halomod.armor;

import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.Entity;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;

import com.halo.halomod.halo;

public class TitaniumArmor extends ItemArmor {
    private String [] armourTypes = new Strenter code here`ing [] {"TitaniumHelmet", "TitaniumChestplate", "TitaniumLeggings", "TitaniumBoots"};


    public TitaniumArmor(ArmorMaterial armorMaterial, int renderIndex, int armourType) {
        super(armorMaterial, renderIndex, armourType);
    }

    @Override
    public String getArmorTexture(ItemStack stack, Entity entity, int slot, String layar){
        if(stack.getItem().equals(halo.TitaniumHelmet)|| stack.getItem().equals(halo.TitaniumChestplate)|| stack.getItem().equals(halo.TitaniumBoots)){
            return "halo:textures/armor/titanium1.png";
        }

        if(stack.getItem().equals(halo.TitaniumLeggings)){
            return "halo:textures/armor/titanium2.png"; 
        }
        else return null;
    }
    public void registerIconsRegister(IIconRegister reg){ 
        if(this == halo.TitaniumHelmet)
            this.itemIcon = reg.registerIcon("halo:Titanium Helmet");
        if(this == halo.TitaniumChestplate)
            this.itemIcon = reg.registerIcon("halo:Titanium Chestplate");
        if(this == halo.TitaniumLeggings)
            this.itemIcon = reg.registerIcon("halo:Titanium Leggings");
        if(this == halo.TitaniumBoots)
            this.itemIcon = reg.registerIcon("halo:Titanium Boots");
    }
}

控制台出错:

  

[15:53:29] [客户端线程/错误]:使用缺少的纹理,无法   加载   我的世界:纹理/项目/ MISSING_ICON_ITEM_4103_TitaniumHelmet.png   java.io.FileNotFoundException:   我的世界:textures / items / MISSING_ICON_ITEM_4103_TitaniumHelmet.png at   net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:65)   〜[FallbackResourceManager.class:?] at   net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:67)   〜[SimpleReloadableResourceManager.class:?] at   net.minecraft.client.renderer.texture.TextureMap.loadTextureAtlas(TextureMap.java:128)   [TextureMap.class:?] at   net.minecraft.client.renderer.texture.TextureMap.loadTexture(TextureMap.java:93)   [TextureMap.class:?] at   net.minecraft.client.renderer.texture.TextureManager.loadTexture(TextureManager.java:89)   [TextureManager.class:?] at   net.minecraft.client.renderer.texture.TextureManager.loadTickableTexture(TextureManager.java:71)   [TextureManager.class:?] at   net.minecraft.client.renderer.texture.TextureManager.loadTextureMap(TextureManager.java:58)   [TextureManager.class:?] at   net.minecraft.client.Minecraft.startGame(Minecraft.java:621)   [Minecraft.class:?] at   net.minecraft.client.Minecraft.run(Minecraft.java:931)   [Minecraft.class:?] at   net.minecraft.client.main.Main.main(Main.java:112)[Main.class:?] at   sun.reflect.NativeMethodAccessorImpl.invoke0(原生方法)   〜[?:1.7.0_09] at sun.reflect.NativeMethodAccessorImpl.invoke(未知   来源)〜[?:1.7.0_09] at   sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)   〜[?:1.7.0_09]在java.lang.reflect.Method.invoke(未知来源)   〜[?:1.7.0_09] at   net.minecraft.launchwrapper.Launch.launch(Launch.java:134)   [launchwrapper-1.9.jar:?] at   net.minecraft.launchwrapper.Launch.main(Launch.java:28)   [launchwrapper-1.9.jar:?] [15:53:29] [客户线程/错误]:使用   缺少纹理,无法加载   我的世界:纹理/项目/ MISSING_ICON_ITEM_4106_TitaniumBoots.png   java.io.FileNotFoundException:   minecraft:textures / items / MISSING_ICON_ITEM_4106_TitaniumBoots.png at   net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:65)   〜[FallbackResourceManager.class:?] at   net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:67)   〜[SimpleReloadableResourceManager.class:?] at   net.minecraft.client.renderer.texture.TextureMap.loadTextureAtlas(TextureMap.java:128)   [TextureMap.class:?] at   net.minecraft.client.renderer.texture.TextureMap.loadTexture(TextureMap.java:93)   [TextureMap.class:?] at   net.minecraft.client.renderer.texture.TextureManager.loadTexture(TextureManager.java:89)   [TextureManager.class:?] at   net.minecraft.client.renderer.texture.TextureManager.loadTickableTexture(TextureManager.java:71)   [TextureManager.class:?] at   net.minecraft.client.renderer.texture.TextureManager.loadTextureMap(TextureManager.java:58)   [TextureManager.class:?] at   net.minecraft.client.Minecraft.startGame(Minecraft.java:621)   [Minecraft.class:?] at   net.minecraft.client.Minecraft.run(Minecraft.java:931)   [Minecraft.class:?] at   net.minecraft.client.main.Main.main(Main.java:112)[Main.class:?] at   sun.reflect.NativeMethodAccessorImpl.invoke0(原生方法)   〜[?:1.7.0_09] at sun.reflect.NativeMethodAccessorImpl.invoke(未知   来源)〜[?:1.7.0_09] at   sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)   〜[?:1.7.0_09]在java.lang.reflect.Method.invoke(未知来源)   〜[?:1.7.0_09] at   net.minecraft.launchwrapper.Launch.launch(Launch.java:134)   [launchwrapper-1.9.jar:?] at   net.minecraft.launchwrapper.Launch.main(Launch.java:28)   [launchwrapper-1.9.jar:?] [15:53:29] [客户线程/错误]:使用   缺少纹理,无法加载   我的世界:纹理/项目/ MISSING_ICON_ITEM_4104_TitaniumChestplate.png   java.io.FileNotFoundException:   我的世界:纹理/项目/ MISSING_ICON_ITEM_4104_TitaniumChestplate.png     在   net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:65)   〜[FallbackResourceManager.class:?] at   net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:67)   〜[SimpleReloadableResourceManager.class:?] at   net.minecraft.client.renderer.texture.TextureMap.loadTextureAtlas(TextureMap.java:128)   [TextureMap.class:?] at   net.minecraft.client.renderer.texture.TextureMap.loadTexture(TextureMap.java:93)   [TextureMap.class:?] at   net.minecraft.client.renderer.texture.TextureManager.loadTexture(TextureManager.java:89)   [TextureManager.class:?] at   net.minecraft.client.renderer.texture.TextureManager.loadTickableTexture(TextureManager.java:71)   [TextureManager.class:?] at   net.minecraft.client.renderer.texture.TextureManager.loadTextureMap(TextureManager.java:58)   [TextureManager.class:?] at   net.minecraft.client.Minecraft.startGame(Minecraft.java:621)   [Minecraft.class:?] at   net.minecraft.client.Minecraft.run(Minecraft.java:931)   [Minecraft.class:?] at   net.minecraft.client.main.Main.main(Main.java:112)[Main.class:?] at   sun.reflect.NativeMethodAccessorImpl.invoke0(原生方法)   〜[?:1.7.0_09] at sun.reflect.NativeMethodAccessorImpl.invoke(未知   来源)〜[?:1.7.0_09] at   sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)   〜[?:1.7.0_09]在java.lang.reflect.Method.invoke(未知来源)   〜[?:1.7.0_09] at   net.minecraft.launchwrapper.Launch.launch(Launch.java:134)   [launchwrapper-1.9.jar:?] at   net.minecraft.launchwrapper.Launch.main(Launch.java:28)   [launchwrapper-1.9.jar:?] [15:53:29] [客户线程/错误]:使用   缺少纹理,无法加载   我的世界:纹理/项目/ MISSING_ICON_ITEM_4105_TitaniumLeggings.png   java.io.FileNotFoundException:   我的世界:纹理/项目/ MISSING_ICON_ITEM_4105_TitaniumLeggings.png     在   net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:65)   〜[FallbackResourceManager.class:?] at   net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:67)   〜[SimpleReloadableResourceManager.class:?] at   net.minecraft.client.renderer.texture.TextureMap.loadTextureAtlas(TextureMap.java:128)   [TextureMap.class:?] at   net.minecraft.client.renderer.texture.TextureMap.loadTexture(TextureMap.java:93)   [TextureMap.class:?] at   net.minecraft.client.renderer.texture.TextureManager.loadTexture(TextureManager.java:89)   [TextureManager.class:?] at   net.minecraft.client.renderer.texture.TextureManager.loadTickableTexture(TextureManager.java:71)   [TextureManager.class:?] at   net.minecraft.client.renderer.texture.TextureManager.loadTextureMap(TextureManager.java:58)   [TextureManager.class:?] at   net.minecraft.client.Minecraft.startGame(Minecraft.java:621)   [Minecraft.class:?] at   net.minecraft.client.Minecraft.run(Minecraft.java:931)   [Minecraft.class:?] at   net.minecraft.client.main.Main.main(Main.java:112)[Main.class:?] at   sun.reflect.NativeMethodAccessorImpl.invoke0(原生方法)   〜[?:1.7.0_09] at sun.reflect.NativeMethodAccessorImpl.invoke(未知   来源)〜[?:1.7.0_09] at   sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)   〜[?:1.7.0_09]在java.lang.reflect.Method.invoke(未知来源)   〜[?:1.7.0_09] at   net.minecraft.launchwrapper.Launch.launch(Launch.java:134)   [launchwrapper-1.9.jar:?] at   net.minecraft.launchwrapper.Launch.main(Launch.java:28)   [launchwrapper-1.9.jar:?] [15:53:29] [客户线程/信息]:创建:   256x256个纹理/项目 -

1 个答案:

答案 0 :(得分:2)

问题出在您的public void registerIconsRegister(IIconRegister reg)方法中:

首先,您应该覆盖的方法定义为:

public void registerIcons(net.minecraft.client.renderer.texture.IconRegister register)

因此没有调用该方法,即使它被调用,所有相同的检查都将失败:

if(this == halo.TitaniumHelmet)

由于ItemArmorItem都不会覆盖Object.equals(Object obj),因此Java将执行内存引用检查,这些检查都将失败。无论如何,registerIcons方法应该注册所有项目图标,无论基于元数据的子项目是什么,所以只需完全删除if语句。