# :-: 一切的開始
BGM :<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=700 height=52 src="//music.163.com/outchain/player?type=2&id=5348862&auto=1&height=32"></iframe>
*****
### **前言:**
在此之前,希望你對Java,我的世界有一定的了解(雖然會有基礎講解)。
至少這樣會使你多多少少可以看懂之后的文章。
本教程可能會出一些差錯,若有可聯系作者或評論區指出,若有不懂的也可以在評論區評論哦~或者在下面搜索:
### **文章導航:**
[TOC]
(以下屁話,來看這教程的都應該知道我的世界把?直接下一章)
*****
如果您對Java或我的世界的了解不深入(含糊),以下內容可能會幫到你:
* #### **java:**
> **百度百科:**
> Java是一門[面向對象](https://baike.baidu.com/item/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1)編程語言,不僅吸收了[C++](https://baike.baidu.com/item/C%2B%2B)語言的各種優點,還摒棄了C++里難以理解的[多繼承](https://baike.baidu.com/item/%E5%A4%9A%E7%BB%A7%E6%89%BF)、[指針](https://baike.baidu.com/item/%E6%8C%87%E9%92%88/2878304)等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程?。Java具有簡單性、面向對象、[分布式](https://baike.baidu.com/item/%E5%88%86%E5%B8%83%E5%BC%8F/19276232)、[健壯性](https://baike.baidu.com/item/%E5%81%A5%E5%A3%AE%E6%80%A7/4430133)、[安全性](https://baike.baidu.com/item/%E5%AE%89%E5%85%A8%E6%80%A7/7664678)、平臺獨立與可移植性、[多線程](https://baike.baidu.com/item/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1190404)、動態性等特點。Java可以編寫[桌面應用程序](https://baike.baidu.com/item/%E6%A1%8C%E9%9D%A2%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F/2331979)、[Web應用程序](https://baike.baidu.com/item/Web%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F)、[分布式系統](https://baike.baidu.com/item/%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/4905336)和[嵌入式系統](https://baike.baidu.com/item/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F/186978)應用程序等?。
同時,我的世界也是由Java語言開發。可見Java使用也是同樣廣泛的。
什么?你對編程沒有任何了解(完全沒有基礎)?下面的內容可能會幫到你哦~
>[success] 1. 擁有足夠的耐心,靜下心來慢慢學習,千萬不要中途放棄~ 記得不懂就問哦(記得禮貌)
> 2. 如果你選擇學習Java,可能會感到困難,你可以試試學習簡單的編程語言(如Python或玩編程游戲學)
比我寫的更好的相關文檔鏈接:
> * [無任何編程基礎的人,該怎么入門編程?(知乎)](https://www.zhihu.com/question/28611887)
> * [初學者應該如何開啟自己的編程生涯?(百度)](https://baijiahao.baidu.com/s?id=1601249211609135023&wfr)
* Java常常只表示**JRE(Java Runtime Environment)**,那么你知道JRE是什么嗎?
> **百度百科:**
> **Java運行環境**(Java Runtime Environment,簡稱JRE)是一個軟件,由太陽微系統所研發,JRE可以讓[計算機系統](https://baike.baidu.com/item/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%B3%BB%E7%BB%9F)運行。Java應用程序(Java Application).
> JRE的內部有一個Java虛擬機(Java Virtual Machine,[JVM](https://baike.baidu.com/item/JVM))以及一些標準的[類別](https://baike.baidu.com/item/%E7%B1%BB%E5%88%AB)函數庫(Class Library)。
就是說JRE的作用是為了在您的計算機上運行Java應用程序。
那么你又知道什么是 [**應用程序**](https://baike.baidu.com/item/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BC%8F/18758462?fromtitle=%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F&fromid=5985445&fr=aladdin) 嗎?
>[info] 一般說,應用程序就相當于你Windows(視窗操作系統-計算機管理控制程序)上的QQ.exe(\*.exe:英文全名executable,可由操作系統加載執行的文件;QQ:騰訊的即時發送和接收通過連接網絡的用戶的短信圖片等信息),運行(雙擊打開、右擊出現菜單點擊打開、選中按Enter鍵)后,會根據代碼(程序員用開發工具所支持的語言寫的源文件)由計算機/系統運算進行相應操作(如打開了騰訊QQ的登陸窗口)。但準確來說,QQ是應用軟件,原因:一個游戲軟件包括程序(exe)、其他圖片(\*bmp等)、音效(wav等)等附件,那么這個程序(“exe)稱作應用程序,而它與其他文件(圖片、音效等)在起合稱軟件。所以應用程序其實是供程序運作的主要代碼(核心),用戶看到的是圖形化用戶交互界面(Graphical?User?Interface,GUI)。
* JRE中包含了**JVM(Java Virtual Machine)**,那么JVM又是什么呢?
> **百度百科:**
> JVM是Java Virtual Machine(Java[虛擬機](https://baike.baidu.com/item/%E8%99%9A%E6%8B%9F%E6%9C%BA))的縮寫,JVM是一種用于計算設備的規范,它是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現的。
> 引入Java語言虛擬機后,Java語言在不同平臺上運行時不需要重新編譯。Java語言使用Java虛擬機屏蔽了與具體平臺相關的信息,使得Java語言[編譯程序](https://baike.baidu.com/item/%E7%BC%96%E8%AF%91%E7%A8%8B%E5%BA%8F/8290180)只需生成在Java虛擬機上運行的目標代碼([字節碼](https://baike.baidu.com/item/%E5%AD%97%E8%8A%82%E7%A0%81/9953683)),就可以在多種平臺上不加修改地運行。
說白就是Java的可移植性很高,因為Java擁有自己獨立的虛擬機,而**Java應用程序**需要在JRE(JVM)上運行,同時JRE有多個平臺的版本,使得在不同平臺上安裝了JER就可以運行Java應用程序而不用修改代碼。
>[info]**虛擬機是什么:**
虛擬機(Virtual Machine)指通過[軟件](https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6/12053)模擬的具有完整[硬件](https://baike.baidu.com/item/%E7%A1%AC%E4%BB%B6)系統功能的、運行在一個完全[隔離](https://baike.baidu.com/item/%E9%9A%94%E7%A6%BB/33079)環境中的完整[計算機系統](https://baike.baidu.com/item/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%B3%BB%E7%BB%9F/7210959)。在實體計算機中能夠完成的工作在虛擬機中都能夠實現。在[計算機](https://baike.baidu.com/item/%E8%AE%A1%E7%AE%97%E6%9C%BA/140338)中創建虛擬機時,需要將實體機的部分硬盤和內存容量作為虛擬機的硬盤和內存容量。每個虛擬機都有獨立的[CMOS](https://baike.baidu.com/item/CMOS/428167)、硬盤和[操作系統](https://baike.baidu.com/item/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/192),可以像使用實體機一樣對虛擬機進行操作。就相當于你有了一個全新的環境,你可以在里面隨心所欲而原來的環境不會有多少影響。
那Java的可移植性就很好解釋了,你的操作系統起初并不認識Java的代碼,所你為操作系統安裝了一個操作系統認識的中介JRE(JVM),而它恰好熟悉Java代碼,最后Java代碼告訴JRE(JVM)怎么做 > JRE(JVM)告訴操作系統怎么做,這樣就可以讓操作系統運行Java代碼了。但你要想想,你給操作系統的JRE(JVM)中介它一定要認識(不同的操作系統需要找一個適合的版本,就好比一個南方人的中介是北方人,那他們怎么正常交流呢?),而JRE(JVM)什么時候都認識Java代碼,所有只要給操作系統一個合適的JRE(JVM),就可以不用讓Java代碼改變就可以讓操作系統認識了~
* ##### 以上為使用Java應用程序(如我的世界)用戶須要安裝,那么開發人員的呢?
* 開發人員使用**JDK(Java Development Kit,Java語言開發工具包)**:
> **百度百科:**
> JDK(Java Development Kit) 是 Java 語言的軟件開發工具包([SDK](https://baike.baidu.com/item/SDK))。
> JDK是[Java](https://baike.baidu.com/item/Java/85979)語言的[軟件開發工具包](https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7%E5%8C%85/10418833),主要用于[移動設備](https://baike.baidu.com/item/%E7%A7%BB%E5%8A%A8%E8%AE%BE%E5%A4%87/9157757)、[嵌入式設備](https://baike.baidu.com/item/%E5%B5%8C%E5%85%A5%E5%BC%8F%E8%AE%BE%E5%A4%87/10055189)上的java應用程序。JDK是整個java開發的核心,它包含了JAVA的運行環境(JVM+Java系統類庫)和JAVA工具。
> **EOK的模組開發教程中:**
> 在開發任何基于JAVA語言的程序之前,JDK都是必不可少的。目前最新的JDK大版本為~~JDK 12~~(更新了),但由于Minecraft以及Forge的特性,我們需要使用**JDK 8**來進行開發。
這表示:如果我們要Java開發的話就必須要**安裝JDK**,同時**配置**[**環境變量**](https://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html)。
>[info] [**軟件開發工具包(SDK)**](https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7%E5%8C%85/10418833?fr=aladdin#4):軟件工程師用于為特定的軟件包、軟件框架、硬件平臺、操作系統等創建應用軟件的開發工具的集合。
* JDK的分類:
| 名稱 | 詳細描述 |
| --- | --- |
| SE(JavaSE) | standard edition,標準版,是我們通常用的一個版本,從JDK 5.0開始,改名為Java SE。 |
| EE(JavaEE) | enterprise edition,企業版,使用這種JDK開發J2EE應用程序,從JDK 5.0開始,改名為Java EE。從2018年2月26日開始,J2EE改名為Jakarta EE。 |
| ME(J2ME) | micro edition,主要用于移動設備、嵌入式設備上的java應用程序,從JDK 5.0開始,改名為Java ME。 |
通常,我們使用**SE的1.8.0**版本,我也推薦大家使用這個版本。
* ### **有關Java開發的教程:**
Java作為一個被廣泛使用的語言,網絡上的教程也是數不勝數的,既然我的世界是使用Java編寫的,我們也需要用Java編寫Mod。使用Java編寫Mod,你就要會Java(雖然會在文章中講解,但多多少少要會一點),下面是我推薦大家去看的幾個Java教程:
* [OI的Java速成](https://oi-wiki.org/lang/java/)(教程里的東西并不多,但如果你急需開發Mod,可以選擇看這個,至少可以看懂教程)
* [動力節點的Java教程(B站)](https://www.bilibili.com/video/BV1Rx411876f?p=1)(推薦,比較全面)
* [Java 官方教程(英文)](http://docs.oracle.com/javase/tutorial/)(官方教程,但是這是國外的網站,訪問慢)
* #### **minecraft:**
> **百度百科:**
> 我的世界是一款[沙盒](https://baike.baidu.com/item/%E6%B2%99%E7%9B%92/18364354)建造游戲,于2009年5月17日發行。其靈感來自《無盡礦工》等游戲,由瑞典游戲設計師[馬庫斯·阿列克謝·泊松](https://baike.baidu.com/item/%E9%A9%AC%E5%BA%93%E6%96%AF%C2%B7%E9%98%BF%E5%88%97%E5%85%8B%E8%B0%A2%C2%B7%E6%B3%8A%E6%9D%BE/6980057)開創,現由[Mojang](https://baike.baidu.com/item/Mojang/2253597)Studios維護,是[Xbox](https://baike.baidu.com/item/Xbox/277794)工作室的一部分。《[Minecraft](https://baike.baidu.com/item/Minecraft/4623854)》所呈現的世界并不是華麗的畫面與特效,而是注重在游戲性上面。玩家可以在游戲中的三維空間里創造和破壞游戲里的方塊,甚至在多人服務器與單人世界中體驗不同的游戲模式,打造精妙絕倫的建筑物,創造物和藝術品。Minecraft著重于讓玩家去探索、交互、并且改變一個由方塊動態生成的地圖。除了方塊以外,環境單體還包括植物、動物與物品。游戲里的各種活動包括采集[礦石](https://baike.baidu.com/item/%E7%9F%BF%E7%9F%B3/2217247)、與敵對生物戰斗、合成新的方塊與收集在游戲中找到的資源的工具。游戲中的無限制模式讓玩家在各種多人游戲服務器或他們的單人模式中進行創造建筑物、作品與藝術創作。其他功能包括邏輯運算與遠程動作的[紅石電路](https://baike.baidu.com/item/%E7%BA%A2%E7%9F%B3%E7%94%B5%E8%B7%AF/6384512)、礦車及軌道等。游戲除主世界外,還有叫作“[下界](https://baike.baidu.com/item/%E4%B8%8B%E7%95%8C)”和“[末路之地](https://baike.baidu.com/item/%E6%9C%AB%E8%B7%AF%E4%B9%8B%E5%9C%B0/8375301)”的維度。
我的世界作為Java應用程序,需要**安裝JRE**(運行時環境包含JVM虛擬機)才可以運行。
* #### **如何在你的電腦上游玩我的世界:**
1. 在你的計算機上[安裝JRE](https://www.java.com/zh_CN/download/)([下載安裝教程](https://jingyan.baidu.com/article/456c463b38b5900a59314467.html))
2. 下載我的世界啟動器:
* [中國版(網易)](https://mc.163.com/)
* [正版啟動器(需要正版賬號)](https://www.minecraft.net/zh-hans/)
* [其它啟動器(MCBBS)](https://www.mcbbs.net/forum.php?mod=forumdisplay&fid=43&filter=typeid&typeid=908)
3. 使用教程:
* [中國版(好看視頻)](https://haokan.baidu.com/v?pd=wisenatural&vid=8829616655176715102)
* [正版啟動器(B站)](https://www.bilibili.com/video/BV1Qz411b78L/?spm_id_from=333.788.videocard.2);[購買賬號教程](https://jingyan.baidu.com/article/22a299b58a3e649e19376a11.html)
* [HMCL(B站)](https://www.bilibili.com/video/BV1zt411C7tW/?spm_id_from=333.788.videocard.1)
* [PCL(B站)](https://www.bilibili.com/video/BV1wE411T73A?from=search&seid=5172199395622803006)
4.啟動我的世界啟動器并啟動游戲。
* [新手攻略](https://jingyan.baidu.com/article/9faa7231ef2383473c28cb22.html)
* #### **相關網站:**
* [官方網站(國際版)](https://www.minecraft.net/zh-hans/)
* [官方網站(中國版)](https://mc.163.com/)
* [我的世界中文Wiki](https://minecraft-zh.gamepedia.com/Minecraft_Wiki)
* [我的世界中文Wiki(B站)](https://wiki.biligame.com/mc/)
* [我的世界論壇(MCBBS)](https://www.mcbbs.net/)
* [我的世界Mod百科](https://www.mcmod.cn/)
接下來,你需要認識什么是Forge哦!~
* ### **什么是Forge?**
你玩過我的世界Mod嗎?Forge可以使Forge端Mod(基于Forge開發)加載到游戲里。那你知道我的世界最初是怎么玩Mod嗎(是的很早就有了)?
那就是**MCP(Mod Coder Pack)**,開發者們可以通過直接修改我的世界Jar文件 *\[1\]* 以起到修改我的世界里的規則、玩法,那么它是如何誕生的呢?
> **FledgeXu的Neutrino教程中:**
> 我們得從Minecraft本身說起,首先我們得明確Minecraft是一個用Java寫成的商業軟件。這意味著兩件事:第一,Minecraft相對容易修改;第二,代碼本身是不開源而且是被混淆過的。在Minecraft歷史的早期,因為在Mojang一直都沒有給Minecraft提供官方API *\[2\]*,所以「Mod Coder Pack」項目誕生了(以下簡稱為MCP)。
但因為它是直接修改了游戲的底層,使如果他有玩兩個就得重寫到一起,直到**ModLoader**出現了……
它的出現使Mod的制作容易了許多,但缺陷也比較多:
> **ustc-zzzz的教程中:**
> 從2010年圣誕節前夕,Minecraft Beta版本發布開始,直到2011年年底Minecraft正式版發布,這一段時間被稱為Minecraft Mod的“黃金時期”。很多著名的Mod如RailCraft,IndustrialCraft,BuildCraft等,都是這一時期開始開發的。但是,這段時期的Mod開發仍然問題重重。比如BuildCraft和IndistrialCraft就不能共存。他們更改了太多底層的東西。
這說明問題還是有的,直到Forge的出現:
> **FledgeXu的Neutrino教程中:**
> 隨著時間的發展,Mod開發者們意識到,直接修改Jar文件寫mod的方式太過于粗暴了,而且Mod和Mod之間的兼容性 *\[3\]* 可以說基本沒有,Mod開發者們急需一種工具可以方便地開發Mod,并且能保證mod和mod之間的兼容性,于是Forge就誕生了。
**Forge其實就是一套通過修改Minecraft方式實現的第三方API,而且隨著時間的發展,~~MCP現在已經死亡了~~,除了Forge這套API,Fabric也風頭正盛,而Forge本身也在Minecraft 1.13版本到來之后經歷了一次重寫,引入了大量函數式編程的API。**
Forge簡單說是一個Mod加載器,也是一個API。
>[info] **Jar文件**:在[軟件](https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6)領域,**JAR文件**(Java歸檔,英語:**J**ava**A**rchive)是一種[軟件包](https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E5%8C%85)[文件格式](https://baike.baidu.com/item/%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F),通常用于聚合大量的Java類文件、相關的[元數據](https://baike.baidu.com/item/%E5%85%83%E6%95%B0%E6%8D%AE)和資源(文本、圖片等)文件到一個文件,以便開發Java平臺[應用軟件](https://baike.baidu.com/item/%E5%BA%94%E7%94%A8%E8%BD%AF%E4%BB%B6)或[庫](https://baike.baidu.com/item/%E5%BA%93)。
JAR文件是一種歸檔文件,以[ZIP格式](https://baike.baidu.com/item/ZIP%E6%A0%BC%E5%BC%8F)構建,以.jar為[文件擴展名](https://baike.baidu.com/item/%E6%96%87%E4%BB%B6%E6%89%A9%E5%B1%95%E5%90%8D)。用戶可以使用[JDK](https://baike.baidu.com/item/JDK)自帶的jar命令創建或提取JAR文件。也可以使用其他zip壓縮工具,不過壓縮時zip文件頭里的條目順序很重要,因為Manifest文件常需放在首位。JAR文件內的文件名是Unicode文本。簡單說就是打包好的Java源碼。
**API** :Application Programming Interface([應用程序](https://baike.baidu.com/item/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F)接口)是一些預先定義的[函數](https://baike.baidu.com/item/%E5%87%BD%E6%95%B0),或指軟件系統不同組成部分銜接的約定。?用來提供[應用程序](https://baike.baidu.com/item/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F)與開發人員基于某[軟件](https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6)或硬件得以訪問的一組[例程](https://baike.baidu.com/item/%E4%BE%8B%E7%A8%8B),而又無需訪問源碼,或理解內部工作[機制](https://baike.baidu.com/item/%E6%9C%BA%E5%88%B6)的細節。換句話說就是開發者可以通過一個API來使用簡單的代碼剛剛底層,從而不用去認識底層的工作原理。
**兼容性**:指硬件之間、[軟件](https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6/12053)之間或是軟硬件組合系統之間的相互協調工作的程度。兼容的概念比較廣,相對于硬件來說,幾種不同的電腦部件,如CPU、[主板](https://baike.baidu.com/item/%E4%B8%BB%E6%9D%BF/104636)、顯示卡等,如果在工作時能夠相互配合、穩定地工作,就說它們之間的兼容性比較好,反之就是兼容性不好。對于軟件的兼容性,指的是指某個軟件能穩定地工作在若干個[操作系統](https://baike.baidu.com/item/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/192)之中,而不會出現意外的退出等問題。
* **Forge官網:**
點擊跳轉 >([https://files.minecraftforge.net/](https://files.minecraftforge.net/))
* **怎么把Forge安裝到游戲并裝載/Mod:**
* [~~~~百度經驗~~~~](https://jingyan.baidu.com/article/48b37f8d6021e71a6564885c.html)
* [~~~~好看視頻(包含中國版及啟動俠啟動器教程)~~~~](https://haokan.baidu.com/v?vid=8856748592073642647&pd=bjh&fr=bjhauthor&type=video)
不會裝forge玩個屁開發(來自白夜的吐槽)
>[warning] **注意:**
請下載對應的版本,有些可能有規定的版本,必須一致!
***
希望你是認真的看完了文檔,這對之后的開發很有幫助!~ 之后的路很長,要耐心哦!
**下一章將會下載開發所需要的文件,見“0.一切的開始”子目錄下的“-下載所需文件”。**