首先需要強調,這個教程不是給沒有任何編程基礎的人準備的...你至少要懂得最基礎的編程知識和OOP(面向對象編程)的基礎,如果你真的對編程一竅不通的話建議先讀讀Java教程.
胡來的前言
明明在索引貼不是已經有一個前言了嗎?那個是我在3月份寫的,在離死又近了7個月後,我又有些新的話想說.前言和教程內容沒有任何關係,懶得看文字的跳過就好了.
"當我們追求各種各樣的Mod的時候,還記得當初在Alpha時代拿着石鎬裸身下礦洞時的感動嗎?"這個是我在PD服務器管理組討論服務器Mod配置問題時說的,以現在的眼光看,Alpha版的MC無比簡陋,然而當初我們卻能孜孜不倦地下坑,挖礦,努力從礦洞中逃出生天,如此反覆直到被骷髏送去見四季映姬(早期版本的JJ怪真不是威脅)...
"一個遺世獨立的理想鄉"這是我對Alpha1.1的MC的評價,在那個時候,沒有Mod,沒有MCP,沒有作為新人的夢魘的HIM,沒有明爭暗鬥的ModLoader和Forge,沒有飛揚跋扈的Spout,沒有短命的MCP MF/MS,就連當時的服務器端都是沒有Mob的...MC就宛如一片生機盎然的凈土(對開局隨機到雪地地圖的人例外)而玩家作為這片世外桃源中唯一的人類,用雙手用工具,開拓出自己的家園.有人在樹林中建起一座木屋,有人建起了一座城堡,玩家們挖開了家周圍的泥土種上沙子和仙人掌作為護城溝,掏空了一座山建造自己心目中的Secret Base.MC猶如一片樂土,但是這又能維持多久呢...
一年半後,MC迎來了正式版,殺死Ender龍後的詩凝縮了Notch在3年間對Minecraft的所有感情,所有的辭藻匯聚成Notch眼中的MC的主題"A Dream",夢終了,Notch投身於0x10c中.不小心在自己名字中多打了一個e的JeB成了開發組的老大,MC也自然開始向"Jeb眼中的MC"發展,我倒並不是認為Jeb將MC搞砸了,但我感覺MC在慢慢變成一個RPG遊戲,而不是最初的沙盒.可又能批評什麼呢?"所有人都是如此愛着這個世界,以至於不允許它不向自己希望中的方向發展."誰都有權將MC改變成自己希望中的樣子,這正是MC的魅力,而Mod則是實現這一目的的工具.
我儘力將這篇教程寫好,我會竭力讓它通俗易懂,能夠讓更多的人明白MCMod的開發.如果有人將上面的前言看完的話,Vielen Dank.
-szszss
-2012.10.27 23:00
-聽着"八雲紫のタイムマシン" 寫下了這篇腎疼的前言
開發環境準備
首先你要準備JDK(Java開發工具包)和一個代碼編輯器,我習慣用Eclipse(曾經是最流行的Java代碼編輯器,現在嘛...至少是最流行的免費代碼編輯器.不過在IDEA推出免費的社區版之後,它或許連最流行的免費代碼編輯器都不是了 ?)
最新版本的JDK應該是JDK8,雖然MC要求Java6,但高版本JDK可以編譯出低版本的代碼.因此在版本的選擇上不用太在意.JDK可以在官網下載,網址是:
JDK8:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
根據自己的操作系統來選擇相應的版本,64位的Windows使用Windows x64版,32位Windows使用Windows x86版.
然後是準備一個Java編輯器,我使用的是Eclipse,這篇教程的代碼也是在Eclipse下編寫的,如果你喜歡的話,你也可以使用IDEA或NetBeans.現在很多人稱IDEA很好用,但我總是不習慣IDEA的界面(感覺像是兒童玩具(笑) 不過JetBrain能用Swing搭出這種界面也不容易了).具體兩者的對比可以上網搜一下,但不建議參考逼乎.
Eclipse可以在這裡下載,網址是:http://www.eclipse.org/downloads/
最新版Eclipse是4.5版(代號Mars),同時Eclipse還分很多個定製版本,每個定製版本都預裝了不同的插件,我因為個人需要所以使用的是"Eclipse for RCP and RAP Developers",你可以考慮"Eclipse IDE for Java Developers".同樣每個版本又細分為64位版和32位版,根據你的操作系統來選擇下載.這裡下載來的是英文版,安裝漢化的方法可以參照這個文章:http://www.cnblogs.com/yaotong/archive/2011/12/28/2305421.html.
IDEA可以從官網下載免費的社區版,開發MCMod足以了:https://www.jetbrains.com/idea/#chooseYourEdition
首先安裝JDK,通常來說如果安裝順利的話程序會自動配置環境變量,否則你需要按照這個的步驟來自行配置環境變量
http://zhidao.baidu.com/question/351018707.html
http://www.cnblogs.com/kevinlocn/archive/2009/10/12/1581855.html
之後安裝Eclipse或IDEA,Eclipse無需註冊表或任何安裝程序,直接將其解壓到一個目錄下就行了.IDEA則是通過安裝包來安裝.
然後便是MDK的安裝.首先要說明什麼是MCP和MDK,以及ForgeGradle、Forge和FML的區別.
MCP即Minecraft Coder Pack,它類似於其他軟件的SDK(Software Development Kit,軟件開發工具包),供開發者進行二次開發的源代碼與工具包,那為什麼MCP不直接叫MSDK(MC SDK)呢?因為MCP是個被官方默許的反向工程項目,Minecraft是個閉源的軟件,而MCP的工作組則是將MC反編譯並順帶反混淆(官方對源代碼進行了混淆操作,將原本有意義的變量,方法,類名變成了無意義的文字,反混淆則是分析其功能並附上合理的名字),同時附上了一些有用的開發工具.MCP是Mod開發的基礎,一定程度上說,沒有MCP的話,MC也就沒有如今的成就.
遺憾的是,MCP項目已經開始沒落了...這個將會在下面的FML部分說到.
Forge則是MinecraftModAPI庫,它實現了一些被大眾所需的最基本的功能,最初Forge只是一個使用ModLoader(簡稱ML)的Mod,因為它依賴一些ML的功能,同時依賴ML的Mod加載功能.後來在某個版本中Forge實現了自己的Mod加載,於是擺脫了對ModLoader的依賴,並且與ModLoader開始不兼容...後來Forge搞出了個ForgeModLoader.
ForgeModLoader(簡稱FML)是ModLoader的替代品.儘管ForgeModLoader和Forge從來都是捆綁發布和運行的,但從代碼的角度來看,兩者其實是獨立的,這一點你可以從FML和Forge的包結構中看出來.FML跟ModLoader相比有很多優點,首先它是開源的,這意味着任何人都可以對FML做出補充,這也是為什麼FML的功能越來越豐富,而ModLoader則始終是只有那幾樣而已.FML的開發維護者也很多,除去兩三位主力外,還有上百位開發者在或多或少貢獻代碼.更重要的是,如今FML已經掌起了MCMod界的大旗,毫不誇張的說,MC的最高版本不是由Mojang決定而是由FML決定...(就拿1.8來說,如果FML不更新的話,你會玩1.8嗎?)如今MCP基本已經棄坑了,其發起人Searge已被Mojang招安...FML已經接替了MCP的任務,並且從1.7開始,FML使用了一種新的代碼構建方式:ForgeGradle.
ForgeGradle是一個封裝好的Gradle插件,它能夠形式原本MCP的責任,反編譯MC並準備開發環境.Gradle是一個構建工具,它比Ant(一個很基本的Java構建工具)要高級,但比Maven(一個很高大上的Java構建工具)要簡化一些.雖然看上去低不成高不就,但它使用起來確實挺不錯,首先它比Ant的構建功能要強,正好適合MCMod複雜的發布方式,其次它支持使用Maven的代碼倉庫,Maven制定了一套代碼倉庫標準,一個程序庫發布後可以直接上傳到在線的倉庫中,使用者能直接從倉庫下載需要的庫,而無需自己手動尋找.最後,Gradle比Maven要簡單很多,開發者不必花費大量的時間來學習.
不過,有很長一段時間Forge官方對Mod開發環境一直沒有一個正式的稱呼,直到MC1.8的晚期版本,Forge開發組才給Mod開發環境起了個正式名字:MDK(Mod Development Kit?)
我們為什麼需要ModLoader和FML?最原始的Mod是直接修改遊戲文件,這意味着如果兩個Mod修改了同一個文件的話,就會發生可怕的沖♂突.ModLoader的出現一定程度上解決了這個問題,它封裝了最基本的一些操作,這讓大部分Mod無需修改MC原本的類就能實現各種功能.MCPModSystem(請為它點一支蠟燭,雖然沒有人記得它,但它確實曾在這個世界上存在過),Spout和ForgeModLoader則將這一特性發揚光大.
(關於Forge,FML和FG的更多的故事,可以看這個帖子的5L)
開發環境的配置
首先我們要下載MDK,MDK的下載地址在這裡
http://files.minecraftforge.net/
在某次網站改版之後,Forge下載站有了完善的界面,現在已經很直觀地能看出如何選擇要下載的版本.建議下載Recommended版(即穩定版,非穩定版有小概率遇到獵奇事件,例如某個非穩定版的Forge無法創建世界).如果沒有Recommended,那再考慮Latest.由於我們是開發者,這裡是點"Mdk"來下載開發工具.(如果是1.7或更早版本的話,是點"Src")
圖:撰稿時Forge下載站1.9.4隻有Latest版,當你看的時候應該已經有Recommended版了.
(提示:Forge的默認下載鏈接是到adfoc,它是讓你先看5秒廣告,然後才能點右上角的鏈接繼續下載.如果你不喜歡看廣告,或者在你那裡adfoc被牆了的話,可以右鍵Mdk選複製鏈接(或者其他什麼的,取決於你用的瀏覽器,如果是IE那就是"複製快捷方式"),然後粘貼到瀏覽器地址欄里,手動刪掉前面的adfoc地址,只留下後半段真實下載位置)
將MDK的壓縮包解壓到一個文件夾,建議避免目錄中帶有非ASCII字符(比如漢字),也不推薦帶有空格,我們先來視奸一下MDK中都有什麼.
除去txt文本和.gitignore,這裡主要分為四部分:
- Gradle的終端 - 用於在未安裝Gradle的機器上部署Gradle,以及運行Gradle指令.由文件夾gradle和文件gradle與gradle.bat組成,後兩者分別是Unix/OSX和Windows下的終端.
- build.gradle - 構建文件,這個文件用來告訴Gradle如何部署和構建一個項目.
- eclipse - 預置的Eclipse工作目錄,由於Eclipse的配置文件包含了不少二進制數據,想就地生成比較困難,因此MDK提供了一個已經預置了一些配置的Eclipse工作目錄,注意區分工作目錄和項目.此外,在老版本(1.7和早期的1.8)中這還是存放調試時的遊戲文件的地方,在新版中已經改到run目錄了.
- src - 源碼目錄,存放Mod的代碼和資源文件,這個之後會詳細介紹.
現在可以通過Gradle終端來着手配置環境了.打開命令窗口並切換到這個文件夾.
(Windows7及以上有個很方便的方式,就是按住Shift然後右鍵,就能選擇直接在當前目錄中打開命令窗口.這個是yuxuanchiadm教給我的...)
在控制台內輸入:
gradlew.bat setupDecompWorkspace
(注:其實即使在Windows下,"gradlew.bat"也可以簡寫成"gradlew",CMD會自動執行gradlew.bat文件的.我這裡是習慣了改不過來了?)
(再補充一條@HaozheJiang在評論中提到的Linux下的指令:"./gradlew setupDecompWorkspace",此外如果中途遇到權限不足的問題的話,可以嘗試"chmod +777 gradlew")
然後回車執行...之後ForgeGradle就會自動下載和配置操作環境了,很方便吧...
(提示:其實我還習慣加上-i,來讓控制台顯示當前的進度,否則卡住了的話連卡在哪都不知道...)
如果你真以為方便那你就輸了,你可能會在下載過程中遇到各種謎の卡死或下載不能,甚至會在gradle文件下載時就卡住,這和天朝的GFW有關.
如果你在下載Gradle(屏幕上顯示"Downloading https://services.gradle.org/distributions/gradle-2.X-bin.zip")時卡住的話,可以手動編輯gradle/wrapper/gradle-wrapper.properties文件(但不建議用記事本,隨便別的什麼文本編輯器都可以,哪怕寫字板都行),將:
distributionUrl=https\://services.gradle.org/distributions/gradle-X-bin.zip
改為:
distributionUrl=http://forgemavenmirror.sinaapp.com/gradle/gradle-X-bin.zip
其中X為具體的Gradle版本,比如2.7.
然而在配置ForgeGradle過程也經常會出現卡死,通常是發生在從網上下載代碼庫的時候,這就需要考慮使用ForgeGradle on Wall.
關於如何配置FGOW來加速有有篇專門的文章,不過我想各位應該不想在這上面花太多時間,因此這裡直接講最後配置的結果,還記得之前提到的build.gradle不?用文本編輯器將它打開,然後根據你使用的版本來修改它:
1.8.0
將'version = "1.0"'的前面的所有內容替換為:
buildscript { repositories { maven { name = "fmm" url = "http://forgemavenmirror.sinaapp.com/maven" } } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:2.0-SNAPSHOT' classpath 'net.hakugyokurou.fgow:fgow:1.2.0' } } ext.mcpJsonUrl = "http://forgemavenmirror.sinaapp.com/versions.json" ext.forgeJsonUrl = "http://forgemavenmirror.sinaapp.com/maven/net/minecraftforge/forge/json" ext.skipFGVersionCheck = true apply plugin: 'fgow' repos { mcJsonUrl = "http://bmclapi2.bangbang93.com/versions/{MC_VERSION}/{MC_VERSION}.json" mcClientUrl = "http://bmclapi2.bangbang93.com/versions/{MC_VERSION}/{MC_VERSION}.jar"; mcServerUrl = "http://bmclapi2.bangbang93.com/versions/{MC_VERSION}/minecraft_server.{MC_VERSION}.jar";; assestIndexUrl = "http://bmclapi2.bangbang93.com/indexes/{ASSET_INDEX}.json"; assestUrl = "http://bmclapi2.bangbang93.com/assets" mcpUrl = "http://forgemavenmirror.sinaapp.com/fernflower-fix-1.0.zip" } repositories { flatDir { name "local"; dirs "/" } maven { name = "fmm" url = "http://forgemavenmirror.sinaapp.com/maven" } }
1.8.8/1.8.9/1.9
將'version = "1.0"'的前面的所有內容替換為:
buildscript { repositories { maven { name = "fmm" url = "http://forgemavenmirror.sinaapp.com/maven" } } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:2.1-SNAPSHOT' classpath 'net.hakugyokurou.fgow:fgow:1.2.2' } } ext.mcpJsonUrl = "http://forgemavenmirror.sinaapp.com/versions.json" ext.forgeJsonUrl = "http://forgemavenmirror.sinaapp.com/maven/net/minecraftforge/forge/json" ext.skipFGVersionCheck = true apply plugin: 'fgow' repos { mcJsonUrl = "http://bmclapi2.bangbang93.com/versions/{MC_VERSION}/{MC_VERSION}.json" mcClientUrl = "http://bmclapi2.bangbang93.com/versions/{MC_VERSION}/{MC_VERSION}.jar"; mcServerUrl = "http://bmclapi2.bangbang93.com/versions/{MC_VERSION}/minecraft_server.{MC_VERSION}.jar";; assestIndexUrl = "http://bmclapi2.bangbang93.com/indexes/{ASSET_INDEX}.json"; assestUrl = "http://bmclapi2.bangbang93.com/assets" mcpUrl = "http://forgemavenmirror.sinaapp.com/fernflower-fix-1.0.zip" } repositories { flatDir { name "local"; dirs "/" } maven { name = "fmm" url = "http://forgemavenmirror.sinaapp.com/maven" } }
1.9.4
將'version = "1.0"'的前面的所有內容替換為:
buildscript { repositories { maven { name = "fmm" url = "http://forgemavenmirror.sinaapp.com/maven" } } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT' classpath 'net.hakugyokurou.fgow:fgow:1.2.2' } } ext.mcpJsonUrl = "http://forgemavenmirror.sinaapp.com/versions.json" ext.forgeJsonUrl = "http://forgemavenmirror.sinaapp.com/maven/net/minecraftforge/forge/json" ext.skipFGVersionCheck = true apply plugin: 'fgow' repos { mcJsonUrl = "http://bmclapi2.bangbang93.com/versions/{MC_VERSION}/{MC_VERSION}.json" mcClientUrl = "http://bmclapi2.bangbang93.com/versions/{MC_VERSION}/{MC_VERSION}.jar"; mcServerUrl = "http://bmclapi2.bangbang93.com/versions/{MC_VERSION}/minecraft_server.{MC_VERSION}.jar";; assestIndexUrl = "http://bmclapi2.bangbang93.com/indexes/{ASSET_INDEX}.json"; assestUrl = "http://bmclapi2.bangbang93.com/assets" mcpUrl = "http://forgemavenmirror.sinaapp.com/fernflower-fix-1.0.zip" } repositories { flatDir { name "local"; dirs "/" } maven { name = "fmm" url = "http://forgemavenmirror.sinaapp.com/maven" } }
選讀:對上述代碼的解釋
哇,你還真是好奇心很強的類型啊,我喜歡?
之前已經提到了build.gradle是告訴Gradle如何部署和構建一個項目的,準確來說,它的學名是構建腳本,不同的軟件構建系統有不同的腳本,比如構建C/C++的CMake有CMakeList,之前提到的Maven也有pom,Gradle則採用的是build.gradle,它的一個特點是其本身其實是一段可執行的Groovy程序.Groovy是一個類Java的腳本語言,有着十分靈活的語法,Gradle便選用它作為構建腳本的語言.
由於構建腳本本身就是可編程的,理論上所有的操作都可以放在腳本中進行,但有些重複性的操作可以被提取出來做成一個公用庫,於是便有了Gradle插件,Gradle插件包含了一系列預置的操作,在腳本中可以通過apply plugin來載入一個插件.
不過有時候構建腳本會依賴一些第三方庫來啟動,於是便有了buildscript這個"用來構建'構建腳本'的腳本",buildscript用於描述構建腳本依賴的外部庫和它們的下載源,比如MDK默認的buildscript是:
buildscript { repositories { jcenter() maven { name = "forge" url = "http://files.minecraftforge.net/maven" } } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:2.X-SNAPSHOT' } }
這個buildscript表示在構建腳本的準備階段,需要在JFrog的中央倉庫和Forge的倉庫下載ForgeGradle的插件和它的依賴庫.而前面我們修改的buildscript是:
buildscript { repositories { maven { name = "fmm" url = "http://forgemavenmirror.sinaapp.com/maven" } } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:2.X-SNAPSHOT' classpath 'net.hakugyokurou.fgow:fgow:1.2.X' } }
它指定了從FMM(Forge的非官方倉庫鏡像)下載ForgeGradle和FGOW和它們的依賴庫.
再往後的代碼就是配置FGOW的各種下載源了,在FGOW的下載頁有詳細的介紹,這裡主要說明最後一段,最後一段你會發現又來了一個"repositories",而且在其下不遠處還有個自帶的"dependencies",那麼這裡的"repositories, dependencies"和buildscript中的"repositories, dependencies"有什麼關係?
它們的差別是:這裡的"repositories, dependencies"描述的是該項目的下載源和依賴的庫,buildscript中的"repositories, dependencies"描述的是此腳本的下載源和依賴的庫.比如如果我的項目額外使用了一種編譯型語言,需要在構建時編譯一遍,而運行時則不需要.顯然只有構建腳本在啟動時需要下載並加載該語言的編譯器,而我的項目發布後便不再需要它了.因此要將項目和構建腳本的dependencies分開對待,至於你問為何repositories也要分開對待...
整個安裝過程需要"一段時間",最長可能多達一個小時,如果你採用了上文中FGOW加速下載的話,中途應該不會有卡死的情況,但如果你發現在某一處地方真的停頓了超過10分鐘的話,果斷Ctrl+C中斷操作然後重來 ? Gradle卡死現象防不勝防,確實神煩.
對於Forge1.7.X/1.8.X,如果你在getVersionJson階段遇到形如"xxx.json could not be parsed","FileNotFoundException: Inherited json file (null) not found"之類的錯誤的話,嘗試將gradle.build中的
classpath 'net.minecraftforge.gradle:ForgeGradle:2.1-SNAPSHOT'
改成
classpath 'net.minecraftforge.gradle:ForgeGradle:2.1-20160209.170057-21'
當你安裝結束後(我忘了截圖了...總之如果你稍微懂一點英語的話,就能看出控制台明顯地提示已經安裝成功,而不是安裝未完或失敗.)就可以着手開始配置IDE了.
Eclipse自動配置
Gradle支持自動生成Eclipse項目,但願你現在還沒有關掉命令窗口(如果已經關掉了的話...就再打開吧),在命令窗口中執行:
gradlew.bat eclipse
然後等待其操作完成,然後運行Eclipse,首次運行時會讓你選擇工作目錄,直接將工作目錄設為MDK目錄下的eclipse目錄中.如果你已經運行過Eclipse,並且已經設置過工作目錄的話,打開Eclipse,點開左上角菜單File,選擇Switch Workspace.
然後將工作目錄切換到你的MDK目錄下的eclipse目錄中.
於是便完了...沒錯,自動配置就是這麼屌炸,連配置啟動方案都省去了= =
Eclipse手動配置
有時因為各種各樣的原因,我們不想切換工作目錄,這時就只能將項目導入然後手動配置項目,第一步還是跟自動配置相同,.
在Eclipse中打開File - Import,選擇Existing Projects into Workspace.
然後在Select root directory中將目錄設為MDK目錄,注意是MDK目錄而不是它下面的eclipse目錄.
之後點Finish就可以導入了.現在你還需要自己配置啟動方案.右鍵你的項目,選擇Properties.
然後選擇Run/Debug Setting,點擊New添加一個啟動方案.
首先我們要創建一個客戶端啟動方案.名字就叫做Client吧.將主類(Main Class)選為GradleStart.
然後打開Arguments頁,將Working directory選為Other,內容填上:
${workspace_loc}
如果你需要設置用戶名(用來顯示皮膚)的話在Program Arguments中加入:
--username [用戶名]
如果你有愛的話還可以在VM arguments里加入各種虛擬機優化參數
於是你便配置完客戶端的啟動方案了.如果你需要的話還可以配置服務器的啟動方案,服務器的啟動方案設置和客戶端的相似,不同之處在於:
MainClass為:
GradleStartServer
Eclipse的收尾工作
無論你是手動配置Eclipse,還是自動配置Eclipse,都還剩下最後一步需要進行 - 更改文件編碼和JDK版本
依然是在Properties頁中,將Resource項中的Text file encoding設為UTF-8.否則你的Mod中的中文顯示出來的都是亂碼的.(如果默認是UTF-8的話那再好不過)
然後檢查Java Compiler項,將Compiler compliance level設為1.6 (已經是1.6?那更好)
IDEA配置
配置IDEA首先要編輯build.gradle,在其中加入(如果不知道該加在哪的話...就加在最後吧!):
idea { module { inheritOutputDirs = true } }
然後在命令窗口中執行:
gradlew.bat idea genIntellijRuns
等它執行完畢後,打開IDEA,選Open,然後目錄設為MDK目錄.
之後打開就行了,按Alt-1來顯示項目目錄.
最後還要在項目目錄中選中Forge模塊,按F4(或者右鍵模塊,點Open Module Settings),在Project Settings - Project中,將Project Language Level改為6. (已經是6了?唔...也好)
無論你用的哪種IDE哪種配置方法,至此開發環境配置便完成了(\散花/) 快點擊Eclipse上方的Run按鍵或IDEA的Run菜單來運行一下試試吧.然而如果你發現運行不了,或者項目中少了很多東西...那很有可能是配置時哪裡出了問題,可以參考這篇文章:http://blog.hakugyokurou.net/?p=1298#gradleslow.
附錄 - 更換Gradle本地庫位置
Win7下,Gradle的本地庫位於C:\Users\[用戶名]\.gradle下. 在評論中@魏澎總結了一種更換本地庫位置的辦法:
將.gradlew複製到新位置後,在環境變量的系統變量里加個名稱為GRADLE_USER_HOME的變量,值填新的目錄位置,之後在Forge目錄內打開CMD,執行gradlew.bat inti修復Gradle,然後執行gradlew.bat eclipse/idea重新生成Eclipse/Idea文件,然後在Eclipse/Idea里重新導入項目.
我運行gradlew然後↓
FAILURE:Build failed with an exception.
*What went wrong:
C;\Users\ 懌\AppData\Local\Temp\jna4262907596088547139.dll:Cant't find dependant libraries
*Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
這什麼鬼dll啊?求解
23333 好像因為你的中文目錄名把gradle搞死了...
換了一台電腦ok了,以後再也不用中文名了QAQ
為什麼C盤多了一堆東西,有沒有辦法更改。
C盤裡多了個.gradle文件夾,怎麼看怎麼不爽,可不可以移到別的磁盤,否則真心電腦要炸了。
在環境變量的系統變量里加個名稱為GRADLE_USER_HOME的變量,值填新的目錄位置
謝謝。
話說,我發現要複製粘貼整個文件夾.gradlew,按樓主方法設置好環境變量,之後cmd輸入gradlew.bat inti修復,gradlew.bat eclipse回車重新導入eclipse(PS:這是我弄了一小時才明白的,在此補充一下樓主的回答,同時希望樓主在教程添加這一內容,方便有同樣需求的新人,畢竟學生黨渣電腦,C盤寸土寸金啊啊啊。)
話說回來,如果以後有機會換電腦,或同學也需要開發環境,是不是只要複製frogesrc、.gradlew,然後按照上面步驟再來一次,就可以了呢?
唔...也許吧 =w= 我還沒試過這種方法呢,這就去在教程里填上,thx!
為什麼手動配置一到gradle-1.12-bin.zip就卡死了啊QAQ?
gradle-1.12-bin應該是在下載gradle,那玩意雖然只有41mb,但下載起來速度並不快,有一次我在學校上課前掛上下載,下課後回來發現還沒下完...你那裡沒有進度提示嗎
樓主請問minecraft的源代碼在哪裡看啊
Referenced Libraries中的ForgeSrc
Forge配置操作環境失敗怎麼辦啊
錯誤報告:
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring root project 'forge'.
> Could not resolve all dependencies for configuration ':classpath'.
> Could not resolve de.oceanlabs.mcp:mcinjector:3.2-SNAPSHOT.
Required by:
:forge:unspecified > net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHO
> Could not GET 'http://files.minecraftforge.net/maven/de/oceanlabs/mcp/m
injector/3.2-SNAPSHOT/mcinjector-3.2-20150210.031242-16.pom'.
> The target server failed to respond
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug
option to get more log output.
BUILD FAILED
Total time: 8 mins 46.687 secs
求解
剛才試了一下第一遍也下載不到...又試了幾遍就好了. 似乎是Forge的Maven服務器不太穩定...實在不行可以試試用FGOW
這會直接7秒鐘報錯了……
英文看着頭疼……
F:\forge>gradlew.bat setupDecompWorkspace-i
****************************
Powered By MCP:
http://mcp.ocean-labs.de/
Searge, ProfMobius, Fesh0r,
R4wk, ZeuX, IngisKahn, bspkrs
MCP Data version : unknown
****************************
FAILURE: Build failed with an exception.
* What went wrong:
Task 'setupDecompWorkspace-i' not found in root project 'forge'. Some candidates
are: 'setupDecompWorkspace'.
* Try:
Run gradlew tasks to get a list of available tasks. Run with --stacktrace option
to get the stack trace. Run with -
-info
or -
-debug
option to get more log output.
BUILD FAILED
Total time: 7.355 secs
gradlew.bat setupDecompWorkspace
Build Path總是出錯,請問是怎麼一回事?1.7+和1.8+都這樣
Description Resource Path Location Type
Project 'Minecraft' is missing required library: '*\caches\minecraft\net\minecraftforge\forge\1.8-11.14.0.1299\start' Minecraft Build path Build Path Problem
打開項目的Properties,在Java Build Path的Libraries里找到start,手動把它改成C:\Users\[用戶名]\.gradle\caches\minecraft\net\minecraftforge\forge\1.8-[版本號]-1.8\start
如果沒有那個目錄的話就重來一遍吧...
有的,而且之前也這樣試過了,但這個class folder就是不行。。。我再試試吧,謝謝
重新試了一下,配置好了。
我之前是先把GRADLE_USER_HOME變量配置到其他盤符之後才進行gradlew -setupDevWorkspace的,然後每次,不管是哪個版本都會出現build path問題。
分析了一下整個過程之後,我把GRADLE_USER_HOME變量刪除之後,重新進行配置,然後沒有任何問題。這時配置時下載的文件都在C盤個人目錄下。
我猜測是GRADLE_USER_HOME環境變量導致的。博主能給大家提示一下么,希望大家不要遇到跟我一樣的問題,這段時間真是各種折騰。。。MC大法好
forge是安裝好了,可是Eclipse Marketplace點進去加載非常慢,搜索gradle之後也是,然後...不知道下哪個...
配置完服務器的啟動方案,以服務器啟動方案啟動,存在錯誤;
Java HotSpot(TM) Client VM warning: Using incremental CMS is deprecated and will likely be removed in a future release
然後關閉啟動。
後來通過不斷研究,發現將文件Minecraft/eclipse/eula.txt打開,將eula=false改成eula=true,解決,
希望我的經驗對大家有幫助
沒有GradleStart怎麼辦