关于游戏会话

!!重要!!

千万不要在当前链接内启动游戏,否则当你链接关闭之后游戏也跟着一起关闭了,但是当你位于 screen 创建的会话中时,直接关闭链接,screen 会将你的会话自动离线,转入后台运行。

也不要启动多个游戏,它们会争抢同一个端口25565

连接服务器,先查看screen会话内是否存在离线的游戏会话(离线指转入后台运行,这是我们所需要的状态)

1
screen -ls

若状态为Detached,则该会话离线,可以正常恢复该会话

1
2
3
4
[root@iZwz9243apyfngip0eceqxZ minecraft]# screen -ls
There is a screen on:
83045.mc (Detached)
1 Socket in /run/screen/S-root.

如果因为某种原因,其中一个会话死掉了,状态为dead,可以使用screen -wipe清除该会话。

恢复会话指令如下

1
screen -r mc

创建会话

当然有的时候,你可能会看到如下提示

1
2
[root@iZwz9243apyfngip0eceqxZ ~]# screen -ls
No Sockets found in /run/screen/S-root.

这就表示当前没有会话运行,那么这个时候键入

1
screen -S mc

注意大写的S,这条指令会创建一个新的会话,不出意外会清除屏幕内容,进入一个新的会话

离开会话与删除会话

按下快捷键Ctrl+A

如果只是离开会话,按下第三个键D(不用按住Ctrl)

删除会话按下K,并在屏幕提示内输入yes


如何判断服务器当前状态

当第一步完成,已经进入离线的会话时,若游戏正常运行或者崩溃产生日志,会保留历史记录,样式如下

1
2
[19:46:57] [Server thread/INFO]: Anseyuki lost connection: Disconnected
[19:46:57] [Server thread/INFO]: Anseyuki left the game

这个时候能在这里执行大部分的单人游戏指令和一些服务器特有的指令,具体可以参阅Minecraft-Wiki

注意:所有可在游戏内使用的指令都可以在服务端后端执行,除了一些需要选中自身的指令无法完成,例如/locate等指令,但是在执行时并不需要加上/,服务端自动将输入视为指令。若要使用[Server]身份发送消息,使用/say balabala即可

当然有的时候服务器意外死掉了或者被人为关机了,最下方会显示 shell 命令提示,代表当前服务器并未运行

1
[root@iZwz9243apyfngip0eceqxZ minecraft]#

服务器启动

保证已经进入会话,首先先定位至游戏根目录

1
2
[root@iZwz9243apyfngip0eceqxZ ~]# cd /home/minecraft
[root@iZwz9243apyfngip0eceqxZ minecraft]#

可以看见目录由~变成了minecraft

这个时候可以使用ls查看当前目录下的文件,这不是必要步骤

1
2
3
[root@iZwz9243apyfngip0eceqxZ minecraft]# ls
banned-ips.json eula.txt logs server.jar usercache.json world
banned-players.json launch.sh ops.json server.properties whitelist.json

在上面的ls命令执行结果中可以看见一个脚本文件launch.sh

在终端执行

1
[root@iZwz9243apyfngip0eceqxZ minecraft]# ./launch.sh

则可以直接启动服务器

脚本内启动指令如下

1
java -jar -Xmx3072M -server -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M server.jar nogui

对于其他参数,保持不变是最好的选择,但是-Xms-Xmx可以根据不同服务器进行修改,它们可以允许我们指定 JVM 的初始和最大堆内存大小。这里并未给出初始堆内存大小,并指定了3GB的最大堆内存大小


服务器关闭

关闭服务器可以在游戏内使用 OP 权限输入/stop或者在服务端的后端使用stop指令完成


服务器维护

自动存档与管理员机制

在一个默认服务器上,管理员或服主可以用/op <游戏名>命令或在服务器文件中编辑 json 文件并重启服务器使游戏玩家成为管理员。

如果区块发生更改,服务器默认每 30 秒就将世界保存在"worlds"文件夹。

在游戏或者服务器控制台中使用 /save-all 命令保存存档。

注意:请勿移动存档目录!否则服务端会崩溃。执行这些操作不需要重启服务端。

管理玩家

重置玩家

如果你想重置玩家的物品栏、位置或其他相关数据,你可以删除该玩家的 .dat文件。打开服务端目录,并打开world目录,然后打开players目录,删除掉对应该玩家用户名的UUID .dat 文件。该目录的完整路径为 minecraft\world\players,路径中的minecraft即你安装服务端所在的文件夹。

该操作会导致这名玩家从服务器的出生点开始并为空物品栏,并会删除该玩家末影箱中的物品。该玩家在世界上所做的改动将不会发生变化,包括箱子(不含末影箱)里的任何物品。这个操作并不会将被删除的玩家从服务器中封禁。