如何设置块数据值?

Mys*_*yst 5 java metadata bukkit

Bukkit's setData(data)并且getData()已被弃用.但没有替代品.Bukkit/Spigot JavaDoc说setData():

已过时.神奇的价值

这是为什么?

Joj*_*dmo 9

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

Block.setData(byte data);
Run Code Online (Sandbox Code Playgroud)

所以,你可以这样做:

myBlock.setData(2); // Set block data to 2
Run Code Online (Sandbox Code Playgroud)

虽然Block.setData()已弃用,但它仍然有效,并且将继续有效(Bukkit中不推荐使用的方法很少被删除,特别是那些没有替代方法的方法).我希望我能给出更好的答案,但这是你现在唯一可以做的事情.

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

要消除使用不推荐使用的方法给出的警告@SuppressWarnings("deprecation"),请在使用时将上面的方法置于上面,或者在使用它的方法之上.

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

Block.setType(Material type);
Run Code Online (Sandbox Code Playgroud)

一个例子是:

myBlock.setType(Material.GOLD_BLOCK); // Set block to gold block
Run Code Online (Sandbox Code Playgroud)

你也可以使用MaterialData,但没有人真正知道如何使用它(据我所知).这是Bukkit API中包含的内容之一,但没人知道原因.

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