- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图在 Spigot 服务器上启动外部 Netty 服务器。
我唯一尝试的是从一开始就启动它,但问题是用户无法加入并且服务器超时。
这是 Netty 客户端的代码,它应该连接到运行良好的 Netty 服务器。
EventLoopGroup eventLoopGroup = EPOLL ? new EpollEventLoopGroup() : new NioEventLoopGroup();
try {
Bootstrap bootstrap = new Bootstrap()
.group( eventLoopGroup )
.option( ChannelOption.TCP_NODELAY, true )
.option( ChannelOption.SO_KEEPALIVE, true )
.channel( EPOLL ? EpollSocketChannel.class : NioSocketChannel.class )
.handler( new ChannelInitializer<Channel>() {
protected void initChannel( Channel channel ) throws Exception {
preparePipeline( channel );
}
} );
ChannelFuture f = bootstrap.connect(
ReplaySpigotServer.getConnection().configuration.getString( "server-host" ),
ReplaySpigotServer.getConnection().configuration.getInt( "server-port" ) )
.sync();
f.channel().closeFuture().sync();
} catch ( InterruptedException e ) {
e.printStackTrace();
} finally {
eventLoopGroup.shutdownGracefully();
最佳答案
在您的代码中,您可以使用 .connect().sync()
启动服务器,然后使用 closeFuture().sync(); 等待它退出
.
因为您正在等待连接结束,这意味着当您使用 netty channel 时,Bukkit/Spigot 服务器无法处理任何与用户相关的数据包。
由于调用 eventLoopGroup.shutdownGraceously();
意味着所有打开的连接都会关闭,因此我们需要使用某种方法来防止这种情况发生。
您可以在插件中执行的操作是在 onEnable 中创建一个新的 eventLoopGroup
,然后稍后创建一个新的 netty 连接,当您的插件被禁用时,断开该连接。
private EventLoopGroup eventLoopGroup;
public void onEnable(){
eventLoopGroup = EPOLL ? new EpollEventLoopGroup() : new NioEventLoopGroup();
}
public void onDisable(){
eventLoopGroup.shutdownGracefully();
}
public void newConnection() {
Bootstrap bootstrap = new Bootstrap()
.group( eventLoopGroup )
.option( ChannelOption.TCP_NODELAY, true )
.option( ChannelOption.SO_KEEPALIVE, true )
.channel( EPOLL ? EpollSocketChannel.class : NioSocketChannel.class )
.handler( new ChannelInitializer<Channel>() {
protected void initChannel( Channel channel ) throws Exception {
preparePipeline( channel );
}
} );
ChannelFuture f = bootstrap.connect(
ReplaySpigotServer.getConnection().configuration.getString( "server-host" ),
ReplaySpigotServer.getConnection().configuration.getInt( "server-port" ) )
.sync();
}
关于java - 如何在 Spigot 服务器上启动外部 Netty 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46696124/
我正在为我的 Minecraft 1.8.8 服务器制作一个经济系统,因为每次重新加载服务器时 HashMap 都会重置(删除每个人的 $ 数据),所以我尝试使用配置文件。我遇到的一个问题是我的服务器
我制作了一个注册事件的插件,我想制作一个取消注册它的命令,我该怎么做,我已经搜索了2个小时,但什么也没找到。我想让/Pvpeventon 启动事件并/Pvpeventoff 关闭它这是我已经编写的代码
我正在使用 Spigot 1.11.2。 我有这个简单的代码: @EventHandler public void onPlayerInteractEntity (PlayerInteractEnti
我有一个关于如何在具有随机大小和山丘的世界中生成随机生物群落的问题。 例如,如果我有平原生物群落,最大噪声高度为 8,而在山地生物群落中,最大噪声高度为 64,并且这些生物群落之间的过渡会平滑。 我已
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我试图做到这一点,当您单击一个标志时,它会显示“输入您的标签”,然后您输入您的标签,然后它会显示“输入您的括号颜色”,然后您输入您的括号颜色,然后输入您的命名颜色,然后聊天颜色。它有效,但有时括号颜色
我的命令(具体来说只有我的 cmd2 命令) 未注册,并且当我启动服务器时控制台会显示错误。另一个命令 cmd1 有效,但 cmd2 无效。我真的不知道为什么,所以我来这里寻求帮助。 我的一些主要类(
我的 spigot 插件不起作用。在控制台上,它说插件已启用,但我无法运行插件中的命令。请帮忙。 这是Plugin.java的主要代码 package lol.quacnooblol.mypvpplu
所以我创建了这个小插件,我想知道如何将代码从 onCommand 内部移动到另一个类并在 onCommand 内部调用/执行该类。请帮忙。谢谢 public class SkinStandoff ex
我正在使用这个: public void onPlayerCommandPreprocessEvent(PlayerCommandPreprocessEvent event) { event.
我想制作一个插件,计算玩家的生命。例如每个玩家都有 3 条生命。每当他死时,他就失去了一条生命。当他的生命达到 0 时,他就会被禁止。 我的方法是这样的 public class OnPlayerDe
我正在尝试制作一个具有“全局”配置文件的插件。现在,我正在尝试使用插件消息传递通过字符串将整个配置文件发送到另一台服务器。我已按照 https://www.spigotmc.org/wiki/bukk
我翻译了以下C++代码: #include using namespace std; #define NDIGITS 100 #define LEN (NDIGITS/4+1)*14 long a[
我对正确的 vector 对齐有疑问。我想得到一个指向与玩家相同方向的 vector ,但 Y 值为 0。关键是,无论玩家的垂直和水平旋转, vector 的 Y 值为 0。 vector 始终应该指
在服务器上生成新世界时,是否有办法从 WorldCreator 中删除某些生物群落(例如丛林)?我试图仅禁用一个世界中的生物群落,而不是禁用所有生物群落(网上的大多数示例似乎都在这样做)。有什么办法可
我一直在制作一个 bukkit 插件,它显示在插件列表中,但是当我执行我希望代码执行的操作时,什么也不会发生。 public class MyClass extends JavaPlugin impl
大约一周前,我决定学习编写 Minecraft 插件,所以我尝试遵循本指南: 我将测试插件加载到我电脑上的 spigot 1.12 服务器中,但出现了很多错误: [15:58:22 错误]:无法加载“
我的项目内的一个目录中有多个语言文件。这些语言文件基本上是自定义配置文件,我也想将其保存在我的插件文件夹的子文件夹中。 我已经编辑了 pom.xml 以将 .yml 文件实现到压缩的 .jar
我正在使用 spigot 制作游戏模式。这是一个spleef游戏模式,我使用WorldEdit来恢复 map 。然而,脾脏中的 block 是床。我使用原理图恢复这些床,我只是使用粘贴 EditSes
public HelloCommand(Main plugin) { this.plugin = plugin; plugin.getCommand("tptest")
我是一名优秀的程序员,十分优秀!