前言
??Minecraft围肥,中文翻譯為我的世界罩扇,是一款老少皆宜的游戲婆芦,高中時期室友用手機(jī)玩怕磨,我也入了這個坑,后來同班的幾個人一起集資租了MC服務(wù)器消约,加了些MOD肠鲫,漸漸學(xué)會了原版、IC2或粮、BC导饲、神秘及拓展等MOD的玩法。
??當(dāng)年租個最低端的服務(wù)器被啼,一個月30元帜消,后來降低到10元棠枉,是在網(wǎng)頁操控服務(wù)器關(guān)閉浓体、重啟等。
??現(xiàn)在也在大學(xué)學(xué)了幾年了辈讶,我想自己搭個服務(wù)器是沒什么問題的命浴,不過大學(xué)開學(xué)前一個月集中玩神秘4,同學(xué)服主沒在某個世界關(guān)閉死亡掉落贱除,導(dǎo)致辛苦研究出的物品付之東流生闲,導(dǎo)致現(xiàn)在都不怎么想玩MC了。
??最近恰巧大學(xué)同學(xué)看了vtuber直播MC月幌,開始玩MC碍讯,也想一起玩,不過還是希望玩mod扯躺,查了查聽說網(wǎng)易客戶端對加mod不是很好捉兴,于是升起了自己搭服務(wù)器的念頭。
??操作步驟不多录语,具體博客參考:
??大部分操作都是在里面學(xué)來的倍啥,本文只是細(xì)化一些細(xì)節(jié)。
準(zhǔn)備一臺作為服務(wù)器的電腦
??畢竟要搭建服務(wù)器澎埠,一般都用裝linux系統(tǒng)的電腦虽缕。這個電腦一般是租云服務(wù)器,所以做好每月給云服務(wù)商錢的準(zhǔn)備蒲稳,除非你有裝linux電腦氮趋,并且只要有人玩就要在運(yùn)行狀態(tài),供玩家訪問江耀。
??直接去阿里云或騰訊云租用就行剩胁,如果是學(xué)生,可以搜索阿里云的云翼計(jì)劃(學(xué)生優(yōu)惠决记,騰訊云也有類似的)摧冀,最低配置的機(jī)器,如果租用大概100多每月,學(xué)生只用十塊錢左右索昂。
??登陸建车,購買頁面不需要改變什么,服務(wù)器地點(diǎn)根據(jù)自己的情況
遠(yuǎn)程連接服務(wù)器
??因?yàn)槭窃品?wù)器唬涧,像阿里云、騰訊云都有自己的網(wǎng)頁控制終端盛撑,但網(wǎng)頁不是很方便穩(wěn)定碎节,最好還是用ssh軟件遠(yuǎn)程連接,我用Xshell抵卫。
??如果不想用Xshell狮荔,也可以點(diǎn)擊上圖右側(cè)的遠(yuǎn)程連接,一樣可以登錄服務(wù)器陌僵,但是不推薦轴合。
??此時通過輸入:
cd ..
回車营曼,進(jìn)入最底層目錄。??再輸入
ls
命令即可查看文件內(nèi)容愚隧。mkdir download
mkdir minecraft_server
??先下載java录煤,看原博客說open-jdk有問題。java有jre和jdk之分荞胡,jdk包含jre妈踊,運(yùn)行服務(wù)端只需要jre就夠了。我試著去java的網(wǎng)站上硝训,點(diǎn)了同意后响委,將地址復(fù)制到linux中新思,然后wget下載窖梁,下載回來的大小都一樣,但是無法解壓夹囚,網(wǎng)上查到的原因是:那個鏈接如果不點(diǎn)同意直接下載纵刘,下載回去的文件是有問題的。我不清楚是否有其他方便的安裝方法荸哟,我直接下載到我本地電腦中假哎,然后用ftp軟件上傳到服務(wù)器中。
ftp傳輸文件
??ftp軟件就是要向服務(wù)器傳文件用的軟件鞍历,有些東西在服務(wù)器上下載比個人電腦慢很多(幾B每秒那種)舵抹,或者更麻煩,我用的Pycharm自帶的ftp功能劣砍,不過不推薦惧蛹,這東西是用來寫python代碼的,低端電腦光是打開就要很長時間刑枝,推薦xftp等專業(yè)ftp軟件香嗓。
??示意下Pycharm的傳輸方法,其他軟件可能類似:
去Java官網(wǎng)下載JRE靠娱,根據(jù)機(jī)器情況酌情選擇x86的32位或x64的64位
安裝jre(或jdk)
??下載到本地后掠兄,再通過ftp軟件傳到linux的download文件夾下像云,然后我們進(jìn)入到download文件夾下并解壓锌雀,輸入:
cd /download
tar -zxvf jre【tab】
??不同的版本文件名不一樣,因此輸入jre(或jdk)后迅诬,直接按tab鍵補(bǔ)全文件名汤锨。下面可以參考linux下安裝jdk1.8安裝jdk百框,jre可以百度jre的安裝闲礼,總之最終結(jié)果铐维,只要你在命令行下輸入java,有正常的輸出(不提示沒有命令)嫁蛇,就可以進(jìn)行下一步了。
下載MC服務(wù)端
??通過訪問https://s3.amazonaws.com/Minecraft.Download/versions/1.12.2/1.12.2.jar下載服務(wù)端睬棚,根據(jù)客戶端的版本號,只要改一改數(shù)字就能下載不同版本的服務(wù)端抑党,可以用進(jìn)入到download的文件夾后,試試用wget下載本文件底靠,或者本地下完后傳給服務(wù)器。
??然后將文件放到服務(wù)端文件夾中暑中,運(yùn)行命令獲得必要配置文件(有些代碼很長,善用Tab補(bǔ)齊和Shift+Insert在linux下粘貼):
mv /download/minecraft_server.1.12.2.jar /minecraft_server
cd /minecraft_server
java -Xms512m -Xmx1024m -jar minecraft_server.1.12.2.jar nogui
??最后一行代碼有三處可以改:最小鳄逾、大內(nèi)存、jar包名稱雕凹。
??本地會多出一些文件,我們需要更改eula.txt文件请琳,輸入vim eula.txt
,并按INSERT進(jìn)入輸入狀態(tài)询筏,將eula=false
改為eula=true
,然后按ese鍵竖慧,輸入:wq
保存并退出逆屡,然后重新運(yùn)行上面的java -Xms512m -Xmx1024m -jar minecraft_server.1.12.2.jar nogui
??此時程序會一直執(zhí)行不會退出踱讨,可以后面看到加載地圖的百分比魏蔗,顯示done便是加載完畢痹筛,現(xiàn)在用快捷鍵Ctrl+C退出。
??用ls
命令能看到多出很多文件帚稠,此時用vim server.properties
進(jìn)入編輯文件,輸入/online
查找滋早,在找到online-mode=true
后,按INSERT進(jìn)入編輯模式杆麸,將true改成false搁进,這樣就不會區(qū)分正版和盜版了昔头。同樣用ESC+:wq
保存并退出。
??第三次運(yùn)行java -Xms512m -Xmx1024m -jar minecraft_server.1.12.2.jar nogui
就能開啟服務(wù)器减细,理論上輸入你的公網(wǎng)IP:25565(就是你控制臺的公網(wǎng)IP,例如40.128.15.15:25565這種形式)就能訪問了未蝌,訪問不了大概是防火墻沒開或者25565的端口沒開放茧妒。
??我去查了開放linux端口的方法并打開萧吠,但是并不好使桐筏。(驗(yàn)證方法是在手中的windows系統(tǒng)中,WIN鍵+R喚出運(yùn)行窗口梅忌,出入cmd打開命令行,在其中輸入telnet 公網(wǎng)IP 端口號25565
牧氮,例如telnet 40.128.15.15 25565
,如果什么也沒輸出踱葛,并且cmd內(nèi)所有字符都消失光坝,才是正確的結(jié)果,否則在等一段時間后會顯示失敹⒘怼)。
??突然想起云服務(wù)器也可能禁止端口洲赵,于是發(fā)現(xiàn)果然是這個問題,解決方法(演示阿里云的):
??我不知道需不需要重啟服務(wù)器(我是重啟了一次,可能不需要)后德,此時再運(yùn)行
java -Xms512m -Xmx1024m -jar minecraft_server.1.12.2.jar nogui
抄腔,在done后瓢湃,進(jìn)入游戲,在多人游戲中輸入服務(wù)器地址和端口號绵患,即可登錄游戲:??這是原版MC落蝙,如果想加mod暂幼,就要安裝forge框架的universal版本
加載mod
??選擇游戲版本,再找到適合版本的forge(應(yīng)該不低于客戶端)旺嬉,然后下載universal版本的forge管行。
??這個也不能wget下載邪媳,它會先跳到一個廣告頁面倒計(jì)時,等過了后按SKIP跳過雨效,才能下載,所以同樣要下載到本地后徽龟,用ftp傳送到服務(wù)器。
??不管是不是傳送到/download文件夾顿肺,都要將下載好的jar文件移動(前面的mv命令)到/minecraft_server文件夾下渣蜗。
??除了forge,還需要有運(yùn)行庫耕拷,到本地的MC客戶端下,.minecraft文件夾下托享,找到libraries文件夾,把整個文件夾ftp傳輸并拷貝到linux服務(wù)器的/minecraft_server下赃绊。
??然后執(zhí)行java -Xms512m -Xmx1024m -jar forge-1.12.2-14.23.5.2811-universal.jar nogui
,注意羡榴,這次是運(yùn)行forge,并且文件名需要和下載的保持一致忠售,我寫的是我下載的forge文件名。
??運(yùn)行到一定時間迄沫,感覺加載完成(有百分?jǐn)?shù)),用Ctrl+C退出程序泰佳,此時用ls
命令,即可發(fā)現(xiàn)/minecraft_server文件夾下生成了mods文件夾逝她,將本地mods文件中,需要上傳到服務(wù)端的mod全裝到這個文件夾下摇予,再運(yùn)行java -Xms512m -Xmx1024m -jar forge-1.12.2-14.23.5.2811-universal.jar nogui
即可汽绢。
離線運(yùn)行
??我們和服務(wù)器會話的窗口(無論是Xshell侧戴、網(wǎng)頁控制臺還是其他)都是一個進(jìn)程跌宛。而在其上運(yùn)行的MC服務(wù)端都是它的子進(jìn)程酗宋,當(dāng)我們關(guān)閉窗口時疆拘,服務(wù)器程序都會終止蜕猫,這大概不是我們想要的,畢竟這和我們本地計(jì)算機(jī)搭建服務(wù)器就沒什么區(qū)別了哎迄。
??方法是分離進(jìn)程隆圆,將服務(wù)端的進(jìn)程從ssh會話進(jìn)程中脫離開來翔烁,我們需要screen。screen是linux上的一款軟件蹬屹,用于管理會話。
??如果還運(yùn)行著之前的forge程序慨默,命令行還是MC服務(wù)器的,我們需要Ctrl+C先退出程序厦取。運(yùn)行apt-get install screen
下載并安裝screen潮太。
??我們需要的命令只有那么幾種虾攻。
??首先,screen -ls
顯示當(dāng)前所有screen創(chuàng)建的窗口台谢,此時我們還沒有創(chuàng)建。
??screen -S <窗口名>
創(chuàng)建一個名為‘窗口名’的窗口朋沮。
??我們輸入screen -S mc
蛇券,再輸入screen -ls
,就可以看到和下面圖片類似的字符:
窗口號.窗口名 創(chuàng)建日期 狀態(tài)
??窗口名可以重復(fù)纠亚,窗口號唯一標(biāo)識一個窗口筋夏,狀態(tài)中Attached意思是窗口依賴于當(dāng)前會話,當(dāng)當(dāng)前會話結(jié)束条篷,進(jìn)程也會釋放,而Detached是分離的進(jìn)程赴叹,意思是:就算會話結(jié)束鸿染,進(jìn)程也會一直運(yùn)行乞巧。
??因此我們先在這個服務(wù)器運(yùn)行上面的代碼涨椒,隨后新打開一個會話窗口(Xshell或云控制臺窗口,不是screen -S創(chuàng)建的窗口)蚕冬,用
screen -d 窗口名
分離進(jìn)程。??我輸入
screen -d mc
猎提,現(xiàn)在回到剛開始的窗口赢乓,發(fā)現(xiàn)窗口已經(jīng)自動從服務(wù)端的進(jìn)程中退出了,如果再運(yùn)行screen -ls
牌芋,會發(fā)現(xiàn)mc窗口處于Detached狀態(tài)蚓炬,此時就可以放心關(guān)閉會話窗口了躺屁。??如果過一段時間想要調(diào)出服務(wù)端命令行,用來輸入指令犀暑,例如賦予op權(quán)限怎么辦?
??用
screen -r 窗口名
徊都,即可再調(diào)出MC命令行,此時用screen -ls
會發(fā)現(xiàn)窗口再次回到了Attached狀態(tài)广辰。