首先需要強調,這個教程不是給沒有任何編程基礎的人準備的...你至少要懂得最基礎的編程知識和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里重新導入項目.
Eclipse報錯:
!SESSION 2015-08-03 21:10:58.062 -----------------------------------------------
eclipse.buildId=4.5.0.I20150603-2000
java.version=1.7.0_13
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=zh_CN
Framework arguments: -product org.eclipse.epp.package.java.product
Command-line arguments: -os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.java.product
!ENTRY org.eclipse.core.resources 4 567 2015-08-03 21:11:16.609
!MESSAGE Workspace restored, but some problems occurred.
!SUBENTRY 1 org.eclipse.core.resources 4 567 2015-08-03 21:11:16.609
!MESSAGE Could not read metadata for 'Minecraft'.
!STACK 1
org.eclipse.core.internal.resources.ResourceException: The project description file (.project) for 'Minecraft' is missing. This file contains important information about the project. The project will not function properly until this file is restored.
at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:888)
at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:902)
at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:882)
at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:733)
at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1588)
at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2386)
at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2157)
at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:463)
at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:771)
at org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:764)
at org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:721)
at org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:941)
at org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:318)
at org.eclipse.osgi.container.Module.doStart(Module.java:571)
at org.eclipse.osgi.container.Module.start(Module.java:439)
at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:454)
at org.eclipse.osgi.internal.
怎麼沒有Gradle Integration for Eclipse,只有Gradle Integration for Eclipse 3.7.0 RELEASE.裡面也只有Gradle IDE一項,你說的兩項怎麼沒有
為啥gradlew build 導出還需要聯網【躺
為什麼沒有看到Resource項中的Text file encoding
只有last modified:unknown
樓主 我setupDecompWorkspace的時候出現了 什麼Failure
Task 'setupDecompWorkspace' not found in root project ''
什麼鬼
解決了
但是 安裝到45的時候提示[options]未與 -source 1.6 一起設置引導類路徑
1個警告
這是什麼 求LZ解
沒事,我的也一樣,沒關係的。只要BUILD SUCESSFUL就OK
我怎麼沒有java項目的顯示啊,我看你那張圖上在eclipse里有個Minecraft的文件夾,怎麼我的全是空的,我窗口是和你一樣的,不是在主界面,而且我開始換工作文件夾的時候提示出現了一個錯誤,我刪掉了eclipse下的.meta文件夾就好了,我怕出錯又返回去在命令執行台把那三個命令重新執行了一遍,再打開eclipse還是沒有包
那個。。我輸入gradlew.bat setupDecompWorkspace之後顯示 內部或外部命令,也不是可運行程序或批處理文件。 這是為什麼啊?
可怕...你是在哪打開的cmd,forge目錄里有gradlew.bat嗎
我用上面說的SHITF+右鍵在FORGR里打開的CMD。路徑剛好到FORGE。FORGE目錄里沒有gradlew.bat
沒有gradlew.bat顯示錯誤不是很正常的么030
你是不是沒有解壓完全
哦,我後來知道怎麼回事了,我下的是1.6.4的FORGE、我下1.7.10的就有了,弄好了現在
我也是eclipse裡面一個空的 minecraft 文件 打開啥玩意沒有
樓主求解答 我都配置完之後運行Client在控制台上顯示一下錯誤信息,話說我的Forge中連個Minecraft啟動器都沒有我怎麼啟動Client? 怎麼配置Client?
[13:41:01] [main/ERROR] [LaunchWrapper]: Unable to launch
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.6.0_43]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[?:1.6.0_43]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[?:1.6.0_43]
at java.lang.reflect.Method.invoke(Method.java:597) ~[?:1.6.0_43]
at net.minecraft.launchwrapper.Launch.launch(Launch.java:134) [launchwrapper-1.9.jar:?]
at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.9.jar:?]
Caused by: java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1738) ~[?:1.6.0_43]
at java.lang.Runtime.loadLibrary0(Runtime.java:823) ~[?:1.6.0_43]
at java.lang.System.loadLibrary(System.java:1028) ~[?:1.6.0_43]
at org.lwjgl.Sys$1.run(Sys.java:73) ~[lwjgl-2.9.0.jar:?]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.6.0_43]
at org.lwjgl.Sys.doLoadLibrary(Sys.java:66) ~[lwjgl-2.9.0.jar:?]
at org.lwjgl.Sys.loadLibrary(Sys.java:95) ~[lwjgl-2.9.0.jar:?]
at org.lwjgl.Sys.(Sys.java:112) ~[lwjgl-2.9.0.jar:?]
at net.minecraft.client.Minecraft.getSystemTime(Minecraft.java:2674) ~[Minecraft.class:?]
at net.minecraft.client.main.Main.main(Main.java:40) ~[Main.class:?]
... 6 more
問一下這樣下載後再eclipse里run,出來的mc一點聲音都沒有,音樂音量里是100%,系統的合成器那裡也看不到mc,是不是刪掉重下才行?
然後重新下了也沒有聲音 實在不知道怎麼回事……………………