#7 NO.5 服务器的存档\指令与文件

存档
在服务端与客户端版本与注册物品相同的情况下, 存档是可以互通的, 接下来我来介绍关于存档问题.
1 常规服务器存档信息:
在server.properties文件内, 存在level-name的键值对, 是存档文件夹的名字, 默认为world, 在启动服务器后, 服务器会读取此文件并找到对应存档文件夹, 这是基本.
打开存档文件夹可以发现文件结构和客户端相差无几, 也因此, 在客户端的存档可以移植至服务端, 但是要保证注册物品与游戏版本相同, 否则容易出现物品信息丢失的情况损坏存档, 移植存档时要注意
2 非常规服务器存档信息:
非常规服务器如mohist核心, 存档结构稍有不同, 分为三个文件夹:(以下采用默认存档名称)
world 主要存放世界信息, 主世界信息, 与玩家信息
world_nether 只存档下界世界信息
world_the_end 只存放末地世界信息
这之中world文件夹文件结构类似于去掉DIM-1与DIM1
而去掉的DIM-1与DIM1则在另外两个文件夹之中, 移植存档时要注意
3 通用版本问题
可以通过存档转换器来解决版本问题, 内容不符合本文, 这里就不多细讲了, 所以还是要注意备份, 数据无价, 谨慎操作
指令
/op指令与/deop指令:
为operator(操作员)的缩写, 是仅次于腐竹权力的玩家
使用方法:
/op <玩家名(不是uuid)>
示例: /op okr
op分为1234四个等级, 不同等级权限有所不同
级别
1级 可以绕过重生点保护(可以在出生点区域内破坏放置方块)
2级 可以使用 /clear , /difficulty , /effect , /gamemode , /gamerule , /give , /summon , /setblock 和 /tp指令 , 以及使用命令方块
3级 可以使用 /ban、/deop、/kick 和 /op指令
4级 可以使用/stop指令
通常, 二级与三级就是标准管理员可以拥有的等级了, 托付四级于管理员实在有点夸张
默认管理员等级可以在server.properties中设置, 键值对op-permission-level就是管理此项的, 修改后, 设定的op即为设置的等级.
在ops.json文件中可以修改已有管理员等级,:
结构
[
{
"uuid": "df2c6030-17d0-3240-9fe3-42202aefee5f",
"name": "okr",
"level": 4,
"bypassesPlayerLimit": false
}
]
uuid便是op的uuid
name是op显示的名称
level即是所说的op等级
bypassesPlayerLimit表示是否可以在服务器满员后加入
修改后重启服务器即可应用更改
/deop比较方便理解, 意思是取消某人的管理员, 使用后, 将从ops文件中删除其条目, 使用方法:
/deop <玩家名(不是uuid)>
示例: /deop okr
/ban指令与/ban-ip指令:
/ban指令可以禁止玩家加入世界, 也就是踢出玩家, 但不允许在设定时间内加入(默认为不可再次加入)
/ban-ip指令有同样意思, 但是是针对ip, 以防其换名加入, 使用方法:
/ban <玩家名(不是uuid)> [被ban原因(可选)]
示例: /ban okr 开挂
/ban-ip <玩家ip(不是uuid)> [被ban原因(可选)]
示例: /ban-ip 192.168.117.1 多开客户端占人数
在这之中, 还有一个指令/banlist可以用于查看被ban人员名单, 使用方法:
/banlist
示例: /banlist
所有被ban成员均保存于banned-ips.json与banned-players.json文件中
前者存放被ban的ip信息后者存放被ban的玩家信息
banned-players.json格式:
[
{
"uuid": "df2c6030-17d0-3240-9fe3-42202aefee5f",
"name": "okr",
"created": "2023-08-25 11:07:02 +0800",
"source": "okr",
"expires": "forever",
"reason": "Banned by an operator."
}
]
uuid与name就不多讲解了
created为被ban时间
source为使用ban指令的人员
expires为ban到期时间, 此处为forever为长期封禁, 封禁直到从此文件删除这个条目,可以修改为解封时间, 到期后自动解封
reason是被ban原因, 为第三条指令参数, 允许空格.
ban-ip与ban结构差不多
区别在于键值对uuid与name替换为ip, 如下:
[
{
"ip": "123.123.123.123",
"created": "2023-08-25 11:17:38 +0800",
"source": "okr",
"expires": "forever",
"reason": "kaigua"
}
]
其余键值对不变
/kick指令:
踢人指令啦, 与ban区别在于这只是把人踢出, 被踢玩家可以再次加入服务器,使用方法:
/kick <玩家名(不是uuid)>
示例: /kick okr
/whitelist指令:
在ban之上还有一个名为whitelist的指令, 其只允许白名单内玩家加入服务器, 使用方法如下:
/whitelist <操作标签> <玩家名(可选/不是uuid)>
示例: /whitelist on
示例: /whitelist add okr
其操作标签有on / off / add / remove / reload / list
作用分别为:
on / off 启用或者关闭白名单, 在server.porperties文件中键值对white-list也可用于操控白名单是否启用, 使用此标签无需添加第二参数
add / remove 添加或删除玩家于白名单, 使用时需要增加第二参数(玩家名)
reload 重新加载, 在服务器开启的情况下修改whitelist.json后可以使用此标签在不重启的情况下重新加载白名单, 使用此标签无需添加第二参数
list 列出已被加入白名单的成员, 使用此标签无需添加第二参数
接下来就是介绍保存白名单的文件whitelist.json, 结构如下:
[
{
"uuid": "df2c6030-17d0-3240-9fe3-42202aefee5f",
"name": "okr"
}
]
uuid与name我就不做过多解释了
用户信息问题
用户登录信息存在于两个文件:
usercache.json与usernamecache.json
前者为记录服务器记载过的用户的信息, 只是记载而已, 所以如果你往里面添加一个假的条目也不会有问题, 格式如下:
[
{
"name": "okr",
"uuid": "df2c6030-17d0-3240-9fe3-42202aefee5f",
"expiresOn": "2023-09-25 11:04:19 +0800"
}
]
name与uuid不做解释
expiresOn为记录到期时间, 即为日志最后记录时间, 超过时间记录就会被删除
后者记录登录玩家的名字对应问题, 即uuid对name:
{
"df2c6030-17d0-3240-9fe3-42202aefee5f": "okr"
}
本文件结构只有一层, 所以没有玩家独立的分区, 键为玩家的uuid, 值为玩家的name
最后
以上便是服务器基本存档指令与文件问题了, 以上讲解的包括前几期视频与专栏投稿足以让你正常的开一个服务器, 之后, 我会讲解服务器进阶内容, 包括但不局限于
手动编译服务端
给服务器添加插件
服务器的打包与docker虚拟机
如果喜欢本系列教程就为我点个关注吧