Skip to content

开发服务器

构建项目后,下一步是启动开发服务器进行测试。这个章节将教你如何启动和管理开发服务器。

什么是开发服务器?

开发服务器是一个本地运行的 Minecraft 服务器,用于:

  • 测试插件:验证插件功能是否正常
  • 调试代码:查找和修复问题
  • 开发新功能:实时测试新功能
  • 性能测试:测试服务器性能

开发服务器配置

EnderRealm 的开发服务器包含以下组件:

组件说明
Paper 服务器Minecraft 服务器核心
预装插件Citizens、Geyser、ProtocolLib 等
大厅世界开发用的地图
配置文件预设的服务器配置

启动开发服务器

步骤 1:构建并部署

首先,构建所有模块并部署到 _server/ 目录:

bash
./gradlew setupDevServer

这个命令会:

  1. 构建所有 Java 模块
  2. 构建 Floodgate 子模块
  3. 复制 JAR 文件到 _server/plugins/
  4. 复制运行时文件到 _server/

步骤 2:启动服务器

构建完成后,启动开发服务器:

bash
./gradlew runDevServer

你会看到类似输出:

> Task :runDevServer
Starting Minecraft server...
[Server] Starting org.bukkit.craftbukkit.Main
[Server] *** Warning, you're not using the recommended Minecraft server software! ***
[Server] Loading libraries, please wait...
[Server] Starting Minecraft server version 1.21.4
[Server] Loading properties
[Server] Default game type: SURVIVAL
[Server] Generating keypair
[Server] Starting Minecraft server on *:25565
[Server] Using default channel type
[Server] Preparing level "world"
[Server] Preparing start region for dimension minecraft:overworld
[Server] Time elapsed: 1234 ms
[Server] Running delayed init tasks
[Server] Done (5.678s)! For help, type "help"

提示

服务器启动后,终端会进入服务器控制台模式,你可以输入服务器命令。

步骤 3:连接服务器

使用 Minecraft 客户端连接服务器:

  1. 打开 Minecraft 启动器
  2. 选择版本 1.21.4(或兼容版本)
  3. 添加服务器:localhost:25565
  4. 连接服务器

开发服务器命令

Gradle 任务命令

命令说明
./gradlew setupDevServer构建并部署
./gradlew setupDevServer -Pforce强制覆盖所有文件
./gradlew runDevServer启动开发服务器
./gradlew cleanDevServer清理开发服务器

服务器控制台命令

服务器启动后,你可以在控制台输入命令:

命令说明
stop停止服务器
help查看帮助
list查看在线玩家
op <player>给玩家管理员权限
gamemode creative <player>切换游戏模式

游戏内命令

连接服务器后,可以在游戏内使用标准 Minecraft 命令:

命令说明
/gamemode creative切换创造模式
/tp <x> <y> <z>传送
/give <player> <item>给予物品

开发服务器目录结构

开发服务器的文件位于 _server/ 目录:

_server/
├── server.jar              # Paper 服务器
├── server.properties       # 服务器配置
├── bukkit.yml              # Bukkit 配置
├── spigot.yml              # Spigot 配置
├── eula.txt                # EULA 同意
├── world/                  # 主世界
├── hub/                    # 大厅世界
└── plugins/                # 插件目录
    ├── EnderRealmServerCore-*.jar
    ├── bedwars-*.jar
    ├── disaster-*.jar
    ├── BlockedInCombat-*.jar
    ├── easy4form-*.jar
    ├── floodgate-spigot.jar
    ├── Citizens-*.jar
    ├── Geyser-Spigot.jar
    ├── ProtocolLib.jar
    └── ...

修改代码并测试

开发过程中,你可能需要修改代码并测试:

方法一:重新构建并重启

bash
# 1. 停止服务器(在控制台输入 stop)

# 2. 重新构建
./gradlew setupDevServer

# 3. 重新启动
./gradlew runDevServer

方法二:热重载(仅配置文件)

如果只修改了配置文件,可以使用服务器的重载命令:

# 在服务器控制台输入
reload

警告

不建议在生产环境使用 reload 命令,可能会导致问题。

开发服务器配置

server.properties

主要配置项:

properties
# 服务器端口
server-port=25565

# 最大玩家数
max-players=2000

# 游戏模式
gamemode=survival

# 难度
difficulty=normal

# 白名单
white-list=false

# 在线模式
online-mode=false

bukkit.yml

主要配置项:

yaml
settings:
  allow-end: true
  warn-on-overload: true
  permissions-file: permissions.yml
  update-folder: update
  plugin-profiling: false
  connection-throttle: 4000
  query-plugins: true
  deprecated-verbose: default
  shutdown-message: Server closed

常见问题

Q: 服务器启动失败,提示端口被占用?

A: 检查端口占用情况:

bash
# Windows
netstat -ano | findstr :25565

# macOS/Linux
lsof -i :25565

如果端口被占用,可以:

  1. 关闭占用端口的程序
  2. 修改 server.properties 中的端口

Q: 服务器启动失败,提示内存不足?

A: 修改 JVM 参数。编辑 build.gradle.kts,找到 runDevServer 任务:

kotlin
tasks.register<JavaExec>("runDevServer") {
    // 修改内存参数
    jvmArgs = listOf("-Xmx4096M", "-Xms4096M")
}

Q: 插件加载失败?

A: 检查以下几点:

  1. JAR 文件是否正确生成
  2. plugin.yml 配置是否正确
  3. 查看服务器日志中的错误信息

Q: 如何查看服务器日志?

A: 服务器日志位于:

  • 控制台输出
  • _server/logs/latest.log

Q: 如何重置开发服务器?

A: 使用以下命令:

bash
# 清理开发服务器
./gradlew cleanDevServer

# 重新构建并部署
./gradlew setupDevServer

# 重新启动
./gradlew runDevServer

开发服务器最佳实践

1. 定期备份

重要修改前,备份 _server/ 目录:

bash
# 备份
cp -r _server/ _server_backup/

# 恢复
cp -r _server_backup/ _server/

2. 使用版本控制

_server/ 目录已被 gitignore,不需要提交。

3. 监控服务器性能

服务器预装了 spark 插件,可用于性能分析。具体用法请参考 spark 官方文档

下一步

开发服务器启动成功后,让我们继续学习 后端服务