从零开始撸个简单Minecraft服务器
如果生活中不可避免的总会接触到一些游戏,那不如就一个充满创建和想象的世界。与其让少年们拿着U盘来回复制传递,那试试让少年们拥有一个属于他们自己“少年时的世界”吧。下面是一个简单的撸的实录,有不对的地方欢迎指定调整。
准备工作:
- 一台服务器,搞个云上的两核4G的就行。之前搞活动的时候在腾讯云99弄了个五年的。
- 在服务器上防火墙放行对应的端口号,默认是25565
- FabricMC
总共操作分为:
安装JAVA → download文件 → 配置相关 → 配置后台运行
一步一步站撸
步骤:
- 常规的sudo apt update
- 安装java (确定JAVA版本,minecraft的版本要求的JAVA不同,不然的话运行的时候会提示错误. Minecraft 1.17-1.20.4版本要求Java 17;1.20.5版本要求Java 21。)
sudo apt update
sudo apt install openjdk-21-jdk
java -version //验证
- 新建一个目录并进入,比如:
mkdir mc-server && cd mc-server
- 在网站 https://fabricmc.net/use/server/ 上选择好对应的版本,然后复制命令如:(链接应该是各自选的对应的版本)
curl -OJ https://meta.fabricmc.net/v2/versions/loader/1.21.5/0.16.14/1.0.3/server/jar
- 首次启动前需要同意EULA协议,编辑eula.txt 把
eula=false
改为eula=true
- 复制下一条命令启动(中间应该是各自选的对应的版本)
java -Xmx2G -jar fabric-server-mc.1.21.5-loader.0.16.14-launcher.1.0.3.jar nogui
// 2G根据自己的服务器内存自行调整
打开游戏客户端,多人游戏。别着急,这时候你可能进不去。
处理问题&优化
这时候会遇到两个问题,一个是正版登录验证,一个是你不在本机一样切换模式【生存、创造等】
关闭正版登录验证
一、打开根目录的 server.properties
文件,找到 online-mode=true
改为 online-mode=false
当然你在该文件里面直接修改gamemode也可以修改模式,不过这样就要一直在这儿修改重启不方便,所以就直接下一步,一起改了再重启服务。
二、修改同目录下的另一个文件 ops.json 当前里面应该是空的,打开本地的客户端,复制账号的uuid,按下面的格式替换内容保存,然后重启服务,后面也可以在游戏里面op 添加其它玩家。
[
{
"uuid": "刚刚的uuid",
"name": "头像旁边的那个名称",
"level": 4,
"bypassesPlayerLimit": false
}
]
然后就可以正常的登录,和愉快的在客户端里面进行各种管理员的操作了,当然只你该账号可以进行管理员的操作。
其它配置 - 后台运行
最后肯定需要让java在后台运行,终端不可能一直开着,工具自已选择,这里用的是screen。
常规的更新安装:
sudo apt update
sudo apt install screen
screen -S mc_server
java -Xmx2G -jar fabric-server-mc.1.21.5-loader.0.16.14-launcher.1.0.3.jar nogui
// 根据自已的版本进行修
按下组合键
Ctrl + A
,然后按D
,将screen会话挂起并返回到普通shell,这样服务器进程仍在后台运行。这样关闭命令行窗口也不会影响服务器运行。
正常的话,这样一个简单的minecraft的服务器就可以正常使用了,然后更多的配置MOD、插件下载丢到相应的目录就可以了,这里暂时还没有用到,略过。
更进一步的配置,可以搞个脚本对服务崩溃时的自动重启,定时备份(这个云服务自带了)等等。
server.properties的配置说明:
配置项 | 配置值 | 中文说明 |
---|---|---|
enable-rcon | true | 是否启用远程控制(RCON) |
enable-status | true | 是否允许服务器状态查询 |
enforce-secure-profile | true | 是否强制使用安全的玩家资料配置 |
enforce-whitelist | false | 是否强制启用白名单 |
entity-broadcast-range-percentage | 100 | 实体广播范围百分比 |
force-gamemode | false | 是否强制玩家进入指定游戏模式 |
function-permission-level | 2 | 函数命令的权限等级 |
gamemode | creative | 服务器默认游戏模式(creative 创造模式) |
generate-structures | true | 是否生成建筑结构(如村庄、矿井等) |
generator-settings | {} | 世界生成器的自定义设置 |
hardcore | false | 是否启用极限模式 |
hide-online-players | false | 是否隐藏在线玩家列表 |
initial-disabled-packs | 初始禁用的资源包 | |
initial-enabled-packs | vanilla | 初始启用的资源包 |
level-name | world | 世界名称 |
level-seed | 世界种子 | |
level-type | minecraft:normal | 世界类型(normal 正常类型) |
log-ips | true | 是否记录玩家IP地址 |
max-chained-neighbor-updates | 1000000 | 最大邻居区块链式更新次数 |
max-players | 20 | 最大玩家数量 |
max-tick-time | 60000 | 最大服务器tick时间(毫秒) |
max-world-size | 29999984 | 世界最大尺寸 |
motd | A Minecraft Server | 服务器信息(MOTD) |
network-compression-threshold | 256 | 网络压缩阈值 |
online-mode | false | 是否启用正版验证(在线模式) |
op-permission-level | 4 | 管理员权限等级 |
pause-when-empty-seconds | 60 | 无玩家时服务器暂停秒数 |
player-idle-timeout | 0 | 玩家闲置超时踢出时间(0表示不踢出) |
prevent-proxy-connections | false | 是否防止代理连接 |
pvp | true | 是否允许玩家间PVP战斗 |
query.port | 25565 | 查询端口 |
rate-limit | 0 | 速率限制(0表示无限制) |
rcon.password | RCON远程控制密码 | |
rcon.port | 25575 | RCON端口 |
region-file-compression | deflate | 区域文件压缩方式 |
require-resource-pack | false | 是否强制玩家使用资源包 |
resource-pack | 资源包下载地址 | |
resource-pack-id | 资源包ID | |
resource-pack-prompt | 资源包提示信息 | |
resource-pack-sha1 | 资源包SHA1校验码 | |
server-ip | 服务器绑定IP地址 | |
server-port | 25565 | 服务器端口 |
simulation-distance | 10 | 模拟距离(区块数) |
spawn-monsters | true | 是否生成怪物 |
spawn-protection | 16 | 生成点保护范围(区块数) |
sync-chunk-writes | true | 是否同步区块写入磁盘 |
text-filtering-config | 文本过滤配置 | |
text-filtering-version | 0 | 文本过滤版本 |
use-native-transport | true | 是否使用本地网络传输 |
view-distance | 10 | 视距(区块数) |
white-list | false | 是否启用白名单 |
配置项 | 配置值 | 中文说明 |
---|---|---|
enable-rcon | true | 是否启用远程控制(RCON) |
enable-status | true | 是否允许服务器状态查询 |
enforce-secure-profile | true | 是否强制使用安全的玩家资料配置 |
enforce-whitelist | false | 是否强制启用白名单 |
entity-broadcast-range-percentage | 100 | 实体广播范围百分比 |
force-gamemode | false | 是否强制玩家进入指定游戏模式 |
function-permission-level | 2 | 函数命令的权限等级 |
gamemode | creative | 服务器默认游戏模式(creative 创造模式) |
generate-structures | true | 是否生成建筑结构(如村庄、矿井等) |
generator-settings | {} | 世界生成器的自定义设置 |
hardcore | false | 是否启用极限模式 |
hide-online-players | false | 是否隐藏在线玩家列表 |
initial-disabled-packs | 初始禁用的资源包 | |
initial-enabled-packs | vanilla | 初始启用的资源包 |
level-name | world | 世界名称 |
level-seed | 世界种子 | |
level-type | minecraft:normal | 世界类型(normal 正常类型) |
log-ips | true | 是否记录玩家IP地址 |
max-chained-neighbor-updates | 1000000 | 最大邻居区块链式更新次数 |
max-players | 20 | 最大玩家数量 |
max-tick-time | 60000 | 最大服务器tick时间(毫秒) |
max-world-size | 29999984 | 世界最大尺寸 |
motd | A Minecraft Server | 服务器信息(MOTD) |
network-compression-threshold | 256 | 网络压缩阈值 |
online-mode | false | 是否启用正版验证(在线模式) |
op-permission-level | 4 | 管理员权限等级 |
pause-when-empty-seconds | 60 | 无玩家时服务器暂停秒数 |
player-idle-timeout | 0 | 玩家闲置超时踢出时间(0表示不踢出) |
prevent-proxy-connections | false | 是否防止代理连接 |
pvp | true | 是否允许玩家间PVP战斗 |
query.port | 25565 | 查询端口 |
rate-limit | 0 | 速率限制(0表示无限制) |
rcon.password | RCON远程控制密码 | |
rcon.port | 25575 | RCON端口 |
region-file-compression | deflate | 区域文件压缩方式 |
require-resource-pack | false | 是否强制玩家使用资源包 |
resource-pack | 资源包下载地址 | |
resource-pack-id | 资源包ID | |
resource-pack-prompt | 资源包提示信息 | |
resource-pack-sha1 | 资源包SHA1校验码 | |
server-ip | 服务器绑定IP地址 | |
server-port | 25565 | 服务器端口 |
simulation-distance | 10 | 模拟距离(区块数) |
spawn-monsters | true | 是否生成怪物 |
spawn-protection | 16 | 生成点保护范围(区块数) |
sync-chunk-writes | true | 是否同步区块写入磁盘 |
text-filtering-config | 文本过滤配置 | |
text-filtering-version | 0 | 文本过滤版本 |
use-native-transport | true | 是否使用本地网络传输 |
view-distance | 10 | 视距(区块数) |
white-list | false | 是否启用白名单 |