grady栗
本帖最后由 grady栗 于 2016-7-19 19:34 编辑

我看了Forge官方文档,他介绍IProperty<T>接口的时候说要求自己写的Block类需要重写几个方法:

  1. <font size="5">    @Override
  2.     protected BlockState createBlockState() {
  3.         return new BlockState(this,mossy,pillarCount);
  4.         
  5.     }

  6.     @Override
  7.     public int getMetaFromState(IBlockState state) {
  8.         return super.getMetaFromState(state);
  9.     }

  10.     @Override
  11.     public IBlockState getStateFromMeta(int meta) {
  12.         return super.getStateFromMeta(meta);
  13.     }

  14.     @Override
  15.     public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) {
  16.         return super.getActualState(state, worldIn, pos);
  17.     }</font>
复制代码





第一个还好理解,但是后面三个呢?怎么实现?文档没有给实现例子。难道要自己实现属性组合对应的数字映射吗?
哪位大神写过这几个方法,求贴一下代码或者教教我实现方法。






土球球
需要自己指定IProperty和数字之间的一一映射。
如果愿意的话,可以看看本人自己写的内容:
https://github.com/ustc-zzzz/fml ... 2%E5%AF%B9%E5%BA%94

grady栗
ustc_zzzz 发表于 2016-7-19 16:11
需要自己指定IProperty和数字之间的一一映射。
如果愿意的话,可以看看本人自己写的内容:
https://github. ...

发了这么多天,终于有人回复了厚~~~!谢谢你{:10_503:}
我发完帖子后才发现了你那篇教程{:10_494:}
你使用位运算来实现的(膜拜ing~反正我没有想到)不过我还有几个问题,
第一个问题就是,
EnumFacing.getHorizontal(meta & 3);这句,
还有EnumMaterial material = EnumMaterial.values()[meta >> 3];
你是不是利用了ForgeAPI提供的方法来帮助映射?
第二个问题就是如果没有那些API是不是就没那么方便了?

大神可不可以加一下QQ好友,我还有好多问题想请教一下- -

土球球
grady栗 发表于 2016-7-19 16:21
发了这么多天,终于有人回复了厚~~~!谢谢你
我发完帖子后才发现了你那篇教程
你使 ...

我也没想到,只不过原版是这么做的。
另外这些还都算是原版提供的,算是没有ForgeAPI的事。

grady栗
ustc_zzzz 发表于 2016-7-20 14:42
我也没想到,只不过原版是这么做的。
另外这些还都算是原版提供的,算是没有ForgeAPI的事。 ...

怎么看哪些是Forge的哪些是原版的?

sjx
grady栗 发表于 2016-7-20 15:48
怎么看哪些是Forge的哪些是原版的?

net.minecraft 包里面的多数是原版的,net.minecraftforge 里面的都是 forge 的。

第一页 上一页 下一页 最后一页