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

下載本文檔

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

文檔簡(jiǎn)介

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

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

@Override

publicStringgetVersion(){

return"1.0";

}

@Override

publicvoidload(){

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

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

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

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

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

{

itemList.add(newItemStack(this));

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

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

"BBB",

"BAB",

"BBB",

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

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

"DDD",

"I",

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

"BB",

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

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

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

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

}復(fù)制代碼

再次強(qiáng)調(diào),不要做任何修改,因?yàn)槟娜魏胃膭?dòng)都會(huì)帶來不可知的結(jié)果。

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

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

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

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

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

d7z65.png

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

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

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

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

EnumHelper.addToolMaterial我們所引用的Forge類函數(shù)。如果您在此處出現(xiàn)錯(cuò)誤,請(qǐng)手動(dòng)導(dǎo)入net.minecraft.forge.EnumHelper。以下變量可以進(jìn)展更改''BLUE''材料名稱2您所設(shè)定的工具能夠正常開采的硬度等級(jí)〔如黑曜石礦為3、鉆石礦為2、鐵礦為1〕171該工具的耐久度〔木質(zhì)工具為59、鉆石工具為1561〕5F使用該工具開采的速度,您可以根據(jù)如下數(shù)據(jù)進(jìn)展大概地判斷〔木質(zhì)工具:2.0F,鉆石工具為8.0F〕1該工具對(duì)實(shí)體所造成的傷害值,具體計(jì)算公式如下〔該數(shù)值+4〕÷2。〔如此時(shí)每擊傷害為2.5顆心?!?可附魔性,此處不確定〔石頭為5、鉆石為10、金為22〕第二步,我們需要?jiǎng)?chuàng)立一個(gè)新的物品對(duì)象: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ù)制代碼此時(shí)會(huì)報(bào)錯(cuò),這是由于還沒有新建類。BlueStoneSpade我們接下來所要?jiǎng)?chuàng)立的類的名字(ItemID1,BLUETOOLS)為您的鏟子所設(shè)置的物品ID。請(qǐng)記得為您每一個(gè)工具都設(shè)置一個(gè)不同的物品ID!BL

溫馨提示

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

評(píng)論

0/150

提交評(píng)論