在 IDE 中调试

备注

关于设置 IDE 和依赖的信息可参考:“设置开发环境”、“设置你的项目”。

关于在 IDE 中调试插件的信息可参考“调试插件”一文中的“运行你的配置”和“使用调试器”两小节。

本文目前基于 IntelliJ IDEA 编写。如果你是 Eclipse 用户,且能写出这篇文章的 Eclipse 版本,我们欢迎你直接向我们的 GitHub 仓库 发起 PR。

使用 IDE 调试 Sponge 比较简单,基本上就是在你部署完工作环境后将 build.gradle 导入 IDE 中。请确保你已安装了 JDK 8 且已令 IDE 使用 JDK 8,以及将项目以一个 Gradle 项目的身份导入 IDE。在此之后你就可以运行代码并进行测试了。

关键设置

下文列出了一些经常出现问题的设置:

Gradle 插件

确认 Gradle 插件已启用。请依次打开 File -> Settings -> Plugins,在打开的窗口中找到 Installed 标签,确认是否有一名为 Gradle 的插件,且该插件名字旁有一个代表已启用的对勾。如果你找不到这个插件,请在 Marketplace 标签中搜索并安装。

Project SDK

Project SDK(项目使用的 SDK)一项应为 1.8.0_20 或更高版本。项目的 Language Level(编译等级)应为 8 - Lambdas, type annotations etc.

Run/Debug 配置

Gradle 任务 genIntelliJRuns 会帮你创建合适的 Run 及 Debug 配置,只需在项目根目录执行 ./gradlew genIntelliJRuns 即可。务必在打开 IDE 之前执行此命令。如果你已经打开了 IDE,你可以选择在执行完此命令后重启 IDE。若一切无误,此时你应当能在 Application Configuration 中找到 Minecraft ClientMinecraft Server 两项,以及在 Gradle Configuration 中找到 SpongeForge [jar]SpongeForge [clean] 两项。

Coremods

备注

Coremod 不属于 SpongeVanilla 的一部分。参考 Sponge 术语表了解 Coremod 的具体定义。

Gradle 及其他 Sponge 提供的自动化工具不会配置除了 Sponge 它自己用的 Coremod 以外的其他 Coremod,因此你需要手动配置。配置的方法是在 VM 选项中加入 -Dfml.coreMods.load 一项,它的值是逗号分割的 Coremod 类名。VM 选项需要在 Run/Debug 配置中指定。

小技巧

Sponge 插件开发指南”一文的 Mixin 一节讨论了 Mixin、Coremod 及其他底层概念的定义。

调试 Mixin”一文的“输出”一小节也讨论了其他有用的 VM 选项。

Classpath

在 Run/Debug 配置的窗口中,检查 Use classpath of module: 是否已经正确设置。如果它当前仍是 <no module>,请在该选项的下拉菜单中选择那个名字以 _main 结尾的 module。

小技巧

如果还是不确定,请直接选择你要用的那一个。比如说如果你要调试 SpongeForge,那就选 SpongeForge_main,如果是 SpongeVanilla 那就是 SpongeVanilla_main

使用 IDE 进行调试

现在你已经正确配置所有东西了,你可以像往常一样在 IDE 中设置断点、单步执行代码、检查某个变量的值或者解析任意表达式了。自然地,你也可以使用诸如命令和日志输出这样的游戏特性。

与 Mod 和插件一起调试

若你需要调试某个 Mod 或插件,你应当将那个 Mod 或插件复制到 run/mods 目录下。IDE 允许你检查其代码并设定断点,但你必须首先将该目录指定为库文件目录。

只需在 Project Settings 中找到 Libraries 组件,点击中间一栏上方的 +,然后选择 Java,并在打开的窗口中找到 mods 目录并点击 OK,即可。此时你应当可以在 IDE 中浏览 Mod 或插件的代码并设定断点了。

警告

使用此特性时,请务必确认已遵守所有版权提示及许可协议。