Minecraft服務(wù)器:建立在安卓Termux下的一種嘗試
前言
我手上的R5-3500U+20G(板載4G+16G單條)的電腦似乎對(duì)我現(xiàn)在自組的1.18.2整合包有點(diǎn)吃不消了,加上很久以前有網(wǎng)友建議是可以做一個(gè)局域網(wǎng)服務(wù)器減輕客戶端電腦的壓力實(shí)現(xiàn)較穩(wěn)定的體驗(yàn),于是我就有了想將服務(wù)端和客戶端分離出來(lái),拿現(xiàn)有的設(shè)備開(kāi)服的打算。但手上只有幾臺(tái)用來(lái)掛QQ的舊手機(jī),于是就開(kāi)始找有沒(méi)有用手機(jī)開(kāi)JAVA服的教程,沒(méi)想到確實(shí)有,通過(guò)Termux運(yùn)行Linux來(lái)實(shí)現(xiàn)服務(wù)器的運(yùn)行,但我只是一個(gè)會(huì)簡(jiǎn)單打理自己的Windows電腦,對(duì)Linux一竅不通的小白,好在利用Termux運(yùn)行服務(wù)器的教程并不少,經(jīng)過(guò)一番折騰+自己踩坑后總結(jié)出了這篇自認(rèn)為很詳細(xì)的部署流程,我也確實(shí)如愿以償?shù)嘏芷鹆宋易约旱木钟蚓W(wǎng)服務(wù)器了
......嗎?
注:本流程僅涉及局域網(wǎng)內(nèi)建立服務(wù)器,不包含內(nèi)網(wǎng)穿透等支持遠(yuǎn)程連接的相關(guān)操作。
流程
1. 部署Termux
Termux官方源目前有兩種下載方式,一種是Github上下載,一種是通過(guò)F-droid開(kāi)源社區(qū)下載,只是這倆網(wǎng)站有隨機(jī)抽風(fēng)地問(wèn)題,可能需要自行準(zhǔn)備工具或者通過(guò)國(guó)內(nèi)的第三方站點(diǎn)獲取。官網(wǎng)和兩種下載方式貼在下面。
官網(wǎng):https://termux.dev/en/
Github:https://github.com/termux/termux-app#github
F-droid:https://github.com/termux/termux-app#f-droid
下載完畢后直接安裝即可。
2. Termux中操作
注1:所有的命令都需要在輸入相應(yīng)命令后按下輸入法或者鍵盤(pán)的回車鍵才會(huì)執(zhí)行。
注2:出現(xiàn)下圖中的綠色?~?后證明你的上一條命令已經(jīng)執(zhí)行完成(但不一定執(zhí)行成功),可以執(zhí)行下一條需要執(zhí)行的命令了。

準(zhǔn)備
1. 保持后臺(tái)運(yùn)行
下拉手機(jī)導(dǎo)航欄找到termux的通知,點(diǎn)擊通知中的Acquire Wakelock,以確保termux能夠一直在后臺(tái)運(yùn)行。

2. 換源與更新
進(jìn)入Termux后我們需要對(duì)Termux進(jìn)行換源,執(zhí)行:termux-change-repo?命令,之后會(huì)出現(xiàn)下圖的頁(yè)面。

按下回車后會(huì)出現(xiàn)源的選擇界面,通過(guò)termux軟件中的上下方向鍵選擇源,在這里我們選擇清華源即可。

有時(shí)會(huì)顯示大洲源,選擇Chin即可。

等待換源完成后我們需要對(duì)Termux進(jìn)行更新,執(zhí)行:pkg update 命令,之后等待更新完成,期間會(huì)經(jīng)歷多次詢問(wèn)你是否繼續(xù)

輸入y并回車即可,期間會(huì)有4-5次詢問(wèn)你,一律輸入y即可。
3. 獲取手機(jī)儲(chǔ)存權(quán)限
在換源與更新完成后,我們需要讓termux獲得訪問(wèn)手機(jī)內(nèi)部文件系統(tǒng)的權(quán)限,執(zhí)行termux-setup-storage 命令,之后可能會(huì)彈出詢問(wèn)權(quán)限,同意即可。
4. 部署流程需要的程序
執(zhí)行:pkg install vim?命令,安裝用于編輯文本的程序。
執(zhí)行:pkg install wget?命令,安裝用于下載Forge程序。部署原版服務(wù)器不需要這個(gè)。
5. 查詢ip地址
執(zhí)行:ifconfig 命令,可以查詢到當(dāng)前網(wǎng)絡(luò)下本機(jī)的IP地址。
注:ifconfig 不是輸入錯(cuò)誤,而是確實(shí)可以通過(guò)這個(gè)命令查詢地址,如果執(zhí)行:ipconfig 命令后系統(tǒng)無(wú)法識(shí)別命令,就需要ifconfig查詢。
內(nèi)網(wǎng)的IP具體顯示在wlan0的inet后,在添加服務(wù)器時(shí)輸入對(duì)應(yīng)位置的地址即可,通常會(huì)正常識(shí)別到。
部署JAVA
這里僅展示在Termux下部署JAVA17的流程,因?yàn)門(mén)ermux即使換源也只能在服務(wù)器中檢索到JAVA17的包。如果需要部署JAVA8等舊版本,需要在Termux中部署Ubuntu環(huán)境等方式操作,具體請(qǐng)參考下方鏈接的操作。

執(zhí)行命令:pkg install openjdk-17 -y,-y 參數(shù)用于跳過(guò)安裝確認(rèn)提示。等待進(jìn)度完成。
安裝進(jìn)度結(jié)束后,執(zhí)行命令:java -version,用于檢查java的安裝環(huán)境。

部署服務(wù)器
在Termux上我首先嘗試的安裝原生服務(wù)器,之后才嘗試重新安裝mod服務(wù)器,因此我會(huì)以分支作為標(biāo)題,用于區(qū)分兩種版本的安裝與部署。
如果只需要原版服務(wù)器,看分支1即可,1.12.2原生服務(wù)端可以通過(guò)分支2的Forge端獲取。
如果需要安裝Forge服務(wù)器,看分支2即可。
確認(rèn)目錄
首先我們需要確認(rèn)一個(gè)你能在手機(jī)文件管理器中能夠找到的位置,也為下文中存放mod提供便利。
首先在手機(jī)文件管理器中選擇一個(gè)你能找到的位置,新建一個(gè)文件夾。
執(zhí)行命令:cd /storage/emulated/0/你之前確定的路徑,綠色符號(hào) ~ 也會(huì)變成你現(xiàn)在所在的文件夾下,之后我們的操作都會(huì)在這個(gè)目錄下執(zhí)行。
示例:比如我在文件系統(tǒng)根目錄下創(chuàng)建了一個(gè)名為:MinecraftServer1.18.2的文件夾用于存放我的服務(wù)器文檔,現(xiàn)在我需要在termux中轉(zhuǎn)移到這個(gè)目錄下,執(zhí)行命令:cd /storage/emulated/0/MinecraftServer1.18.2,之后就會(huì)跳轉(zhuǎn)到這個(gè)目錄下。

【分支1】部署原生服務(wù)器
1. 下載原生服務(wù)器
安裝原生服務(wù)器可以直接在MC的官網(wǎng)(非網(wǎng)易版)上下載,但只能下載到最新的版本。需要下載舊版本比如1.16.5、1.12.2可以通過(guò)一種奇怪的方法:
MC的發(fā)布新版本后會(huì)發(fā)布一個(gè)更新公告頁(yè),比如:
https://www.minecraft.net/zh-hans/article/minecraft-java-edition-1-18-2
在更新公告頁(yè)面中,最下面提供了服務(wù)器端的下載鏈接。直接點(diǎn)擊下載就可以了。

而下載1.16.5就很簡(jiǎn)單了,將鏈接中的1-18-2改為1-16-5就可以跳轉(zhuǎn),下載鏈接的位置基本一樣,但1.12.2無(wú)法通過(guò)這種方法下載,需要自己找Server包,或者通過(guò)安裝1.12.2的Forge端獲取對(duì)應(yīng)的服務(wù)端。
2. 運(yùn)行原生服務(wù)器
成功下載服務(wù)端后,先將服務(wù)端從下載的位置復(fù)制或移動(dòng)到自己決定安裝服務(wù)器的文件夾內(nèi),例如我自己的路徑是:/storage/emulated/0/MinecraftServer1.18.2,那么我就需要將下載的服務(wù)器包復(fù)制或移動(dòng)到文件夾:MinecraftServer1.18.2中。
在Termux中通過(guò)?cd?命令跳轉(zhuǎn)到服務(wù)端下載的文件夾中。
執(zhí)行命令:java -jar server.jar nogui
注:原生服務(wù)端的文件名稱默認(rèn)是server,如果你是第三方下載的文件,且文件名與上述的不一樣,則要輸入對(duì)應(yīng)的文件名稱。
3. 啟動(dòng)
在第一次安裝時(shí)安裝會(huì)自行中斷,讓你修改一個(gè)eula.txt。

執(zhí)行:vi eula.txt 命令,之后會(huì)跳轉(zhuǎn)進(jìn)對(duì)應(yīng)的文檔中,

按下輸入法中的按鍵 i,啟用編輯模式,將文檔最下方的eula=false改為eula=true,之后點(diǎn)擊Termux中的esc,之后輸入命令 :wq (前面的冒號(hào)也要輸入)并回車保存退出。
再次執(zhí)行上文的啟動(dòng)命令:java -jar server.jar nogui
之后等待,出現(xiàn)下圖的回報(bào)證明服務(wù)器運(yùn)行成功。

【分支2】下載Forge
1. 確認(rèn)并下載Forge版本
首先先查詢你需要安裝的版本的Forge版本是多少,例如我查詢到1.18.2最新版本的Forge是40.2.10。
在Termux中通過(guò) cd 命令跳轉(zhuǎn)到服務(wù)端下載的文件夾中。
執(zhí)行命令(以1.18.2為例):wget http://files.minecraftforge.net/maven/net/minecraftforge/forge/1.18.2-40.2.10/forge-1.18.2-40.2.10-installer.jar ,并等待下載完成。
2. 部署Forge
執(zhí)行命令(以1.18.2為例):java -jar forge-1.18.2-40.2.10-installer.jar nogui -installserver?
中間的forge-1.12.2-14.23.5.2855-installer.jar是剛剛下載的Forge文件,如果是下載的其他的版本,則需要修改為對(duì)應(yīng)的文件名,其他的不需要改動(dòng)。
出現(xiàn)下圖的文字即顯示安裝成功。

3. 啟動(dòng)
在這里先暫停一下,因?yàn)樾枰f(shuō)明forge安裝后的文件,該說(shuō)明通過(guò)Windows下展示,但同樣適于Termux。
Forge在1.12.2、1.16.5和1.18.2在運(yùn)行installer.jar后獲取的文件有區(qū)別:


因此:
對(duì)于1.12.2和,1.16.5,需要執(zhí)行命令(以1.12.2為例):java -jar forge-1.12.2-14.23.5.2860.jar nogui
如果你只需要啟動(dòng)原版服務(wù)器,則執(zhí)行命令(以1.12.2為例):java -jar minecraft_server1.12.2.jar nogui
對(duì)于1.18.2,需要執(zhí)行命令:sh run.sh
先執(zhí)行:ls?命令,可以檢索到當(dāng)前文件夾下的所有文件和文件夾。確認(rèn)剛才安裝的服務(wù)器文件夾是否放在當(dāng)前目錄內(nèi),如果安裝后出現(xiàn)了藍(lán)色文字的Server或者nstallserver等相關(guān)字樣,大概率就是新安裝后創(chuàng)建的文件夾。
通過(guò)?cd?命令切換到安裝后出現(xiàn)的文件夾,用?ls?命令檢查文件夾內(nèi)是否存在上文圖中各版本對(duì)應(yīng)的文件,如果存在就執(zhí)行上文提及的對(duì)應(yīng)的命令。
等待一段時(shí)間。
在第一次安裝時(shí)安裝會(huì)自行中斷,讓你修改一個(gè)eula.txt,

執(zhí)行:vi eula.txt 命令,之后會(huì)跳轉(zhuǎn)進(jìn)對(duì)應(yīng)的文檔中,

按下輸入法中的按鍵 i,啟用編輯模式,將文檔最下方的eula=false改為eula=true,之后點(diǎn)擊Termux中的esc,之后輸入命令 :wq (前面的冒號(hào)也要輸入)并回車保存退出。
再次執(zhí)行上文提及的特定版本的啟動(dòng)命令,之后繼續(xù)等待。出現(xiàn)下圖的回報(bào)證明服務(wù)器運(yùn)行成功。

連接
啟動(dòng)客戶端后在多人游戲-添加服務(wù)器中輸入之前查詢到的IP地址,之后等待檢索服務(wù)器,然后點(diǎn)擊加入即可。

注1:如果沒(méi)有入正,則需要在啟動(dòng)前先通過(guò)?vi?命令編輯server.properties文檔,將文檔中的online-mode=true改為online-mode=false,具體開(kāi)啟編輯以及保存步驟請(qǐng)參考修改eula.txt的步驟。
修改后正版賬號(hào)的皮膚可能無(wú)法正常加載,我個(gè)人這邊是這樣。
注2:如果是Forge端,右邊可能會(huì)有一個(gè)綠色的鉤或者紅色的叉,綠色的鉤證明服務(wù)器與客戶端的mod比對(duì)完全符合,能夠進(jìn)入;而紅色的叉則是比對(duì)不符,如果你安裝了一些客戶端需裝而服務(wù)器不需要安裝的mod,通常情況下可以正常進(jìn)入,如果安裝了一些客戶端、服務(wù)器需裝但因?yàn)槭韬龇?wù)器未安裝的mod,它會(huì)告訴你你缺什么mod,補(bǔ)上即可。
【僅對(duì)Forge端】加入mod
在安裝mod前,需要執(zhí)行:stop 命令關(guān)閉服務(wù)器。
安裝mod就像客戶端一樣,將模組移到mod文件夾里即可。但需要注意mod能否需要在服務(wù)器中運(yùn)行,比如Jei是只需要在客戶端安裝,服務(wù)器安裝與否無(wú)所謂。
建議安裝按批次安裝mod,安裝一批啟動(dòng)一次并通過(guò)客戶端進(jìn)入一次,以確定mod能夠在服務(wù)器中正常運(yùn)行。我個(gè)人的經(jīng)歷是我安裝了一個(gè)村民優(yōu)化的mod,安裝后啟動(dòng)服務(wù)器就崩潰;而安裝等價(jià)代換后我再也沒(méi)進(jìn)去過(guò)服務(wù)器。因此強(qiáng)烈建議安裝一批啟動(dòng)一次,以免因?yàn)橐蚺耪洗罅肯哪愕木Α?/p>
服務(wù)器的重載、關(guān)閉與再啟動(dòng)
有時(shí)因?yàn)樵O(shè)備性能,服務(wù)器在運(yùn)行時(shí)可能會(huì)回報(bào)Can't keep up,這時(shí)候執(zhí)行:reload命令,等待一段時(shí)間后就可以了,期間游戲可能會(huì)卡一會(huì)。
不想運(yùn)行服務(wù)器了,執(zhí)行:stop?命令即可。
重新啟動(dòng)服務(wù)器需要跳轉(zhuǎn)到執(zhí)行服務(wù)器命令對(duì)應(yīng)的文件的存放位置才能執(zhí)行啟動(dòng)。
參考教程

https://raidenkl.gitee.io/a2b7
后記
寫(xiě)完這篇流程時(shí),我的服務(wù)器啟動(dòng)時(shí)間大概已經(jīng)超過(guò)4天了,部署服務(wù)器時(shí)因?yàn)樽约旱恼J(rèn)知水平踩了很多很多坑,我最接近開(kāi)服的一次是成功在Ubuntu環(huán)境下啟動(dòng)了1.16.5的forge服務(wù)器,但我沒(méi)法將mod轉(zhuǎn)移進(jìn)對(duì)應(yīng)的文件夾中,因?yàn)檫h(yuǎn)程傳輸一直無(wú)法正常啟動(dòng),而我又將服務(wù)器安裝在了termux自己的目錄中,似乎是無(wú)法通過(guò)手機(jī)自帶的文件管理器進(jìn)行文件管理。直到后來(lái)我選擇了1.18.2,并且理解了跳轉(zhuǎn)路徑的問(wèn)題,這最后一步才得以解決。對(duì)于我而言這個(gè)過(guò)程很痛苦,但它給我?guī)?lái)的體驗(yàn)上的提升是超出預(yù)期的。
在設(shè)備上我一開(kāi)始是打算在我用來(lái)掛QQ用的Mate 10 Pro上運(yùn)行服務(wù)器,但因?yàn)閮?nèi)存只有6G,在它上運(yùn)行原生服務(wù)器還可以,但我運(yùn)行打了102個(gè)mod的包時(shí),服務(wù)器會(huì)頻繁報(bào)回報(bào)Can't keep up,這對(duì)于體驗(yàn)還是有不小的影響。最后我還是轉(zhuǎn)移到了Y700上,8G運(yùn)存加上驍龍870的SOC運(yùn)行我現(xiàn)在102個(gè)mod的服務(wù)器還算能用,但內(nèi)存還是有點(diǎn)捉急,運(yùn)行起來(lái)后查詢內(nèi)存剩余大概就幾百M(fèi)B的空余。
聯(lián)想的ZUI的游戲模式有一個(gè)旁路充電的功能,可以在游戲運(yùn)行時(shí)通過(guò)充電器直接供電以實(shí)現(xiàn)更小的發(fā)熱以及保護(hù)電池的功能,我個(gè)人不怎么玩手機(jī)游戲,但這個(gè)功能能夠在服務(wù)器運(yùn)行時(shí)提供非常好的效果。在運(yùn)行服務(wù)器時(shí)將Termux添加進(jìn)游戲模式并開(kāi)啟旁路充電模式并保持屏幕常亮,運(yùn)行3-4小時(shí)也不怎么發(fā)熱,完全不用擔(dān)心因?yàn)殚L(zhǎng)時(shí)間接電可能引發(fā)的電池發(fā)熱問(wèn)題,算是歪打正著了。
因?yàn)殡娔X不對(duì)成通道的問(wèn)題,我在探索世界的時(shí)候很容易間歇性掉幀,即使是安裝了一些優(yōu)化mod也是如此,而服務(wù)端和客戶端分離,也就是在其他設(shè)備上運(yùn)行服務(wù)器后就沒(méi)這個(gè)問(wèn)題了,很少有掉幀的問(wèn)題,而且內(nèi)存占用十分小,在自己創(chuàng)建世界而不是進(jìn)入服務(wù)器時(shí),即使我將MC給到了5G內(nèi)存,游戲依舊時(shí)不時(shí)的會(huì)吃掉6-7G以上的內(nèi)存,即我有多少內(nèi)存,除開(kāi)系統(tǒng)和必須剩余出來(lái)的內(nèi)存,其他的統(tǒng)統(tǒng)吃掉。而現(xiàn)在我的內(nèi)存占用最低能達(dá)到1.2G左右,我可以利用剩下的內(nèi)存運(yùn)行更多的程序。

未來(lái)如果服務(wù)端設(shè)備升級(jí)我會(huì)考慮用Ubuntu或者其他帶可視化UI的linux運(yùn)行,如果繼續(xù)在安卓設(shè)備上運(yùn)行的話我可能也會(huì)考慮換到其他支持可視化UI的第三方Termux上,畢竟對(duì)于我這種純小白來(lái)說(shuō),代碼確實(shí)很簡(jiǎn)潔,但在文件復(fù)制和移動(dòng)操作上我更喜歡可視化UI。
今年年底等時(shí)間空余出來(lái)了可能會(huì)嘗試再寫(xiě)一篇關(guān)于使用Ubuntu環(huán)境安裝1.16.5等舊版本的流程,記錄一些尚未驗(yàn)證的個(gè)人猜想,當(dāng)然這是后話了,現(xiàn)在在1.18.2上體驗(yàn)很好,如果我的Y700當(dāng)時(shí)買大內(nèi)存版應(yīng)該體驗(yàn)會(huì)更好一點(diǎn)。