From 8d3d757a96d2d6f9849cb0c1d5673d3d29963c04 Mon Sep 17 00:00:00 2001 From: biquaternions Date: Sun, 8 Mar 2026 23:00:57 -0500 Subject: [PATCH] Remove packet collector --- .../features/0019-Add-Flare-Profiler.patch | 20 ----- .../pufferfish/flare/ProfilingManager.java | 14 +--- .../flare/collectors/PacketCollector.java | 76 ------------------- 3 files changed, 1 insertion(+), 109 deletions(-) delete mode 100644 pufferfish-server/src/main/java/gg/pufferfish/pufferfish/flare/collectors/PacketCollector.java diff --git a/pufferfish-server/minecraft-patches/features/0019-Add-Flare-Profiler.patch b/pufferfish-server/minecraft-patches/features/0019-Add-Flare-Profiler.patch index 6619b5d..b9ec71f 100644 --- a/pufferfish-server/minecraft-patches/features/0019-Add-Flare-Profiler.patch +++ b/pufferfish-server/minecraft-patches/features/0019-Add-Flare-Profiler.patch @@ -29,23 +29,3 @@ index e0d8490778399232151c023d4a71e549f2f4c932..cb5efea0c38c369b5403af7c1604c131 // Paper start - Server Tick Events long endTime = System.nanoTime(); long remaining = this.nextTickTimeNanos - endTime; -diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 989ac565c47a70c7947cb7315d0f5c2cfecd0363..c6aa7b4a9d05470a2f7659759fa4d3f2d89300fb 100644 ---- a/net/minecraft/server/players/PlayerList.java -+++ b/net/minecraft/server/players/PlayerList.java -@@ -170,6 +170,7 @@ public abstract class PlayerList { - GameProtocols.SERVERBOUND_TEMPLATE.bind(RegistryFriendlyByteBuf.decorator(this.server.registryAccess()), serverGamePacketListenerImpl), - serverGamePacketListenerImpl - ); -+ gg.pufferfish.pufferfish.flare.ProfilingManager.injectProfilingHandler(player); // Pufferfish - Flare - serverGamePacketListenerImpl.suspendFlushing(); - GameRules gameRules = serverLevel.getGameRules(); - boolean flag = gameRules.get(GameRules.IMMEDIATE_RESPAWN); -@@ -431,6 +432,7 @@ public abstract class PlayerList { - } - public net.kyori.adventure.text.@Nullable Component remove(ServerPlayer player, net.kyori.adventure.text.Component leaveMessage) { - // Paper end - Fix kick event leave message not being sent -+ gg.pufferfish.pufferfish.flare.ProfilingManager.uninjectProfilingHandler(player); // Pufferfish - Flare - ServerLevel serverLevel = player.level(); - player.awardStat(Stats.LEAVE_GAME); - // CraftBukkit start - Quitting must be before we do final save of data, in case plugins need to modify it diff --git a/pufferfish-server/src/main/java/gg/pufferfish/pufferfish/flare/ProfilingManager.java b/pufferfish-server/src/main/java/gg/pufferfish/pufferfish/flare/ProfilingManager.java index ade9fa2..ba06858 100644 --- a/pufferfish-server/src/main/java/gg/pufferfish/pufferfish/flare/ProfilingManager.java +++ b/pufferfish-server/src/main/java/gg/pufferfish/pufferfish/flare/ProfilingManager.java @@ -9,7 +9,6 @@ import gg.pufferfish.pufferfish.PufferfishLogger; import gg.pufferfish.pufferfish.compat.ServerConfigurations; import gg.pufferfish.pufferfish.flare.collectors.GCEventCollector; -import gg.pufferfish.pufferfish.flare.collectors.PacketCollector; import gg.pufferfish.pufferfish.flare.collectors.StatCollector; import gg.pufferfish.pufferfish.flare.collectors.TPSCollector; import gg.pufferfish.pufferfish.flare.collectors.ThreadCollector; @@ -20,7 +19,6 @@ import net.kyori.adventure.text.format.TextColor; import net.kyori.adventure.text.format.TextDecoration; import net.minecraft.server.MinecraftServer; -import net.minecraft.server.level.ServerPlayer; import org.bukkit.Bukkit; import oshi.SystemInfo; import oshi.hardware.CentralProcessor; @@ -118,7 +116,7 @@ public static synchronized boolean start(ProfileType profileType) throws UserRep .withVersion("Minecraft Version", Bukkit.getMinecraftVersion()) .withGraphCategories(CustomCategories.ENTITIES_AND_CHUNKS, CustomCategories.MC_PERF) - .withCollectors(new TPSCollector(), new WorldCountCollector(ProfilingManager::submitToMainThread), new GCEventCollector(), new StatCollector(), new ThreadCollector(), PacketCollector.INSTANCE) + .withCollectors(new TPSCollector(), new WorldCountCollector(ProfilingManager::submitToMainThread), new GCEventCollector(), new StatCollector(), new ThreadCollector()) .withClassIdentifier(PluginLookup::getPluginForClass) .withHardware(new FlareBuilder.HardwareBuilder() @@ -214,16 +212,6 @@ public static void executeMainThreadTasks() { } } - public static void injectProfilingHandler(ServerPlayer player) { - if (ProfilingManager.isProfiling()) { - PacketCollector.INSTANCE.injectProfilingHandler(player); - } - } - - public static void uninjectProfilingHandler(ServerPlayer player) { - PacketCollector.INSTANCE.uninjectProfilingHandler(player); - } - private static void broadcastPrefixed(Component ...lines) { Stream.concat( MinecraftServer.getServer().server.getOnlinePlayers().stream(), diff --git a/pufferfish-server/src/main/java/gg/pufferfish/pufferfish/flare/collectors/PacketCollector.java b/pufferfish-server/src/main/java/gg/pufferfish/pufferfish/flare/collectors/PacketCollector.java deleted file mode 100644 index 12440da..0000000 --- a/pufferfish-server/src/main/java/gg/pufferfish/pufferfish/flare/collectors/PacketCollector.java +++ /dev/null @@ -1,76 +0,0 @@ -package gg.pufferfish.pufferfish.flare.collectors; - -import co.technove.flare.Flare; -import co.technove.flare.live.CollectorData; -import co.technove.flare.live.LiveCollector; -import co.technove.flare.live.formatter.SuffixFormatter; -import gg.pufferfish.pufferfish.flare.CustomCategories; -import io.netty.channel.ChannelDuplexHandler; -import io.netty.channel.ChannelHandler; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelPromise; -import net.minecraft.network.Connection; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.level.ServerPlayer; -import java.time.Duration; -import java.util.concurrent.atomic.AtomicLong; - -public class PacketCollector extends LiveCollector { - - private static final CollectorData OUTBOUND_PACKETS = new CollectorData("flare:network:outpacketcount", "Packets Sent", "Number of packets being sent by the server", new SuffixFormatter("Packet", "Packets"), CustomCategories.MC_PERF); - - public static final PacketCollector INSTANCE = new PacketCollector(); - private static final PacketCounterHandler PACKET_COUNTER = new PacketCounterHandler() ; - - public PacketCollector() { - super(OUTBOUND_PACKETS); - this.interval = Duration.ofSeconds(5); - } - - @Override - public void start(Flare flare) { - for (Connection connection : MinecraftServer.getServer().getConnection().getConnections()) { - connection.channel.pipeline().addLast("flare:packet_counter", PACKET_COUNTER); - } - super.start(flare); - } - - @Override - public void stop(Flare flare) { - for (Connection connection : MinecraftServer.getServer().getConnection().getConnections()) { - if (connection.channel.pipeline().get("flare:packet_counter") != null) { - connection.channel.pipeline().remove("flare:packet_counter"); - } - } - super.stop(flare); - } - - @Override - public void run() { - long outboundPackets = PACKET_COUNTER.outboundPacketCounter.getAndSet(0); - this.report(OUTBOUND_PACKETS, outboundPackets); - } - - @ChannelHandler.Sharable - private static class PacketCounterHandler extends ChannelDuplexHandler { - private final AtomicLong outboundPacketCounter = new AtomicLong(); - - @Override - public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) { - outboundPacketCounter.incrementAndGet(); - ctx.write(msg, promise); - } - - } - - public void injectProfilingHandler(ServerPlayer player) { - player.connection.connection.channel.pipeline().addLast("flare:packet_counter", PACKET_COUNTER); - } - - public void uninjectProfilingHandler(ServerPlayer player) { - if (player.connection.connection.channel.pipeline().get("flare:packet_counter") != null) { - player.connection.connection.channel.pipeline().remove("flare:packet_counter"); - } - } - -}