周邊教程MinecraftMOD制作-從入門到精通_第1頁
周邊教程MinecraftMOD制作-從入門到精通_第2頁
周邊教程MinecraftMOD制作-從入門到精通_第3頁
周邊教程MinecraftMOD制作-從入門到精通_第4頁
周邊教程MinecraftMOD制作-從入門到精通_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

...wd......wd......wd...第一章學(xué)習(xí)Javajava是什么java是一門計算機語言,我相信很多人都知道這一事實,這很可能是由于您曾經(jīng)玩過由這一語言編譯而成的游戲。Java是一門面向?qū)ο蟮挠嬎銠C語言,也就是說它由兩主要局部組成:字段和方法。那什么是字段和方法呢我們以人為例:我們可以把一個人比作一個工程〔o(∩_∩)o好似有些類比不當~〕。在這個工程中會有許多包,比方“human.body.head〞。在每個包中會包含好多類〔我們之后詳細闡述〕,比方說"ear.java"就是一個類。現(xiàn)在我們已經(jīng)知道了字段和方法,那么什么是類呢我們以之前的ear.java為例,這個耳朵類可以諸如“耳垂高度〞和“音量〞等特征,所以一個解決方案是建設(shè)如“l(fā)istenTo()〞和"moveEars()"等函數(shù)。您可能會問這到底是什么呀,也可能會問這些和Minecraft到底有神馬關(guān)系好吧,以下就是一個例子:方法/函數(shù)舉例publicintgetMaxHealth(){

return20;}復(fù)制代碼這是minecraft中EntityCreeper.java中的一段代碼。這段代碼非常基本,您只需關(guān)心的是如果把返回值20改為其它的什么東西會發(fā)生什么呢當然您有可能會猜想:嗯,有可能會帶來我砍苦力怕多少刀它會死呢其中的"public"表示其它的類也可以調(diào)用該函數(shù),"int"表示該函數(shù)為整型函數(shù)〔在+/-2,147,483,647之間的所有十進制整數(shù)〕。"getMaxHealth()"為函數(shù)名,"return20"表示返回值,比方如果有人問這個類:“苦力怕的最大生命值是多少呀〞,它將答復(fù):“是20~〞。由于我們在函數(shù)頭聲明了"int",所以我們的返回值必須為整數(shù)。字段/變量舉例privatedoublevelocityY;復(fù)制代碼這是在EntityMinecart類中所生命的一個字段。其中"private"表示只有這個類才可以訪問這個字段,"double"表示為一個十進制數(shù),"velocityY"為這個變量的變量名〔字段和變量有時表示同一個東西〕。以上就是關(guān)于Java的一些最基本的知識。網(wǎng)絡(luò)上還有許許多多更為優(yōu)秀的Java教程,所以就不再花時間贅述了。相關(guān)教程:TheNewBoston'sJava(Beginner)ProgrammingTutorialsTheJavaTMTutorials第二章方案與頭腦風暴再次強調(diào),這一章非常重要,有許多準備制作MOD的人士“天賦異稟〞,最后全都“樓主我要整合包〞了。您應(yīng)該對于這個MOD最終能夠?qū)崿F(xiàn)什么功能、您能做到什么程度有一個明確的方案??梢栽谀X中對MOD進展簡單地規(guī)劃,或者對于每一項您所要添加的工程列出一份長達10頁的清單,這都可以,取決于您個人的習(xí)慣。需要牢記的事情:從簡單之處做起!我見過好多好多人再問樓主類似的問題:“若何讓NPC自動建筑、談話、打獵、去殺末影之龍呀〞。MOD制作是一個長期的過程,您也不可能馬上就成為高手。正如我之前談過的,您可以通過學(xué)習(xí)一些Java根基知識來了解一些知識,這樣可以使您更快地成為高手。所以說要從簡單之處入手,先試著為Minecraft添加一個方塊吧。要有興趣!請注意,為您喜歡的游戲制作MOD并不應(yīng)該成為您的一份工作,在MOD制作之時您應(yīng)該能獲得成就感與愉悅。雖然當您不能修正錯誤,或者您的MOD的反響沒有預(yù)想中高時難免會灰心喪氣,但這只是一時之舉。如果您經(jīng)常性地感到厭倦并沒有從中獲得樂趣,或許玩Minecraft更加適合您吧……——第二章到此完畢——第三章:設(shè)置工作環(huán)境在這章開場之前呢,我們需要提一下forge。我個人相對比modloader而言更傾向于forge。您可以在安裝之前閱讀關(guān)于Forge與modloader之間的對比,但是記得總結(jié)。有許多工具有助于提高您MOD的兼容性并使您的MOD制作之路更為輕松。Forge可以通過更新支持不同的版本但是modloader只支持對應(yīng)的版本。所以不要猶豫通過安裝FML和其他一些工具,您可以不需要安裝那繁多的API。如果您有任何問題,請移駕至并參加#MinecraftForge。請參閱本文::///thread-71071-1-1.html準備文件在工作環(huán)境中,您需要一份純潔的.minecraft文件夾??梢酝ㄟ^備份您當前.minecraft文件夾,并通過點擊"forceupdate"來獲得純潔的minecraft文件下載您在開場MOD制作之前還需要下載一下這三樣?xùn)|西:最新版本的Eclipse::///downloads/packages/eclipse-ide-java-developers/junor最新版本的MinecraftForgeSRC::///最新版本的MCP:://mcp.ocean-labs.de/index.php/MCP_Releases設(shè)置工作環(huán)境首先將MCP解壓縮至您所希望的位置,我個人的習(xí)慣是在桌面新建一個名為"Mods"的文件夾,并將MCP解壓縮至那里。ForgeSRC的下載文件應(yīng)該會是一個單獨的名為"forge"的文件夾,將其解壓縮至MCP目錄下的“jars〞文件夾里〔其實只需要Bin和resources文件夾……但是無妨〕。由于Forge不在依賴modloader,所以您不再需要安裝modloader了。如果您方案制作支持多人存在模式〔SSP〕的MOD,您必須要在:///download下載minecraft_server.jar文件,也放在前文所述的"jars"文件夾中,如以以以下圖所示:現(xiàn)在返回MCP目錄下的“forge〞文件夾,運行"installd"文件,如果您操作系統(tǒng)不同文件名字也不同。稍等片刻,安裝完畢后我們繼續(xù)……收尾工作如果您在運行install.bat或者install.sh文件時沒有任何錯誤,您現(xiàn)在應(yīng)該可以開場您的大師之路了。返回Mcp/eclipse文件夾中,復(fù)制文件夾的地址,如:X:UsersMitchDesktopModsNewModMCPeclipse?,F(xiàn)在您可以通過在您文件解壓縮至您所希望的位置的方式安裝eclipse。安裝完畢之后通過雙擊eclipse.exe的方式運行eclipse,當系統(tǒng)問及您的工作環(huán)境時,粘貼之前您復(fù)制的Mcp/eclipse文件夾的位置。當加載完畢后,需要您找到“Client/src/net.minecraft.src/〞的位置。第四章:您等待已久的一章我希望您能多加閱讀一些Minecraft的代碼,雖然對于一個java造詣不精人來說,代碼有可能顯得凌亂,但是不要灰心喪氣。第一節(jié):您的第一個方塊通過在net.minecraft.src包內(nèi)右擊任意文件,點擊New->Class。將其命名為“mod_YOURMODNAME〞,必須確保其以“mod_〞開頭,因為只有這樣系統(tǒng)才會識別該文件為一個MOD并開場加載。無需在底部選擇任何的選項,點擊"Finish"完成創(chuàng)立。此時您會看見一段預(yù)先寫好的類代碼。您的第一件事就是要擴展這個MOD使之成為一個基本類〔BaseMod〕。您可以通過添加“extendsBaseMod〞這樣的代碼完成類的聲明,此時代碼如下:packagenet.minecraft.src;publicclassmod_YourModNameextendsBaseMod{}復(fù)制代碼當然,此時會在“mod_YOURMODNAME〞處顯示錯誤,此時將鼠標移至該錯誤處,在彈出的對話框中單擊“Addunimplementedmethods〞。此時會在當前的基本類里添加兩個類函數(shù):“l(fā)oad〞與“getVersion〞。您可以刪除掉“//TODO〞這種行,在“getVersion〞類函數(shù)中,您需要將null替換為〞1.0“或者其他您喜歡的版本號。您需要保存引用,就如同需要返回一個字符串一樣。此時的代碼如下所示:packagenet.minecraft.src;publicclassmod_YourModNameextendsBaseMod{

@Override

publicStringgetVersion(){

return"1.0";

}

@Override

publicvoidload(){

}}復(fù)制代碼現(xiàn)在您終于可以開場創(chuàng)作您的第一份方塊代碼啦~在類的頂端添加以下代碼〔在“{}〞之內(nèi)〕:publicstaticBlockyourFirstBlock=newBlockTutorial(blockID,0).setHardness(2.5F).setStepSound(Block.soundWoodFootstep).setBlockName("blockName");復(fù)制代碼其中:名稱含義public表示所有類均可以訪問。static表示在類內(nèi)不創(chuàng)立一個新的實例的條件下即可訪問〔詳情請查閱java教程〕Block該變量引用“Block.java〞yourfirstBLock變量名,叫什么都行=newBlockTutorial此時在BlockTutorial類中創(chuàng)立了一個新的實例,由于我們之前沒有聲明,因此會出錯。您可以將其改為任何您喜歡的名字,只要之后的名字與其一樣就可以了。(blockID,0)

您所傳遞給BlockTutorial類的信息,就是方塊ID。您可以在這里將其替換成您所希望的任何數(shù)值。特別提醒您,在最新版本的Forge中,可以自動調(diào)整您的方塊ID,并將其設(shè)置到137到4096中的一個未使用過的數(shù)值。您可以在這里查看您的MOD與MOD的兼容性。之后的0稍后會為您詳細闡述,現(xiàn)在暫且放過它。.setHardness(2.5F)設(shè)置該方塊的硬度為2.5,您可以隨意調(diào)整。.setStepSound(Block.soundWoodFootstep)

走在上面的聲音,如果您喜歡的話,也可以將“soundWoodFootstep〞改成“soundClothFootstep〞或者任何你喜歡的聲音。.setBlockName("blockName");這個變量無關(guān)緊要,只是要保證每個的名字不同就可以了?,F(xiàn)在您已經(jīng)掌握了若何新建一個BlockTutorial類了,當然有可能在之前您就把這個名字改掉了……現(xiàn)在我們要擴展方塊,我們首先需要執(zhí)行ITextureProvider,當您將如下代碼復(fù)制進其中時,可以使鼠標懸停在ITextureProvider處并單擊導(dǎo)入〔import〕。publicclassBlockTutorialextendsBlockimplementsITextureProvider{復(fù)制代碼現(xiàn)在我們需要為我們之前跳過的那局部創(chuàng)立一個構(gòu)造函數(shù)〔可以在java教程中獲得更為詳實的信息〕。publicBlockTutorial(inti,intj){

super(i,j,Material.wood);}復(fù)制代碼名稱含義BlockTutorial由于是構(gòu)造函數(shù),此處需與類的名字一樣。(inti,intj)我們在之前使用(blockID,0)的聲明。更為詳細的來說,表示該構(gòu)造函數(shù)使用兩個整數(shù)變量并將其命名為i和j。super表示需要使用超類來傳遞方塊信息,這也是問什么我們擴展這個類的緣故??赡茈y以理解但是請參閱java教程o(∩_∩)o~~(i,j,Material.wood);這是由我們的MOD類中繼承的將要傳給方塊的參數(shù),我們同時也傳遞了Material.wood是因為我希望這個方塊在被鎬敲擊時可以更為容易地被破壞。好,現(xiàn)在您即將進展的步驟是添加一個Forge的類函數(shù)以便我們可以為這個方塊設(shè)置材質(zhì)。publicStringgetTextureFile(){

return"/Mic'sMods/CrossbowMod/gui/Crossbow.png";}復(fù)制代碼切記:不要更改類函數(shù)的第一行!亂修改可能覆蓋或者替換類函數(shù)。這是一個用于十字弓MOD的例子,其中的材質(zhì)存儲在minecraft.jar的相應(yīng)位置中。您可以很輕松地修改您所使用的材質(zhì),但是如果指向一個空位置則無法進展加載。當然也要保證是雙引號~最后還需要一個Forge的類函數(shù)將該方塊添加至創(chuàng)造模式的物品欄中。publicvoidaddCreativeItems(ArrayListitemList){if(blockID==mod_YourModName.yourFirstBlock.blockID)

{

itemList.add(newItemStack(this));

}}復(fù)制代碼當鼠標懸停至ArrayList時可以導(dǎo)入。最后一個類函數(shù)可能有些復(fù)雜……名稱含義void表示該函數(shù)沒有返回值addCreativeItems(ArrayListitemList)類函數(shù)和構(gòu)造函數(shù)的名字。不要進展修改,否則會覆蓋Forge的類函數(shù)。if(根據(jù)真假不同返回值也不同,如果不懂請多看看教程blockID==mod_YourModName.yourFirstBlock.blockID邏輯表達式,如果該方塊的方塊ID與您創(chuàng)立的方塊的方塊ID則繼續(xù)itemList.add(newItemStack(this));

在創(chuàng)造模式中可以創(chuàng)立和堆疊這一方塊,這條語句不懂亦無妨。之后,我們在load()類函數(shù)中添加如下語句:ModLoader.registerBlock(yourFirstBlock);ModLoader.addName(yourFirstBlock,"Woohoo!MyfirstBlock:D");復(fù)制代碼其中:名稱含義ModLoader.registerBlock您所調(diào)用的類函數(shù)(yourFirstBlock)您所使用的方塊,確保之前聲明過。ModLoader.addName調(diào)用另一個類函數(shù),用于添加名字(yourFirstBlock,"Woohoo!MyfirstBlock:D");這里是為您的方塊實例賦予名字的地方,您可以在這里寫“紅石燈〔RedstoneLamp〕〞,“樓主我要整合包~(LouzhuWoyaoZhengheBao)〞等等?,F(xiàn)在要做一件最為重要的事請:hx940525,如果您要查看本帖隱藏內(nèi)容請回復(fù)您已經(jīng)為Minecraft制作了一個屬于您的MOD,不再是MOD制作小白癡了!無論這個MOD多么粗糙和簡陋,但都是您在MOD制作大師之路的一個見證!希望當您在成為大師之時驀然回首還能記得您的第一份作品,無論若何,恭喜您?。?!第四章:您等待已久的一章我希望您能多加閱讀一些Minecraft的代碼,雖然對于一個java造詣不精人來說,代碼有可能顯得凌亂,但是不要灰心喪氣。第二節(jié):為您的方塊添加材質(zhì)在這一局部教程中,將會為您講述若何為您的方塊添加材質(zhì)。首先您需要一份默認的“子圖〞。所謂“子圖〞就是一份可以由程序在需要時可以隨時加載的圖片。在Minecraft中,可以從terrain.png和items.png中加載材質(zhì)。實際上,依托于Forge,您所做的工作即為編輯一張屬于您的terrain.png以及items.png并將您的MOD與這些子圖之間建設(shè)聯(lián)系。再次特意為您精心準備了兩張默認的子圖〔items.png、terrain.png〕。我們可以翻開編輯軟件〔Photoshop、Gimp、Paint.NET〔譯者強力推薦~〕〕,此時您可以看見256個紫色方塊,現(xiàn)在需要做的就是按照您的喜好繪制圖案。請牢記您的材質(zhì)是16×16的,并且按照如下方式排列。您可能很好奇為什么是從0開場的呢好吧,還記得我們之前的“(blockID,0)〞嗎其中的“0〞就是調(diào)用這個文件。如果我們在之前的文檔中保持“0〞不變就會在加載子圖之后您的方塊將顯示為藍色的“0〞方塊,如果我們在代碼中將“0〞改為“1〞,則在最后您的方塊將變?yōu)榧t色“1〞方塊。當您繪制完您的方塊材質(zhì)后,您需要以png格式保存這份子圖,否則Minecraft不會正確加載。還記得之前的“getTextureFile()〞類函數(shù)么,F(xiàn)orge雖然會自動進展尋找,但還請將子圖與代碼放在一系列的文件夾內(nèi)。翻開“YourMCPFolder/jars/bin/minecraft.jar〞并將文件夾拖入其中,此時getTextureFile()就應(yīng)該在minecraft.jar內(nèi)找到您子圖所在的位置。這可能有些晦澀難懂,所以我們需要測試一下您是否真正搞懂了。在我們運行客戶端之前還有一件事需要進展:——需要Forge預(yù)加載材質(zhì)。MinecraftForgeClient.preloadTexture("/New/Untitled-1.png");復(fù)制代碼請確保您在類函數(shù)中所輸入的文件地址與getTexture()所引用地址一樣。我使用Forge客戶端而不是用普通的forge類的原因是材質(zhì)只是在客戶端加載,不需要服務(wù)器端提供支持?,F(xiàn)在您就應(yīng)該看到您的那個大大的0方塊啦~P.S:默認的子圖文件下載地址在這里第四章:您等待已久的一章我希望您能多加閱讀一些Minecraft的代碼,雖然對于一個java造詣不精人來說,代碼有可能顯得凌亂,但是不要灰心喪氣。第三節(jié):創(chuàng)立一份合成表在這一節(jié),我將為您講述若何創(chuàng)立一份合成表,本章不會有任何下載內(nèi)容O(∩_∩)O~當您已經(jīng)成功地掌握了前兩節(jié)的內(nèi)容,您就已經(jīng)基本掌握了制作MOD的基本知識?,F(xiàn)在需要為那些奮斗在存在模式的人們考慮了~本節(jié)內(nèi)容十分簡單,僅調(diào)用一個類函數(shù)。所以您可以嘗試一下能否自己一個人搞清楚代碼,我會將釋義附在后面。當然,這些代碼完全可以一行寫完,但是寫成這樣子更為直觀,就好似您在用工作臺進展合成一樣。ModLoader.addRecipe(newItemStack(yourFirstBlock),newObject[]{

"BBB",

"BAB",

"BBB",

Character.valueOf('A'),Item.diamond,

Character.valueOf('B'),Block.obsidian});復(fù)制代碼您看懂了么?您當然也可以在合成中使用您自己創(chuàng)立的方塊或物品,舉例來說,"Character.valueOf('A'),yourFirstBlock"即代表之前所述的“A〞為您所創(chuàng)立的方塊。如以以以下圖所示:以下為一些在編寫合成公式時的小技巧:您可以使用空格代表工作臺中的空位。

"DDD",

"I",

"I",復(fù)制代碼您可以簡化合成公式,這樣子無論原材料在工作臺內(nèi)若何放置,只要形狀正確即能合成〔木板合成工作臺就是一例〕

"BB",

"BB",復(fù)制代碼您可以只使用單一原材料進展合成,也就是說放入一個該方塊或物品即可合成您所希望的物品。"Z",復(fù)制代碼第四章:您等待已久的一章

我希望您能多加閱讀一些Minecraft的代碼,雖然對于一個java造詣不精人來說,代碼有可能顯得凌亂,但是不要灰心喪氣。第四節(jié):生成礦藏

現(xiàn)在您可以能會想若何制作一份礦藏呢如果您希望制作一份礦藏,請不要為其設(shè)置可以進展合成的要素,畢竟礦藏是不能合成出來的。建議您重新為自己的礦物方塊設(shè)計一套材質(zhì),畢竟在許多灰色的石頭中間突然挖到一個藍色大方塊很是詭異。您可以根據(jù)自己使用photoshop或Gimp的水平進展創(chuàng)作,甚至直接拷貝原版材質(zhì)并加以修改其中的色調(diào)和飽和度也是一個不錯的而選擇.還記得我們在教程之前提到的".setHardness(2.5F)"么在制作礦藏時這一參數(shù)也需要考慮在內(nèi):0.1F意味著幾乎可以瞬間摧毀該方塊,而1000.0F則意味著您可以挖到天荒地老。還有一點請注意,此處與您實際進展采礦無任何相關(guān),我們稍后會進展講解。我們使用generateSurface()類函數(shù)對modloader類函數(shù)進展覆蓋,當生成世界時就會調(diào)用這個類函數(shù),并生成您所添加進類函數(shù)的語句。以下代碼將用于您的mod_file:

OverridingTheModLoaderMethod?@OverridepublicvoidgenerateSurface(Worldworld,Randomrandom,intchunkX,intchunkZ){

}復(fù)制代碼

再次強調(diào),不要做任何修改,因為您的任何改動都會帶來不可知的結(jié)果。

現(xiàn)在需要再去中添加一個循環(huán)語句:

GenerationForLoop?for(inti=0;i<20;i++){

intrandPosX=chunkX+random.nextInt(16);

intrandPosY=random.nextInt(20);

intrandPosZ=chunkZ+random.nextInt(16);

newWorldGenMinable(this.yourFirstOre.blockID,8).generate(world,random,randPosX,randPosY,randPosZ);}復(fù)制代碼名稱]含義for(..)表示循環(huán),詳情請參閱java教程inti=0;i<20;i++默認的循環(huán)語句,您只需要關(guān)心其中的“20〞就可以了,如果您將其設(shè)置為1就代表該礦物如同鉆石一樣珍惜,而將其設(shè)置為20則代表如同煤那樣廣泛分布,您可以將其最大設(shè)置為50左右。intrandPosX=chunkX+random.nextInt(16);表示礦藏確實切位置其中變量randPosX用于存儲礦藏的X坐標,而礦脈的實際位置則由1到16的一個隨機數(shù)與區(qū)塊位置共同決定。不要更改其中的16!intrandPosY=random.nextInt(20);礦脈的y坐標由1到20的一個隨機數(shù)決定,您可以將20改為任何一個正值,比方礦石就將其設(shè)置為16而煤則為128。intrandPosZ=chunkZ+random.nextInt(16);礦脈的Z坐標由變量randPosZ確定,礦脈的實際位置則由1到16的一個隨機數(shù)與區(qū)塊位置共同決定。不要更改其中的16!newWorldGenMinable為WorldGenMinable類中添加一個新的實例,該實例主要用于控制生成(this.yourFirstOre.blockID,8)控制您所生成礦脈的最大礦石數(shù)量,最小值為3亦即每個礦脈只生成1塊礦石.generate在WorldGenMinable中調(diào)用generate類函數(shù)。(world,random,randPosX,randPosY,randPosZ)''world''為生成世界的名稱,可以由delaration類函數(shù)提供;''Random''為java的隨機場,也由delaration類函數(shù)提供;"Random''X,Y,Z為三個整值變量,用于控制礦脈的位置。

我們接下來設(shè)置礦藏的硬度等級,也就是說使用何種鎬開采這一種礦藏,以下為典型礦石的硬度等級:黑曜石為3。鉆石為2。鐵礦石為1。在您的load()類函數(shù)中添加如下代碼:

SettingHarvestLevel?MinecraftForge.setBlockHarvestLevel(yourFirstOre,"pickaxe",3);復(fù)制代碼

此時您的礦藏創(chuàng)立之旅就臨近尾聲,大家請欣賞我創(chuàng)造的超級惡劣材質(zhì)的礦藏~

P.S:在您重新生成一個世界后〔也就是您更改了控制世界生成的變量〕如果出現(xiàn)錯誤,請先檢查區(qū)塊生成是否正確再行檢查代碼問題。~?

d7z65.png

(118.59KB,下載次數(shù):14)第四章:您等待已久的一章我希望您能多加閱讀一些Minecraft的代碼,雖然對于一個java造詣不精人來說,代碼有可能顯得凌亂,但是不要灰心喪氣。第五節(jié):添加燒煉與創(chuàng)立物品在這一節(jié),我們將要為您在上一節(jié)創(chuàng)立的礦藏添加燒煉物,以錠為例,因為其相對較為簡單。創(chuàng)立物品與創(chuàng)立方塊相比非常類似,事實上我們只需要在方塊/物品的代碼中修改一點點的地方即可。我們這次需要創(chuàng)立一個物品對象。NewItemObject?

publicstaticItemyourFirstItem=newItemTutorial(280).setIconIndex(0).setItemName("itemName");復(fù)制代碼與方塊相比,除去使用的對象和類不同外其余完全一樣。我們此時并沒有使用在構(gòu)造體內(nèi)添加子圖的方法,而是使用.setlconindex(int)類函數(shù),.setitemName與其一樣,即使這些并沒有在游戲中出現(xiàn),但也應(yīng)該與您的方塊不同?,F(xiàn)在我們創(chuàng)立ItemTutorial類,代碼與前文所述BlockTutorial類的代碼完全一樣〔您可以自行更改類的名稱〕。此時只需要擴展item類,注意并不需要覆蓋addCreativeItems類函數(shù)。使用Modloader.addName()類函數(shù)、預(yù)加載子圖〔如果您方塊和物品使用不同子圖重新預(yù)加載的話需要〕在load()函數(shù)中添加如下代碼:Intoload()?ModLoader.addSmelting(yourFirstOre.blockID,newItemStack(yourFirstItem));復(fù)制代碼其中的第一個參數(shù)是輸入端,亦即我們之前制作的那個方塊,第二個參數(shù)為itemStack亦即我們通過熔爐燒煉出的您創(chuàng)立的物品。好啦,您的第一份物品已經(jīng)通過熔爐燒煉而成了〔其實就是一個礦石錠~〕,這一章雖然簡單,但是卻對下一節(jié)的教程非常有用,下一節(jié)我們講述若何制作工具

第四章:您等待已久的一章我希望您能多加閱讀一些Minecraft的代碼,雖然對于一個java造詣不精人來說,代碼有可能顯得凌亂,但是不要灰心喪氣。

第四章第六節(jié):創(chuàng)立一組工具在接下來的教程中,我們主要集中于講述若何創(chuàng)立一組工具。這一節(jié)要比其他各節(jié)都要復(fù)雜,所以各位同學(xué)打起精神來~~首先,我們需要為新的工具創(chuàng)立一個EnumToolMaterial。在您的類中添加如下代碼,注意不是在任何的類函數(shù)中。NewToolMaterial?staticEnumToolMaterialBLUETOOLS=EnumHelper.addToolMaterial("BLUE",2,171,5F,1,5);復(fù)制代碼名稱含義

EnumHelper.addToolMaterial我們所引用的Forge類函數(shù)。如果您在此處出現(xiàn)錯誤,請手動導(dǎo)入net.minecraft.forge.EnumHelper。以下變量可以進展更改''BLUE''材料名稱2您所設(shè)定的工具能夠正常開采的硬度等級〔如黑曜石礦為3、鉆石礦為2、鐵礦為1〕171該工具的耐久度〔木質(zhì)工具為59、鉆石工具為1561〕5F使用該工具開采的速度,您可以根據(jù)如下數(shù)據(jù)進展大概地判斷〔木質(zhì)工具:2.0F,鉆石工具為8.0F〕1該工具對實體所造成的傷害值,具體計算公式如下〔該數(shù)值+4〕÷2?!踩绱藭r每擊傷害為2.5顆心?!?可附魔性,此處不確定〔石頭為5、鉆石為10、金為22〕第二步,我們需要創(chuàng)立一個新的物品對象:NewItems?publicstaticItemblueStoneShovel=newBlueStoneSpade(ItemID1,BLUETOOLS).setIconIndex(0).setItemName("customShovel");publicstaticItemblueStonePickaxe=newBlueStonePickaxe(ItemID2,BLUETOOLS).setIconIndex(1).setItemName("customPickaxe");publicstaticItemblueStoneAxe=newBlueStoneAxe(ItemID3,BLUETOOLS).setIconIndex(2).setItemName("customAxe");publicstaticItemblueStoneHoe=newBlueStoneHoe(ItemID5,BLUETOOLS).setIconIndex(4).setItemName("customHoe");publicstaticItemblueStoneSword=newBlueStoneSword(ItemID4,BLUETOOLS).setIconIndex(3).setItemName("customSword");復(fù)制代碼此時會報錯,這是由于還沒有新建類。BlueStoneSpade我們接下來所要創(chuàng)立的類的名字(ItemID1,BLUETOOLS)為您的鏟子所設(shè)置的物品ID。請記得為您每一個工具都設(shè)置一個不同的物品ID!BL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論