gpt4 book ai didi

java - 元数据项错误

转载 作者:太空宇宙 更新时间:2023-11-04 09:27:38 27 4
gpt4 key购买 nike

我正在为我的世界创建一个模组并创建一个元数据项,它有三个变体(默认、1 和 2)。

当我尝试将其提供给我的播放器时,项目:0 或什么都没有,我得到这个项目,它的 id 只是没有:编号的项目,但是当我提供项目:1 时,给定的项目将添加到堆栈中的项目:0。当我从库存中抛出 item:0 时,item:1 成功给出了自定义纹理,但它的 id 是 item,而不是 item:1

这是我的商品及其变体代码:


public Trowel(String name, CreativeTabs tab) {
super(name, tab);
this.tab = tab;
}

public void getSubItems(Item item, CreativeTabs tabs, List<ItemStack> list) {
for(int i = 0; i < EnumTrowel.count(); i++) {
list.add(new ItemStack(item, 1, i));
}
}

@Override
public String getUnlocalizedName(ItemStack stack) {
for(int i = 0; i < EnumTrowel.count(); i++) {
if(stack.getItemDamage() == i) {
return this.getUnlocalizedName() + "_" + EnumTrowel.values()[i].getName();
} else {
continue;
}
}
return this.getUnlocalizedName() + "_" + EnumTrowel.CLEAR.getName();
}

这是我的主类 preInit()

    public static void preInit(FMLPreInitializationEvent event) {
proxy.registerModelBakeryStuff();
RegistryHandler.registerCustomMeshesAndStates();
RegistryHandler.registerFluid(concrete);
for(int i = 0; i < EnumTrowel.count(); i++) {
ModItems.registerRender(ModItems.TROWEL, i, "trowel_" + EnumTrowel.values()[i].getName());
}
}

这是我的 ClientProxy 注册方法

    @Override
public void registerModelBakeryStuff() {
ModelBakery.registerItemVariants(ModItems.TROWEL, new ResourceLocation(Reference.MOD_ID, "trowel_clear"), new ResourceLocation(Reference.MOD_ID, "trowel_plaster"), new ResourceLocation(Reference.MOD_ID, "trowel_gypsum"));
}

item:0 = trowel_clear(默认变体)

项目:1 = trowel_plaster(1 个变体)

项目:2 = trowel_gypsum(2 个变体)

控制台中没有任何错误。

最佳答案

我实际上不确定出了什么问题,因为您在其他方法后面隐藏了一些东西,而这些东西并不真正位于它们应该在的地方(为什么 ModItems 有一个 registerRender 方法?)

无论如何,如果我剖析 my own code 1关于具有变体的项目,我注意到两件事:

  1. 我没有看到任何相当于 variantName + "=" + variant.getByOrdinal(stack.getMetadata())); 的内容在你的代码中。该字符串实际上将元数据映射到不同的模型。我的变体都是枚举指定和硬映射的 metadata <-> enum ordinal .
  2. 我没有看到对 ModelLoader.setCustomModelResourceLocation() 的调用这就是告诉游戏如何寻找该字符串的资源。

您的代码可能确实包含这些内容,但您没有将其包含在问题中,因此很难找出问题所在。

  1. 请注意,我在此处链接的类是我定制的系统的一半,该系统是为了以一种对从 1.7.10 的 GameRegistry 过渡更友好的方式处理RegistryEvent 系统而构建的。系统。有一些奇怪的重定向涉及将数据仅插入数组 read them back out again later如果您只是在相关事件(即 the more widely accepted standard )中构建项目,那么实际上没有必要。我做的都是同样的事情,只是在不同的时间点。

关于java - 元数据项错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57481372/

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