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

前言

在上一篇文章中,我们介绍了如何在本地使用minecraft。但是,如果小伙伴想要一起玩同一个地图,就需要一个minecraft服务器。最简单的方法就是在单机游戏的情况下对局域网开放,这种方法是一种临时提供大家玩耍的途径;另一种比较复杂的方法就是需要有一台闲置的电脑,在上面运行minecraft服务器版本。接下来我会介绍这两种方法,重点在第二种方法上。

目录

服务器

1. 临时服务器

1.1. 首先进入一个单人游戏
这里写图片描述


1.2. 进入游戏后按esc调出菜单,选择对局域网开放。
这里写图片描述


这个时候,你可以改变游戏的一些属性,
这里写图片描述
比如game mode,可以换成上帝模式或者其他;以及是否允许使用作弊码。调整完游戏属性后,点击开始。这个时候你的游戏就作为一个临时的服务器面向局域网开放。游戏会为你分配一个端口号,并在屏幕上显示,在这个例子里是38413。

这里写图片描述


1.3. 其他人加入

  • 首先,你需要知道你自己的局域网ip,一般在网络设置里。网上教程有很多,比如: windows linux
    假设你的地址是192.0.0.102
  • 其他人打开minecraft选中多人游戏
    这里写图片描述
  • 选择直接连接,然后让小伙伴在地址栏填入你的ip地址和端口号,中间用冒号:连接
    本例中,填入192.0.0.102:38413。点击加入 大家就可以一起玩耍了。
    这里要注意一下,minecraft是用人名来区分玩家,所以大家不要取一个名字。名字的取法在上一篇文章有讲。
    这里写图片描述
    这里写图片描述

这样建立服务器有明显的优缺点
优点: 方便快捷,易于操作。适用于临时玩一会,或者向朋友分享自己的地图。
缺点: 建立服务器的人不能下线,如果建立服务器的玩家不想玩了,也必须保持自己是登入状态。这个时候如果想要离开电脑,无法保证自己人物的安全(被怪物袭击)。另外,如果希望局域网之外的小伙伴可以玩的话,这样建立服务器是无法加入的,需要一个公网ip。

2. 真•服务器

现在我们就来讲一讲,如果我想让更多的人参与到minecraft里如何建立服务器。

2.1 首先你需要一台”闲置的电脑”

如果只有一台闲置电脑放在家里,那么建立的服务器并不具有公网ip,只能供局域网里的小伙伴玩。要想解决这个问题,可以使用花生壳等产品。
另一种方法,直接租一个服务器,方法有很多。我租用的是阿里云服务器,最便宜的大概是100块钱一个月,也可以按小时租,大概0.7元一小时。

这里我们统称上面两种电脑称为服务器。服务器的系统windows或者linux都可以。我个人喜欢linux一些,所以选取的阿里云的ubuntu 16.06 64位的系统。下面也以该系统为例介绍建立服务器。

要在服务器里也安装jre,安装方法同上一篇单机版相同。

2.2 下载minecraft服务器版本

据说可以在官网下载,但是我真是没找到地址…
所以我在azminecraft(点击下载)下载的,这里有两点要注意的:

  1. 服务器版本要尽量和本地游戏版本一致。所以我下载的是1.10.2版本的服务器
  2. 需要下载的文件只有一个
    windows下载后缀为.exe或.jar文件
    linux下载后缀为.jar文件

我下载的文件名为minecraft_server.1.10.2.jar

将该文件拷贝到服务器里,假设拷贝到minecraft_server文件夹里。

2.3 运行服务器

首先我们先来运行一下服务器程序,产生必要的一些文件。

$ java -Xms512m -Xmx1024m -jar minecraft_server.1.10.2.jar nogui

第一次运行,程序会自动退出,提示需要同意协议。本地会多出eula.txt文件

#By changing the setting below to TRUE you are indicating your agreement to our ULA (https://account.mojang.com/documents/minecraft_eula).
#Wed Sep 17 16:44:43 CST 2014
eula=true

将eula=false改为eula=true保存退出即可。
第二次运行

$ java -Xms512m -Xmx1024m -jar minecraft_server.1.10.2.jar nogui

这个时候程序不会退出,会按照默认设置生成一个世界。用ctrl-C 手动退出。这个时候可以看到本地多了很多文件。

-rw-rw-r--  1        2 Jun  7 21:36 banned-ips.json
-rw-rw-r--  1        2 Jun  7 21:36 banned-players.json
drwxrwxr-x  2     4096 Jun  7 18:39 config/
-rw-rw-r--  1      180 Jun  7 14:38 eula.txt
drwxrwxr-x  2     4096 Jun  8 08:03 logs/
-rw-r--r--  1  9459897 Jun  7 14:30 minecraft_server.1.10.2.jar
-rw-rw-r--  1      145 Jun  7 21:36 minecraft_service.log
-rw-rw-r--  1        2 Jun  7 21:36 ops.json
-rw-rw-r--  1      756 Jun  7 21:36 server.properties
-rw-rw-r--  1      101 Jun  8 08:11 usercache.json
-rw-rw-r--  1       50 Jun  7 18:05 usernamecache.json
-rw-rw-r--  1        2 Jun  7 14:39 whitelist.json
drwxrwxr-x  8     4096 Jun  8 10:23 world/

world文件夹中储存的是默认创建的世界。

server.properties文件是服务器配置文件,里面包含了服务器的设置以及生成世界的配置。
我们只需将文件中

online-mode=true

改为

online-mode=false

该配置问价其他选项的说明参考我的世界百科

第三次运行

$ java -Xms512m -Xmx1024m -jar minecraft_server.1.10.2.jar nogui

这个时候最基本服务器建设就结束了。小伙伴们只要在多人游戏里,输入服务器的ip和端口号(ip:端口号,默认的端口号是25565),就可以加入到服务器中。
这个时候,可以试一试大家能不能加入。

如果不能加入有一下几个问题:
1. 服务器的防火墙阻断了minecraft端口,需要添加防火墙规则,允许tcp 25565端口。
2. java问题,推荐大家全部使用oracle的java,之前我尝试用openjdk的java死活连不上。

2.4 加载mod

因为我们希望能够使用forge的mod插件,所以需要安装forge。

2.4.1 下载forge api

可以去官网下载,下载universal版本。要注意要和游戏版本对应。这里我下载1.10.2版本。
文件名为forge-1.10.2-12.18.3.2185-universal.jar
将该文件拷贝到服务器minecraft_server文件夹下。

2.4.2 运行forge minecraft

运行forge

$ java -Xms512m -Xmx1024m -jar forge-1.10.2-12.18.3.2185-universal.jar nogui

这个时候会报错误,因为缺少必要的库函数。我们需要把本地客户端里的库函数拷贝到服务器里。
找到本地.minecraft中libraries文件夹,将该文件夹拷贝到服务器的minecraft_server文件夹下。再次运行forge

$ java -Xms512m -Xmx1024m -jar forge-1.10.2-12.18.3.2185-universal.jar nogui

等待一会,可以看到服务器重新启动了之前创建world存档。说明forge加载成功。ctrl-C退出。可以看到本地多了mods文件夹,该文件夹用来存放mod文件。

2.4.3 加载liteloader

为使得服务器支持小地图,我们需要加载liteloader插件。
将本地客户端.minecraft/mods文件夹下的liteloader-1.10.2-release.jar拷贝到服务器下minecraft_server/mods文件夹下。

2.4.4 加载mod

对于forge的mod,只需要将mod文件拷贝到服务器的mods文件夹及客户端的mods文件夹就可以了。
对于liteloader的mod,比如小地图voxelMapmod。不需要将mod文件(mod_voxelMap_1.6.21_for_1.10.2.litemod)拷贝到mods文件夹下,否则会引起错误。

2.4.4 再运行forge minecraft

再一次运行,服务器就建立完成了。

$ java -Xms512m -Xmx1024m -jar forge-1.10.2-12.18.3.2185-universal.jar nogui
2.5 后台运行及管理脚本

直接在终端运行服务器,如果退出终端,那么服务器也会随之终端。所以最好能将服务器在后台运行。
需要使用screen命令,具体的screen命令如何使用请参考网上众多教程。

最后附上我写的利用screen开关服务器的脚本。很久之前写的,语法有一些不规范的地方,大家多多包含

文件名: mcserver.sh

#!/bin/sh



if [ "$1" == --help ];then
    printf " ==========================================\n"
    printf " -r\t如果存在minecraft_service则重新启动\n"
    printf " -kf\t如果存在minecraft_service则kill掉该进程\n"
    printf " -s\t查看minecra_service的状态\n"
    printf " -f\t将minecraft调至前台\n"
    printf " --help\t帮助\n"
    printf " ------------------------------------------\n"
    exit 0
fi

declare -a pid_screen
declare pid
if [ "$1" == -f ];then
    pid_screen=$(screen -list | grep 'minecraft_service'|cut -d . -f 1)
    printf ${pid_screen}
    if [ -n ${pid_screen} ];then

    if [ ${#pid_screen[*]} -eq 1 ];then
        screen  -r minecraft_service
    else
        printf "\t有多个minecraft_service\n"
        screen -list
    fi
    else
        printf "\t后台没有minecraft_service\n"
    exit 0
    fi
    exit 0
fi

#查询是否已经开启minecraft
pid=$(ps -ef | grep forge-1.10.2-12 | egrep -v 'grep|screen|tee|SCREEN' | awk '{ printf $2}')


if [ -n "$1" ]; then
    if [ "$1" == -r ];then
    if [ -n "$pid"  ];then
        kill $pid
    fi
    #       echo "kill"

    elif [ "$1" == -kf ];then
    if [ -n "$pid" ];then
        kill $pid
    fi

    pid_screen=$(screen -list | grep 'minecraft_service'|cut -d . -f 1 )
    if [ ${#pid_screen[*]} -eq 1 ];then
        kill $pid_screen

        exit 0
    fi
    elif [ "$1" == -ka ];then
    if [ -n "$pid" ];then      
        kill $pid
    fi
        pid_screen=$(screen -list | grep 'minecraft_service'|cut -d . -f 1)
        kill $pid_screen

        exit 0
    elif [ "$1" ==  -s ]; then
    if [ -n "$pid" ]; then
        printf "\tminecraft在运行\n"
        ps -ef | grep forge-1.10.2-12 | egrep -v 'grep|screen|tee|SCREEN'
    else
        printf "\tminecraft服务没有运行\n"
    fi
    exit 0
    else
    printf "\t参数不正确\n使用--help可查看参数\n"

    exit 0
    fi
else
    printf "\t参数不正确\n使用--help可查看参数\n"

    exit 0
fi


unset pid
unset pid_screen
date >> ./minecraft_service.log
screen  -R minecraft_service java -Xms512m -Xmx1024m -jar forge-1.10.2-12.18.3.2185-universal.jar nogui| tee -a ./minecraft_service.log

使用方法

# 调用帮助
$ bash ./mcserver.sh --help
# 在screen中打开服务器
$ bash ./mcserver.sh -r
# 结束现有开启的服务器
$ bash ./mcserver.sh -kf
# 查看服务器运行状态
$ bash ./mcserver.sh -s
# 将后台的screen调至前台
$ bash ./mcserver.sh -f
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值