---
# System prepended metadata

title: 2023年從零開始的Minecraft Java Coding
tags: [minecraft, java, Tutorial]

---

更新紀錄
2023/07/13
===
正在把Spigot API的每個匯入方式打成文章中, 非常麻煩

這是一篇終極保姆級教學, 一個什麼都不會的新手, 看這一篇就夠了. 但其實這一篇的連結非常多.
但總比一個一個上網找還來的方便吧, 直接一篇搞定全部

前言
===
**TL:DR;**
作為一個只懂前端開發的純新手, 介於20之30的中間, 
每天除了上班看Netfilx,就是在家看Netfilx的頹廢人, 
突然覺得不能再這樣過下去了(主要是影片快被我看完了), 
於是想者把我從零開始學習的想法, 發到版上, 並藉此督促自己學習, 希望這次不要莫名停更(希望..
(註 本人沒有什麼實力, 
文中發現有錯的話那一定就是錯的, 參考就好, 
如果有大神可以補充,或修改的話, 歡迎多多跟我交流^^)

本機環境建立(施工中)
===
作為程序人, 首先一定是要讓自己的環境很好看(?
在這裡, 推薦使用
1. Window Terminal + Oh my Pose 主題
2. TranslucentTB
3. Windows 內建暗黑主題
4. WallPaperEngine

Git IDEA 前置工具安裝(施工中)
===
想要講解Git的基本操作, 跟IDEA的各文件詳解, 包括.idea幹嘛用的.
IDEA中還有NVM, CI/CD要處理, 感覺就是大工程, 好麻煩QQ


Oracle or OpenJDK ?
===
如果我想要開發Minecraft Plugins或是Mods的話, 首先一定要去下載Java開發專用的套件, 這時遇到一個問題是, 這兩個到底有什麼區別, 本者研究的精神, 大概統整出網路上的差別.
其實還有很多開發Java專用的版本, 例如RedHatOpenJDK, AdoptOpenJDK, Dragonwell, GraalVM, ZuluJDK, Liberica, SapMachine, Corretto
但是查了資料, 大部分都圍繞在Oracle(俗稱甲骨文?) 跟 OpenJDK, 所以只單純以這兩個分類.

這兩個版本都是由Oracle開發(OpenJDK根據GPL(通用公共許可證), 聽說不得不發布(?, OpenJDK有社持續群支持開發, 大部分都針對效能進行優化)
總的來說, 兩個版本其實都沒有任何差異, 但介於程序開發這種問題, 我本次還是使用OpenJDK進行開發.

| 版本     | Oracle       | OpenJDK            |
| -------- | ------------ | ------------------ |
| 更新時間 | 3年一次      | 3個月一次          |
| 許可     | 商業需要付費 | 完全開源           |
| 性能     | 更好的渲染器 | 更少的GC選項       |
| 兼容性   | 兼容最好     | 部分用戶會出現問題 |


參考文獻
[JDK到底有多少種版本](https://blog.csdn.net/weixin_49566799/article/details/119966492)
[打造極致伺服器(上)](https://forum.gamer.com.tw/G2.php?bsn=18673&sn=3021)
[Oracle与OpenJDK之间的区别](https://juejin.cn/post/6844903811069247496)
[OpenJDK下載安裝前你應該要知道的5件事](https://www.javainsoft.com/javase/openjdk/#Oracle_JDK%E5%92%8COpenJDK%E5%93%AA%E5%80%8B%E6%9B%B4%E5%A5%BD%EF%BC%9F)
[Oracle vs OpenJDK](https://www.educba.com/oracle-vs-openjdk/)


選擇安裝 
(OpenJDK or OracleJDK or AdoptOpenJDK)
===
作為純新手程序開發者, 不太想要環境被打亂, 所以如果有zip形式的壓縮檔是最好的, 這樣以後要刪除, 直接手動把這個檔案刪除就沒事了, exe檔案方便在安裝簡單, 懶人模式.(能動手的幹嘛動嘴, 對吧<3

[OracleJDK](https://www.oracle.com/java/technologies/downloads/#jdk20-windows)
![](https://hackmd.io/_uploads/Byu_kStKn.png)
很簡單, 按一下就能直接下載.

[AdoptOpenJDK](https://adoptium.net/temurin/releases/)
![](https://hackmd.io/_uploads/rkS_eHKY3.png)
很簡單, 按一下就能直接下載.

[MicrosoftJDK](https://learn.microsoft.com/zh-tw/java/openjdk/download#openjdk-17)
![](https://hackmd.io/_uploads/HJR1-StY3.png)
很簡單, 按一下就能直接下載.

當然還有[OpenLogicJDK](https://www.openlogic.com/openjdk-downloads), 
JDK版本可以下載的方法太多太多了, 本次就只舉例這幾種而已, 
本人接下來都會使用microsoftOpenJDK17作為開發.
對比一下這三個檔案的大小, 分別為MicrosoftJDK, OracleJDK, AdoptJDK.
![](https://hackmd.io/_uploads/SJvHMSFth.png)

接下來我們把剛剛下載下來的microsoft-jdk-17.0.7-windows-x64解壓縮, 我們會得到一個jdk-17.0.7+7 folder, 接下來我們在Program Files 新增一個Java資料夾, 並且把剛剛解壓縮的資料夾也一起放進去.
![](https://hackmd.io/_uploads/BJ0gvHFFn.png)
(註, 因為我的系統從來沒安裝過Java, 所以我才需要新增一個Java資料夾, 如果已經有了, 可以直接放進去)

接下來, 我們對者電腦按下右鍵, 選擇最後一個屬性.
![](https://hackmd.io/_uploads/BJRSvHKF3.png)

接者在打開的畫面, 點擊系統詳細設定.
![](https://hackmd.io/_uploads/Sk5kuBKY2.png)

點擊環境變數.
![](https://hackmd.io/_uploads/Bk3XuHYt2.png)
這邊要說一下, 使用者環境變數, 跟系統環境變數差別在哪.
假設這台電腦有2個使用者, 分別為使用者A, 使用者B, 當你在登入使用者A時, 設定使用者環境變數的時候, 那麼使用者B就會完全沒辦法使用你之前設定的變數,
反之如果是系統的環境變數, 則整台電腦通用, 可以把它想成無敵模式吧

![](https://hackmd.io/_uploads/Hk7VeXcK3.png)
接者在系統變數點選Path -> 把剛剛JDK的資料夾中的bin添加到Path, 按OK

接下來打開Terminal測試一下搂, 按WIN -> 輸入 wt -> 輸入以下命令
```
java -version
```
![](https://hackmd.io/_uploads/BkN8-XqY2.png)
可以看到把剛剛OpenJDK的版本 跟 VM版本都讀取到了
(註 LTS = Long Time Support Ubuntu的高級大佬一定都知道, 長期支援的好處在於 有版本BUG會有人處理, 非常可靠 :) 



參考
[多 OpenJDK 版本伺服器管理與啟動教學](https://tedliou.com/minecraft-server-different-jdk-version-control/)



安裝Minecraft本體(細部施工, 想要比對各家Launcher)
===
一樣作為環境強迫症的人, 最終選擇了PrismLauncher, 原因也很簡單, 即刪即用, 我悄悄的來, 直接射後不理so easy, 正如我悄悄的走 (by 再別女人.)

PrismLauncher 看了document之後, 只挑我覺得最不錯的幾個點講.
1. .minecraft直接安裝在本啟動器目錄下, 方便尋找
2. 版本控制起來非常方便, 不要的MOD可以隨時卸載
3. 要安裝Forge,Febira直接有現成的, 不用特地到官網尋找

[PrismLauncher 下載網址](https://prismlauncher.org/download/)
![](https://hackmd.io/_uploads/H1p5MX9Fh.png)
在官網上選擇.zip 下載, 非常簡單
(註, 官網有說 需要額外的前置C++庫 2022版本x64, 沒有的話, 可以在官網下載, 或是直接到[Microsoft官網](https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170) 下載)

Microsoft的下載頁面長這樣
![](https://hackmd.io/_uploads/SJrHrQ5Kn.png)
可以發現, 其實2025年以後的C++的庫, 全部都統整在一起了, 所以你下載2022年的實際上會把2015-2022年的一次下載起來 :)



接者把壓縮檔解壓縮並放到喜歡的路徑裡面
![](https://hackmd.io/_uploads/S1GBXmqFh.png)

(註 這邊說一下, 我的個人習慣會把同一件事, 放在同個資料夾, 類似這樣
![](https://hackmd.io/_uploads/SJ_sQQ5Fh.png)

接者打開PrismLauncher主體, 




初次安裝Minecraft 1.19.4 Forge的時候, 沒有插電源, 總共裝了4分59秒, 就馬馬虎虎吧~
![](https://hackmd.io/_uploads/HJ2SP_YF3.png)

題外話
ㄍㄋㄋ, 我按照Minecraft官網的指示操作之後, 
他給我安裝了一個140MB的Game service, 還不能刪除= =, 
作為環境強迫症的人, 要不是這台電腦有其他資料, 我早就直接打掉重來了
知道140MB, 可以裝多少張D槽圖片嗎= =.
![](https://hackmd.io/_uploads/B1cLYFFY2.png)


JDK, JRE, JVM(施工中, 每個文件詳解)
===
對於剛接觸Java的我, 根本不知道這些名詞是三小, 所以查了文章之後, 本人統整出來的結果.

![](https://hackmd.io/_uploads/Sk-kNQctn.png)



Minecraft Server API匯入(施工中)
===

1. Maven
2. [Gradle](https://hackmd.io/C3gom5WpT4ib6s5gjGVTxQ?both)
3. [Spigot BuildTools download](https://hackmd.io/WZqup_FUR1200idUtldAxQ?both)
4. [IDEA 內建的Minecraft Plugin 插件.](https://hackmd.io/4e24ZlrUSwy70VE-jSHp5g)

這4種API的環境安裝方式, 我個人推薦順序是 IDEA內建 > Gradle > Maven > Spigot BuildTools
在看過各大Plugin, Mod, 發現大家其實都在用Gradle, 不是說一定要用, 但總要跟上流行的吧~
但Gradle要額外多學一個Groovy或是Kit語言, 真的要我的命, 如果需要教學, 我在認真學一下統整.
(註 IDEA內建的Plugin 就有包括Gradle 或 Maven, 真的是不要太簡單= =)
(註 如果還沒有伺服器檔案的人, 推薦使用Spigot BuildTools + IDEA內建插件混用)


編程基礎講解(施工中)
===
我們把Coding 的過程簡單化之後, 大概整套的流程就只有這樣.
匯入
匯入的定義包含 匯入第三方套件, 模組, Jar, 以及別人的Project
編程的定義最簡單, 就是把自己的想法實現出來.
測試的定義, 包含運行, 結果顯示, 其中有很多方式可以簡化操作, 例如NVM, 或Gradle的task
匯出的定義 包含利用各種工具匯入, 例如Maven, Gradle, IDEA內建
匯入 -> 編程 -> 測試 -> 匯出



SPigot API Document(施工中)
===

SPigot API的文檔有點多, 我施工起來會比較慢, 