从零开始撸个简单Minecraft服务器

从零开始撸个简单Minecraft服务器

如果生活中不可避免的总会接触到一些游戏,那不如就一个充满创建和想象的世界。与其让少年们拿着U盘来回复制传递,那试试让少年们拥有一个属于他们自己“少年时的世界”吧。下面是一个简单的撸的实录,有不对的地方欢迎指定调整。

准备工作:

  • 一台服务器,搞个云上的两核4G的就行。之前搞活动的时候在腾讯云99弄了个五年的。
  • 在服务器上防火墙放行对应的端口号,默认是25565
  • FabricMC

总共操作分为:

安装JAVA → download文件 → 配置相关 → 配置后台运行

一步一步站撸

步骤:

  1. 常规的sudo apt update
  2. 安装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 //验证
  1. 新建一个目录并进入,比如:
mkdir mc-server && cd mc-server
  1. 在网站 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
  1. 首次启动前需要同意EULA协议,编辑eula.txt 把eula=false改为eula=true
  2. 复制下一条命令启动(中间应该是各自选的对应的版本)
java -Xmx2G -jar fabric-server-mc.1.21.5-loader.0.16.14-launcher.1.0.3.jar nogui
// 2G根据自己的服务器内存自行调整

打开游戏客户端,多人游戏。别着急,这时候你可能进不去。

Image.png

Image.png

处理问题&优化

这时候会遇到两个问题,一个是正版登录验证,一个是你不在本机一样切换模式【生存、创造等】

关闭正版登录验证

一、打开根目录的 server.properties 文件,找到 online-mode=true 改为 online-mode=false 当然你在该文件里面直接修改gamemode也可以修改模式,不过这样就要一直在这儿修改重启不方便,所以就直接下一步,一起改了再重启服务。

二、修改同目录下的另一个文件 ops.json 当前里面应该是空的,打开本地的客户端,复制账号的uuid,按下面的格式替换内容保存,然后重启服务,后面也可以在游戏里面op 添加其它玩家。

Image.png

[
  {
    "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-rcontrue是否启用远程控制(RCON)
enable-statustrue是否允许服务器状态查询
enforce-secure-profiletrue是否强制使用安全的玩家资料配置
enforce-whitelistfalse是否强制启用白名单
entity-broadcast-range-percentage100实体广播范围百分比
force-gamemodefalse是否强制玩家进入指定游戏模式
function-permission-level2函数命令的权限等级
gamemodecreative服务器默认游戏模式(creative 创造模式)
generate-structurestrue是否生成建筑结构(如村庄、矿井等)
generator-settings{}世界生成器的自定义设置
hardcorefalse是否启用极限模式
hide-online-playersfalse是否隐藏在线玩家列表
initial-disabled-packs初始禁用的资源包
initial-enabled-packsvanilla初始启用的资源包
level-nameworld世界名称
level-seed世界种子
level-typeminecraft:normal世界类型(normal 正常类型)
log-ipstrue是否记录玩家IP地址
max-chained-neighbor-updates1000000最大邻居区块链式更新次数
max-players20最大玩家数量
max-tick-time60000最大服务器tick时间(毫秒)
max-world-size29999984世界最大尺寸
motdA Minecraft Server服务器信息(MOTD)
network-compression-threshold256网络压缩阈值
online-modefalse是否启用正版验证(在线模式)
op-permission-level4管理员权限等级
pause-when-empty-seconds60无玩家时服务器暂停秒数
player-idle-timeout0玩家闲置超时踢出时间(0表示不踢出)
prevent-proxy-connectionsfalse是否防止代理连接
pvptrue是否允许玩家间PVP战斗
query.port25565查询端口
rate-limit0速率限制(0表示无限制)
rcon.passwordRCON远程控制密码
rcon.port25575RCON端口
region-file-compressiondeflate区域文件压缩方式
require-resource-packfalse是否强制玩家使用资源包
resource-pack资源包下载地址
resource-pack-id资源包ID
resource-pack-prompt资源包提示信息
resource-pack-sha1资源包SHA1校验码
server-ip服务器绑定IP地址
server-port25565服务器端口
simulation-distance10模拟距离(区块数)
spawn-monsterstrue是否生成怪物
spawn-protection16生成点保护范围(区块数)
sync-chunk-writestrue是否同步区块写入磁盘
text-filtering-config文本过滤配置
text-filtering-version0文本过滤版本
use-native-transporttrue是否使用本地网络传输
view-distance10视距(区块数)
white-listfalse是否启用白名单
配置项配置值中文说明
enable-rcontrue是否启用远程控制(RCON)
enable-statustrue是否允许服务器状态查询
enforce-secure-profiletrue是否强制使用安全的玩家资料配置
enforce-whitelistfalse是否强制启用白名单
entity-broadcast-range-percentage100实体广播范围百分比
force-gamemodefalse是否强制玩家进入指定游戏模式
function-permission-level2函数命令的权限等级
gamemodecreative服务器默认游戏模式(creative 创造模式)
generate-structurestrue是否生成建筑结构(如村庄、矿井等)
generator-settings{}世界生成器的自定义设置
hardcorefalse是否启用极限模式
hide-online-playersfalse是否隐藏在线玩家列表
initial-disabled-packs初始禁用的资源包
initial-enabled-packsvanilla初始启用的资源包
level-nameworld世界名称
level-seed世界种子
level-typeminecraft:normal世界类型(normal 正常类型)
log-ipstrue是否记录玩家IP地址
max-chained-neighbor-updates1000000最大邻居区块链式更新次数
max-players20最大玩家数量
max-tick-time60000最大服务器tick时间(毫秒)
max-world-size29999984世界最大尺寸
motdA Minecraft Server服务器信息(MOTD)
network-compression-threshold256网络压缩阈值
online-modefalse是否启用正版验证(在线模式)
op-permission-level4管理员权限等级
pause-when-empty-seconds60无玩家时服务器暂停秒数
player-idle-timeout0玩家闲置超时踢出时间(0表示不踢出)
prevent-proxy-connectionsfalse是否防止代理连接
pvptrue是否允许玩家间PVP战斗
query.port25565查询端口
rate-limit0速率限制(0表示无限制)
rcon.passwordRCON远程控制密码
rcon.port25575RCON端口
region-file-compressiondeflate区域文件压缩方式
require-resource-packfalse是否强制玩家使用资源包
resource-pack资源包下载地址
resource-pack-id资源包ID
resource-pack-prompt资源包提示信息
resource-pack-sha1资源包SHA1校验码
server-ip服务器绑定IP地址
server-port25565服务器端口
simulation-distance10模拟距离(区块数)
spawn-monsterstrue是否生成怪物
spawn-protection16生成点保护范围(区块数)
sync-chunk-writestrue是否同步区块写入磁盘
text-filtering-config文本过滤配置
text-filtering-version0文本过滤版本
use-native-transporttrue是否使用本地网络传输
view-distance10视距(区块数)
white-listfalse是否启用白名单