更新紀錄 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的文檔有點多, 我施工起來會比較慢,