本帖最后由 grady栗 于 2016-7-19 19:34 编辑
我看了Forge官方文档,他介绍IProperty<T>接口的时候说要求自己写的Block类需要重写几个方法:
复制代码
第一个还好理解,但是后面三个呢?怎么实现?文档没有给实现例子。难道要自己实现属性组合对应的数字映射吗?
哪位大神写过这几个方法,求贴一下代码或者教教我实现方法。
我看了Forge官方文档,他介绍IProperty<T>接口的时候说要求自己写的Block类需要重写几个方法:
- <font size="5"> @Override
- protected BlockState createBlockState() {
- return new BlockState(this,mossy,pillarCount);
-
- }
- @Override
- public int getMetaFromState(IBlockState state) {
- return super.getMetaFromState(state);
- }
- @Override
- public IBlockState getStateFromMeta(int meta) {
- return super.getStateFromMeta(meta);
- }
- @Override
- public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) {
- return super.getActualState(state, worldIn, pos);
- }</font>
第一个还好理解,但是后面三个呢?怎么实现?文档没有给实现例子。难道要自己实现属性组合对应的数字映射吗?
哪位大神写过这几个方法,求贴一下代码或者教教我实现方法。
需要自己指定IProperty和数字之间的一一映射。
如果愿意的话,可以看看本人自己写的内容:
https://github.com/ustc-zzzz/fml ... 2%E5%AF%B9%E5%BA%94
如果愿意的话,可以看看本人自己写的内容:
https://github.com/ustc-zzzz/fml ... 2%E5%AF%B9%E5%BA%94
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的事。
ustc_zzzz 发表于 2016-7-20 14:42
我也没想到,只不过原版是这么做的。
另外这些还都算是原版提供的,算是没有ForgeAPI的事。 ...
怎么看哪些是Forge的哪些是原版的?
grady栗 发表于 2016-7-20 15:48
怎么看哪些是Forge的哪些是原版的?
net.minecraft 包里面的多数是原版的,net.minecraftforge 里面的都是 forge 的。