有可能在Minecraft插件的实例中运行Springboot Web服务器吗



我想从用java编写的Minecraft插件启动springboot Web服务器,我尝试在IntelliJ中向项目添加springboot模块,但当插件加载时,服务器没有启动

是的,这是可能的。但你应该异步进行。

事实上,你有minecraft服务器启动一个线程。这将打开端口,并运行所有插件。

如果您尝试在这个线程上运行Spring,它将启动服务器的一个实例,并等待连接。。。在minecraft服务器的同一线程上。

因此,服务器将等待您的代码停止运行,然后再执行其他操作,并且将无法接收数据包。

如何修复

你应该异步运行你的代码,比如:

Bukkit.getScheduler().runTaskAsynchronously(this, () -> {
// here you can start your server
});

您也可以只使用一个基本的java线程:

new Thread(() -> {
// here start your server
}).start();