我的世界NEI物品管理器mod詳細(xì)圖文使用教程
插件編寫篇
由于這塊內(nèi)容靈活度太大,我不可能將每一個(gè)方法都介紹到,所以我只會(huì)挑選出幾個(gè)常用的來(lái)講。如果你是普通玩家那么這部分你可以跳過(guò)。
一. 依賴
第一步當(dāng)然就是添加依賴了。首先,打開(kāi)你的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"
}
當(dāng)然,dependencies里面的版本請(qǐng)自己選擇合適的,這里可能不是最新的,如果你要是1.7.10的mod就選擇1.7.10的版本,具體的版本號(hào)請(qǐng)到這里(CCC, NEI)和這里(CCL)查看。
接下來(lái),把那幾個(gè)dev的mod文件下載下來(lái),加到你IDE的依賴?yán),這里很簡(jiǎn)單就不說(shuō)了。
二. IConfigureNEI
我們需要先創(chuàng)建一個(gè)類實(shí)現(xiàn)(Implements) IConfigureNEI,名稱隨意,我在這里將其命名為NEIConfig。這個(gè)類的作用相當(dāng)于是一個(gè)入口,當(dāng)NEI需要載入插件的時(shí)候會(huì)搜索到這個(gè)類,從而加載你的插件。
你一共需要實(shí)現(xiàn)三個(gè)方法:
loadConfig:這個(gè)方法是用來(lái)注冊(cè)Handler或者設(shè)置一些其它東西的,經(jīng)常使用的有API.registerRecipeHandler(),API.registerUsageHandler(),API.setGuiOffset()
getName:這里只需要返回你設(shè)定的NEI插件名字就行了,它會(huì)顯示在NEI已加載插件那里
getVersion:返回你設(shè)定的版本號(hào)
三. RecipeHandler
RecipeHandler是編寫插件最重要的一部分了,當(dāng)然它也非常復(fù)雜。不過(guò)還好,Chickenbones給我們提供了一個(gè)TemplateRecipeHandler,你可以直接繼承這個(gè)類而不用寫很多重復(fù)性的代碼。這個(gè)類本身其實(shí)就相當(dāng)于一個(gè)教程,里面每個(gè)方法基本都有文檔,你可以參考它來(lái)寫你自己的Handler。
這里我們首先新建一個(gè)類繼承TemplateRecipeHandler,我這里命名為RecipeHandlerMeowMachine,作為喵嗚機(jī)的配方。之后去IConfigureNEI類,在loadConfig下加入這樣兩行:
API.registerRecipeHandler(new RecipeHandlerMeowMachine());
API.registerUsageHandler(new RecipeHandlerMeowMachine());
這兩行分別注冊(cè)了配方和用途的Handler,都是我們剛剛注冊(cè)的那個(gè)類。
接下來(lái)我們需要新建一個(gè)內(nèi)部類繼承CachedRecipe,這里是CachedMeowMachineRecipe。它作為NEI內(nèi)部的配方形式。
我們需要實(shí)現(xiàn)這兩個(gè)方法:
getIngredients:返回一個(gè)List,里面裝有該配方的原材料的PositionedStack
getResult:返回該配方產(chǎn)物的PositionedStack
當(dāng)然除此之外還有很多方法可以O(shè)verride,比如副產(chǎn)物可以用getOtherStacks之類的,大家可以自行探索。這里的PositionedStack為一個(gè)有固定坐標(biāo)的物品,注意在構(gòu)建PositionedStack時(shí)候那個(gè)Object可以是ItemStack或者是ItemStack的List/數(shù)組。
回到RecipeHandlerMeowMachine,我們實(shí)現(xiàn)這幾個(gè)方法:
getGuiClass:返回你機(jī)器Gui的類,如果Gui的偏移有問(wèn)題,到IConfigureNEI的loadConfig方法里添加API.setGuiOffset()調(diào)整
getGuiTexture:返回你機(jī)器Gui材質(zhì)的地址
getRecipeName:返回顯示在配方最上方的配方名稱
recipiesPerPage:返回每頁(yè)顯示的配方數(shù)量,推薦寫1防止出問(wèn)題
loadTransferRects:里面用transferRects.add()在Gui上添加一個(gè)區(qū)域可以點(diǎn)擊用來(lái)顯示當(dāng)前機(jī)器的所有配方,類似于工作臺(tái)那個(gè)箭頭
this.transferRects.add(new RecipeTransferRect(new Rectangle(起始x, 起始y, x長(zhǎng)度, y長(zhǎng)度), "過(guò)濾用ID"));
loadCraftingRecipes(String outputId, Object... results):覆蓋這個(gè)是用來(lái)加載所有配方的時(shí)候過(guò)濾ID的,基本想法就是,在outputId等于過(guò)濾ID時(shí)候在this.arecipes里添加所有的配方,除此以外按照默認(rèn)的來(lái)處理。注意this.arecipes代表匹配到的配方
loadCraftingRecipes(ItemStack result):根據(jù)產(chǎn)物搜索配方,基本想法是,遍歷所有注冊(cè)的配方,當(dāng)產(chǎn)物相同的時(shí)候添加配方到this.arecipes
loadUsageRecipes(ItemStack ingredient):根據(jù)原料搜索配方,基本想法是,遍歷所有注冊(cè)的配方,當(dāng)原料包含該物品的時(shí)候添加配方到this.arecipes 。
本文導(dǎo)航
- 我的世界渲染作品美圖第十二彈
- 我的世界AE2教程應(yīng)用能源2福魯伊克斯水晶自動(dòng)生產(chǎn)制作詳解
- 我的世界AE2教程應(yīng)用能源2簡(jiǎn)易自動(dòng)化制作詳解
- 我的世界AE2教程應(yīng)用能源2高級(jí)自動(dòng)化最簡(jiǎn)模型制作詳解
- 我的世界匠魂mod長(zhǎng)弓推薦配方秒射50血
- 我的世界紅石教程雙向生死陷阱門
- 我的世界手機(jī)版0.12.3發(fā)布可以使用萬(wàn)圣節(jié)皮膚
- 我的世界紅石教程零基礎(chǔ)學(xué)紅石電路(持續(xù)更新)
- 我的世界鐵路新手教程鐵軌與動(dòng)力鐵軌與探測(cè)鐵軌的區(qū)別
網(wǎng)名 注:您的評(píng)論需要經(jīng)過(guò)審核才會(huì)顯示出來(lái)。提交評(píng)論
支持( 0 ) 蓋樓(回復(fù))
查看所有0條評(píng)論>>