[英]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.