Minecraft 1.8 Forge API BlockState 与红石详解

由于网上找到的 Minecraft Forge 文档实在是少的可怜,我决定自己写一份以防未来的自己忘记。具体的实践可以在我的客运铁路 mod 见到。

红石的更新本质上也是方块更新,因此当一个方块想要检测红石信号,处理的代码应当放在 Block 类的 onNeighborBlockChange(World worldIn, BlockPos pos, IBlockState state, Block neighborBlock) 方法。

BlockStateIBlockState

可以在方块的 Class 建立 BlockState 以允许方块拥有不同的状态 (IProperty),不同的状态可以在 assets/<MODID>/blockstates/<block_instance_name>.json 中定义不同的方块模型。

每一个 IProperty 拥有自己的 name 和可以取到的有限个值,这些值在 Java 内部以 enum 的形式实现。关于 enum 变量类型,可以在王八壳的 javadoc 上找到。

一个方块的 BlockState 可以包含一个或多个 IProperty,可以使用已经定义好的 IProperty 子类(PropertyDirection, PropertyBool)也可以自己定义 enum 建立 PropertyEnum

Class: public CustomBlock extends Block

通过以下方式建立 IProperty 及其子类的实例:

  • public static final PropertyDirection FACING = PropertyDirection.create("facing", EnumFacing.Plane.HORIZONTAL);
    建立新的方向属性,名称为 "facing" ,可以取的值为平面方向的朝向,为 EnumFacing 下的 NORTHEASTSOUTHWEST
  • public static final PropertyBool POWERED = PropertyBool.create("powered");
    建立布尔型只能为 truefalse 的方块属性。

Continue reading Minecraft 1.8 Forge API BlockState 与红石详解

未闻花名

有一次,我梦见大家都是不相识的。我们醒了,却知道我们原是相亲相爱的。——《飞鸟集》

看起来已经改变但却依旧没有改变的大家。故事不禁使人想起昔日很要好的朋友,现在到底在哪里呢?若我们再次遇见,已各自生活在各个领域的大家又能否像以往般的要好?《未闻花名》便是这样的一个故事。

一部主打友谊的动漫作品,讲述了儿时的玩伴如何在长大后疏远,又是如何因为一个契机再度走到一起。每次看都会有莫名的感动,但都和上一次的感触有微妙的不同。

趁着假期的末尾再度温习了一遍,感触很多,都绕在一起说不明白,但是看到引用里的这句话,又突然觉得忍不住忍不住要说些什么,所以来胡乱地表达一下。
Continue reading 未闻花名