我的世界NEI物品管理器mod详细图文使用教程
插件编写篇
由于这块内容灵活度太大,我不可能将每一个方法都介绍到,所以我只会挑选出几个常用的来讲。如果你是普通玩家那么这部分你可以跳过。
一. 依赖
第一步当然就是添加依赖了。首先,打开你的build.gradle文件,在文件的下面添加这样几行:
repositories {
maven {
name = "chickenbones"
url = "http://chickenbones.net/maven"
}
}
dependencies {
compile "codechicken:CodeChickenLib:1.8-1.1.2.139:dev"
compile "codechicken:CodeChickenCore:1.8-1.0.5.36:dev"
compile "codechicken:NotEnoughItems:1.8-1.0.5.104:dev"
}
当然,dependencies里面的版本请自己选择合适的,这里可能不是最新的,如果你要是1.7.10的mod就选择1.7.10的版本,具体的版本号请到这里(CCC, NEI)和这里(CCL)查看。
接下来,把那几个dev的mod文件下载下来,加到你IDE的依赖里,这里很简单就不说了。
二. IConfigureNEI
我们需要先创建一个类实现(Implements) IConfigureNEI,名称随意,我在这里将其命名为NEIConfig。这个类的作用相当于是一个入口,当NEI需要载入插件的时候会搜索到这个类,从而加载你的插件。
你一共需要实现三个方法:
loadConfig:这个方法是用来注册Handler或者设置一些其它东西的,经常使用的有API.registerRecipeHandler(),API.registerUsageHandler(),API.setGuiOffset()
getName:这里只需要返回你设定的NEI插件名字就行了,它会显示在NEI已加载插件那里
getVersion:返回你设定的版本号
三. RecipeHandler
RecipeHandler是编写插件最重要的一部分了,当然它也非常复杂。不过还好,Chickenbones给我们提供了一个TemplateRecipeHandler,你可以直接继承这个类而不用写很多重复性的代码。这个类本身其实就相当于一个教程,里面每个方法基本都有文档,你可以参考它来写你自己的Handler。
这里我们首先新建一个类继承TemplateRecipeHandler,我这里命名为RecipeHandlerMeowMachine,作为喵呜机的配方。之后去IConfigureNEI类,在loadConfig下加入这样两行:
API.registerRecipeHandler(new RecipeHandlerMeowMachine());
API.registerUsageHandler(new RecipeHandlerMeowMachine());
这两行分别注册了配方和用途的Handler,都是我们刚刚注册的那个类。
接下来我们需要新建一个内部类继承CachedRecipe,这里是CachedMeowMachineRecipe。它作为NEI内部的配方形式。
我们需要实现这两个方法:
getIngredients:返回一个List,里面装有该配方的原材料的PositionedStack
getResult:返回该配方产物的PositionedStack
当然除此之外还有很多方法可以Override,比如副产物可以用getOtherStacks之类的,大家可以自行探索。这里的PositionedStack为一个有固定坐标的物品,注意在构建PositionedStack时候那个Object可以是ItemStack或者是ItemStack的List/数组。
回到RecipeHandlerMeowMachine,我们实现这几个方法:
getGuiClass:返回你机器Gui的类,如果Gui的偏移有问题,到IConfigureNEI的loadConfig方法里添加API.setGuiOffset()调整
getGuiTexture:返回你机器Gui材质的地址
getRecipeName:返回显示在配方最上方的配方名称
recipiesPerPage:返回每页显示的配方数量,推荐写1防止出问题
loadTransferRects:里面用transferRects.add()在Gui上添加一个区域可以点击用来显示当前机器的所有配方,类似于工作台那个箭头
this.transferRects.add(new RecipeTransferRect(new Rectangle(起始x, 起始y, x长度, y长度), "过滤用ID"));
loadCraftingRecipes(String outputId, Object... results):覆盖这个是用来加载所有配方的时候过滤ID的,基本想法就是,在outputId等于过滤ID时候在this.arecipes里添加所有的配方,除此以外按照默认的来处理。注意this.arecipes代表匹配到的配方
loadCraftingRecipes(ItemStack result):根据产物搜索配方,基本想法是,遍历所有注册的配方,当产物相同的时候添加配方到this.arecipes
loadUsageRecipes(ItemStack ingredient):根据原料搜索配方,基本想法是,遍历所有注册的配方,当原料包含该物品的时候添加配方到this.arecipes 。
本文导航
- 第1页: 首页
- 第2页: 搜索篇
- 第3页: 背包操作篇
- 第4页: 工具篇
- 第5页: 作弊操作篇
- 第6页: 其他
- 第7页: 设置篇
- 第8页: 插件编写篇
支持( 0 ) 盖楼(回复)
查看所有0条评论>>