Merge branch 'main' into update/1.21.5

# Conflicts:
#	VelocityCore/src/de/steamwar/velocitycore/ServerVersion.java
This commit is contained in:
2025-05-31 20:20:07 +02:00
38 changed files with 550 additions and 138 deletions
@@ -71,6 +71,17 @@ public class TinyProtocol implements Listener {
@Getter
private final Map<Player, PacketInterceptor> playerInterceptors = new HashMap<>();
@Override
public String toString() {
return "TinyProtocol{" +
"plugin=" + plugin +
", connections=" + connections +
", closed=" + closed +
", packetFilters=" + packetFilters +
", playerInterceptors=" + playerInterceptors +
'}';
}
private TinyProtocol(final Plugin plugin) {
this.plugin = plugin;
this.connections = networkManagers.get(getServerConnection(plugin));
@@ -84,6 +95,7 @@ public class TinyProtocol implements Listener {
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerLogin(PlayerLoginEvent e) {
plugin.getLogger().info("Creating PacketInterceptor for: " + e.getPlayer().getName() + " (" + closed + ")");
if(closed)
return;
new PacketInterceptor(e.getPlayer());
@@ -118,6 +130,8 @@ public class TinyProtocol implements Listener {
}
public final void close() {
plugin.getLogger().log(Level.INFO, "Closing PacketInterceptor", new Exception("Stacktrace"));
if(closed)
return;
closed = true;
@@ -146,10 +160,10 @@ public class TinyProtocol implements Listener {
private PacketInterceptor(Player player) {
this.player = player;
channel = getChannel.get(connections.stream().filter(connection -> player.getUniqueId().equals(getUUID.get(connection))).findAny().orElseThrow(() -> {
channel = connections.stream().filter(connection -> player.getUniqueId().equals(getUUID.get(connection))).map(getChannel::get).filter(Channel::isActive).findAny().orElseThrow(() -> {
Bukkit.getScheduler().runTask(plugin, () -> player.kickPlayer("Connection failure."));
return new SecurityException("Could not find channel for player " + player.getName());
}));
});
if(!channel.isActive())
return;
@@ -157,14 +171,15 @@ public class TinyProtocol implements Listener {
synchronized (playerInterceptors) {
playerInterceptors.put(player, this);
}
plugin.getLogger().info("Adding Techhider for: " + player.getName());
try {
channel.pipeline().addBefore("packet_handler", HANDLER_NAME, this);
} catch (IllegalArgumentException e) {
} catch (IllegalArgumentException | NoSuchElementException e) {
Bukkit.getScheduler().runTask(plugin, () -> player.kickPlayer("Connection failure."));
throw new SecurityException(e);
}
}
}
private void sendPacket(Object packet) {
channel.pipeline().writeAndFlush(packet);