跑跑车首页

当前位置:首页攻略秘籍单机攻略 → 我的世界NEI物品管理器mod详细图文使用教程

我的世界NEI物品管理器mod详细图文使用教程

作者:佚名来源:本站整理 发表时间:2015/10/26 9:47:58 评论(0)
8 页 插件编写篇

插件编写篇

由于这块内容灵活度太大,我不可能将每一个方法都介绍到,所以我只会挑选出几个常用的来讲。如果你是普通玩家那么这部分你可以跳过。

一. 依赖

第一步当然就是添加依赖了。首先,打开你的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 。


玩家评论
我要点评

网名 注:您的评论需要经过审核才会显示出来。

已有 0 位玩家参与点评
第 1 楼 中国中国 跑跑车网友 发表于: 2017/10/2 20:21:01
怎么打开搜索框啊

支持( 0 ) 盖楼(回复)

查看所有0条评论>>

下载排行