美文网首页
Linux下搭建带mod的Minecraft服务器

Linux下搭建带mod的Minecraft服务器

作者: crossous | 来源:发表于2019-03-04 19:31 被阅读3次

    前言

      Minecraft,中文翻译为我的世界,是一款老少皆宜的游戏,高中时期室友用手机玩,我也入了这个坑,后来同班的几个人一起集资租了MC服务器,加了些MOD,渐渐学会了原版、IC2、BC、神秘及拓展等MOD的玩法。
      当年租个最低端的服务器,一个月30元,后来降低到10元,是在网页操控服务器关闭、重启等。
      现在也在大学学了几年了,我想自己搭个服务器是没什么问题的,不过大学开学前一个月集中玩神秘4,同学服主没在某个世界关闭死亡掉落,导致辛苦研究出的物品付之东流,导致现在都不怎么想玩MC了。
      最近恰巧大学同学看了vtuber直播MC,开始玩MC,也想一起玩,不过还是希望玩mod,查了查听说网易客户端对加mod不是很好,于是升起了自己搭服务器的念头。
      操作步骤不多,具体博客参考:

    linux下建立可加载mod的minecraft服务器

      大部分操作都是在里面学来的,本文只是细化一些细节。

    准备一台作为服务器的电脑

      毕竟要搭建服务器,一般都用装linux系统的电脑。这个电脑一般是租云服务器,所以做好每月给云服务商钱的准备,除非你有装linux电脑,并且只要有人玩就要在运行状态,供玩家访问。
      直接去阿里云或腾讯云租用就行,如果是学生,可以搜索阿里云的云翼计划(学生优惠,腾讯云也有类似的),最低配置的机器,如果租用大概100多每月,学生只用十块钱左右。
      登陆,购买页面不需要改变什么,服务器地点根据自己的情况

    选择,服务器登陆密码(要求大写、小写字母、数字、特殊符号至少占三个)最好提前定义(或者买完后定义也没问题),付款完成。 阿里云云翼计划页面   等几分钟后服务器启动,点击左侧面板,点击云服务器,即可看到当前实例列表。   等到看到状态变为“运行中”之后,复制公有IP,就开始下一步了。
    远程连接服务器

      因为是云服务器,像阿里云、腾讯云都有自己的网页控制终端,但网页不是很方便稳定,最好还是用ssh软件远程连接,我用Xshell。
      如果不想用Xshell,也可以点击上图右侧的远程连接,一样可以登录服务器,但是不推荐。

      点击软件左上角的按钮,在弹出的菜单中,将主机内容改为你刚刚看到服务器的公网IP,名称酌情更改,点击确定后等几秒钟,会弹出框让你输入密码,把你购买时填写的密码填上,如果购买时没改,就需要到云服务端的控制台去找一找了(1.腾讯云好像需要ssh文件验证,验证方法自己去找找。2.部分校园网可能会ban掉此类连接,那只能用热点连接了,不然就算用网页规避掉ban,MC也可能连不上服务器)。 输入成功,进入命令行
      此时通过输入:cd ..回车,进入最底层目录。
      再输入ls命令即可查看文件内容。   新建两个文件夹,一个用于下载和中转,一个用于装MC服务端,输入:
    mkdir download
    mkdir minecraft_server
    

      先下载java,看原博客说open-jdk有问题。java有jre和jdk之分,jdk包含jre,运行服务端只需要jre就够了。我试着去java的网站上,点了同意后,将地址复制到linux中,然后wget下载,下载回来的大小都一样,但是无法解压,网上查到的原因是:那个链接如果不点同意直接下载,下载回去的文件是有问题的。我不清楚是否有其他方便的安装方法,我直接下载到我本地电脑中,然后用ftp软件上传到服务器中。

    ftp传输文件

      ftp软件就是要向服务器传文件用的软件,有些东西在服务器上下载比个人电脑慢很多(几B每秒那种),或者更麻烦,我用的Pycharm自带的ftp功能,不过不推荐,这东西是用来写python代码的,低端电脑光是打开就要很长时间,推荐xftp等专业ftp软件。
      示意下Pycharm的传输方法,其他软件可能类似:

      我选择将文件传输目标定在download文件夹下。
    Java官网下载JRE,根据机器情况酌情选择x86的32位或x64的64位 图是JRE,链接是JDK
    安装jre(或jdk)

      下载到本地后,再通过ftp软件传到linux的download文件夹下,然后我们进入到download文件夹下并解压,输入:

    cd /download
    tar -zxvf jre【tab】
    

      不同的版本文件名不一样,因此输入jre(或jdk)后,直接按tab键补全文件名。下面可以参考linux下安装jdk1.8安装jdk,jre可以百度jre的安装,总之最终结果,只要你在命令行下输入java,有正常的输出(不提示没有命令),就可以进行下一步了。

    下载MC服务端

      通过访问https://s3.amazonaws.com/Minecraft.Download/versions/1.12.2/1.12.2.jar下载服务端,根据客户端的版本号,只要改一改数字就能下载不同版本的服务端,可以用进入到download的文件夹后,试试用wget下载本文件,或者本地下完后传给服务器。
      然后将文件放到服务端文件夹中,运行命令获得必要配置文件(有些代码很长,善用Tab补齐和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
    

      最后一行代码有三处可以改:最小、大内存、jar包名称。
      本地会多出一些文件,我们需要更改eula.txt文件,输入vim eula.txt,并按INSERT进入输入状态,将eula=false改为eula=true,然后按ese键,输入:wq保存并退出,然后重新运行上面的java -Xms512m -Xmx1024m -jar minecraft_server.1.12.2.jar nogui
      此时程序会一直执行不会退出,可以后面看到加载地图的百分比,显示done便是加载完毕,现在用快捷键Ctrl+C退出。
      用ls命令能看到多出很多文件,此时用vim server.properties进入编辑文件,输入/online查找,在找到online-mode=true后,按INSERT进入编辑模式,将true改成false,这样就不会区分正版和盗版了。同样用ESC+:wq保存并退出。
      第三次运行java -Xms512m -Xmx1024m -jar minecraft_server.1.12.2.jar nogui就能开启服务器,理论上输入你的公网IP:25565(就是你控制台的公网IP,例如40.128.15.15:25565这种形式)就能访问了,访问不了大概是防火墙没开或者25565的端口没开放。
      我去查了开放linux端口的方法并打开,但是并不好使。(验证方法是在手中的windows系统中,WIN键+R唤出运行窗口,出入cmd打开命令行,在其中输入telnet 公网IP 端口号25565,例如telnet 40.128.15.15 25565,如果什么也没输出,并且cmd内所有字符都消失,才是正确的结果,否则在等一段时间后会显示失败)。
      突然想起云服务器也可能禁止端口,于是发现果然是这个问题,解决方法(演示阿里云的):

    阿里云控制台 选择配置规则 保守起见,入方向和出方向都添加自定义TCP
      我不知道需不需要重启服务器(我是重启了一次,可能不需要),此时再运行java -Xms512m -Xmx1024m -jar minecraft_server.1.12.2.jar nogui,在done后,进入游戏,在多人游戏中输入服务器地址和端口号,即可登录游戏:
      这是原版MC,如果想加mod,就要安装forge框架的universal版本
    加载mod

      选择游戏版本,再找到适合版本的forge(应该不低于客户端),然后下载universal版本的forge。
      这个也不能wget下载,它会先跳到一个广告页面倒计时,等过了后按SKIP跳过,才能下载,所以同样要下载到本地后,用ftp传送到服务器。
      不管是不是传送到/download文件夹,都要将下载好的jar文件移动(前面的mv命令)到/minecraft_server文件夹下。
      除了forge,还需要有运行库,到本地的MC客户端下,.minecraft文件夹下,找到libraries文件夹,把整个文件夹ftp传输并拷贝到linux服务器的/minecraft_server下。
      然后执行java -Xms512m -Xmx1024m -jar forge-1.12.2-14.23.5.2811-universal.jar nogui,注意,这次是运行forge,并且文件名需要和下载的保持一致,我写的是我下载的forge文件名。
      运行到一定时间,感觉加载完成(有百分数),用Ctrl+C退出程序,此时用ls命令,即可发现/minecraft_server文件夹下生成了mods文件夹,将本地mods文件中,需要上传到服务端的mod全装到这个文件夹下,再运行java -Xms512m -Xmx1024m -jar forge-1.12.2-14.23.5.2811-universal.jar nogui即可。

    离线运行

      我们和服务器会话的窗口(无论是Xshell、网页控制台还是其他)都是一个进程。而在其上运行的MC服务端都是它的子进程,当我们关闭窗口时,服务器程序都会终止,这大概不是我们想要的,毕竟这和我们本地计算机搭建服务器就没什么区别了。
      方法是分离进程,将服务端的进程从ssh会话进程中脱离开来,我们需要screen。screen是linux上的一款软件,用于管理会话。
      如果还运行着之前的forge程序,命令行还是MC服务器的,我们需要Ctrl+C先退出程序。运行apt-get install screen下载并安装screen。
      我们需要的命令只有那么几种。
      首先,screen -ls显示当前所有screen创建的窗口,此时我们还没有创建。
      screen -S <窗口名>创建一个名为‘窗口名’的窗口。
      我们输入screen -S mc,再输入screen -ls,就可以看到和下面图片类似的字符:

      每行的格式大致为:窗口号.窗口名 创建日期 状态
      窗口名可以重复,窗口号唯一标识一个窗口,状态中Attached意思是窗口依赖于当前会话,当当前会话结束,进程也会释放,而Detached是分离的进程,意思是:就算会话结束,进程也会一直运行。
      因此我们先在这个服务器运行上面的代码,随后新打开一个会话窗口(Xshell或云控制台窗口,不是screen -S创建的窗口),用screen -d 窗口名分离进程。
      我输入screen -d mc,现在回到刚开始的窗口,发现窗口已经自动从服务端的进程中退出了,如果再运行screen -ls,会发现mc窗口处于Detached状态,此时就可以放心关闭会话窗口了。
      如果过一段时间想要调出服务端命令行,用来输入指令,例如赋予op权限怎么办?
      用screen -r 窗口名,即可再调出MC命令行,此时用screen -ls会发现窗口再次回到了Attached状态。

    以上

    相关文章

      网友评论

          本文标题:Linux下搭建带mod的Minecraft服务器

          本文链接:https://www.haomeiwen.com/subject/vpwiuqtx.html