关于在Linux下搭建一个纯净Minecraft服务器

发布于 2019-09-30  497 次阅读


因为突然想玩Minecraft了所以就拿腾讯云的一台学生机搭了个玩玩。

嘛,想玩的也可以来哦~QQ群

我的环境

腾讯云CVM 1H2G1M

Centos 7.6 

宝塔面板(我个人觉得用宝塔修改文件和上传文件要比用命令方便)

Java 8(这个东西不用多说了吧)

Screen(可以让我的世界进程在关闭ssh客户端的连接后继续在后台运行)

以Minecraft-Server-1.14.4为例

安装Java环境

已经安装的请忽略该步骤

检查Java环境

java -version
OpenJDK Version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)

如果你当前的 Java 版本不是 1.8 或者更高,则需要重新安装。

Centos系统使用以下命令安装Java JDK

sudo yum install java-1.8.0-openjdk

Ubuntu系统使用以下命令安装Java JDK

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

如果显示 add-apt-repository 命令无法找到,你可以运行以下命令。

sudo apt-get install software-properties-common

也可以把第三个命令换成以下命令来安装最新的 Java 版本。

oracle-java9-installer

安装完成后,再次键入命令。

java-version

来核实Java版本,当你有了一个合适的Java环境,你就可以安装我的世界服务端了。

安装Screen

输入以下命令安装Screen,如果已经安装请忽略该步骤。

yum -y install screen

下载Minecraft 1.14.4 服务端

(1).你可以用以下命令来下载服务端

sudo wget https://launcher.mojang.com/v1/objects/3dc3d84a581f14691199cf6831b71ed1296a9fdf/server.jar

当然我是直接用宝塔面板下载的

(2).在“/home”文件夹下新建一个名叫“Minecraft”的文件夹,然后可以在进入“Minecraft”的文件夹

然后利用宝塔的远程下载来下载Minecraft 1.14.4 服务端

打开宝塔ssh(也可以用别的ssh客户端)

输入以下命令移动到Minecraft文件夹

cd /home/Minecraft

初始化我的世界服务端

输入以下命令初始化我的世界服务端

java -Xmx1024M -Xms512M -jar server.jar nogui

然后在宝塔面板里进入 /home/Minecraft 目录,打开一个名为“eula.txt”的文件

把 eula=false 改为 eula=true 后保存

修改 server.properties 文件

以下是我的配置,您可以根据自己的需求更改。

#Minecraft server properties
#标题注释

#Mon Sep 30 00:03:06 CST 2019
#保存时间

spawn-protection=16
#出生点的保护半径

max-tick-time=60000
#设置每个tick花费的最大毫秒数

generator-settings=
#用于自定义超平坦世界的生成

force-gamemode=false
#强制玩家加入时为默认游戏模式

allow-nether=true
#允许玩家进入下界

gamemode=0
#定义默认游戏模式
#0 - 生存模式
#1 - 创造模式
#2 - 冒险模式(仅在12w22a之后,或正式版1.3之后可用)
#3 - 旁观模式(仅在14w05a之后,或正式版1.8之后可用)

enable-query=false
#允许使用GameSpy4协议的服务器监听器,用于收集服务器信息。

player-idle-timeout=0
#如果不为0,服务器将在玩家的空闲时间达到设置的时间(单位为分钟)时将玩家踢出服务器
#例如:把player-idle-timeout设置为3,玩家空闲时间达到3分钟就会被踢出服务器

difficulty=3
#定义服务器的游戏难度(例如生物对玩家造成的伤害,饥饿与中毒对玩家的影响方式等)。
如果设置了旧的数字ID,则会自动转化为英文的难度名称
#peaceful(0) - 和平
#easy(1) - 简单
#normal(2) - 普通
#hard(3) - 困难

spawn-monsters=true
#决定攻击型生物(怪兽)是否可以生成。
#true - 可以。只要满足条件的话怪物就会生成。
#false - 禁用。不会有任何怪物。
#如果difficulty = 0(和平)的话,本属性值不会有任何影响。

op-permission-level=4
#设定OP的权限等级
#1 - OP可以无视重生点保护。
#2 - OP可以使用单人游戏作弊命令(除了/publish,因为不能在服务器上使用,/debug也是)并使用命令方块。命令方块和领域服服主/管理员有此等级权限。
#3 - OP可以使用几乎所有多人游戏限定的命令(除第4级专用命令)
#4 - OP可以使用所有命令,包括/stop、/save-all、/save-on和/save-off。

pvp=false
#是否允许PvP。玩家自己的箭也只有在允许PvP时才可能伤害到自己。
#注: 来源于玩家的间接伤害,例如熔岩,火,TNT等,还是会造成伤害。
#true - 玩家可以互相残杀。
#false - 玩家无法互相造成伤害。

snooper-enabled=false
#自1.3正式版之后,一旦启用,将允许服务端定期发送统计数据到http://snoop.minecraft.net.
#false - 禁用数据采集
#true - 启用数据采集

level-type=DEFAULT
#确定地图所生成的类型
#DEFAULT - 标准的世界带有丘陵,河谷,海洋等
#FLAT - 一个没有特色的平坦世界,适合用于建设
#LARGEBIOMES - 如同预设世界,但所有生态系都更大(仅快照12w19a,或正式版1.3之后可用)
#AMPLIFIED - 如同预设世界,但世界生成高度提高(仅快照13w36a,或正式版1.7.2之后可用)
#CUSTOMIZED - 自快照14w21b以來,服务器也支持自定义地形。使用方法是在generator-settings贴上代码。

hardcore=false
#开启极限模式,玩家在死后会自动被服务器封禁。

enable-command-block=false
#是否启用命令方块

max-players=10
#设置服务器同时能容纳的最大玩家数量

network-compression-threshold=256
#默认会允许n-1字节的数据包正常发送, 如果数据包为 n 字节或更大时会进行压缩。 所以,更低的数值会使得更多的数据包被压缩,但是如果被压缩的数据包字节太小将会得不偿失。
#-1 - 永久禁用数据包压缩
#0 - 压缩全部数据包
#注意: 以太网规范要求把小于64字节的数据包填充为64字节。 因此,设置一个低于64的值可能没有什么好处。 也不推荐让设置的值超过MTU,它通常为1500个字节。

resource-pack-sha1=
#资源包的SHA-1值,必须为小写十六进制,建议填写它,这还没有用于验证资源包的完整性,但是它提高了资源包缓存的有效性和可靠性。

max-world-size=29999984
#设置世界边界的最大半径值,单位为方块。通过成功执行的命令能把世界边界设置得更大,但不会超过这里设置的最大方块限制。如果设置的 max-world-size 超过默认值的大小,那将不会起任何效果。
#例如:
#设置 max-world-size 为 1000 将会有 2000x2000 的地图边界。
#设置 max-world-size 为 4000 将会有 8000x8000 的地图边界。

server-port=25565
#服务器端口号。如果服务器通过路由器与外界连接的话,该端口必须也能够通过路由器。

server-ip=
#将服务器与一个特定IP绑定。强烈建议你留空本属性值!

spawn-npcs=true
#决定是否生成村民。
#true - 生成村民
#false - 不会生成村民。

allow-flight=false
#允许玩家在安装添加飞行功能的 mod 前提下在生存模式下飞行。
#允许飞行可能会使恶意破坏者更加常见,因为此设定会使他们更容易达成目的。在创造模式下本属性不会有任何作用。
#false - 不允许飞行。悬空超过5秒的玩家会被踢出服务器。也会包括使用三叉戟的激流附魔、时间很长的自由落体或是网络卡顿导致的误判。
#true - 允许飞行。玩家得以使用飞行MOD飞行。

level-name=Gensokyo
#“level-name”的值将作为世界名称及其文件夹名。你也可以把你已生成的世界存档复制过来,然后让这个值与那个文件夹的名字保持一致,服务器就可以载入该存档。
#部分字符,如单引号,可能需要在前面加反斜杠号 \ 才能被正常应用。

view-distance=10
#设置服务端传送给客户端的数据量,也就是设置玩家各个方向上的区块数量 (是以玩家为中心的半径,不是直径)。 它决定了服务端的可视距离。(另见 渲染距离)
#默认/推荐设置为10,如果很卡的话,减少该数值。

resource-pack=
#可选选项,可输入指向一个资源包的URI。玩家可选择是否使用该资源包。

spawn-animals=true
#决定动物是否可以生成。
#true - 动物可以生成。
#false - 动物生成后会立即消失。

white-list=false
#服务器的白名单
#当启用时,只有白名单上的用户才能连接服务器。白名单主要用于私人服务器,例如相识的朋友等。
#注 - OP会自动被视为在白名单上。所以无需再将OP加入白名单。
#false - 不使用白名单。
#true - 从 whitelist.json 文件加载白名单。

generate-structures=true
#定义是否在生成世界时生成结构(例如村庄)
#false - 新生成的区块中将不包含结构。
#true - 新生成的区块中将包含结构。
#注:即使设为 false,地牢和下界要塞仍然会生成

online-mode=false
#是否开启在线验证。服务器会与 Minecraft 的账户数据库对比检查连入玩家。如果你的服务器并未与 Internet 连接,则将这个值设为 false ,然而这样的话破坏者也能够使用任意假账户登录服务器。如果 Minecraft.net 服务器下线,那么开启在线验证的服务器会因为无法验证玩家身份而拒绝所有玩家加入。通常,这个值设为 true 的服务器被称为“正版服务器”,设为 false 的被称为“离线服务器”或“盗版服务器”。
#true - 启用。服务器会认为自己具有 Internet 连接,并检查每一位连入的玩家。
#false - 禁用。服务器不会检查玩家。

max-build-height=256
#玩家在游戏中能够建造的最大高度。地形生成算法并不会受这个值的影响。

level-seed=
#为世界定义一个种子

prevent-proxy-connections=false
#如果服务器发送的和Mojang的验证服务器的ISP/AS不一样,玩家将会被踢出
#true - 服务器将会禁止玩家使用虚拟专用网络或代理
#false - 服务器将不会禁止玩家使用虚拟专用网络或代理

use-native-transport=true
#是否使用针对Linux平台的数据包收发优化,此选项仅会在Linux平台下生成。
#true - 启用
#false - 禁用

motd=Flandre Scarlet Online Minecraft Server.
#玩家加入服务器时显示的信息。

enable-rcon=false
#是否允许远程访问服务器控制台。

运行我的世界服务端

在该文件夹下新建一个叫 run.sh 的文件,在该文件内键入以下命令并保存

java -Xmx1024M -Xms512M -jar server.jar nogui

#以下是命令说明
#sudo java -Xms# -Xmx# -jar [path]/minecraft_server.[version].jar nogui
#-Xms# - 初始启动分配的内存(-Xms512M)
#-Xmx# - 最大分配的内存(-Xmx1024M)
#[path] – “我的世界” 服务器文件路径( /home/tux/MCS/)
#[version] – 下载的“我的世界” 服务器的版本(1.10.2)
#nogui – 用于以基于文本的界面来显示,可以减少内存使用。如果你使用图形化界面,那么移除 nogui 选项。

这个文件是为了方便以后用于启动Minecraft服务端,以后启动Minecraft服务端就只需要执行命令 bash run.sh 就行了

然后打开ssh客户端输入以下命令启动运行 Minecraft 1.14.4 服务端

cd /home/Minecraft
#移动到Minecraft文件夹
Screen -R "Minecraft"
#检查有没有离线作业,没有就建立一个名为"Minecraft"的作业(当然也可以叫其他名字)
#用于我的世界服务端在SSH连接断开后可以继续在后台运行
bash run.sh 
#启动我的世界服务端

启动后会显示类似于以下的信息

[root@VM_0_6_centos Minecraft]# bash run.sh                                                         
[00:03:13] [Server thread/INFO]: Starting minecraft server version 1.14.4                           
[00:03:13] [Server thread/INFO]: Loading properties                                                 
[00:03:13] [Server thread/INFO]: Default game type: SURVIVAL                                        
[00:03:13] [Server thread/INFO]: Generating keypair                                                 
[00:03:14] [Server thread/INFO]: Starting Minecraft server on *:25565                               
[00:03:14] [Server thread/INFO]: Using epoll channel type                                           
[00:03:14] [Server thread/WARN]: **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!                   
[00:03:14] [Server thread/WARN]: The server will make no attempt to authenticate usernames. Beware. 
[00:03:14] [Server thread/WARN]: While this makes the game possible to play without internet access,
 it also opens up the ability for hackers to connect with any username they choose.                 
[00:03:14] [Server thread/WARN]: To change this, set "online-mode" to "true" in the server.propertie
s file.                                                                                             
[00:03:14] [Server thread/INFO]: Preparing level "World"
[00:03:15] [Server thread/INFO]: Reloading ResourceManager: Default
[00:03:18] [Server thread/INFO]: Loaded 6 recipes
[00:03:19] [Server thread/INFO]: Loaded 811 advancements
[00:03:23] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld
[00:03:26] [Server thread/INFO]: Preparing spawn area: 26%
[00:03:34] [Server thread/INFO]: Preparing spawn area: 64%                                  
[00:03:46] [Server thread/INFO]: Preparing spawn area: 87%                                           
[00:03:52] [Server thread/INFO]: Preparing spawn area: 94%                                          
[00:03:52] [Server thread/INFO]: Time elapsed: 29103 ms                                             
[00:03:52] [Server thread/INFO]: Done (38.056s)! For help, type "help"

然后你就可以尝试登录属于你自己的我的世界服务器了

一些配置文件的说明

OP权限文件:ops.json

[
  {
    "uuid": "UUID",                      //玩家的UUID,UUID信息可以在玩家登陆后从usercache.json文件里找到
    "name": "Name",                      //玩家名字
    "level": 4,                          //权限等级
    "bypassesPlayerLimit": false         //值为true时,在服务器满人的情况下可以登入服务器
  }
]

IP黑名单:banned-ips.json

账号黑名单:banned-players.json

玩家在World里的Player文件夹的读取ID:usercache.json

服务器白名单:whitelist.json

关于启动器推荐

我个人推荐 HMCL启动侠


只是当时已惘然。