Java 如何设置块数据值?

Java 如何设置块数据值?,java,metadata,bukkit,Java,Metadata,Bukkit,Bukkit的setData(data)和getData()。但没有替代品。 Bukkit/spiget JavaDoc这样说是关于setData(): 不赞成。神奇价值 为什么会这样?到目前为止,唯一的方法是使用: Block.setData(byte data); 所以,你可以这样做: myBlock.setData(2); // Set block data to 2 尽管Block.setData()已被弃用,但它仍然有效,并将继续有效(Bukkit中弃用的方法很少被删除,尤其是那些

Bukkit的
setData(data)
getData()。但没有替代品。
Bukkit/spiget JavaDoc这样说是关于
setData()

不赞成。神奇价值


为什么会这样?

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

Block.setData(byte data);
所以,你可以这样做:

myBlock.setData(2); // Set block data to 2
尽管
Block.setData()
已被弃用,但它仍然有效,并将继续有效(Bukkit中弃用的方法很少被删除,尤其是那些没有替代方法的方法)。 我希望我能给出一个更好的答案,但这是你目前唯一能做的事情

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

要消除使用不推荐使用的方法时发出的警告,请在使用不推荐使用的方法时,将
@SuppressWarnings(“不推荐”)
置于该方法上方,或置于使用该方法的方法上方

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

Block.setType(Material type);
例如:

myBlock.setType(Material.GOLD_BLOCK); // Set block to gold block
您也可以使用
MaterialData
,但据我所知,没有人真正知道如何使用它。这是BukkitAPI中包含的内容之一,但没有人知道为什么


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

它是有效的,但是我发现它非常奇怪,以至于它在没有任何解释或替代的情况下被弃用。不管怎样,我还是会使用它。是的,我研究的大多数插件源代码都会从一个文件到另一个文件发送给我,其中声明了它们的函数,并且在其他地方声明了函数,以此类推。这不是我真正的工作方式。@Myst我只是更新了我的答案,包括为什么他们被抹黑