【问题标题】:Minecraft forge doesn't load item texture 1.10.2Minecraft forge 不加载项目纹理 1.10.2
【发布时间】:2017-05-01 22:54:49
【问题描述】:

我正在尝试为我拥有的物品添加纹理,但它没有在 Minecraft 中加载。这是我的基本 mod 类: 包 com.gandiber.thegalaxymod;

import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderItem;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.common.util.EnumHelper;

@Mod(modid = TheGalaxyMod.MODID, version = TheGalaxyMod.VERSION)
public class TheGalaxyMod {
    public static final String MODID = "gandiber_thegalaxymod";
    public static final String VERSION = "1.0";
    public static ItemSword GalaxiumSword;
    public static ToolMaterial galaxium = EnumHelper.addToolMaterial("galaxium", 3, 4000, 15F, 38.0F, 22);

    @SidedProxy(serverSide = "com.gandiber.thegalaxymod.CommonProxy", clientSide = "com.gandiber.thegalaxymod.ClientProxy")
    public static CommonProxy proxy;

    @EventHandler
    public void init(FMLInitializationEvent event) {
        //Weapons
            GameRegistry.register(GalaxiumSword = new ItemGalaxySword(galaxium, "diamondswordcompressed"));

        // some example code
    GameRegistry.addRecipe(new ItemStack(Items.DIAMOND),
            "XXX",
            "XXX",
            "XXX",
            'X', Items.GOLD_INGOT);
    }
}

我的常用代理类:

package com.gandiber.thegalaxymod;

import net.minecraft.item.Item;

public class CommonProxy {
    public void registerItemRenderer(Item item, int meta, String id) {

    }
}

我的客户端代理类:

package com.gandiber.thegalaxymod;

import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraftforge.client.model.ModelLoader;

public class ClientProxy extends CommonProxy {
    @Override
    public void registerItemRenderer(Item item, int meta, String id) {
        ModelLoader.setCustomModelResourceLocation(item, meta, new ModelResourceLocation(TheGalaxyMod.MODID + ":" + id, "inventory"));
    }
}

这是实际剑的物品类别:

package com.gandiber.thegalaxymod;

import net.minecraft.item.Item;
import net.minecraft.item.ItemSword;
import net.minecraftforge.fml.common.registry.GameRegistry;
import thegalaxymod.tutorial.item.ItemModelProvider;

public class ItemGalaxySword extends ItemSword implements ItemModelProvider {
private String name;
    public ItemGalaxySword(ToolMaterial material, String name ) {
        super(material);
        setUnlocalizedName(name);
        setRegistryName(name);
    }

    @Override
    public void registerItemModel(Item item) {
        TheGalaxyMod.proxy.registerItemRenderer(this, 0, name);
    }
}

这里是物品的 json 模型文件:

{
    "parent": "item/generated",
    "textures": {
        "layer0": "gandiber_thegalaxymod:items/diamondswordcompressed"
    },
  "display":{
      "thirdperson":{
          "rotation":[-90, 0, 0],
          "translation":[0, 1, -3],
          "scale":[0.55,0.55,0.55]
      },
      "firstperson":{
          "rotation":[0,-135,25],
          "translation":[0,4,2],
        "scale":[1.7,1.7,1.7]
      }
   }
}

这是渲染类,它基本上什么都不做:

package thegalaxymod.tutorial.item;

import net.minecraft.item.Item;

public interface ItemModelProvider {
    void registerItemModel(Item item);
}

最后是实际的 PNG: 我希望你能下载这个。如果没有,请告诉我!

我的文件夹结构:

Json 文件: C:\Users\myusername\Documents\Mods\Auto-Bow\src\main\resources\assets\gandiber_thegalaxymod\models\item\diamondswordcompressed.json

PNG 文件: C:\Users\myusername\Documents\Mods\Auto-Bow\src\main\resources\assets\gandiber_thegalaxymod\textures\items\diamondswordcompressed.json

我尝试过的事情:

  • 删除 json 文件的第二部分,以便只显示“layer0”。
  • 删除 setCustomModelResourceLocation 方法中的“inventory”参数。

如果这对这里的任何人有帮助,我的 fml-client-latest.log 文件: (Pastebin)

【问题讨论】:

  • 这是什么mc版本?
  • 现在是1.10.2,我加标题谢谢!
  • 哦...对不起,我只能使用 1.8.9 :/ 希望我能帮忙... :(
  • 没关系。无论如何,谢谢!

标签: java eclipse minecraft minecraft-forge


【解决方案1】:

在您的ItemGalaxySword 类中,您从未设置实例变量name。 您应该将this.name = name 添加到构造函数中。

【讨论】:

  • 没错,但这只是问题的一部分。我已经找出问题所在,并会在一分钟内发布。
【解决方案2】:

我已经找到了问题所在。当然幸运的是,我花了 3 个小时调试问题,并在提出问题的 10 分钟内找到了答案。

有两个问题:

  1. 正如 BdoubleB97 所说,在我的“ItemGalaxySword”类中,我忘记将参数“name”的值分配给全局变量“name”。这是一个小问题。

  2. 另一个问题是从未调用过“registerItemModel”方法。实际上,我在 ItemGalaxySword 中创建了一个名为 initmodel 的不同方法,它完成了同样的事情,但现在我在 TheGalaxyMod 中有一个方法,它从我的所有类中调用 initmodel 方法,最后,客户端代理调用该方法。这段代码应该清楚一点:

编辑:今天晚些时候将发布代码,没时间了。

【讨论】:

  • 好的,您在客户端代理中引用了 ModelLoader。很多人把这个电话放在他们的项目类别中,这是一个禁忌。但是,您应该将注册表名称 (getRegistryName()) 用于未本地化名称和项目模型注册。看看my registryclasses(那里有两个链接)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多