gpt4 book ai didi

java - 获取元数据 block 的实例

转载 作者:行者123 更新时间:2023-12-02 02:52:58 25 4
gpt4 key购买 nike

我正在编写 1.11.2 Minecraft mod,我需要获取具有特定元数据的 block 的实例。

public BIGOre(String CustomOreDictName, String UnlocalizedBlockName, int Metadata, String Mod)
{
Block a;
a = Block.getBlockFromName(UnlocalizedBlockName);

NonNullList<ItemStack> SubBlocks = NonNullList.create();
a.getSubBlocks(Item.getItemFromBlock(a), a.getCreativeTabToDisplayOn(), SubBlocks);
this.GetBlock = Block.getBlockFromItem(SubBlocks.get(Metadata).getItem());
}

我当前尝试执行此操作发现了一个未本地化名称的 block 。然后(这是不起作用的部分)将所有子 block 放入列表中,然后选择正确的子 block 。

如何从未本地化的名称和元数据中获取具有指定元数据的 block ?

最佳答案

在 1.8 及更高版本中,Minecraft 使用 IBlockState系统来代表世界中一个方 block 的组合,所以你的领域GetBlock应该是 IBlockState不是Block如果你想用特定的元数据准确地表示一个 block 。您可以使用a.getStateFromMeta(Metadata)获得 IBlockState对应于该元数据值。

旁注,您不应该为此使用未本地化的名称,因为它们可能会因其他模组开发人员的突发奇想而发生更改。您应该使用注册表名称,该名称在版本之间很少发生变化,因为它用于存储世界上的 block 。要通过字符串及其注册表名称查找 block ,请使用 ForgeRegistries.BLOCKS.getValue(new ResourceLocation(registryName)) .

关于java - 获取元数据 block 的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43529816/

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