寫在開頭:
提到minecraft大夥兒可能多少都有印象,當年和朋友們一起籌錢開服的往事還歷歷在目。近期閒來無事,便突發奇想大致整理一些開服的基礎介紹,權當是雲端的樹洞。有些內容來自網絡,進行了歸納整理,作為自己開服歷程的記錄,可能多有雜亂錯漏,還請各位多多指正。
Minecraft服務器可以提供一個全天候在線的遊戲,無論處於何時何地隨時都可以進入共同的存檔遊戲。其基於一臺7x24在線的服務器上架設服務端,並且提供一個公網訪問方式(公網IP或內網穿透,也可使用域名解析使其更加好記)。一般的開服方式有:租賃、下載服務端使用服務器自行開服。其中租賃的來源可以是淘寶等平臺上的資源,也可以是微軟realms或者是網易代理的租賃服務器。而自行開服則需要先了解你需要的遊戲版本。
一、租賃現成服務器
在淘寶等渠道租賃此處不再贅述,通過微軟realms租賃進入遊戲—>“在Realms服務器上創建”,按操作租賃即可。
直接租賃服務器的可以方便迅速的開服,適合短期嚐鮮體驗的用戶。在Tb網購的服務器(一般是面板服)需要警惕交易安全,而在微軟realms租賃的時候則可能需要切換地區。
二、版本介紹與選擇
國際版本的Minecraft分為兩個遊戲版本:基岩版和JAVA版本;國內版本的Minecraft由網易代理。二者一致的是,電腦版本有JAVA和基岩兩個版本,手機版本則只有基岩版。不同的是,網易代理的版本看起來比國際版本(微軟版本)更新的要慢一些。
Java版顧名思義是使用Java語言編程的,是minecraft的最初版本,一般稱之為Java版、JE版,而基岩版英文名稱為Bedrock Edition,使用C++語言編程,一般稱為基岩版、PE版、攜帶版。
1. 在遊戲啟動上,JAVA版本在使用啟動器啟動的時候可以自由選擇版本,你的設備上也可以共存多個版本,開服所需要的服務端版本固定無需改變。基岩版啟動的時候則無法自由選擇版本。
2. 在遊戲版本上,JAVA分為“快照”(測試更新,一般是預覽)、“試驗性快照”(不會在啟動器發佈,俗稱快照中的快照)、“預發佈版”(即將發佈前的快照)、“正式版”等方式進行測試更新和正式更新。[^1] 而基岩版分beat版(相當於快照)、preview版(代替beat版)以及正式版進行測試更新和正式更新。 其中基岩版beta版和正式版的遊戲端和服務端不一樣,也不能互通,開服的時候需要注意。
3. 在遊戲可玩性上,JAVA可以加入更多的插件和MOD,可以擁有更多的玩法(如:粘液科技、登陸領地插件),且有一些獨有的特性,如雙持。與之相對比的基岩版一般只能加入行為包,可玩性相對較差。
4. 在內容翻譯上,由於基岩版採用機器翻譯,所以可能會有一些看起來奇奇怪怪的翻譯。
5. 在聯機功能上,JAVA版本一般為PC設計,只可以電腦之間聯機。而基岩版的服務器可以在不同設備之間聯機,如電腦和手機一起遊戲。
可以參照上面的簡要介紹和自己的需要確定需要的版本,然後進行對應版本的服務端尋找和下載。
三、服務端下載
JAVA版本通常可以訪問MCBBS論壇獲取各個版本的服務端,也可以訪問微軟的官網獲取最新版本的服務端[Download server for Minecraft | Minecraft](https://www.minecraft.net/zh-hans/download/server)。
基岩版本無法在啟動的時候自由選擇版本,推薦使用最新版本的服務端即可[基岩版服務器下載 | Minecraft](https://www.minecraft.net/zh-hans/download/server/bedrock)。需要需要注意的是,下載時需要區分標準版和BETA版,如上所述二者的客戶端也是不同的。
下載的.jar文件對於winser和linux都是通用的。
四、客戶端下載
JAVA版可以使用啟動器啟動,你可以通過微軟正版的啟動器進入遊戲,也可以通過第三方啟動器(也就是盜版)進入遊戲。比較知名的第三方啟動器包括:[PLC]、[HMCL]。
基岩版一般推薦使用官方正版啟動器,PC端可以在微軟商店購買,PE端可以在Apple Store和Google Play購買正版。
五、服務器
自行搭建mc服務器的前提是你需要擁有一臺自己的、可以進行公網訪問的服務器。你可以去購買各廠商的雲服務器(一般建議輕量雲服務器即可夠用),也可以利用自己閒置的電腦設備作為服務器搭建。不過後者需要通過內網穿透以實現玩家的公網訪問。比較知名的第三方內網穿透軟件有:花生殼。
如選擇購買廠商服務器,一般可以粗略理解為1G內存可以供8-10人在線、一人0.5-1M帶寬。如果加入插件和MOD則需要更大的內存。JAVA 1.17版本及以上建議4GB內存起步。
作為參考:2c2g5m服務器,JAVA 1.12.2近似純淨生存服,5人在線時候無明顯卡頓。
六、開服操作
(1)Linux
首先需要一個遠程連接服務器的SSH軟件並且為服務器開放<22>端口(為ssh默認端口,你也可以自行設置其他非衝突端口以增強安全性),常用的軟件一般有:[Putty],[Xshell],這裡只是提供的一種思路。
1.1 連接服務器
下面的操作以XShell為例,可以透過上面的鏈接下載免費授權。請同時安裝xshell和xftp。後者在上傳文件的時候會需要用到。
1. 打開xshell後點擊“新建”.
xshell新建會話
2. 隨後輸入主機IP和端口號,SSH端口一般默認為22,點擊“連接”.
xshell登入服務器
3. 按要求輸入登錄用戶名,並點擊“確定”
4. 雙擊左側“新建會話”,按要求輸入登陸密碼即可連入服務器。
1.2 配置服務器 [^2]
1.2.1 安裝環境
第一步就是安裝相應的環境,JAVA版需要先為你的服務器安裝JAVA,只需要在xshell命令行輸入如下指令:
yum install -y java //安裝JAVA
如你想指定下載的JAVA版本需要在代碼後加上版本號即可,有時會因為服務端版本原因,需要嘗試不同的java版本以找到最合適的版本。
1.2.2 防火牆
為讓其他玩家可以從公網訪問你的遊戲服務器,需要檢查防火牆是否開啟。
systemctl status firewalld.service //檢查防火牆是否開啟,提示disavtive(dead)則表示已關閉
systemctl stop firewalld.service //CentOS關閉防火牆指令
1.2.3 保持服務端會話
利用screen使得可以在斷開連接的情況下,mc服務器也可以保持運行。
yum install screen //安裝screen
提示”is this ok?“
y //確認安裝
1.3 裝載Minecraft服務器
首先需要使用上面安裝的screen建立一個新的session,以確保在斷開xshell連接後依然可以保持mc服務器的運行。
screen //建立新session
其中,關於screen的一些基礎指令被羅列在下方:
關於screen的一些指令:
screen //新建一個session
screen -ls //列出當前所有的session
screen -r hello //回到hello這個session
screen -d hello //遠程結束hello session
screen -d -r hello // 結束當前session並回到hello這個session
現在,需要使用之前提到的XFTP將服務端核心上傳到服務端以及進行修改。使用XFPT連接服務器後,雙擊文件列表頂端的“…”回到根目錄下,新建一個名為“server”的文件夾(名字也可以隨意,足夠區分即可),並將服務器核心置入此目錄下。然後我們需要一個啟動腳本,命名為“start.sh”,可以使用記事本編輯。如後續winser開服啟動腳本後綴則為.dat。
java -Xmx1024M -Xms1024M -jar minecraft_server.1.12.2.jar nogui
//-Xmx代表最大佔用內存,-Xms代表最小佔用內存,-jar後面的為服務端核心的名稱,nogui表示無圖形顯示
或者透過微軟官方的基岩版適用於UBUNTU的下載鏈接[基岩版服務器下載 | Minecraft]下載,將容器文件解壓到空文件夾,通過以下命令開啟服務器:
LD_LIBRARY_PATH=. ./bedrock_server
並且透過其中自帶的微軟幫助文檔進行接下來的操作。
1.4 運行Minecraft服務器
在screen中輸入如下指令:
cd .. //回到根目錄下
cd server //進入“server”目錄(如上一步文件夾名稱是自定義,此處也要修改)
bash start.sh //運行啟動腳本(同理,如自定義腳本名此處則需修改)
此處會發現無法正常啟動服務器,中止並進入“server”目錄下,打開新生成的“eula.txt”(最終用戶協議),將其中的FALSE改為TRUE同意協議。然後再一次在screen輸入啟動指令:
bash start.sh //啟動遊戲
不出意外,服務器已經正常開服。
(2)WinSer
winser由於是圖形化操作界面,大家平日有使用windows系統的習慣,比較好上手,也推薦新手使用此渠道開服。但是需要指出的是,winser對服務器性能要求更高,推薦至少在2GB內存的機器上嘗試。系統版本建議使用winser 2012 R2版本,是個人測試下對服務器性能要求相對較低且好用的版本,此版本基於win8,UI和操作習慣也相對熟悉。
2.1 連接服務器
winser連接一般使用系統自帶的“遠程桌面”功能,但是此功能在家庭版上**不受支持**。針對家庭版用戶可以選擇尋求專業版的升級密鑰,或者採用第三方遠程桌面軟件。
無論使用哪一種方式,都需要提前為服務器開啟<3389>端口(為遠程桌面默認端口,你也可以設置其他非衝突端口以增強安全性)。以騰訊雲服務器為例,需要前往服務器管理後臺先重置登陸密碼,登陸用戶名建議暫時保持“Administor”不變。輸入你的服務器IP並點擊“連接”,按要求輸入用戶名密碼即可進入遠程桌面。
2.2 配置服務器
2.2.1 安裝環境
和Linux開服一樣,如果你選擇JAVA版本的服務端,你也需要先行安裝JAVA環境,一般不推薦最新版本,因為可能存在一些穩定性和兼容性問題。你可以前往[甲骨文官網]下或者[MCBBS論壇]等方式獲取你需要的java版本。
作為參考:我個人使用的java 1.12.2核心採用的java為“jre-8u321-windows-x64”。
Tip:java不建議隨便更新。
2.2.2 防火牆
一樣需要開放對應端口以確保玩家用戶可以正常公網訪問遊戲服務器,你可以前往服務器管理後臺開放。一般而言常用的端口如下(當然你也可以修改合適的端口,後面會提到):
java port - 25565
bedrock port -19132(ipv4)
-19133(ipv6)
按需開放即可。
2.3 裝載Minecraft服務器
得益於圖形化操作界面,只需要在桌面建立一個新文件夾,命名為“server”(或者你喜歡的名稱),然後將服務端置入其中,並且參照上面linux的方法修改“eula”中結果為同意協議。從微軟官網下載的基岩版服務端會自帶啟動文件,一般名為“bedrock_server.exe”,如果服務端中沒有集成啟動腳本,我們則需要自行編寫。
最基礎的形式和linux啟動文件差不多,不同的是文件後綴為bat而非sh.
java -server -XX:+UseG1GC -Xms1024M -Xmx4096M -jar <服務端名稱>.jar nogui
//詳細意義可以參照上文Linux啟動腳本撰寫的介紹
當然,為了防止可能的服務端中斷,我們也可以使用echo來使得服務端達到自動重啟的目的,保證遊戲服務器的可用性。具體的介紹可以參考本文底端的“補充內容”,也可以點擊鏈接前往[MC服務器啟動腳本寫法]。這裡給出我自用的一個啟動腳本作為參考。
@ECHO OFF
title <窗口標題名稱,可以自定義>
MAIN
cls
java -Xmx8192M -Xms5120M -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:+UseG1GC -XX:+UnlockExperimentalVMOptions -XX:MaxGCPauseMillis=45 -XX:TargetSurvivorRatio=90 -XX:G1NewSizePercent=50 -XX:G1MaxNewSizePercent=80 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=50 -XX:+AggressiveOpts -XX:LargePageSizeInBytes=2M -XX:+UseLargePages -XX:+UseLargePagesInMetaspace -jar spigot-1.12.2.jar
if exist "plugins\RestartEvolution\restart.mcs" goto MAIN
echo (%time%) 服務器準備重啟
echo.
timeout 6
goto MAIN
END
2.4 運行Minecraft服務器
雙擊文件夾中的“bedrock_server.exe”或“start.bat”或者類似的文件一鍵開服。
(3)正版驗證
如果你和你的朋友們都擁有正版賬號,那麼可以選擇開啟此選項,否則請關閉。開啟後可以阻止大部分惡意玩家(因為他們的惡意行為需要正版賬號,增加了成本)。如果你想修改此選項,可以在目錄下“server.properties”文件中找到如下內容進行修改:
online-mode=false //false即為關閉正版驗證
七、服務器基本配置
根據上文的步驟,服務器應該已經正常開服了,下面是對目錄下部分配置文件的基礎解釋,利用他們可以修改服務器的一些配置,以更適合個人需求。其中在完成配置文件的修改與上傳後,需要透過“reload”指令重新加載整個服務端以使得修改生效。
`server.properties`
這是決定服務器信息最重要的文件,可以使用記事本直接打開修改。如果願意也可以使用vscode等軟件更舒適的編輯。這裡以我自己的文件作為範本解釋:
#Minecraft server properties //說明,無需理會
Sat Feb 25 14:49:49 CST 2023 //建立時間,無需理會
spawn-protection=16 //出生點保護距離,設置為0則將出生點保護降低為1x1的空間
server-name=XXX Server //服務器名稱,將會在服務器列表展示
generator-settings=
force-gamemode=false //強制遊戲模式
allow-nether=true //生成末地
gamemode=0 //默認進入遊戲時的遊戲模式,0為生存、1為創造、2為冒險、3為旁觀
broadcast-console-to-ops=true //將控制檯廣播至op
enable-query=false //是否開啟GameSpy4協議服務器監聽器
player-idle-timeout=0 //服務器最長掛機時間,設置為0則不踢出服務器
difficulty=3 //難度,從0-3以此為和平、簡單、普通、困難*
spawn-monsters=true //是否生成怪物
op-permission-level=4 //op的權限等級,默認4級即可。詳細信息可以在底部補充內容的鏈接瞭解更多。
pvp=true //是否開啟pvp
snooper-enabled=true
level-type=DEFAULT //確定服務器地圖的類型。DEFAULT - 標準世界;FLAT - 超平坦世界;LARGEBIOMES - 預設世界,但所有生態系都更大(僅快照12w19a,或正式版1.3之後可用);AMPLIFIED - 預設世界,但世界生成高度提高(僅快照13w36a,或正式版1.7.2之後可用)[^3]
hardcore=false //極限模式,玩家死後會被服務器封禁
enable-command-block=true //允許命令方塊
max-players=50 //最大允許同時在線的玩家數量(實際承載數還是要看服務器配置,這裡是做一個限制,超過數量限制的玩家進入會提示排隊等待)
network-compression-threshold=256 //默認會允許n-1字節的數據包正常發送, 如果數據包為 n 字節或更大時會進行壓縮。 所以,更低的數值會使得更多的數據包被壓縮,但是如果被壓縮的數據包字節太小將會得不償失。一般而言有:1 - 永久禁用數據包壓縮;0 - 壓縮全部數據包,建議在64-1500) [^3]
resource-pack-sha1= //資源包的SHA-1值,必須為小寫十六進制。保持默認值一般即可。
max-world-size=29999984 //設置世界最大半徑,超過max則無效
server-port=25565 //服務器端口,可以修改以增強安全性,但是同時需要開放對應端口
debug=false
server-ip= //服務器指向ip,會與之綁定。建議留空。
spawn-npcs=true //是否生成npc
allow-flight=true //是否允許飛行(針對有權限者)
level-name=world //主世界的名稱
view-distance=8 //視距。默認10,推薦4-8,限制了渲染距離,一般建議>7,請根據實際情況調整
resource-pack= //可輸入指向一個資源包的URI。玩家可選擇是否使用該資源包
spawn-animals=true //是否生成動物
white-list=false //是否啟用白名單機制。建議默認FALSE,如需啟用需要修改目錄下的whitelist文件
generate-structures=true //是否生成建築物,如村莊、神廟
online-mode=false //這也就是大名鼎鼎的“正版驗證”,開啟後必須使用正版賬號才能夠登入。可以有效阻止大部分惡意玩家。
max-build-height=256 //建築高度限制,最大值為256
level-seed= //服務器種子
prevent-proxy-connections=false //阻止代理連接。開啟此選項後玩家透過代理工具(包括但不限於加速器之類)將無法進入遊戲。此舉可確保你能獲得玩家真實的ip地址,便於管理封禁惡意玩家,按需開啟
motd=XXX Server //服務器標語
enable-rcon=false //是否開啟rcon監聽,一般保持默認即可
`ops.json`
這裡記錄了服務器內的op(管理員)以及他們的權限等級,在控制檯透過指令添加的管理員默認為4級最高級別。在頁面底部的“補充內容”中可以對於權限等級進行進一步的瞭解。
op //任命op(默認4級)
-
deop //取消op資格
文件內容示例如下,你也可以參照此格式手動添加op,完成修改後請保存文件並透過“reload”更新配置。其中uuid一般可以透過指令“seen <name>”獲取。
{
"uuid": "",
"name": "",
"level": 4,
"bypassesPlayerLimit": false
//修改為true代表在人滿時op可以突破人數限制無需排隊直接進入服務器
},
` banned-ips/players`
這個文件內記錄了服務器內封禁的玩家和ip(段)以及封禁的原因,你可以透過控制檯指令或者修改此文件內容以封禁/解封。
控制檯命令(遊戲內使用需要前置/):
ban //封禁該id,並且附帶原因
ban //封禁該ip(段),並且附帶原因
pardon //解封該id
pardon ip //解封該ip(段)
tempban //封禁某個玩家或IP一段時間。 : s=秒,m=分鐘,h=小時,d=天,w=星期,mo=月,y=年
文件內容示例如下,你也可以參照此格式手動執行封禁/解封操作,完成修改後請保存文件並透過“reload”更新配置。
’banned-players.json‘
[
{
"uuid": "",
"name": "",
"created": "xxxx-xx-xx xx:xx:xx +0800", _**//此項為執行封禁的時間,末尾的+0800為UTC時區。**_
"source": "Console", _**//此項代表執行封禁操作的來源,“console”表示從控制檯透過指令封禁**_
"expires": "forever",
"reason": "您的網絡環境存在風險,請嘗試更換網絡環境。"
}
]
‘banned-ips.json’
[
{
"ip": "",
"created": "xxxx-xx-xx xx:xx:xx +0800",
"source": "Console",
"expires": "forever",
"reason": "[AntiDDoS]您所在的IP存在存在風險,系統已自動封禁,如有疑問請聯繫管理員"
},
{
"ip": "",
"created": "xxxx-xx-xx xx:xx:xx +0800",
"source": "console",
"expires": "forever",
"reason": "[AutoCheckDDoS]檢測到您的ip存在DDoS風險行為,如有疑問請聯繫服務器管理員"
}
]
需要注意的是,如在使用過程中需要封禁ip段,使用“*”替代。如:127.0.0.*。為防止可能的ddos風險,可以考慮使用自動封禁插件以達到自動檢測並封禁可能存在危險行為的用戶以及ip。
八、添加插件
針對JAVA版本添加插件,只需要將插件文件解壓入文件夾後置入目錄下“**plugins**”文件夾即可。若想使得插件生效,請重啟服務端或者嘗試使用“**reload <插件名稱>**”。
對於對外開放的服務器,一般推薦考慮添加部分基礎性必要插件,以實現基礎的遊戲性保障,如:AuthMe(登錄)、Essentials(權限組)、QuickShop(商店),Residence(領地)。過多的插件會影響服務器性能,請按需添加啟用。插件的來源一般可以去[MCBBS論壇](https://www.mcbbs.net/)或者其他途徑尋找,請在下載時檢查是否匹配你的服務端和遊戲版本。
九、補充內容
[1] 服務端啟動腳本的撰寫
[2] 權限等級(1.7)
參考
[1] minecraft基岩版與Java版區別 - 知乎 (zhihu.com)
[2] 在Linux環境搭建Java版Minecraft(我的世界)服務器_linux我的世界開服【版權聲明:本文為CSDN博主「Meow_wu」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。https://blog.csdn.net/Meow_wu/article/details/108825823】
[3] Minecraft 服務器server.properties屬性文件介紹 (最詳細 最全 漢化) - 嗶哩嗶哩 (bilibili.com)(https://foxs.wiki/index.php?title=Minecraft%E5%BC%80%E6%9C%8D#cite_ref-:0_3-0) [3.1](https://foxs.wiki/index.php?title=Minecraft%E5%BC%80%E6%9C%8D#cite_ref-:0_3-1)