前言
国庆节七天在家我的朋友LLJ闲着无聊想要玩MC,于是找到我说开个服来玩玩。说得倒是轻巧,现在的版本的Java MC内存占用不少,更别说开Mod服了,服务器内存也至少得8G起步,这样下来一个月的开销也不少了,我问了问他家里有没有闲置的电脑,毕竟内网穿透咱们还是搞得起的,用自己电脑跑个MC服务端穿透出去,然后一直把电脑的电插着也算当服务器用了(汗~
果真我LLJ有一台闲置的HUAWEI笔记本放在学校,在经过同意之后也是二话不说提前返校开始了折腾。
装系统(图方便直接用手机拍了)
物色电脑配置
开机我直接进Bios了,电脑的配置不是很理想,毕竟是几年前的老电脑了,不过开个MC服绰绰有余了,只有8G内存就不用Windows了,刷个轻量点的Linux使用以免爆内存。
![](/upload/ec6655730ff9fc96676433fac6b1294e.jpg)
制作启动盘
我选用的系统是Debian12,U盘做启动盘的话用8G的就够了。
先去官网下ISO文件(https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/)
启动盘制作工具我用的UltraISO(Gitcode上面开源工具)
前置准备工作都准备好了之后直接把U盘插上电脑,打开软件点开ISO往U盘里面写入即可
![](/upload/32EEB362127602809B880520C3BD7517.png)
开刷
写入完成了直接把U盘拔下来插到HUAWEI笔记本上面(这笔记本居然没有USB口子
不过问题不大,我们使用转接口,完事重新进一下BIOS,把启动项设置成我们的U盘就行了
![](/upload/357ddfb27de8c7496bcb2ebf13861826.jpg)
直接选择图形化界面安装,后面也是一路顺利直接刷上了!!
这个圆润的UI很漂亮啊我是真的喜欢!!!
装MC服务端
装环境
Java版MC肯定得装Java啊,所以第一步先把Java环境装好,Java的版本取决于你要玩哪个版本的MC,我这里选的是最新版的原版即1.21.1版本,Java装的是Adoptium的21.0.4(https://adoptium.net/zh-CN/)
环境我是手动装的,当然你也可以apt直接装,那样更方便
首先把Java的tar压缩包下载到服务器上面,你可以直接到官网下,也可以用终端命令
wget https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.4%2B7/OpenJDK21U-jdk_x64_linux_hotspot_21.0.4_7.tar.gz
解压一下,然后把它移到新文件夹,记住这个路径我们要配置环境变量,我这里是放在/usr/lib/jvm/下面
tar -zxvf OpenJDK21U-jdk_x64_linux_hotspot_21.0.4_7.tar.gz
mv jdk-21.0.4+7 /usr/lib
cd /usr/lib
mkdir jvm
mv jdk-21.0.4+7 /usr/lib/jvm
完事我们改一下环境变量,把配置写进去就像下面这样
nano .bashrc
export JAVA_HOME=/usr/lib/jvm/jdk-21.0.4+7
export PATH=SJAVA HOME/bin:$PATH
![](/upload/E19D6254958507FC5012F39AC0DDC5E0-cfdf.png)
保存了之后重启环境变量,输入命令查看Java版本就可以看到已经配置好了
source ~/.bashrc
java -version
配置并启动MC服务端核心
服务端核心(简称核心,有时也被叫做服务端)是指开服时用于直接或间接启动Minecraft服务器的一类文件,文件名一般以 .jar 结尾。 一般情况下,我们使用 CMD/PowerShell (可执行文件名以.bat为结尾)或是 *nix Shell (可执行文件名以.sh为结尾)运行这样的程序以启动服务器。而且核心的种类非常多,除了官方的还有很多二开的优化的核心,我们这里玩的原版服,就选用Paper做核心,他是Spigot 核心的的进一步优化版本,在相关算法方面,较 Spigot 有所提高,优化 TPS 等,支持 CraftBukkit 和 Spigot 插件,API 没有太大修改。如果你要玩模组服的话,可以选用Forge,Fabric这些核心,他们支持安装模组。
首先我们去Paper的官网把服务端核心下载到服务器上面,最好单独创建一个文件夹放这些文件(https://papermc.io/downloads/paper)
下载好之后我们ls可以看到一个.jar文件,可以用以下命令启动它
java -Xmx8192M -Xms8192M -jar <服务器核心的文件名> nogui
#Xmx8192M: 设置 JVM 使用的最大内存为8192MB。这个参数限制了服务器在运行过程中最多使用多少内存。
#Xms8192M: 设置 JVM 启动时的初始内存为8192MB。这个参数保证了服务器在启动时有足够的内存。
#nogui: 表示启动服务器时不显示图形用户界面 (GUI),这通常用于在资源有限的环境下运行服务器,比如在命令行或远程服务器上。
启动了之后它会自动配置下载一些内容,然后需要我们同意一个eula的用户协议,我们使用ls指令可以看到一个eula的txt文件,修改里面的内容
nano eula.txt
#把里面的false改为true
保存退出之后我们重新输入启动命令就会开始生成世界了。
同时,目录下还有一个sever.properties文件,这里面是关于服务器游戏的一些设置,如下:
键 | 类型 | 默认值 | 说明 |
---|
allow-flight | 布尔值 | false | 允许生存模式的玩家飞行,如果有 Mod 允许这么做的话 当 allow-flight 开启时,作弊可能会更常见,因为这会使得作弊更容易。创造模式不受影响。 false - 不允许飞行(在空中滞留 5 秒以上的玩家会被踢出)。 true - 允许飞行。
|
allow-nether | 布尔值 | true | 允许玩家进入下界。 false - 下界传送门不工作。 true - 允许玩家通过传送门进入下界。
|
announce-player-achievements | 布尔值 | true | 当某个玩家获得成就时发送广播。 |
difficulty | 整数(0-3) | 1 | 定义服务器的难度(如怪物伤害,饥饿的处理和药水对玩家的效果)。 0 - 和平 1 - 简单 2 - 普通 3 - 困难
|
enable-query | 布尔值 | false | 允许服务器开启针对 GameSpy4 协议的监听。用于收集服务器信息。 |
enable-rcon | 布尔值 | false | 允许远程连接到游戏控制台。 |
enable-command-block | 布尔值 | false | 允许命令方块。 |
force-gamemode | 布尔值 | false | 强制玩家以默认的游戏模式(Gamemode)进入。 false - 玩家加入时的游戏模式是上次他们退出时的游戏模式。 true - 玩家总是以默认游戏模式加入游戏。
|
gamemode | 整数(0-3) | 0 | 定义游戏模式。 0 - 生存 1 - 创造 2 - 冒险 3 - 旁观
|
generate-structures | 布尔值 | true | 是否在新区块中生成结构(例如村庄)。 false - 不会生成结构。 true - 会生成结构。
注意:即使设置为 false,地牢依然会生成。 |
generator-settings | 字符串 | blank(空的) | 这个设置用于自定义世界生成。访问 Minecraft Wiki 的 Superflat 和 Customized 页面(外部链接)以获得设置样例。 |
hardcore | 布尔值 | false | 如果设置为 true,玩家在死后会被永久封禁。 |
level-name | 字符串 | world | “level-name”选项会被用于世界的名称和文件夹的名称。你可以将已有的世界目录拷贝过来,并修改这里和目录名一致以载入世界。 单引号(')等符号可能需要在之前使用反斜线(\)转义。
|
level-seed | 字符串 | blank(空的) | 添加一个地图种子,就像在单机模式中那样。 有一些地图种子的例子,比如:minecraft,404,1a2b3c。
|
level-type | 字符串 | DEFAULT | 确定生成地图的类型。 DEFAULT:标准的世界生成,有山脉、山谷、水流等。 FLAT:超平坦世界,主要用于建筑。 LARGEBIOMES - 与 DEFAULT 类似,但所有生物群落的尺寸都变得大了一些。 AMPLIFIED - 与 DEFAULT 类似,但世界生成高度限制增加。 CUSTOMIZED - 与 DEFAULT 一样,除了生成地图时使用 generator-settings 的预设这一点。
|
max-build-height | 整数 | 256 | 允许建造方块的最高高度。地形也会在高度限制内十分自然的生成。 |
max-players | 整数(0-2147483647) | 20 | 同一服务器可以同时容纳玩家的最大数目。越多玩家同时在线需要更多的服务器资源,请注意:有 OP 权限的玩家将不被计算在线玩家数目中,但 OP 不能在服务器满人的情况下加入游戏。如果你把这个值写的特别大,游戏客户端就会 Boom 地一声爆炸。 |
max-tick-time | 整数(0-(2^63-1)) | 60000 | 单个 tick 的最长等待时间。如果服务器发现超过这个值,将会输出以下消息:“A single server tick took 60.00 seconds (should be max 0.05); Considering it to be crashed, server will forcibly shutdown”,接着就会调用 System.exit(1) 来结束服务器运行。 -1 - 禁用此功能
|
max-world-size | 整数(1-29999984) | 29999984 | 这设置了世界边界包含的最大方块数量,也就是设置了世界半径。虽然把该数字调大在命令输出结果上看不出什么异常,但是游戏潜在的世界边界并不会发生变化,也就是说,设置 max-world-size 大于默认值将什么都不会发生。 示例: |
motd | 字符串 | A Minecraft Server | 服务器名字下的那一行小字(服务器描述)。 |
network-compression-threshold | 整数 | 256 | 默认情况下它允许大小不超过 n-1 字节的数据包正常传输,而不小于 n 字节的数据包将会被压缩。因此把该数字调小会导致游戏进行更多的数据包压缩,不过对于小的数据包来说,压缩这一操作并不会使数据包变小多少,甚至可能还会变大。 -1 - 禁用压缩 0 - 全部压缩
注意:根据以太网规范的要求,小于 64 字节的数据包应填充为 64 字节。因此,将这个值设置为小于 64 并不是什么好的做法。同时也不建议超过 MTU(最大传输单位),通常为 1500 字节。 |
online-mode | 布尔值 | true | 服务器会根据 Minecraft 的帐户数据库检查准备连入的玩家是否合法。只有你的服务器没有连接到互联网时才应把它设置为 false,因为如果服务器无法连接到 minecraft.net 的话,所有玩家都会被拒之门外。如果设置为 false,黑客可以很容易地使用假帐户连入你的服务器!如果服务器对盗版玩家开放,也请把他设置为 false,那么服务器就会在离线模式下运行,并允许拥有没有正版授权的 Minecraft 副本的玩家进入服务器。 false - 已禁用。服务器不会检查玩家是否为正版。 true - 服务器将会检查玩家是否为正版。
|
op-permission-level | 整数(1-4) | 4 | 设置 OP 的权限等级。每个等级也包含比其低等级的权限。 1 - OP 可以绕过出生点保护. 2 - OP 可以使用 /clear、/difficulty、/effect、/gamemode、/gamerule、/give、和 /tp,并且可以编辑命令方块。 3 - OP 可以使用 /ban、/deop、/kick、和 /op。 4 - OP 可以使用 /stop。
|
player-idle-timeout | 整数 | 0 | 该功能将在值不为 0 时启用。如果玩家持续闲置超过这个分钟数对应的时间,那么它被自动踢出。 注意:有时玩家闲置时间将会被重置,例如当服务器接收到以下数据包时: 102(0x66)WindowClick 108(0x6c)ButtonClick 130(0x82)UpdateSign 14(0xe)BlockDig 15(0xf)Place 16(0x10)BlockItemSwitch 18(0x12)ArmAnimation 19(0x13)EntityAction 205(0xcd)ClientCommand 3(0x3)Chat 7(0x7)UseEntity
|
pvp | 布尔值 | true | 启用服务器的 PVP,玩家们就可以互相伤害了。 false - 玩家们不能互相伤害(也就是 PVE 模式)。 true - 来啊,互相伤害啊。
注意:由别的玩家制造的非直接伤害(如被别人的岩浆烧/TNT爆炸/水淹/沙子盖住)在 PVP 关闭的情况下还是有伤害的。 |
query.port | 整数(1-65534) | 25565 | 设置查询服务器的端口(参见 enable-query) |
rcon.password | 字符串 | blank(空的) | 设置 RCON 远程连接的密码。 |
rcon.port | 整数(1-65534) | 25575 | 设置 RCON 远程连接的端口。 |
resource-pack | 字符串 | blank(空的) | 设置资源包的路径。玩家可以选择是否使用服务器提供的资源包。 |
resource-pack-hash | 字符串 | blank(空的) | 资源包的 SHA-1 值。请将其填写为小写十六进制。建议指定这个值。这不仅用于验证资源包的完整性,而且提高了缓存的有效性和可靠性。 |
server-ip | 字符串 | blank(空的) | 如果你想把你的服务器绑定到特定的 IP 上去请设置这一项。强烈建议将这一项留空。 |
server-port | 整数(1-65534) | 25565 | 设置服务器要监听的端口。如果你的服务器位于一个使用了 NAT 的网络环境中(没有公网 IP 或者在防火墙之后),请记得添加端口转发。 |
snooper-enabled | 布尔值 | true | 设置服务器是否定期向 http://snoop.minecraft.net(外部链接)发送 snoop 数据。 false - 不发送数据。 true - 发送数据。
|
spawn-animals | 布尔值 | true | 设定动物是否生成。 false - 所有动物都会立刻消失,并且不再生成。 true - 动物跟往常一样正常生成。
提示:如果你的卡顿和延迟主要来源于此,请设置为 false。 |
spawn-monsters | 布尔值 | true | 设置敌对生物是否能够生成。 false - 所有怪物都会立即消失,并且不再生成。 true - 怪物跟往常一样生成:在黑暗中或是在晚上生成。
如果你设置难度为和平模式,该选项无效。 提示:如果你的卡顿和延迟主要来源于此,请设置为 false。 |
spawn-npcs | 布尔值 | true | 决定村民是否生成。 true - 启用。将会生成村民。 false - 禁用。没有村民会生成。
|
spawn-protection | 整数 | 16 | 决定出生点保护半径。 0:保护出生点脚下的那个方块。 1:保护出生点附近的 3x3 范围。 2:保护出生点附近的 5x5 范围。 以此类推。 在第一个玩家进入服务器之前,出生点保护不会启用。如果你的服务器没有任何一个 OP,那么也不会启用。 |
use-native-transport | 布尔值 | true | Linux 服务器性能改进:在 Linux 上优化数据包发送及接收。 false - 已禁用。禁用 Linux 数据包收发优化。 true - 已启用。启用 Linux 数据包收发优化。
|
view-distance | 整数 (3-15) | 10 | 设置服务端世界发送给客户端的世界数据的多少,以距离玩家设置的以区块为单位的半径为准。它将决定服务端的视距。 10 是默认值。如果你感觉服务器卡顿,请减小这个值。 |
white-list | 布尔值 | false | 开启服务器白名单。参见管理白名单页面。白名单开启时不在白名单内的玩家不能进入服务器。例如,你可以用于自己的私人服务器。如果你只想让你钦定的朋友进入,那么请把他们加入到白名单内。 false - 不使用白名单。 true - 文件 whitelist.json 将用于玩家白名单。
注意:游戏内钦定的 OP 会被自动加入到这个列表里,所以你不需要再次把他们加入进来。 |
核心启动后在玩家进入世界之后我们可以看到该玩家的用户名,在核心运行界面输入op (用户名)可以给予该玩家管理员权限,即可以输入作弊指令。
至此已经部署完成了,再给服务器25565端口配置个内网穿透就可以和朋友远程畅玩了,不得不说有一点折腾,不过现在开服完完全全不用这么麻烦了,自己部署的话还可以用一个名为MCSM的面板,全程可视化面板操作,只需要鼠标点一点就行了,更甚至还有卖面板服的游戏云,你只需要花钱买一个面板就行了,进入面板自己配置好就可以和朋友一起玩了,雨云好像就有这种游戏云售卖,腾讯云之前我也看到过。