[英]Item textures are pink/black
我試圖通過添加一個名為“鈾”的新項來修改我的世界。 因此,我在主程序包和下面列出的其他一些類中創建了“ Trauma.java”類。 所有軟件包和類: 軟件包資源管理器
Trauma.java
package main;
import items.ItemUranium;
import net.minecraft.item.Item;
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.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.registry.GameRegistry;
import proxy.ServerProxy;
@Mod(modid = Trauma.MODID)
public class Trauma {
public static final String MODID = "Trauma";
@SidedProxy(clientSide = "proxy.ClientProxy", serverSide = "proxy.ServerProxy")
public static ServerProxy proxy;
public static ItemUranium uranium = new ItemUranium();
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
GameRegistry.register(uranium);
}
@EventHandler
public void init(FMLInitializationEvent event) {
proxy.registerClientStuff();
}
@EventHandler
public void postInit(FMLPostInitializationEvent event) {
}
}
BasicItem.java
package items;
import net.minecraft.item.Item;
public class BasicItem extends Item {
public BasicItem(String name) {
setUnlocalizedName(name);
setRegistryName(name);
}
}
ItemUranium.java
package items;
public class ItemUranium extends BasicItem {
public ItemUranium() {
super("uranium");
}
}
ClientProxy.java
package proxy;
import items.BasicItem;
import main.Trauma;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
public class ClientProxy extends ServerProxy {
@Override
public void registerClientStuff () {
registerItemModel(Trauma.uranium);
}
public static void registerItemModel(BasicItem item) {
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(Trauma.MODID + ":" + item.getRegistryName(), "inventory"));
}
}
ServerProxy.java
package proxy;
public class ServerProxy {
public void registerClientStuff() {}
}
uranium.json
{
"parent": "item/generated",
"textures": {
"layer0": "Trauma:items/uranium"
}
}
我也不知道為什么庫存中的物品不被稱為鈾...
我花了兩個小時解決了這個問題,但是它沒有幫助,所以如果你們中有人可以幫助我,那將非常好。 謝謝 :)
模型網格器是Vanilla(Mojang)代碼,正確地使用它一直是挑剔和不可靠的,如果調用得太早就會失敗,而調用得太晚就會失敗。 因此,Forge添加了ModelLoader類來解決該問題。
替換此行:
Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(...)
用這行:
ModelLoader.setCustomModelResourceLocation(...)
...
內容是相同的。
其次,根據您使用的Minecraft版本,您應該...:
GameRegistry.Register
RegistryEvent.Register<T>
事件(其中<T>
將是<Block>
來注冊塊, <Item>
來注冊項,等等) ModelRegistryEvent
注冊您的模型,在其他地方則沒有。
setUnlocalizedName(getRegistryName().toString());
另請參閱有關事件的Forge文檔 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.