java - 无法让 Minecraft 盔甲纹理发挥作用

标签 java textures minecraft

我对编码非常陌生,我想做的就是制作一个《我的世界》模组。我正在尝试添加盔甲,但我无法让纹理发挥作用。这是我的代码和控制台中的错误:

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] [Client thread/ERROR]: Using missing texture, unable to load minecraft:textures/items/MISSING_ICON_ITEM_4103_TitaniumHelmet.png java.io.FileNotFoundException: minecraft: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(Native Method) ~[?:1.7.0_09] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_09] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_09] at java.lang.reflect.Method.invoke(Unknown Source) ~[?: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] [Client thread/ERROR]: Using missing texture, unable to load minecraft:textures/items/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(Native Method) ~[?:1.7.0_09] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_09] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_09] at java.lang.reflect.Method.invoke(Unknown Source) ~[?: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] [Client thread/ERROR]: Using missing texture, unable to load minecraft:textures/items/MISSING_ICON_ITEM_4104_TitaniumChestplate.png java.io.FileNotFoundException: minecraft:textures/items/MISSING_ICON_ITEM_4104_TitaniumChestplate.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(Native Method) ~[?:1.7.0_09] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_09] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_09] at java.lang.reflect.Method.invoke(Unknown Source) ~[?: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] [Client thread/ERROR]: Using missing texture, unable to load minecraft:textures/items/MISSING_ICON_ITEM_4105_TitaniumLeggings.png java.io.FileNotFoundException: minecraft:textures/items/MISSING_ICON_ITEM_4105_TitaniumLeggings.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(Native Method) ~[?:1.7.0_09] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_09] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_09] at java.lang.reflect.Method.invoke(Unknown Source) ~[?: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] [Client thread/INFO]: Created: 256x256 textures/items-

最佳答案

问题出在您的 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 语句即可。

关于java - 无法让 Minecraft 盔甲纹理发挥作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22749861/

相关文章:

java - 如何从服务激活器发送自定义响应?

iphone - 如何在 OpenGL ES for iphone 中加载和显示图像

java - Minecraft Forge - 通过 setBlockState 放置时方 block 消失

python - 如何使用 Discord py 检查 Minecraft 服务器是否在线并获取统计信息(如在线玩家数量)

java - DS_Store 文件导致 Minecraft forge 崩溃

java - 在 Java 中使用 Visual Studio Code 的 Azure Functions 项目

java - 在 MethodInterceptor 中获取目标

java - 从其InputStream读取后,套接字关闭

c++ - OpenGL Vertexbuffer对象纹理坐标

javascript - copyTextureToTexture 在 three.js 中导致可怕的混叠伪像