如何设置块数据值?

时间:2015-01-28 15:32:05

标签: java metadata bukkit

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

  

已过时。魔术值

为什么?

1 个答案:

答案 0 :(得分:9)

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

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和大多数其他大插件的来源看起来很混乱,因为它们使用了很多接口。对于开发人员来说,它似乎非常有条理,但对于阅读它的人来说,它看起来非常混乱,除非你能够实际可视化层次结构。