这两天实在是好忙啊,被boss紧逼什么的。各种事情都要到deadline了。但是教程什么的还是要继续更新啦。至于我的那个物品最大堆叠的mod已经发现了一些问题。这个mod的bug修复只进行了一部分。目前只是修复了不能附魔的问题。其他的工作量实在是太大了。毕竟coremod就是一个大坑啊。但愿我这种各种拖延症不会被四季大人提前带走吧……
Minecraft Forge 中使用最多的一个类基本上就是GameRegistry了吧。游戏里面的各种物品的注册都是能够通过GameRegistry实现的。当然了,操作已经注册了的物品也可以通过GameRegistry来操作。所以各种Mod开发者一定都很熟悉这个类,所以我就不介绍了……(雾,拖走
有一些低端的mod可能只包含一些基本的GameRegistry的使用。当然这种Mod基本都可以用mod制作器来代替。但是使用好GameRegistry还是很重要的。成功废话脱篇幅。
下面介绍一下GameRegistry提供的一些功能
- registerWorldGenerator:注册世界生成器用来在世界生成的时候插入一些自定义的方块
- generateWorld:添加世界生成的钩子(如果你对于钩子不清楚的话可以移步wiki 或者 度娘)
- registerItem:注册物品,有两个重载(这也是本次教程要讲的一部分)
- addSubstitutionAlias:给物品或者方块添加别名。说白了就是改名
- registerBlock:注册方块。有四个重载,可见这果然是方块的世界啊。(也是本次教程的一部分)
- addRecipe:添加合成。有两个重载。
- addShapedRecipe:添加有序合成。
- addShapelessRecipe:添加无序合成。(这三个合成将会在下一期介绍)
- addSmelting:添加烧炼。(下一期介绍)
- registerTileEntity:注册TileEntity(是在不知道TileEntity翻译成什么号)。总之这个就是一种记录在地图区块的数据。
- registerTileEntityWithAlternatives:类似上一条。
- registerFuelHandler:添加新的燃料用的。
- getFuelValue:获得物品的燃烧时间
- findBlock:通过名字获得方块(注意:现在的minecraft已经马上就不支持数字ID了。请使用这种方式获得方块)
- findItem:通过名字获得物品
- registerCustomItemStack:注册自定义的物品栈(关于物品栈的概念还是以后介绍吧)
- findItemStack:通过mod名和名字获得刚刚注册的物品栈
- findUniqueIdentifierFor:查找一个方块或者物品的UID(唯一身份标识)
以上就是GameRegistry的功能。基本上这些功能能实现一个一般的Mod的绝大多数的功能了呢。
下面就来介绍一下如何添加一个自定义的物品,作为GameRegistry的使用实例:
要知道物品就是net.minecraft.item.Item。当然可以是它的子类。所以创建一个物品的话我们不妨就创建一个新的类继承自那个物品类:
class MyCustomItem extends Item { //这里不要吐槽我的括号在下一行。这样能多占一行呢www……找boss算工作量什么的 //下面物品的具体内容 //基本上就是提供一个构造函数。不要忘记在构造函数里面设定你的物品以及@Override处理你关心的那些方法就好 //不过在构造函数设定你的物品不是必须的。你可以在注册物品的时候对这个实例进行设定,只要是public的就可以在外部修改。这样的做法还是推荐那些直接使用Item进行注册的物品使用。如果要完全自定义一个物品,我个人还是推荐在构造函数初始化。这样代码看起来会比较整洁。 }
这就是一个基本的物品。然后你需要实例化你的物品。并且你需要添加类似下面的代码
GameRegistry.registerItem(new MyCustomItem() , "myCustumItem" , "myCustumMod")
这样你就成功添加了一个你的自定义的Item。
下面介绍一下如何添加一个自定义的方块
添加自定义方块的做法和自定义物品的做法几乎一模一样。方块类都是继承net.minecraft.block.Block。同样的我们自己写一个block之后用GameRegistry注册就好了。至于Block的材质这个参数我们以后介绍。今天先写这么多了
为什么用eclipse打不开那个eclipse文件夹
你问这么基础的问题就有点尴尬了
forge具体怎么使用呢?我按照教程安装完毕了,但是毫无头绪……网上也没有相关教程,自己想做一个mod(forge是用来打包的么?刚学java的小白……)不知道代码该添加在哪,从网上下了MCP908的包,解压后也发现少了好多东西……自己用的是eclipse。大大求解具体怎么开发mod~相关的编译环境怎么搭建?
forge提供了开发mod必要的开发环境,包括反混淆,混淆,打包之类的。也提供了相当多的接口以及事件用来降低MOD开发的难度,减少对coremod的需求。当然一般来讲对于普通玩家最重要的是cpw的forge的fml用来加载mod啦
請問一下addshapedrecipe和addrecipe有什麼區別
没什么区别,不过addRecipe是不推荐使用的方法