跳至正文

保姆级教程:使用Termux运行Minecraft服务器

Termux是一款Android终端仿真器和Linux环境应用程序,无需root或设置即可工作。会自动安装最小基本系统,且使用apt软件包管理器可获得其他软件包

Termux is an Android terminal emulator and Linux environment app that works directly with no rooting or setup required. A minimal base system is installed automatically - additional packages are available using the APT package manager.

第一步:安装termux

F-Droid下载安装包,并通过移动储存介质或者adb把他安装到你的Android设备上,等待安装完毕后,打开它

注意:如果以后你需要安装其他termux插件,切勿混合安装!

当你第一次启动的时候需要联网下载文件系统(应该是)和一些必要的数据,在这一步等待即可

如果你看到了一个带有Termux logo、部分说明文本以及一个终端的界面,并且可以正常执行命令的话,那么恭喜你,你安装成功了!

当然,如果你看到如下报错信息,很有可能是你的网络不好,你可以点击“TRY AGAIN”多试几次

图片来自国光大佬的文章,推荐有兴趣的去看看

第二步:使用openjdk-17开服

在终端中输入如下命令安装openjdk:

# 添加清华软件源,可以提高下载速度,如果网络好的朋友们可以跳过这一步
sed -i '[email protected]^\(deb.*stable main\)[email protected]#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/termux-packages-24 stable [email protected]' $PREFIX/etc/apt/sources.list

sed -i '[email protected]^\(deb.*games stable\)[email protected]#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/game-packages-24 games [email protected]' $PREFIX/etc/apt/sources.list.d/game.list

sed -i '[email protected]^\(deb.*science stable\)[email protected]#\1\ndeb https://mirrors.tuna.tsinghua.edu.cn/termux/science-packages-24 science [email protected]' $PREFIX/etc/apt/sources.list.d/science.list

# 更新索引
apt update

# 安装openjdk-17
apt install openjdk-17

# 测试安装
java -version

如果你看到了与以下内容相似的输出,说明你已经成功安装了!

~ $ java -version
openjdk version "17-internal" 2021-09-14
OpenJDK Runtime Environment (build 17-internal+0-adhoc..src)
OpenJDK 64-Bit Server VM (build 17-internal+0-adhoc..src, mixed mode)

# 如果需要编译服务端核心的话可以验证一下编译环境
~ $ javac -version

第三步:获取服务端核心

好了,到目前为止,环境已经准备好了,但是还缺了一个最重要的东西:服务器核心

不过目前有非常多的服务端核心可以选择,在这里列出几个常见的java版服务器核心,腐竹们可按需选择

名称支持的版本插件/mod兼容性稳定性占用资源
原版服务端几乎所有版本不支持
Spigot1.4.6-最新版本高/不支持
Bukkit(不推荐)1.0-最新版本中/不支持较高
Paper1.8.8、1.9.4 …… 最新版本较高(部分插件不兼容)/不支持较低
原版+Forge1.1-最新版本不支持/高
原版+Fabric1.14-最新版本(支持快照)不支持/较高较高较低
服务端兼容性表格

那么,现在假设你已经通过工具获取到了对应的服务端核心(通常是.jar文件),并把它上传到了你的服务器的合适的地方,那么现在就可以开始尝试启动你的服务器了!

第四步:启动服务器

首先,我们假设你已经正确的放置了你的服务端,并且所在的目录为 /path/to/myserver/ ,服务端核心名称为 server.jar

先切换到你的服务端所在目录:

~ $ cd /path/to/myserver

然后,执行这些命令:

# 查看文件
.../to/myserver $ ls
server.jar

.../to/myserver $ cat > startup.sh << EOF
> #!/data/data/com.termux/files/usr/bin/sh
> # Xmx: 最大内存
> # Xms: 最小内存
> # nogui 无需gui运行,这里是必须的,因为服务端没有gui环境
> java -server -Xmx2G -Xms1G -jar server.jar nogui
> EOF

.../to/myserver $ chmod +x startup.sh
.../to/myserver $ ls
server.jar startup.sh(绿色)

下面是可直接复制版:

cd /path/to/myserver

touch startup.sh
cat > startup.sh << EOF
#!/data/data/com.termux/files/usr/bin/sh
# Xmx: 最大内存
# Xms: 最小内存
# nogui 无需gui运行,这里是必须的,因为服务端没有gui环境
java -server -Xmx2G -Xms1G -jar server.jar nogui
EOF

chmod +x startup.sh

然后,在终端里执行这个命令:

./startup.sh
# 或者
sh startup.sh

那么,如果一切正确,你应该会看到和以下类似的输出:

.../to/myserver $ ls
server.jar  startup.sh(绿色)
.../to/myserver $ ./startup.sh
Unbundling libraries to /data/data/com.termux/files/usr/tmp/minecraft/bundler
Unpacking spigot-1.18.1-R0.1-SNAPSHOT.jar (versions:spigot-1.18.1-R0.1-SNAPSHOT.jar) to /data/data/com.termux/files/usr/tmp/minecraft/bundler/versions/spigot-1.18.1-R0.1-SNAPSHOT.jar
......
Unpacking sqlite-jdbc-3.36.0.3.jar (libraries:sqlite-jdbc-3.36.0.3.jar) to /data/data/com.termux/files/usr/tmp/minecraft/bundler/libraries/sqlite-jdbc-3.36.0.3.jar
Starting server
Loading libraries, please wait...
[10:39:44] [ServerMain/ERROR]: Failed to load properties from file: server.properties
[10:39:44] [ServerMain/WARN]: Failed to load eula.txt
[10:39:44] [ServerMain/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

看起来启动失败了,没错,雀食

这是因为你还没有同意eula协议,你需要同意协议才能开启你的服务器

echo "eula=true" > eula.txt

然后,重复上一步的开服命令,如果一切顺利,你就可以在手机上开启你的服务器了!

之后使用vim/nano等工具编辑服务端目录下的server.properties,使非正版玩家可以加入(可选)

online-mode=false

第五步:获取服务器地址,并加入服务器

你可以登陆你路由器的后台,并且查看你开服的设备的ip地址,这种方法不再赘述

或者在终端里输入

ifconfig

然后你会看到类似的输出(关键部分已打码)

~ $ ifconfig
dummy0: flags=195<UP,BROADCAST,RUNNING,NOARP>  mtu 1500
        inet6 fe80::****:****:****:8b1  prefixlen 64  scopeid 0x20<link>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 179  bytes 12530 (12.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1  (UNSPEC)
        RX packets 1537390  bytes 2005952508 (1.8 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1537390  bytes 2005952508 (1.8 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

p2p0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

# 你需要找的是这个!!!
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.3.112  netmask 255.255.255.0  broadcast 192.168.3.255
        inet6 fe80::****:****:****:4f54  prefixlen 64  scopeid 0x20<link>
        inet6 2409:****:****:****:****:****:fe6d:4f54  prefixlen 64  scopeid 0x0<global>
        inet6 2409:****:****:****:****:****:f80b:6665  prefixlen 64  scopeid 0x0<global>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 945785  bytes 281770369 (268.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 667765  bytes 183205354 (174.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

一般来说,wlan0一节里的“inet”就是你要找的地址了

当然,如果你需要ipv6的话,同节里的inet6就是了

第六步(可选):使用screen工具在后台运行

虽然到现在你已经一切就绪了,但是当你关闭ssh窗口的时候,你目前所有运行的程序都会自动销毁,你肯定是不希望这种情况发生的,那么你就需要screen来帮你挂起你的服务端

首先,先从apt安装screen

apt install screen

然后,建立一个screen会话

screen -R mc

之后,执行前一步的开服命令即可

如果想离开会话,你可以按下键盘上的Ctrl+A,之后按D(Detach),你就成功分离会话了

如果想恢复你的会话,你可以输入如下命令

screen -r mc

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注