前言
想起来写这篇教程是因为我的大学室友喜欢玩我的世界,为了满足他联机的需求,特地捡起来好几年没再用过的服务器搭建技术(也算不上技术),在搭建过程中顺手写下此教程。
此教程我会尽可能用简单的语言和简化的步骤去交会大家如何搭建我的世界服务器。
准备材料
- Windows操作系统的电脑一台
- 我的世界启动器
- 我的世界服务端
- 内网穿透工具
- JDK21
获取我的世界服务端
我的世界有客户端和服务端,客户端即为我们平常进行游戏的版本,服务端即为提供联机服务的版本。
市面上有许许多多我的世界服务器核心,比如:Forge,Paper,Fabric等等,这些服务端不只是名字上的差别,还有功能上的差别,根据功能分为MOD服和插件服。
MC原版服务端
就像这个服务端的名称一样,这个服务端仅支持MC原版,是由MC官方提供的服务端,适合喜欢体验原汁原味游戏的玩家。
官网下载地址:https://www.minecraft.net/zh-hans/download/server
Forge服务端
Forge是个老牌的模组加载器和API,支持几乎市面上的所有MOD。Forge服务端允许玩家在原版的基础上安装各式各样的模组来丰富游戏的内容。
官网下载地址:https://files.minecraftforge.net/net/minecraftforge/forge/index_1.21.html
Fabric服务端
Fabric是个近几年兴起的模组加载器,相当于是Forge的加强版,更加轻量且更新速度快,但对于MOD的支持相对较少,不过有着极快的更新速度,使Fabric的模组支持也慢慢与Forge齐平,现在许多主流整合包都是基于Fabric制作的。
官网下载地址:https://fabricmc.net/use/installer/
Paper服务端
Paper是Spigot的一个高性能分支,提供更好的性能和优化选项,同时兼容大部分Bukkit和Spigot插件。适合需要高性能和稳定性的服务器。
官网下载地址:https://papermc.io/downloads/paper
Mohist服务端
Mohist是一个融合了Forge和Bukkit/Spigot的服务端,允许玩家同时运行模组和插件,提供了更大的灵活性。
官网下载地址:https://mohistmc.com/downloadSoftware?project=mohist&projectVersion=1.20.1
SakuraFrp内网穿透
SakuraFrp是一个免费的内网穿透软件,普通用户可以创建两条隧道,享受10Mbps的速度,以及签到获取穿透流量。
官网下载地址:https://www.natfrp.com/
服务端搭建
上文提到了5种我的世界服务端,大家根据自身的需求选择合适的服务端之后就可以跟着下面的步骤开始配置了。
这里演示的是Fabric服务端的搭建,这五个服务器的搭建都是差不多的,因此放在一栏写。
首先进入官网点击下载
下载完成之后打开文件,会出现下面的窗口,在窗口内选择想要安装的版本与安装位置,选择完成之后点击安装。
点击安装之后等待一段时间会跳出来一个小对话框,安装中选择生成脚本会直接生成start.bat文件,没有服务端也会提示你下载 。
找到生成的start.bat文件,以记事本的方式打开进行编辑,里面的内容为
java -Xmx2G -jar fabric-server-launch.jar nogui
pause
其中Xmx后面跟的数字为此服务端占用最大内存限制,fabric-server-launch.jar为你的服务端核心名字。
根据自身情况更改数据之后点击保存,双击运行start.bat,你会收到以下错误信息
你会收到如下的报错信息,需要我们同意相关协议:
[14:58:23] [main/ERROR]: Failed to load properties from file: server.properties
[14:58:23] [main/WARN]: Failed to load eula.txt
[14:58:23] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
这时我们关闭服务端,来到服务端目录下找到名为eula.txt的文件将里面的false改为true后保存,(注:关闭服务器在控制台输入stop既可保存进度,不能直接关闭,不然存档很可能会丢失。)
配置服务器
在文件夹中还会有一个名为server.properties服务器配置文件,将这个文件以记事本方式打开,里面便是控制服务器设置的选项。
下面将会罗列每个选项的具体含义
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
allow-flight | 布尔值 | false | 允许玩家在安装添加飞行功能的mod前提下在生存模式下飞行。允许飞行可能会使恶意破坏者更加常见,因为此设定会使他们更容易达成目的。在创造模式下无作用。false - 不允许飞行。悬空超过5秒的玩家会被踢出服务器。true - 允许飞行。玩家得以使用任何能飞行的mod飞行。 |
allow-nether | 布尔值 | true | 允许玩家进入下界。false - 下界传送门不会生效。true - 玩家可以通过下界传送门前往下界。 |
broadcast-console-to-ops | 布尔值 | true | 向所有在线OP发送所执行命令的输出。 |
broadcast-rcon-to-ops | 布尔值 | true | 向所有在线OP发送通过RCON执行的命令的输出。 |
difficulty | 字符串 | easy | 定义服务器的游戏难度(例如生物对玩家造成的伤害,饥饿和中毒对玩家的影响方式等)。如果设置了旧的数字ID,则会自动转化为英文的难度名称。peaceful (0) - 和平easy (1) - 简单normal (2) - 普通hard (3) - 困难 |
enable-command-block | 布尔值 | false | 是否启用命令方块。 |
enable-jmx-monitoring | 布尔值 | false | 暴露一个具有对象名net.minecraft.server:type=Server 的MBean 和两个属性averageTickTime 和tickTimes 用于暴露以毫秒为单位的tick时间。为了启用JRE的JMX,你需要添加在此处所述的一些JVM标志。 |
enable-query | 布尔值 | false | 允许使用GameSpy4协议的服务器监听器。用于获取服务器信息。 |
enable-rcon | 布尔值 | false | 是否允许远程访问服务器控制台。由于RCON协议传输数据时没有加密,所以不建议把RCON暴露在互联网上。RCON客户端和服务端交换的所有数据(包括RCON密码)都会泄露给正在监听此连接的人。 |
enable-status | 布尔值 | true | 使服务器在服务器列表中看起来是“在线”的。 |
enforce-secure-profile | 布尔值 | true | 要求玩家必须具有Mojang签名的公钥才能进入服务器。true - 不具有Mojang签名的公钥的玩家不能进入服务器。false - 不具有Mojang签名的公钥的玩家也可进入服务器。 |
enforce-whitelist | 布尔值 | false | 在服务器上强制执行白名单。当启用后,不在白名单(前提是启用)中的用户将在服务器重新加载白名单文件后从服务器踢出。true - 不在白名单上的用户会被踢出。false - 不在白名单上的在线用户不会被踢出。 |
entity-broadcast-range-percentage | 整数(10-1000) | 100 | 此选项控制实体需要距离玩家有多近才会将数据包发送给客户端。更高的数值意味着实体可以在更远的地方就被渲染,同时也可能提高增加延迟的概率。这个值是以默认值的百分比来表示的。例如:将此值设为50,表示将渲染正常情况下一半距离以内的生物。此功能模仿了客户端视频设置中的功能,而不像客户端的渲染距离设置一样只能在服务器设置的限制下调整渲染距离。 |
force-gamemode | 布尔值 | false | 强制玩家加入时为默认游戏模式。false - 玩家将以退出前的游戏模式加入true - 玩家总是以默认游戏模式加入 |
function-permission-level | 整数(1-4) | 2 | 设定函数的默认权限等级。4个等级的详情见 #op-permission-level。 |
gamemode | 字符串 | survival | 定义默认游戏模式。如果值是旧用的数字,会静默转换为对应游戏模式的英文名称。survival (0) - 生存模式creative (1) - 创造模式adventure (2) - 冒险模式spectator (3) - 旁观模式 |
generate-structures | 布尔值 | true | 定义是否能生成结构(例如村庄)。false - 新生成的区块中将不包含结构。true - 新生成的区块中将包含结构。注:由于地牢和沙漠水井在技术上属于地物,因而即使此项设为false,其仍然会生成。 |
generator-settings | 字符串 | {} | 本属性质用于自定义世界的生成。详见超平坦世界和自定义了解正确的设定及例子。 |
hardcore | 布尔值 | false | 如果设为 true,服务器难度的设置会被忽略并且设为hard(困难),玩家在死后会自动切换至旁观模式。 |
hide-online-players | 布尔值 | false | 如果设为 true,服务端在响应客户端状态请求时不会返回在线玩家列表。 |
initial-disabled-packs | 字符串 | 空白 | 需要在创建世界过程中禁用的数据包名称,以逗号分隔。 |
initial-enabled-packs | 字符串 | vanilla | 需要在创建世界过程中启用的数据包名称,以逗号分隔。特别地,功能数据包必须在此指定才能生效。 |
level-name | 字符串 | world | “level-name”的值将作为世界名称及其文件夹名。你也可以把你已生成的世界存档复制过来,然后让这个值与那个文件夹的名字保持一致,服务器就可以载入该存档。部分字符,例如 ' (单引号)可能需要在前面加反斜杠号 \ 才能被正常应用。 |
level-seed | 字符串 | 空白 | 与单人游戏类似,为你的世界定义一个种子。这里有一些例子:minecraft,404,1a2b3c。 |
level-type | 字符串 | minecraft:normal | 使用世界预设ID,确定地图所生成的类型。使用世界预设ID时,需要在其中的“:”前加“\”转义。原版世界预设ID可以省略其前面的“minecraft:”(即命名空间)。minecraft:normal - 带有丘陵、河谷、海洋等的标准的世界。minecraft:flat - 一个没有特性的平坦世界,可用generator-settings修改。minecraft:large_biomes - 如同默认的世界,但所有生物群系都更大。minecraft:amplified - 如同默认的世界,但世界生成高度提高。minecraft:single_biome_surface - 单一生物群系世界,可用generator-settings修改。 |
log-ips | 布尔值 | true | 是否在有新玩家加入游戏时,在服务器日志中记录其IP地址。true - 在日志中记录新加入玩家的IP地址。false - 在日志中隐藏新加入玩家的IP地址。 |
max-build-height | 整数 | 256 | 玩家在游戏中能够建造的最大高度。可能会在该值较小时生成超过该值的地形。 |
max-chained-neighbor-updates | 整数[需要更多信息] | 1000000 | 限制连锁NC更新的数量,超过此数量的连锁NC更新会被跳过。若为负数则无限制。 |
max-players | 整数(0-2147483647) | 20 | 服务器同时能容纳的最大玩家数量。请注意,在线玩家越多,对服务器造成的负担也就越大。同样注意,服务器的OP具有在人满的情况下强行进入服务器的能力:找到在服务器根目录下叫ops.json的文件并打开,将需要此能力的OP下的bypassesPlayerLimit选项设置为true即可(默认值为false),这意味着OP将不需要在服务器人满时等待有玩家离开后再加入。过大的数值会使客户端显示的玩家列表崩坏。 |
max-tick-time | 整数(0–(2^63 - 1)) | 60000 | 设置每个tick花费的最大毫秒数。超过该毫秒数时,服务器watchdog插件将停止服务器程序并附带上信息:服务器的一个tick花费了60.00秒(最长也应该只有0.05秒);判定服务器已崩溃,它将被强制关闭。遇到这种情况的时候,它会调用 System.exit(1)。译者注:如果你监测服务程序的返回代码,此时返回代码会为1。(习惯上,程序正常退出应当返回0)-1 - 完全停用watchdog插件(这个停用选项在14w32a快照中添加) |
max-world-size | 整数(1-29999984) | 29999984 | 设置可让世界边界获得的最大半径值,单位为方块。通过成功执行的命令能把世界边界设置得更大,但不会超过这里设置的最大方块限制。如果设置的max-world-size超过默认值的大小,那将不会起任何效果。例如:设置 max-world-size为1000将会有2000×2000的地图边界。设置 max-world-size为4000将会有8000×8000的地图边界。 |
motd | 字符串 | A Minecraft Server | 本属性值是玩家客户端的多人游戏服务器列表中显示的服务器信息,显示于名称下方。MOTD 支持样式代码。MOTD 支持特殊符号,比如"♥"。然而,这些符号需要转换为Unicode转义字符。你可以在这里找到一个转换器。如果MOTD超过59个字符,服务器列表很可能会返回“通讯错误”。 |
network-compression-threshold | 整数 | 256 | 默认会允许n-1字节的数据包正常发送, 如果数据包为n字节或更大时会进行压缩。所以,更低的数值会使得更多的数据包被压缩,但是如果被压缩的数据包字节太小将反而使压缩后字节更大。-1 - 完全禁用数据包压缩0 - 压缩全部数据包注:以太网规范要求把小于64字节的数据包填充为64字节。因此,设置一个低于64的值可能没有什么好处。也不推荐让设置的值超过MTU(通常为1500字节)。 |
online-mode | 布尔值 | true | 是否让服务器对比Minecraft账户数据库验证登录信息。只有在你的服务器并未与Internet连接时,才将这个值设为false。如果设为false,黑客就能够使用任意假账户连接服务器!如果minecraft.net服务器宕机或不可访问,那么该值设为true的服务器会因为无法验证玩家身份而拒绝所有玩家加入。通常,这个值设为true的服务器被称为“正版服务器”。故意设定该变量为false的服务器称为“破解服务器”(也称离线服务器),这类服务器允许拥有未授权的Minecraft副本的玩家加入。true - 启用。服务器会认为自己具有Internet连接,并检查每一位连入的玩家。false - 禁用。服务器不会尝试检查玩家。 |
op-permission-level | 整数(1-4) | 4 | 设定使用/op 命令时OP的权限等级。所有存档会从之前的存档继承能力和命令。1 - OP可以绕过重生点保护。2 - OP可以使用所有单人游戏作弊命令(除了/publish ,因为不能在服务器上使用;/debug 也是)并使用命令方块。命令方块和领域服服主/管理员有此等级权限。3 - OP可以使用大多数多人游戏中独有的命令,包括 /debug ,以及管理玩家的命令(/ban ,/op 等等)。4 - OP可以使用所有命令,包括 /stop , /save-all , /save-on 和 /save-off 。 |
player-idle-timeout | 整数 | 0 | 如果不为0,服务器将在玩家的空闲时间达到设置的时间(单位为分钟)时将玩家踢出服务器注:当服务器接受到下列数据包之一时将会重置空闲时间:点击窗口附魔物品更新告示牌玩家挖掘方块玩家放置方块更换拿着的物品动画(挥动手臂)实体动作客户端状态聊天信息使用实体 |
prevent-proxy-connections | 布尔值 | false | 如果服务器发送的ISP/AS和Mojang的验证服务器的不一样,玩家将会被踢出。true - 启用。服务器将会禁止玩家使用虚拟专用网络或代理。false - 禁用。服务器将不会禁止玩家使用虚拟专用网络或代理。 |
pvp | 布尔值 | true | 是否允许PvP。也只有在允许PvP时玩家自己的箭才会受到伤害。true - 玩家可以互相伤害。false - 玩家无法互相造成伤害(也称作玩家对战环境(PvE))。注:由玩家造成的间接伤害(例如熔岩,火,TNT等,某种程度上还有水,沙子和沙砾)还是会伤害其他玩家。 |
query.port | 整数(1-65534) | 25565 | 设置监听服务器的端口号(参见 enable-query)。 |
rate-limit | 整数 | 0 | 设置玩家被踢出服务器前,可以发送的数据包数量。设置为0表示关闭此功能。 |
rcon.password | 字符串 | 空白 | 设置RCON远程访问的密码(参见enable-rcon)。RCON:能允许其他应用程序通过互联网与Minecraft服务器连接并交互的远程控制台协议。 |
rcon.port | 整数(1-65534) | 25575 | 设置RCON远程访问的端口号。 |
require-resource-pack | 布尔值 | false | 当此选项启用(设为true)时,玩家会被提示作出选择(是否启用服务器资源包)。如果玩家拒绝则会被服务器断开连接。但是,若玩家使用Linux系统加入服务器,游戏目录内的server-resource-packs 没有写权限,则会提示“无法应用服务器资源包”“所有依赖自定义资源包的功能都有可能不按预期工作”,并提示玩家“继续”或“断开连接”。若玩家选择“继续”,则仍可在此服务器中游戏。 |
resource-pack | 字符串 | 空白 | 可选选项,可输入指向一个资源包的URI。玩家可选择是否使用该资源包。注意若该值含":"和"="字符,需要在其前加上反斜线(\),例如 http\://somedomain.com/somepack.zip?someparam\=somevalue 资源包大小理应不能超过50 MiB(1.15-pre5前)100 MiB(1.15-pre5到1.18-pre8)250 MiB(1.18-rc1起)注意,下载成功或失败由客户端记录,而非服务器。 |
resource-pack-prompt | 字符串 | 空白 | 可选,用于在使用require-resource-pack 时在资源包提示界面显示自定义信息。与聊天组件语法一致,可以包含多行文本。 |
resource-pack-sha1 | 字符串 | 空白 | 资源包的SHA-1值,必须为小写十六进制,建议填写它。这还没有用于验证资源包的完整性,但是它提高了资源包缓存的有效性和可靠性。 |
server-ip | 字符串 | 空白 | 将服务器与一个特定IP绑定。强烈建议留空该属性值!留空,或是填入你想让服务器绑定(监听)的IP。 |
server-port | 整数(1-65534) | 25565 | 改变服务器(监听的)端口号。如果服务器在使用NAT的网络中运行,该端口必须被转发(在你有家用路由器/防火墙的前提下)。 |
simulation-distance | 整数(3-32) | 10 | 设置服务端可更新实体范围的最大值,即玩家各个方向上的区块数量(是以玩家为中心的半径,不是直径)。超出此范围的实体不会被更新,对玩家也不可见。默认/推荐设置为10,如果有严重卡顿的话,减少该数值。 |
spawn-animals | 布尔值 | true | 决定动物是否可以生成。true - 动物可以正常生成。false - 动物生成后会立即消失。提示:如果你有严重的卡顿,可以设为false。 |
spawn-monsters | 布尔值 | true | 决定攻击型生物(怪物)是否可以生成。true - 启用。怪物会生成于夜晚和黑暗处。false - 禁用。不会有任何怪物。如果difficulty=0(即难度设置为和平)的话,该属性值不会有任何影响。提示:如果你有严重的卡顿,可以设为false。 |
spawn-npcs | 布尔值 | true | 决定是否生成村民。true - 启用。生成村民。false - 禁用。不生成村民。 |
spawn-protection | 整数 | 16 | 通过将该值进行2x+1的运算来决定出生点的保护半径。设置为1会保护以出生点为中心的3×3方块的区域,2会保护5×5方块的区域,3会保护7×7方块的区域,以此类推。这个选项不在第一次服务器启动时生成,只会在第一个玩家加入服务器时出现。如果服务器没有设置OP,这个选项会自动禁用。设置为0将不会禁用出生点保护,但会保护位于出生点的那一个方块(13w05a前)。设置为0会禁用出生点保护(13w05a起,参见MC-666)。 |
sync-chunk-writes | 布尔值 | true | 启用后区块文件以同步模式写入。 |
text-filtering-config | 字符串[需要测试] | 空白 | 服务器中需要被屏蔽的文本。[需要测试] |
use-native-transport | 布尔值 | true | 是否使用针对Linux平台的数据包收发优化。此选项仅会在Linux平台上生成。true - 启用。启用Linux数据包收发优化。false - 禁用。禁用Linux数据包收发优化。 |
view-distance | 整数(3-32) | 10 | 设置服务端发送给客户端的世界数据量,也就是设置玩家各个方向上的区块数量(是以玩家为中心的半径,不是直径)。它决定了服务端的可视距离。(另见渲染距离)默认/推荐设置为10,如果有严重卡顿的话,减少该数值。 |
white-list | 布尔值 | false | 启用服务器的白名单。当启用时,只有白名单上的用户才能连接服务器。白名单主要用于私人服务器,例如提供给相识的朋友、通过应用流程谨慎选择的陌生人等。false - 不使用白名单。true - 从whitelist.json文件加载白名单。注: OP会自动被视为在白名单上,所以无需再将OP加入白名单。 |
调整好服务器配置之后点击保存,就可以顺利的打开服务器了。你就可以根据你下载的服务端版本选择自己喜欢的MOD或插件了。
内网穿透
最后的最后,就是内网穿透了,如果你是公网就不需要做这个,服务端server.properties这个文件默认服务端为25565所以就映射这个端口,然后操作跟内网穿透局域网开放操作一样。
这里我将以SakuraFrp举例
首先进入SakuraFrp的官网,进行账号注册,之后根据自己的系统版本下载软件
打开软件之后,会让你输入访问密钥,访问密钥从SakuraFrp管理面板中的用户信息中获取。
登陆完成之后在软件的隧道页面点击“+”号
选择合适的节点
选择TCP隧道
以上步骤完成之后回到隧道页面打开刚刚创建的隧道,右下角会出现通知,你只需要打开服务器,并让你的朋友将给的两个链接方式中的任意一个输入进MC客户端多人游戏服务器中即可进入游戏。
写在最后
使用的客户端要与服务端版本一致,若安装了MOD,需要根据MOD说明在服务端和客户端上同时安装相同MOD。
写这一篇文章还是挺累的,因为没有写文章的经验,有些东西心里明白怎么回事,但是化作书面语言就很难写出来,因此我查找了不少资料来完善这个教程。
这个教程也会时不时的更新,毕竟还有一些小的方面没有写出来,但目前的内容已经足够在本地开一台MC服务器了。
Comments NOTHING