CentOS 7 架設 minecraft server
唉呀~~~~,小孩要玩 minecraft,還要我裝 server = =||,就來試試吧!
直述說明
依照官方的說明,安裝 minecraft 是非常簡單的,只有三點 1. 正確的 JAVA 版本、2. 下截最新的 minecraft_server.[version].jar 檔、3. 執行 jar 檔,完成這三個部驟 minecraft_server 就啟動了,對外部開放服務,有基本的網路概念並進行設定即可,如果要完整安裝,可以參考 myfreax 大大的文章,會從頭教到尾,照作就能完成。
註1:CentOS7 原支援的 JAVA 11,是無法安裝最新的 minecraft 1.19.3,必需使用 JAVA 17 版,才能正常安裝
參考資料:
Klinsmann 大大的文章 -- 手動安裝 java 17
https://techviewleo.com/install-java-openjdk-on-rocky-linux-centos/
myfreax 大大的文章 -- 架設 minecraft-server-on-centos-7 -- 非常完整的教學照做可以完成
https://www.myfreax.com/how-to-install-minecraft-server-on-centos-7/
官方說明
https://minecraft.fandom.com/zh/wiki/%E6%95%99%E7%A8%8B/%E6%9E%B6%E8%AE%BE%E6%9C%8D%E5%8A%A1%E5%99%A8?variant=zh-tw
木綾大的影片
https://www.youtube.com/watch?v=QnccnMiPq5M
註:依木綾大的文件,如果是安裝新版的 server(如1.19.2版),就不是直接點 forge-1.19.3-44.1.0-server.jar 因為 server 檔被移到 \libraries\net\minecraftforge\forge\1.19.3-44.1.0\ 中,可以直接執行 run.bat 檔,就可以開啟伺服器了
官方說明 -- 關於 client 端的設定檔 .minecraft/options.txt
https://minecraft.fandom.com/zh/wiki/Options.txt?variant=zh-tw
官方說明 -- 關於 server 端的設定檔 server.properties
https://minecraft.fandom.com/zh/wiki/Server.properties?variant=zh-tw
官方說明 -- 關於 server 端的指令說明
https://minecraft.fandom.com/zh/wiki/%E5%91%BD%E4%BB%A4?variant=zh-tw
hackmd 文章 -- server.properties 參數說明
https://hackmd.io/@jFtR3mNkSeGU1pBPxQMrpg/Bk_Ed1L9f?type=view
偵錯桐人 -- Minecraft 遊戲常用指令表整理
https://tedliou.com/minecraft-command/
官方說明 -- 模組說明
https://minecraft.fandom.com/zh/wiki/%E5%8A%A0%E8%BD%BD%E5%99%A8Mod
依官方說明,以前有ModLoader載入器,但其在1.16.2後官方就沒在維護了,這樣就是完全交給第三方廠商來開發了,目前看來最多模組的就是 Forge 了
關於 Forge 版本安裝流程
towns 一開始一直沒搞清楚官方版本與第三方版本的關係,造成安裝上一直時好時壞,以下說明安裝流程
1. 購買授權。一般大家會建議購買 Java 版本,因為模組多、靈活性高、自主性高、架設也容易
那在哪裡購買,登入 Microsoft Store > 搜尋 Mincraft: Java Edition,買這個版本
2. 下載並安裝 luncher
登入 Microsoft Store > 搜尋 Mincraft Launcher > 點擊安裝 Mincraft Luancher
註:安裝完成後,在 C:\Users\\[user]\AppData\Roaming\.minecraft 這個資料匣就會出現了(預設路徑)
3. 先透過 Launcher 啟動一次原版的 Minecraft
這次執行會下載完整的檔案到 .minecraft 中
到此步驟,原廠最新版本(1.19.3)的 Minecraft 已經可以正常運作了
4. 下載 Forge 1.19.3
在 google 中打入 minecraft forge 1.19.3,通常第一個就是 Forge 的下載點了
https://files.minecraftforge.net/net/minecraftforge/forge/index_1.19.3.html
5. 取得 Download Recommended 版本後進行安裝
進入網頁 > 選 Download Recommended 的 Instraller > 等待 5 秒,到右上角點 skip > 開始下載 forge-1.19.3-44.1.0-installer.jar
點 forge-1.19.3-44.1.0-installer.jar 畫面將會跳出 Install client、Server、Extract 三個項目,先選 Install client,並安裝於預設路徑中
安裝完成後,會跳出 suesses 的畫面,按 OK,就完成 forge-1.19.3-44.1.0 安裝,這時再開啟 Launcher,就可以看到 forge 1.19.3-44.1.0 這個版本了
註:towns 不喜歡將所有的資料放在同個資料匣,所以,會將 Forge 的設定檔路徑改到特定的地方。
至此,Forge-1.19.3-44.1.0 已安裝完成,可以進行遊戲了
Server 安裝(多人遊戲)
伺服器安裝。為什麼要進行伺服器安裝,因為單人遊戲很容易發生 lag 的情形(可能是因為 towns 的設備比較老舊了),有伺服器連接比較順暢。伺服安裝有兩種方式,一個使用線上免架設平台 Aternos,一個就是自己架設,towns 來說說如何架設
Aternos 架設
非常簡單,申請帳號後,點左上方伺服器,看到中間有一個綠色的的“啟動”,給他點下去,稍等
1 分鐘後,伺服器就完成了 = =。這個也太點單了,而 Client
連接伺服器,只要將“啟動”上面那串網址(*******.aternos.me)貼到,伺服器位置,就可以連上線了。當然,還有很多詳細的設定可以操作,這些詳細的設定都列在左邊的列表中,而且,也支援第三方主程式架設(如常見的
Forge、Fabric
等…十二種)……,看起來就是不需要自己架設了,要加模組,當然也都支援……,那應該就不需要自己架設了吧!不過,towns
還是比較喜歡自己架設,不過,Aternos 可以成為自行架設伺服器的參考資訊。只有幾個缺點說明。1. 很多廣告,網頁還有連入點、2. 5
分鐘沒人連入或等待時間大於 5 分鐘使用會自動關閉 Server
自行架設
自行架設需要一些基本知識
1. 正確安裝 JAVA 版本
2. 取得正確版本的 server 檔案
1. 取得正確版本的 server 檔案方式有兩種,1. 由官網取得、2. 由 Launcher 下載
2.
先點選一次,下載部分資料及 eula.txt 檔,並改成 true,再點一次下載完整資料,這時會開啟 JAVA 介面,並等待 Done
(34.908s)! For help, type "help",這個訊息出現,就完成 server 的安裝了。其實這時 Server
也已經完成啟動了。
3. script 檔案的撰寫(需要清楚什麼是 scripts)
建立一個由官方建議的 script(windows 建立為 *.bat、linux 為 *.sh
java -Xmx1024M -Xms1024M -jar minecraft_server.1.19.3.jar nogui
參考資料:
官方 server 檔案下載
指令說明
指令是在伺服器下才能使用的
/advancement (grant|revoke)
/attribute <target> <attribute> (get|base|modifier)
/execute (run|if|unless|as|at|store|positioned|rotated|facing|align|anchored|in)
/bossbar (add|remove|list|set|get)
/clear [<targets>]
/clone <begin> <end> <destination> [replace|masked|filtered]
/dat
(merge|get|remove|modify)
/datapack (enable|disable|list)
/debug (start|stop|function)
/defaultgamemode <gamemode>
/difficulty [peaceful|easy|normal|hard] <= 難度調整
/effect (clear|give)
/me <action>
/enchant <targets> <enchantment> [<level>]
/experience (add|set|query)
/xp -> experience
/fill <from> <to> <block> [replace|keep|outline|hollow|destroy]
/fillbiome <from> <to> <biome> [replace]
/forceload (add|remove|query)
/function <name>
/gamemode <gamemode> [<target>]
/gamerule
(announceAdvancements|blockExplosionDropDecay|commandBlockOutput|disableElytraMovementCheck|disableRaids|doDaylightCycle|doEntityDrops|doFireTick|doImmediateRespawn|doInsomnia|doLimitedCrafting|doMobLoot|doMobSpawning|doPatrolSpawning|doTileDrops|doTraderSpawning|doWardenSpawning|doWeatherCycle|drowningDamage|fallDamage|fireDamage|forgiveDeadPlayers|freezeDamage|globalSoundEvents|keepInventory|lavaSourceConversion|logAdminCommands|maxCommandChainLength|maxEntityCramming|mobExplosionDropDecay|mobGriefing|naturalRegeneration|playersSleepingPercentage|randomTickSpeed|reducedDebugInfo|sendCommandFeedback|showDeathMessages|snowAccumulationHeight|spawnRadius|spectatorsGenerateChunks|tntExplosionDropDecay|universalAnger|waterSourceConversion)
/give <targets> <item> [<count>]
/help [<command>]
/item (replace|modify)
/kick <targets> [<reason>]
/kill [<targets>]
/list [uuids]
/locate (structure|biome|poi)
/loot (replace|insert|give|spawn)
/msg <targets> <message>
/tell -> msg
/w -> msg
/particle <name> [<pos>]
/place (feature|jigsaw|structure|template)
/playsound <sound> (master|music|record|weather|block|hostile|neutral|player|ambient|voice)
/reload
/recipe (give|take)
/say <message>
/schedule (function|clear)
/scoreboard (objectives|players)
/seed
/setblock <pos> <block> [destroy|keep|replace]
/spawnpoint [<targets>]
/setworldspawn [<pos>]
/spectate [<target>]
/spreadplayers <center> <spreadDistance> <maxRange> (<respectTeams>|under)
/stopsound <targets> [*|master|music|record|weather|block|hostile|neutral|player|ambient|voice]
/summon <entity> [<pos>]
/tag <targets> (add|remove|list)
/team (list|add|remove|empty|join|leave|modify)
/teammsg <message>
/tm -> teammsg
/teleport (<location>|<destination>|<targets>)
/tp -> teleport
/tellraw <targets> <message>
/time (set|add|query)
/title <targets> (clear|reset|title|subtitle|actionbar|times)
/trigger <objective> [add|set]
/weather (clear|rain|thunder)
/worldborder (add|set|center|damage|get|warning)
/jfr (start|stop)
/ban-ip <target> [<reason>]
/banlist [ips|players]
/ban <targets> [<reason>]
/deop <targets> <== 降權功能。在指令列打入 /deop [玩家名稱],玩家就關閉使用指令了
/op <targets> <== 提權功能。在指令列打入 /op [玩家名稱],玩家就可以在世界中使用指令了
/pardon <targets>
/pardon-ip <target>
/perf (start|stop)
/save-all [flush]
/save-off
/save-on
/setidletimeout <minutes>
/stop
/whitelist (on|off|list|add|remove|reload)
設定檔說明
設定檔:server.properties
#Minecraft server properties
#Tue Jan 24 16:55:13 CST 2023
enable-jmx-monitoring=false
rcon.port=25575 <== 遠端指令使用的 port
level-seed= <== 世界種子碼
gamemode=survival <== 0(survival;生存)、1(creative;創造)、2(adventure;冒險)、3(spectator旁觀)
enable-command-block=false <== 是否啟用指令方塊
enable-query=false
generator-settings={}
enforce-secure-profile=true
level-name=world
motd=A Minecraft Server
query.port=25565 <== 對外開放的 port
pvp=true <== true - 玩家可以互相殘殺。false - 玩家無法互相造成傷害
generate-structures=true
max-chained-neighbor-updates=1000000
difficulty=easy <== 0(peaceful;和平)、1(easy;簡單)、2(normal;普通)、3(hard;困難)
network-compression-threshold=256
max-tick-time=60000
require-resource-pack=false
use-native-transport=true
max-players=20 <== 玩家上限數
online-mode=true <== 設定開放盜版家可連入,true 只允許正版玩家連入、false 允許正版盜版玩家連入
enable-status=true
allow-flight=false <== 是否可飛行
initial-disabled-packs=
broadcast-rcon-to-ops=true
view-distance=10
server-ip=
resource-pack-prompt=
allow-nether=true
server-port=25565 <== 對外開放的 port
enable-rcon=true <== 遠端控制。當將 mincraft 建置為服務時,這個功能就是必要的
sync-chunk-writes=true
op-permission-level=4 <== 開放 op 玩家的權限等級
prevent-proxy-connections=false
hide-online-players=false
resource-pack=
entity-broadcast-range-percentage=100
simulation-distance=10
rcon.password=[自定] <== 遠端控制密碼。當 enable-rcon=true 時才有用
player-idle-timeout=0
force-gamemode=false
rate-limit=0
hardcore=false
white-list=false
broadcast-console-to-ops=true
spawn-npcs=true
spawn-animals=true
function-permission-level=2
initial-enabled-packs=vanilla
level-type=minecraft\:normal
text-filtering-config=
spawn-monsters=true
enforce-whitelist=false
spawn-protection=16
resource-pack-sha1=
max-world-size=29999984
安裝第三方的 minecraft 主程式
依照官方的啟動模式,取得伺服器檔案(minecraft_server.1.19.3.jar),再透過 java 啟動該檔案即可,但官方版本的伺服器看來並沒有提供模組(modules),似乎都是第三方伺服器檔案才有提供,所以必需安裝第三方伺服器檔案,才能支援第三方模組。當建立了公開的伺服器,想要用模組,就得另外開一個使用第三方伺服器檔案的伺服器了,難怪開啟 minecraft 必需使用啟動器(launcher),可是伺服器端並沒有啟動器,看來會有點麻煩,且使用者端與伺服器端的版本必需相同才能正常連線使用吧!這樣的結果表示,玩家必需在同一台主機上開啟伺服器及使用者端程式,才能快速變化第三方伺服器或下指令;看來 minecraft 似乎就是這麼設計的讓玩家除了是世界中的玩家外,還同時是世界中的上帝
minecraft crash 了
今天原本要去關閉架設好的官方版 minecraft server,沒想到他自己 crash 了,這想這可能是因為玩家下了某些指令造成的,查了一下 log 出現了幾個關鍵資訊
1. [ServerMain/ERROR]: Exception reading ./world/level.dat
突然無法讀取 ./world/level.dat,有點怪,towns 查看了該檔案,0k,蠻明顯的,檔案有問題,沒有資料,我有注意到 minecraft 有自己產生了一個 old 檔,所以在覆蓋後,就可以正常啟動 minecraft
2.
[ServerMain/WARN]: Failed to load datapacks, can't proceed with server
load. You can either fix your datapacks or reset to vanilla with
--safeMode
這個錯誤是要請我重建資料片段,不過,不是重點,因為問題 1 才是主要問題
Forge 1.16.5 Server 端無法正常啟動的問題
參考資料:
Yuta212 大大說明
https://m.gamer.com.tw/forum/C.php?bsn=18673&snA=193947
open JDK windows 版安裝路徑
C:\Program Files\Microsoft\jdk-17.0.6.10-hotspot\bin
留言
張貼留言