gpt4 book ai didi

java - 元素纹理为粉色/黑色

转载 作者:行者123 更新时间:2023-12-02 02:18:37 28 4
gpt4 key购买 nike

我尝试通过添加一个名为“铀”的新元素来修改我的世界。因此,我在主包中创建了“Trauma.java”类以及下面列出的其他一些类。所有包和类: Package Explorer

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"
}
}

uranium.png

ingame

而且我不知道为什么库存中的元素不称为铀...

我花了两个小时来解决这个问题,但没有帮助,所以如果你们中有人能帮助我,那就太好了。谢谢:)

最佳答案

不要使用模型网格生成器:

模型网格生成器是 Vanilla (Mojang) 代码,正确使用它总是很挑剔且不可靠,如果调用得太早就会失败,如果调用得太晚也会失败。因此 Forge 添加了 ModelLoader 类来解决该问题。

替换这一行:

Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(...)

用这一行:

ModelLoader.setCustomModelResourceLocation(...)

...内容相同。

其次,根据您使用的 Minecraft 版本,您应该...:

  1. 停止使用GameRegistry.Register
    • 请改用 RegistryEvent.Register<T>事件(其中<T>将是<Block>来注册 block ,<Item>来注册项目等)
  2. ModelRegistryEvent 中注册您的模型没有其他地方。
    • 此 Activity 是 @SideOnly(CLIENT)并且可以在您的客户端代理中订阅,从而无需通过代理类转发引用。例如。我do it like this ,其中lines 197-199是最常见的场景,其中数组是在项目注册事件期间填充的。该方法的其余部分处理自定义状态映射器和自定义网格定义,这些定义仅由少数项目/ block 使用,与此处无关。
  3. 在您的未本地化名称中包含您的 Mod ID。最好的方法是 setUnlocalizedName(getRegistryName().toString());

另请参阅the Forge documentation on events .

关于java - 元素纹理为粉色/黑色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48889742/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com