在Minecraft中每一个方块都由一个Block的实例来表示,当我们需要单独更改某一个方块的属性时,我们不能简单的通过修改这个实例的属性来进行更改,这样会导致其他的方块也发生变化,这时候我们就需要使用BlockState了。
有关于原版方块的方块状态在Wiki上有非常详细的说明:方块状态 - Minecraft Wik
接下来就着手创建自己的方块。
我们创建一个包含7种状态的方块,我们需要指定其属性
public static final IntProperty COLOR = IntProperty.of("color", 0, 6);
这是Int类型的属性,从0到6分别7种不同的状态,我们打算让它分别代表7种不同的颜色。
当然除了Int类型的属性,还有BooleanProperty(布尔)、DirectionProperty(方向)、EnumProperty(枚举),这3种。我们也可以创建自己的类型,具体的方法可以去看官方的代码是如何实现的。
BlockColor.java
public class BlockColor extends Block
{
public static final IntProperty COLOR = IntProperty.of("color", 0, 6);