如何设置块数据值?

How to set block data value?

Bukkit 的 setData(data)getData() 已弃用。但是没有替代品。 Bukkit/Spigot JavaDoc 关于 setData() 的说法:

Deprecated. Magic value

这是为什么?

到目前为止,唯一的方法是使用:

Block.setData(byte data);

所以,你可以这样做:

myBlock.setData(2); // Set block data to 2

虽然 Block.setData() 已被弃用,但它仍然有效,并将继续有效(Bukkit 中已弃用的方法很少被删除,尤其是那些别无选择的方法)。 我希望我能给出更好的答案,但这是你目前唯一能做的。

它被弃用的原因是因为 Minecraft 正从项目 ID 转向项目名称,以便将来更容易扩展。以前必须 运行 /give player 19,现在应该 运行 /give player minecraft:sponge(尽管 ID 仍然有效)。同样的事情也会发生在数据值上,而不是给某人 35:14,你现在给他们 red wool.

要消除因使用已弃用的方法而发出的警告,请在使用时将 @SuppressWarnings("deprecation") 放在已弃用的方法上方,或在使用它的方法上方。

要设置块的类型,您可以使用:

Block.setType(Material type);

一个例子是:

myBlock.setType(Material.GOLD_BLOCK); // Set block to gold block

您也可以使用 MaterialData,但没有人真正知道如何使用它(据我所知)。这是 Bukkit 中包含的东西之一 API,但没有人知道为什么。

WorldEdit 和其他大多数大插件的源代码看起来很乱,因为它们使用了很多接口。对开发人员来说,它看起来非常有条理,但对于阅读它的人来说,它看起来非常混乱,除非你可以实际可视化层次结构。