Minecraft(我的世界)中文论坛

标题: Minecraft FML 1.8.9 Mod开发教程(已封存)[InfStudio]

作者: 土球球    时间: 2015-10-28 21:30
标题: Minecraft FML 1.8.9 Mod开发教程(已封存)[InfStudio]
本帖最后由 土球球 于 2020-11-4 23:24 编辑

Minecraft 1.8.9 FML Mod 开发教程

由于相关代码严重过时,本教程于2020年11月4日正式封存。

如果对教程有疑问,可以通过电邮的方式联系本人:[email protected]

教程所属的代码仓库的master分支是根据所有维护的patch自动生成的,教程的文字部分由book分支维护,代码部分由patch分支维护。

目录

0 绪论

1 基础部分


2 初级部分

2.1 事件


2.2 高级物品


2.3 生物状态


2.4 玩家体验与系统


2.5 矿物


2.6 流体


3 高级部分

3.1 生物


3.2 高级方块


3.3 附加数据与同步


3.4 GUI


3.5 与其他Mod交互


附录


版权声明

本作品作者为ustc_zzzz。

Infinity Studio小组与本作品作者共有版权。


本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。

转载请附上本作品链接: https://fmltutor.ustc-zzzz.net/

另外,本作品同时提供源代码,所有源代码使用MIT协议开源。

感谢Team CovertDragon,鉴于该团队为本教程提供的机房位于中区的阿里云服务器。

[groupid=534]InfinityStudio[/groupid]
作者: AFP    时间: 2015-11-2 21:16
表示为什么世界生成会是高级

作者: a526026058    时间: 2015-11-2 21:34
在国内Mod制作教程还是少之又少的,希望楼主能够坚持,这贴必须顶
作者: 土球球    时间: 2015-11-2 22:35
AFP 发表于 2015-11-2 21:16
表示为什么世界生成会是高级

= =因为世界生成简单的说可能只是生成矿物,而往难的说可以去生成一个世界,所以说这一体系本身就十分庞大、繁杂,这也是我把它放到高级部分的原因。
作者: AFP    时间: 2015-11-4 17:14
ustc_zzzz 发表于 2015-11-2 22:35
= =因为世界生成简单的说可能只是生成矿物,而往难的说可以去生成一个世界,所以说这一体系本身就十分庞 ...

好吧,那么lz什么时候更新实体生物那部分,我已经寻找了几个月了……希望lz不要弃坑
作者: 土球球    时间: 2015-11-4 19:34
AFP 发表于 2015-11-4 17:14
好吧,那么lz什么时候更新实体生物那部分,我已经寻找了几个月了……希望lz不要弃坑 ...

试过szszss触的教程了木有= =还有可以看看MC自带的实体是怎么写的= =
作者: xiweihai    时间: 2015-11-4 20:24
支持你,现在天朝的mod开发者实在太少了
作者: 0x3B800001    时间: 2015-11-4 21:06
支持吧,觉得lz的教程还不错
作者: AFP    时间: 2015-11-6 20:26
lz好久没更了啊……
作者: 土球球    时间: 2015-11-7 08:23
AFP 发表于 2015-11-6 20:26
lz好久没更了啊……

= =因为下一节是个深坑,我要把所有Forge提供的三位数个数的Minecraft事件一个一个整理出来= =
= =感觉这个周末应该能完成= =
= =仅仅是感觉= =
作者: AFP    时间: 2015-11-7 15:58
ustc_zzzz 发表于 2015-11-7 08:23
= =因为下一节是个深坑,我要把所有Forge提供的三位数个数的Minecraft事件一个一个整理出来= =
= =感觉这 ...

。。。我记得他们好像放在一个文件夹里的每一个分文件夹的一个文件里
作者: AFP    时间: 2015-11-15 10:50
lz又有几天没更啦,是在做事件列表的代码么……现在我会做生物了,正在研究矿物生成
作者: q59541511    时间: 2015-11-15 15:09
观摩一下大神!!
作者: Deing    时间: 2015-11-16 16:52
[fly]路过摸(膜)一下萌萌哒tq~[/fly]


作者: a79990587    时间: 2015-11-19 22:29
加上官方开发wiki会比较好吧。。。。
作者: 当然风格    时间: 2015-11-20 12:27
大赞,基础的教程有很多但大部分都弃坑了,希望楼主不要弃坑。
作者: deskdeskhome    时间: 2015-11-20 15:21
观摩观摩!
作者: 洛骁Roito    时间: 2015-11-20 17:59
楼主能在合成表这一框,讲一下如何在合成时返回物品吗?用setContainerItem似乎只能返回原版的,可能我用错了也有可能。
作者: 土球球    时间: 2015-11-20 18:16
秋天007 发表于 2015-11-20 17:59
楼主能在合成表这一框,讲一下如何在合成时返回物品吗?用setContainerItem似乎只能返回原版的,可能我用错 ...

GameRegistry的addRecipe和addShapelessRecipe的第一个参数就是输出的物品啊。。。
作者: 洛骁Roito    时间: 2015-11-20 19:02
本帖最后由 秋天007 于 2015-11-20 19:12 编辑
ustc_zzzz 发表于 2015-11-20 18:16
GameRegistry的addRecipe和addShapelessRecipe的第一个参数就是输出的物品啊。。。

可能我说的不清楚,我指的是像合成蛋糕后,返回三个空桶那样,在九宫格内返回物品(一般的合成方式当然很简单)。表达的不好加上用词不当,请原谅。
作者: 洛骁Roito    时间: 2015-11-21 18:37
ustc_zzzz 发表于 2015-11-20 18:16
GameRegistry的addRecipe和addShapelessRecipe的第一个参数就是输出的物品啊。。。

自己研究出来了,不过谢谢楼主教程的基础
作者: cyd11111509    时间: 2015-11-21 21:06
支持楼主~我一直看英文的教程~好累~楼主简直造福人类
作者: AFP    时间: 2015-11-22 11:17
问一下有没有一个事件是当你靠近方块时怎么样还是必须像信标一样用实体?
作者: 土球球    时间: 2015-11-22 13:44
AFP 发表于 2015-11-22 11:17
问一下有没有一个事件是当你靠近方块时怎么样还是必须像信标一样用实体? ...

一般我用的TileEntity。。。每次update时检查附近的实体。。。
作者: Deing    时间: 2015-11-22 14:39
自定义新的事件类

我们在EventLoader类中新建一个子类,该类就是我们想要的事件类了。

src/main/java/com/github/ustc_zzzz/fmltutor/common/EventLoader.java(部分):

    @Cancelable
    public static class PlayerClickGrassBlockEvent extends PlayerInteractEvent
    {
        public PlayerClickGrassBlockEvent(EntityPlayer player, BlockPos pos, World world)
        {
            super(player, PlayerInteractEvent.Action.LEFT_CLICK_BLOCK, pos, null, world);
        }
    }
很明显,这个类和玩家右键草块相关。该事件类继承了PlayerInteractEvent,可取消,并且被希望在玩家点击草块时触发。

我复制了一段话,你自己看看哪儿有问题
作者: 土球球    时间: 2015-11-22 15:00
Deing 发表于 2015-11-22 14:39
自定义新的事件类

我们在EventLoader类中新建一个子类,该类就是我们想要的事件类了。

卧槽写错了。。。已更正(说好的站内信或GitHub Issue呢→_→)
作者: cyd11111509    时间: 2015-11-23 16:41
话说,为什么添加了zh_CN.lang文件后,进入游戏显示是乱码捏?是因为编码的原因么?哪种方式编码才能正常显示?
作者: 当然风格    时间: 2015-11-23 16:50
cyd11111509 发表于 2015-11-23 16:41
话说,为什么添加了zh_CN.lang文件后,进入游戏显示是乱码捏?是因为编码的原因么?哪种方式编码才能正常显 ...

需要使用UTF-8编码
作者: cyd11111509    时间: 2015-11-23 16:59
当然风格 发表于 2015-11-23 16:50
需要使用UTF-8编码

已解决~谢谢噜
作者: 10123482    时间: 2015-11-23 18:00
楼主有没有 1.7.10的 forge开发教程
作者: 土球球    时间: 2015-11-25 11:35
10123482 发表于 2015-11-23 18:00
楼主有没有 1.7.10的 forge开发教程

。。。没有。。。过去没有现在没有将来也不会有。。。放心好啦~
作者: cyd11111509    时间: 2015-11-25 13:54
话说怎么样才能将工具作为合成的原料物品捏?就像工业exp里面的锤子,每合成一次就扣一点耐久度,然后合成新物品?
作者: 土球球    时间: 2015-11-26 22:05
a79990587 发表于 2015-11-19 22:29
加上官方开发wiki会比较好吧。。。。

如果大家都看完了官方教程并且都看明白了。。。
该教程可能也就没有存在的意义了=_=||
作者: cyd11111509    时间: 2015-11-28 15:10
话说,求解释一下这三个参数= =
onBlockClicked(World worldIn, BlockPos pos, EntityPlayer playerIn)
worldIn,pos和playerIn
作者: 土球球    时间: 2015-11-28 15:54
cyd11111509 发表于 2015-11-28 15:10
话说,求解释一下这三个参数= =
onBlockClicked(World worldIn, BlockPos pos, EntityPlayer playerIn)
wor ...

很显然啊。。。worldIn就是方块所在世界,pos就是方块所在位置,playerIn就是点击该方块的玩家。。。因为方块属于共享元,所以全世界的所有方块用的都是同一个对象,所以在玩家点击方块时需要方块的位置和方块所在的世界=_=||
作者: cyd11111509    时间: 2015-11-29 07:49
ustc_zzzz 发表于 2015-11-28 15:54
很显然啊。。。worldIn就是方块所在世界,pos就是方块所在位置,playerIn就是点击该方块的玩家。。。因为 ...

噢~了解~我也是这样猜的= =就是想确认一下
作者: jiangming1399    时间: 2015-12-2 13:00
我想问一个问题:
我在Eclipse中运行测试的时候是可以运行的,为什么用Gradle Build出来和RunClient都不能运行呢?
作者: 土球球    时间: 2015-12-2 13:06
jiangming1399 发表于 2015-12-2 13:00
我想问一个问题:
我在Eclipse中运行测试的时候是可以运行的,为什么用Gradle Build出来和RunClient都不能 ...

。。。可不可以说一下具体的出错信息。。。。。。
作者: jiangming1399    时间: 2015-12-2 16:15
本帖最后由 jiangming1399 于 2015-12-2 16:42 编辑
ustc_zzzz 发表于 2015-12-2 13:06
。。。可不可以说一下具体的出错信息。。。。。。

好吧,刚刚问题解决了。
刚刚是示例Mod我删除了源代码后它依旧能编译出东西。。。。

现在的问题是:
在Eclipse中运行的时候,方块和物品的材质都是好的
Build出来后,物品材质就丢失了。。。
直接Runclient,两个材质都丢失了。。。。。

--------------------------操蛋的分割线----------------------
我去!材质文件名大小写问题!

作者: Lasm_Gratel    时间: 2015-12-2 16:49
这里ISIS的Lasm,顶一下楼主{:10_521:}
作者: 天蝎_心殇    时间: 2015-12-3 12:59
写的很好,这是我见过的最全面的的教程了{:10_509:}
作者: AFP    时间: 2015-12-6 16:49
a79990587 发表于 2015-11-19 22:29
加上官方开发wiki会比较好吧。。。。

说实话wiki真心不适合新人
作者: 土球球    时间: 2015-12-11 21:44
AFP 发表于 2015-12-6 16:49
说实话wiki真心不适合新人

wiki有一些成套的教程,是从零基础开始学起的。感觉还不错= =
作者: AFP    时间: 2015-12-12 12:48
ustc_zzzz 发表于 2015-12-11 21:44
wiki有一些成套的教程,是从零基础开始学起的。感觉还不错= =

求网址……我一直找不到什么好的……
作者: AFP    时间: 2015-12-12 14:23
顺便问问……怎么实现一把新的弓右键换材质和聚焦视野的那个过程……纠结好久了,另外为什么我做出来的生物当你远离它无论多久再回去它就会消失……你是唯一肯回答我的人了……
作者: 土球球    时间: 2015-12-12 14:36
AFP 发表于 2015-12-12 14:23
顺便问问……怎么实现一把新的弓右键换材质和聚焦视野的那个过程……纠结好久了,另外为什么我做出来的生物 ...

第一个问题:你试过了重载物品的getItemUseAction方法木有= =
第二个问题:我个人也不太清楚。。。我推测的是MC把你的生物当成怪了= =所以距离一定距离就刷掉了= =
作者: AFP    时间: 2015-12-12 14:41
ustc_zzzz 发表于 2015-12-12 14:36
第一个问题:你试过了重载物品的getItemUseAction方法木有= =
第二个问题:我个人也不太清楚。。。我推测 ...

他本来就是怪……不过即使是,像凋灵一样,你离凋灵太远的话他并不会被删掉啊……
作者: 土球球    时间: 2015-12-12 15:39
AFP 发表于 2015-12-12 14:41
他本来就是怪……不过即使是,像凋灵一样,你离凋灵太远的话他并不会被删掉啊…… ...

= =你这是要做一个Boss么= =
作者: AFP    时间: 2015-12-13 19:35
我又来提问了……我做出来的生物(继承 EntityTameble)可以生成但是看不见,会发出声音,也打得到,打死也会出掉落物,但是就是看不见有没有什么关于这方面的示范什么的……源码中的狼我试过学习一下,可是还是失败,问题就是看不见,而且eclipse中会有Skipped spawning Entity -19的提示

这是我的文件(由于没法传Java改成了yml)

Entitybear - 副本.yml

7.83 KB, 下载次数: 8

就是这货


作者: 土球球    时间: 2015-12-15 11:05
本帖最后由 ustc_zzzz 于 2015-12-15 11:06 编辑
AFP 发表于 2015-12-13 19:35
我又来提问了……我做出来的生物(继承 EntityTameble)可以生成但是看不见,会发出声音,也打得到,打死也 ...

你可以打包成zip的。。。。。。另外下面这个:
  1. RenderingRegistry.registerEntityRenderingHandler(entityClass, renderer);
复制代码
这个注册你做了没有→_→
作者: AFP    时间: 2015-12-15 20:53
ustc_zzzz 发表于 2015-12-15 11:05
你可以打包成zip的。。。。。。另外下面这个:
这个注册你做了没有→_→ ...

注册了,我觉得问题并非出在这个……你有没有相关教程链接或者mod源码示范,感激不尽
作者: 土球球    时间: 2015-12-18 20:58
AFP 发表于 2015-12-15 20:53
注册了,我觉得问题并非出在这个……你有没有相关教程链接或者mod源码示范,感激不尽 ...

。。。那你看看szszss触的教程或者Forge Wiki吧。。。
作者: 1023261581    时间: 2015-12-20 19:50
支持。收藏先,正在学习java,学完入坑
作者: 土球球    时间: 2015-12-30 17:09
1023261581 发表于 2015-12-20 19:50
支持。收藏先,正在学习java,学完入坑

本教程对Java的要求可能稍稍高一点,可能需要了解一些诸如泛型、容器之类的知识。。。当然一开始的部分是不需要了解的= =
作者: 1023261581    时间: 2016-1-1 09:11
ustc_zzzz 发表于 2015-12-30 17:09
本教程对Java的要求可能稍稍高一点,可能需要了解一些诸如泛型、容器之类的知识。。。当然一开始的部分是 ...

已经学完泛型、容器了 正在攻入IO
作者: AFP    时间: 2016-1-2 15:54
说好先声音系统的……原来楼主也是学生党

作者: 土球球    时间: 2016-1-2 15:58
AFP 发表于 2016-1-2 15:54
说好先声音系统的……原来楼主也是学生党

声音系统不太好讲就先拖一拖。。。楼主是一个大三学生(看我用户名前四个字母就知道了2333)
作者: Male__旧爱    时间: 2016-1-2 16:23
ustc_zzzz 发表于 2016-1-2 15:58
声音系统不太好讲就先拖一拖。。。楼主是一个大三学生(看我用户名前四个字母就知道了2333) ...

贵校官网设计一般= =
作者: 土球球    时间: 2016-1-2 16:35
Male__旧爱 发表于 2016-1-2 16:23
贵校官网设计一般= =

你对我们学校的官网的评价实在是太。。。温馨了=_=||
你可以看看这个(稍稍好点→_→)
http://www.ustc.edu.cn/zh_CN/版聊终止

作者: sd300210    时间: 2016-1-2 19:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: 茄子不好吃    时间: 2016-1-16 10:16
大大,为什么我的golden_egg没有材质呢,好像那个json文件和png图片都没有加载进去的样子。
作者: ChenXijun    时间: 2016-1-26 18:46
然后现在是26号了
作者: 土球球    时间: 2016-1-29 01:33
ChenXijun 发表于 2016-1-26 18:46
然后现在是26号了

然而作者偷懒啊QwQ所以前天才更的
作者: AFP    时间: 2016-1-31 13:13
放假了还一周2_3次……我还等着看正规的制作生物教程……
作者: AFP    时间: 2016-2-3 19:15
问一下,为什么我做出来的生物总感觉很蠢,走路卡在角落里就不会找路(比原版怪物蠢很多)有专门的ai吗,还有怎样能避免EntityMob离远了会消失呢
作者: 土球球    时间: 2016-2-3 21:48
AFP 发表于 2016-2-3 19:15
问一下,为什么我做出来的生物总感觉很蠢,走路卡在角落里就不会找路(比原版怪物蠢很多)有专门的ai吗,还 ...

你是用(chao)的现成的怪物AI么QwQ我觉得你应该先借鉴下原版的怪物AI
EntityMob离远了(127格)会消失这是个Feature不是个Bug2333
有两个方法,一个是canDespawn方法,会返回一个布尔值这个我就不用说了吧2333
还有一个是despawnEntity就是用于刷怪消失的,最后说一句
用的时候一定要慎重。。。具体为什么应该不用我说了2333
作者: AFP    时间: 2016-2-3 22:45
ustc_zzzz 发表于 2016-2-3 21:48
你是用(chao)的现成的怪物AI么QwQ我觉得你应该先借鉴下原版的怪物AI
EntityMob离远了(127格)会消失这 ...

哦哦知道了谢谢
作者: neohaly    时间: 2016-2-4 06:47
楼主 你搞没搞过自定义模型的实体项目?

我下载了 forge  1.8  和 1.8.9, 2个版本的开发包。
浏览了下渲染代码后,发现这两个版本居然从TexturedQuad类开始就有很大不同了,我真不想同时开发2个不同版本的mod啊, 所以想二选一~

现在大家玩1.8+的哪个版本比较多啊,想选一个比较成熟点的版本,搞出来后尽量让更多的人能玩上~
作者: 洛骁Roito    时间: 2016-2-4 15:37
楼主加油哦!坐等中级部分教程(翻源码翻得有点头晕……所以出来冒个泡)
作者: AFP    时间: 2016-2-8 21:01
我又来提问了,怎么设置生物的碰撞箱?
作者: liulessv5    时间: 2016-2-8 21:50
没说什么基础啊。。估摸也不可能是0基础 至少得有java高级水平
作者: 土球球    时间: 2016-2-9 02:04
AFP 发表于 2016-2-8 21:01
我又来提问了,怎么设置生物的碰撞箱?

有一个名为setEntityBoundingBox的方法。
当然,更推荐的方法是setSize,这两个方法都是Entity类下的。
多翻翻源代码啊亲= =
作者: 土球球    时间: 2016-2-9 02:28
本帖最后由 ustc_zzzz 于 2016-2-9 02:34 编辑
liulessv5 发表于 2016-2-8 21:50
没说什么基础啊。。估摸也不可能是0基础 至少得有java高级水平

长期以来,我就一直觉得编程开发版的教程存在着一个错误,或者说是一个误区,就是在Mod/插件等开发教程中添加Java基础知识的相关部分
个人认为,在阅读这些教程之前一定程度地掌握Java知识,是一件毫无争议的事情,这些教程的作者没有义务不应该在自己的教程中添加Java的基础知识,当然,对于一些比较冷门的知识,比如ASM,还是有介绍的必要的。
个人认为,没有相关的Java基础知识就去学习Mod/插件等的制作和开发,就像不懂得.NET就去学WPF,不懂得HTML+CSS就去写网页代码,等等,简直无异于痴人说梦
====我是一条分隔线====
在我的眼里,诸如继承、多态、接口、泛型、容器、异常处理等知识,根本不能算上Java高级水平的知识,这理应是一名Java开发者必须掌握的知识。然而现在的一些教程中包含的Java知识,却并没有我刚刚说的这些。
个人认为,所谓的Java高级知识,应该是一些诸如多线程、反射、注解这样的知识,但实际上就算是这样的知识,作为一名合格的Java开发者至少也应该有所了解
====我是另一条分隔线====
这里推荐一本书《Head First Java, 2nd Edition》,这本书的中文版适用于没有任何编程基础的读者。如果看完了这本书的前十一章,对于阅读本教程的Java基础知识就已经足够了。

如果想深入学习的话,推荐《Effective Java (2nd Edition)》和《The Java Language Specification (3rd Edition)》两本书。

作者本身也推荐了三本书,个人觉得作为合格的Java程序员应该是足够了。
所以本人在这里抛出一个观点,要么就认认真真地写Java教程,把一个Java教程写得尽可能完美,要么就在自己的Mod/插件等开发教程里扔掉Java部分,一心一意地写Mod/插件等开发教程。
更何况,基础的Java教程,书籍已经很多了互联网上也有足够的资源
作者: AFP    时间: 2016-2-9 13:17
ustc_zzzz 发表于 2016-2-9 02:04
有一个名为setEntityBoundingBox的方法。
当然,更推荐的方法是setSize,这两个方法都是Entity类下的。
...

我知道setsize,我奇怪的只是那两个float值是怎么确定的
作者: AFP    时间: 2016-2-12 17:18
没错我又来了,如果想让一个生物死后在原地生成3个另一种生物该怎样?我的是这样
public void onDeath(DamageSource cause)
    {
            this.entityDropItem(new ItemStack(ItemLoader.lionfur, 4), 0.0F);
            Entityhyena hyena = new Entityhyena(worldObj);
            for(int x = 0; x < 3;x++){
            worldObj.spawnEntityInWorld(hyena);
            hyena.setVelocity(cause.getEntity().posX, cause.getEntity().posY, cause.getEntity().posZ);
            }
    }
作者: Game_rat    时间: 2016-2-12 20:31
事件列表好久没更了
作者: 土球球    时间: 2016-2-13 12:12
Game_rat 发表于 2016-2-12 20:31
事件列表好久没更了

作者春节期间家里各种事啊T_T自己还有好多大坑啊T_T现在就算是教程也是勉强在往下更T_T
事件列表有几百个事件现在才到字母F啊T_T
(好吧我就是在倒苦水其实根本原因就是懒→_→)
这两天抽空更一下^_^争取到字母H^_^
作者: 土球球    时间: 2016-2-13 12:18
AFP 发表于 2016-2-12 17:18
没错我又来了,如果想让一个生物死后在原地生成3个另一种生物该怎样?我的是这样
public void onDeath(Dama ...

你这只实例化了一个实体我感觉会Boom,个人觉得你应该每次都实例化一个实体。
其他的。。。暂且没啥问题(这个可以考虑多翻翻Slime的代码)。
还有"Entityhyena"的'h'请大写^_^可以在Eclipse中用Alt+Shift+R重命名IDEA怎么做我就不知道了QwQ
(使用IDEA的通通都是异端→_→)
作者: AFP    时间: 2016-2-13 14:31
ustc_zzzz 发表于 2016-2-13 12:18
你这只实例化了一个实体我感觉会Boom,个人觉得你应该每次都实例化一个实体。
其他的。。。暂且没啥问题 ...

可是我这样的代码并不能生成,还有……大小写真的有关系么,我的全是小写的
作者: AFP    时间: 2016-2-13 14:42
好吧这里我来提醒一下

    "fmltutor.test": {
        "category": "player",
        "sounds": [
            "fmltutor"
        ]
    }*
}
这里值得注意的一点是,如果要注册第二个声音的话,要在第一个声音的*号的地方加个逗号,但是第二个的不用加,以此类推,如果有三个声音的话,第一个和第二个要加逗号,第三个不用加,这点很重要,我被坑了好久
作者: 土球球    时间: 2016-2-13 16:55
AFP 发表于 2016-2-13 14:31
可是我这样的代码并不能生成,还有……大小写真的有关系么,我的全是小写的 ...

所以你试了我说的new三个实体再生成了么QwQ至少史莱姆的代码就是这样子的2333
另外大小写当然没有关系不过这个是约定Java的所有类名使用大写驼峰式而变量方法名使用小写驼峰式2333


作者: AFP    时间: 2016-2-13 18:06
ustc_zzzz 发表于 2016-2-13 16:55
所以你试了我说的new三个实体再生成了么QwQ至少史莱姆的代码就是这样子的2333
另外大小写当然没有关系不过 ...

对啊,史莱姆,我怎么没想到史莱姆……明天试试,谢了
作者: 土球球    时间: 2016-2-15 22:10
AFP 发表于 2016-2-9 13:17
我知道setsize,我奇怪的只是那两个float值是怎么确定的

QwQ第一个是宽度第二个是高度啊,宽度是xz坐标,高度是y坐标。
作者: 相识灬相依    时间: 2016-2-16 17:24
什么时候我的世界加个超兽武装mod 绝对火呀{:10_509:}
作者: lzjohnny    时间: 2016-2-17 10:00
感谢楼主的教程~!很有帮助,请加油填坑~
作者: 洛骁Roito    时间: 2016-2-17 13:00
我来求助了。多状态的方块和普通方块在注册上有什么区别吗?为什么我注册出来的多状态方块的模型和材质全丢失(已确认JSON文件和材质无误),已跪,求支援。
作者: 土球球    时间: 2016-2-21 00:18
秋天007 发表于 2016-2-17 13:00
我来求助了。多状态的方块和普通方块在注册上有什么区别吗?为什么我注册出来的多状态方块的模型和材质全丢 ...

多状态方块的json文件格式是和一般的方块不一样的QwQ应该等我劳动节之前会讲到吧QwQ
作者: 洛骁Roito    时间: 2016-2-21 09:59
ustc_zzzz 发表于 2016-2-21 00:18
多状态方块的json文件格式是和一般的方块不一样的QwQ应该等我劳动节之前会讲到吧QwQ ...

这个json文件格式,我借鉴了原版cauldron和wheat,然而并没有什么用。于是我把它拆成了好几个方块……至少能用233333。教程写得很好,继续加油哦!
作者: ChenXijun    时间: 2016-2-24 21:53
恭喜LZ即将更新中级部分,好像版主会精哦
作者: 土球球    时间: 2016-2-27 17:08
ChenXijun 发表于 2016-2-24 21:53
恭喜LZ即将更新中级部分,好像版主会精哦

加亮和进教程全家桶正在申请。。。精华就算了,等把坑填完吧=_=||
作者: grady栗    时间: 2016-3-2 20:02
请问自定义事件这个章节中,自己定义的Eventbus对象用来注册为什么就可以生效,它没有注册也没有打注解呀,而且为什么还要三个bus一起注册呢?
作者: hzy4619666    时间: 2016-3-4 00:32
新入开发坑。希望楼主持之以恒。
学习ing。。。支持。。
作者: w44225769    时间: 2016-3-7 00:45
狂顶爆顶!!!!我特别期待高级的渲染部分 希望楼主能坚持下去。mod类教程还没看见过更新完的。。。
作者: a8601317    时间: 2016-3-7 11:16

表示为什么世界生成会是高级
作者: 土球球    时间: 2016-3-11 21:55
grady栗 发表于 2016-3-2 20:02
请问自定义事件这个章节中,自己定义的Eventbus对象用来注册为什么就可以生效,它没有注册也没有打注解呀, ...

这么说吧。。。不管是自己定义的,还是Forge和FML带的EventBus,都是有着两个方法,一个名为register,另一个名为post。
如果是register方法的话,这个EventBus就会检查register方法提供的参数下的所有方法,并且检查有没有对应的@SubscribeEvent注解,如果有,就注册进去。
如果是post方法的话,在需要触发事件的时候,就会调用EventBus的post方法,在这个EventBus下注册的所有事件就被执行一遍了。Forge通过直接修改MC的方式,在很多个方法中塞入了许许多多的post方法,我们当然也可以生成自己的EventBus,并且在需要让我们想要的事件发生的时候调用对应的post方法,让所有注册过的事件执行一遍。自然是不需要打注解的。
为什么要三个bus一起注册。。。其实只是偷懒,在不同的地方注册也没什么问题的其实。比如说MinecraftForge.EVENT_BUS和FMLCommonHandler.instance().bus()这两个EventBus处理的事件就太难以区分,所以说为了方便,把这两个都注册上也是没有问题的。当然,还有两个EventBus就不建议这么做了,因为地形生成和矿物生成这事本身就十分费时间的,所以说为了效率,还是分开吧2333
作者: 土球球    时间: 2016-3-11 22:05
本帖最后由 ustc_zzzz 于 2016-3-11 22:08 编辑
a8601317 发表于 2016-3-7 11:16
表示为什么世界生成会是高级

这件事其实挺有趣的2333
当初本人在学做Mod的时候,因为当时制做的Mod本身的性质,是没有世界生成部分的,所以说在开坑写教程的时候就没有想到世界生成的部分,觉得世界生成特别难以至于,小到生成矿物大到生成世界,都被直接放在了高级教程下,当然生成一个新的世界、生物群系什么的其实也是很难的。
后来有人跟我吐槽说你这个教程前面什么琐碎的都讲,偏偏不讲特别简单的矿物生成。起初我没有在意,直到这么说的人越来越多我,才意识到事情的严重性,所以我就把矿物生成移到了前面,也就是从4.2节移到了2.5节。当然这么移动了之后和我吐槽的人还是有不少,但是我也没有办法了,毕竟当时我正在写2.3,都快写到2.5了对吧。当时我记得一个很有意思的一点,就是我的教程后面有一个人写的1710的教程,正好讲的是矿物生成:

这似乎是在无形中刺激我快写教程,快点写到矿物生成的部分吧2333
当然,如你所见,现在最简单的矿物生成已经写完了,不过高级的世界生成确实很难所以说本人就放在后面了。
作者: DeathWolf96    时间: 2016-3-12 00:20
本帖最后由 DeathWolf96 于 2016-3-12 00:21 编辑

问下lz GUI部分的坑打算怎么填?不会是介绍MC自己的GUIAPI吧= -=

我觉得GUI部分不造轮子简直没法写……所以还是教下怎么造轮子比较好?(大雾

以及点个赞 整体的质量都很不错w 希望再接再厉

作者: AFP    时间: 2016-3-12 11:55
问一下,EntityThrowable是不能用生物模型的吗?我想做一个立体的火球术,像生物那样注册,可是不仅没有材质,连那个模型的白块都没有,但是到远处时候会爆炸……
作者: 土球球    时间: 2016-3-13 20:55
DeathWolf96 发表于 2016-3-12 00:20
问下lz GUI部分的坑打算怎么填?不会是介绍MC自己的GUIAPI吧= -=

我觉得GUI部分不造轮子简直没法写……所 ...

个人想法是先介绍MC和Forge提供的部分,然后给一个本人推荐的轮子(当然也可以造自己的轮子)。
当然这个本人自己的轮子肯定还不会成型,但是也权当是个建议,本质是鼓励玩家基于这个轮子修改甚至造一个新的轮子2333
另外你点了个赞,金粒呢→_→人气呢→_→贡献呢(因为你是艺术家,我要考虑考虑能不能从你这里骗点贡献走)→_→
作者: 土球球    时间: 2016-3-20 21:52
AFP 发表于 2016-3-12 11:55
问一下,EntityThrowable是不能用生物模型的吗?我想做一个立体的火球术,像生物那样注册,可是不仅没有材 ...

可能是你的注册方式不太对吧。。。可不可以贴一下你的渲染/模型的注册方式QwQ