Mirror von
https://github.com/ViaVersion/ViaVersion.git
synchronisiert 2024-12-25 07:40:08 +01:00
Fix uninjection when different handler order
Dieser Commit ist enthalten in:
Ursprung
dd55cc3cf2
Commit
e430bfce06
@ -115,7 +115,25 @@ public class BukkitViaInjector implements ViaInjector {
|
|||||||
public void uninject() {
|
public void uninject() {
|
||||||
// TODO: Uninject from players currently online to prevent protocol lib issues.
|
// TODO: Uninject from players currently online to prevent protocol lib issues.
|
||||||
for (ChannelFuture future : injectedFutures) {
|
for (ChannelFuture future : injectedFutures) {
|
||||||
ChannelHandler bootstrapAcceptor = future.channel().pipeline().first();
|
List<String> names = future.channel().pipeline().names();
|
||||||
|
ChannelHandler bootstrapAcceptor = null;
|
||||||
|
// Pick best
|
||||||
|
for (String name : names) {
|
||||||
|
ChannelHandler handler = future.channel().pipeline().get(name);
|
||||||
|
try {
|
||||||
|
ChannelInitializer<SocketChannel> oldInit = ReflectionUtil.get(handler, "childHandler", ChannelInitializer.class);
|
||||||
|
if (oldInit instanceof BukkitChannelInitializer) {
|
||||||
|
bootstrapAcceptor = handler;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
// Not this one
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Default to first
|
||||||
|
if (bootstrapAcceptor == null) {
|
||||||
|
bootstrapAcceptor = future.channel().pipeline().first();
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ChannelInitializer<SocketChannel> oldInit = ReflectionUtil.get(bootstrapAcceptor, "childHandler", ChannelInitializer.class);
|
ChannelInitializer<SocketChannel> oldInit = ReflectionUtil.get(bootstrapAcceptor, "childHandler", ChannelInitializer.class);
|
||||||
if (oldInit instanceof BukkitChannelInitializer) {
|
if (oldInit instanceof BukkitChannelInitializer) {
|
||||||
|
@ -107,7 +107,25 @@ public class SpongeViaInjector implements ViaInjector {
|
|||||||
public void uninject() {
|
public void uninject() {
|
||||||
// TODO: Uninject from players currently online
|
// TODO: Uninject from players currently online
|
||||||
for (ChannelFuture future : injectedFutures) {
|
for (ChannelFuture future : injectedFutures) {
|
||||||
ChannelHandler bootstrapAcceptor = future.channel().pipeline().first();
|
List<String> names = future.channel().pipeline().names();
|
||||||
|
ChannelHandler bootstrapAcceptor = null;
|
||||||
|
// Pick best
|
||||||
|
for (String name : names) {
|
||||||
|
ChannelHandler handler = future.channel().pipeline().get(name);
|
||||||
|
try {
|
||||||
|
ChannelInitializer<SocketChannel> oldInit = ReflectionUtil.get(handler, "childHandler", ChannelInitializer.class);
|
||||||
|
if (oldInit instanceof SpongeChannelInitializer) {
|
||||||
|
bootstrapAcceptor = handler;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
// Not this one
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Default to first
|
||||||
|
if (bootstrapAcceptor == null) {
|
||||||
|
bootstrapAcceptor = future.channel().pipeline().first();
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ChannelInitializer<SocketChannel> oldInit = ReflectionUtil.get(bootstrapAcceptor, "childHandler", ChannelInitializer.class);
|
ChannelInitializer<SocketChannel> oldInit = ReflectionUtil.get(bootstrapAcceptor, "childHandler", ChannelInitializer.class);
|
||||||
if (oldInit instanceof SpongeChannelInitializer) {
|
if (oldInit instanceof SpongeChannelInitializer) {
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren