Changed ChannelInitializers to be more compatible
This commit is contained in:
parent
9c5f49f6e9
commit
07547130be
|
|
@ -5,7 +5,7 @@ plugins {
|
|||
}
|
||||
|
||||
group = "org.adde0109"
|
||||
version = "1.4.0-beta-rc7"
|
||||
version = "1.4.0-beta-rc8"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
|
|
|
|||
|
|
@ -37,10 +37,9 @@ import java.nio.file.Path;
|
|||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static com.velocitypowered.api.network.ProtocolVersion.MINECRAFT_1_19;
|
||||
import static com.velocitypowered.api.network.ProtocolVersion.MINECRAFT_1_19_3;
|
||||
import static com.velocitypowered.proxy.protocol.packet.brigadier.ArgumentIdentifier.mapSet;
|
||||
|
||||
@Plugin(id = "ambassador", name = "Ambassador", version = "1.4.0-beta-rc7", authors = {"adde0109"})
|
||||
@Plugin(id = "ambassador", name = "Ambassador", version = "1.4.0-beta-rc8", authors = {"adde0109"})
|
||||
public class Ambassador {
|
||||
|
||||
public ProxyServer server;
|
||||
|
|
@ -104,11 +103,11 @@ public class Ambassador {
|
|||
Field cmField = VelocityServer.class.getDeclaredField("cm");
|
||||
cmField.setAccessible(true);
|
||||
|
||||
ChannelInitializer<?> original = ((ConnectionManager) cmField.get(server)).serverChannelInitializer.get();
|
||||
((ConnectionManager) cmField.get(server)).serverChannelInitializer.set(new VelocityServerChannelInitializer(original,(VelocityServer) server));
|
||||
ChannelInitializer<?> original = ((ConnectionManager) cmField.get(server)).getServerChannelInitializer().get();
|
||||
((ConnectionManager) cmField.get(server)).getServerChannelInitializer().set(new VelocityServerChannelInitializer(original,(VelocityServer) server));
|
||||
|
||||
ChannelInitializer<?> originalBackend = ((ConnectionManager) cmField.get(server)).backendChannelInitializer.get();
|
||||
((ConnectionManager) cmField.get(server)).backendChannelInitializer.set(new VelocityBackendChannelInitializer(originalBackend,(VelocityServer) server));
|
||||
ChannelInitializer<?> originalBackend = ((ConnectionManager) cmField.get(server)).getBackendChannelInitializer().get();
|
||||
((ConnectionManager) cmField.get(server)).getBackendChannelInitializer().set(new VelocityBackendChannelInitializer(originalBackend,(VelocityServer) server));
|
||||
|
||||
Method argumentRegistry = ArgumentPropertyRegistry.class.getDeclaredMethod("register", ArgumentIdentifier.class, Class.class, ArgumentPropertySerializer.class);
|
||||
argumentRegistry.setAccessible(true);
|
||||
|
|
|
|||
|
|
@ -13,24 +13,21 @@ import java.lang.reflect.Method;
|
|||
|
||||
public class VelocityBackendChannelInitializer extends BackendChannelInitializer {
|
||||
|
||||
private static final Method INIT_CHANNEL;
|
||||
private Method INIT_CHANNEL;
|
||||
|
||||
private final ChannelInitializer<?> delegate;
|
||||
private final VelocityServer server;
|
||||
|
||||
static {
|
||||
try {
|
||||
INIT_CHANNEL = ChannelInitializer.class.getDeclaredMethod("initChannel", Channel.class);
|
||||
INIT_CHANNEL.setAccessible(true);
|
||||
} catch (ReflectiveOperationException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public VelocityBackendChannelInitializer(ChannelInitializer<?> delegate, VelocityServer server) {
|
||||
super(server);
|
||||
this.delegate = delegate;
|
||||
this.server = server;
|
||||
try {
|
||||
INIT_CHANNEL = delegate.getClass().getDeclaredMethod("initChannel", Channel.class);
|
||||
INIT_CHANNEL.setAccessible(true);
|
||||
} catch (ReflectiveOperationException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -14,22 +14,19 @@ import org.jetbrains.annotations.NotNull;
|
|||
import java.lang.reflect.Method;
|
||||
|
||||
public class VelocityServerChannelInitializer extends ServerChannelInitializer {
|
||||
private static final Method INIT_CHANNEL;
|
||||
private Method INIT_CHANNEL;
|
||||
|
||||
private final ChannelInitializer<?> delegate;
|
||||
|
||||
static {
|
||||
try {
|
||||
INIT_CHANNEL = ChannelInitializer.class.getDeclaredMethod("initChannel", Channel.class);
|
||||
INIT_CHANNEL.setAccessible(true);
|
||||
} catch (ReflectiveOperationException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public VelocityServerChannelInitializer(ChannelInitializer<?> delegate,VelocityServer server) {
|
||||
super(server);
|
||||
this.delegate = delegate;
|
||||
try {
|
||||
INIT_CHANNEL = delegate.getClass().getDeclaredMethod("initChannel", Channel.class);
|
||||
INIT_CHANNEL.setAccessible(true);
|
||||
} catch (ReflectiveOperationException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -39,9 +36,12 @@ public class VelocityServerChannelInitializer extends ServerChannelInitializer {
|
|||
} catch (ReflectiveOperationException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
ChannelHandler handler = ch.pipeline().get(Connections.HANDLER);
|
||||
if (!(handler instanceof final MinecraftConnection connection)) throw new RuntimeException("plugin conflict");
|
||||
HandshakeSessionHandler originalSessionHandler = (HandshakeSessionHandler) connection.getSessionHandler();
|
||||
connection.setSessionHandler(new VelocityHandshakeSessionHandler(originalSessionHandler, connection));
|
||||
finally {
|
||||
if (ch.pipeline().get(MinecraftConnection.class) == null)
|
||||
super.initChannel(ch);
|
||||
MinecraftConnection handler = ch.pipeline().get(MinecraftConnection.class);
|
||||
HandshakeSessionHandler originalSessionHandler = (HandshakeSessionHandler) handler.getSessionHandler();
|
||||
handler.setSessionHandler(new VelocityHandshakeSessionHandler(originalSessionHandler, handler));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user