PulseNet

Quick rating

PulseNet

No reviews yet

A server-sided fabric networking optimization mod that uses packet batching and other optimizations. Fully compatible with Krypton.

QoL & Tweaks
Performance & Optimization
Mod Loaders
Fabric
Minecraft
26.2

Community voices

Reviews

Versions
Loading versions…
Match includes

Click once to include, again to exclude, again to clear

Rating Any
Any 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
Min
Max
Play Status
Reviews
Time Played
hrs+
Verified developers only
Has developer response
List view
Grid view
Compact view
Sort by
Date
Rating
Helpful
Unhelpful
Edited
Sort ascending
Delete this review?

This removes your review from the project. You can write a new review after.

Review submitted for moderation

Your review has been sent to moderators, who will check that it meets our guidelines before it appears publicly.

No reviews yet. Be the first to review this project!

Get it on

Available Platforms

Compatibility

Supported Environments

Dev Environment
Client Unsupported
Server Required

About

Project Details

Type
Mod
License
Open Software License 3.0
Latest Version
pulsenet-1.1.0+26.2.jar
Authors
CurseForge

For authors

Embed Badge

If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.

Custom banner text
ModDex rating badge preview

Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.

Identifiers

Platform IDs

CurseForge ID
Modrinth ID

Resources

External Links

Source Issues Wiki Discord

About

Description

PulseNet Banner

PulseNet

The Heartbeat of High-Performance Networking - Fabric Edition by BorisShoes

PulseNet is a Fabric mod that brings high-performance packet batching to your Minecraft server. By replacing standard per-packet network flushes with intelligent batching, PulseNet reduces system call overhead and CPU usage while maintaining low-latency delivery of critical packets.

Website Discord

Project Overview

PulseNet is a Fabric mod that replaces Minecraft's default per-packet network flushing with a smart batching system. Outgoing packets are grouped and flushed together, drastically reducing kernel syscall overhead and event loop task scheduling while keeping combat, chat, and other latency-sensitive packets instant. Designed to work seamlessly alongside other Fabric mods via Mixin compatibility.


Installation

PulseNet is a server-side Fabric mod. Drop it into your mods/ folder alongside Fabric API.

Requirements:


Features

Feature Description
Smart Packet Batching Groups outgoing packets within a tick and flushes them in a single kernel syscall instead of one per packet. Supports three modes: smart_execution, strict_tick, and interval.
Write Queue Replaces per-packet event loop task submissions with a single batched write task, eliminating lambda allocations and cross-thread scheduling overhead.
Packet Coalescing Bundles similar low-priority packets (particles, sounds) into BundlePackets, reducing the client's received packet count.
Explosion Optimization Detects mass block changes from explosions and replaces individual block update packets with a full chunk resend when a configurable threshold is exceeded.
Packet Classification Automatically classifies packets as Critical, Instant, Chat, Ignored, or Coalesce — ensuring latency-sensitive packets (keepalive, disconnect, combat) always bypass the buffer. Fabric infrastructure packets (minecraft:register, minecraft:unregister) are handled at the Connection level to prevent mod handshake failures.
Real-Time Metrics Built-in metrics system tracking logical/physical PPS, bandwidth, CPU usage, memory savings, and write queue efficiency. Viewable via commands or an in-game boss bar.
Mixin Compatibility Uses a @WrapOperation approach that runs after all other mixins (Polymer, server-side translations, etc.), ensuring full compatibility with the Fabric mod ecosystem.
Hot-Reloadable Config All settings are configurable via pulse.properties and in-game commands (/pulse config, /pulse reload) with no restart required.

Commands

Command Description
/pulse Displays the current PulseNet version.
/pulse reload Reloads the configuration from disk.
/pulse config View and modify all configuration settings in-game.
/pulse netstats [network\|cpu\|ram\|all] Displays real-time network, CPU, and memory statistics.
/pulse netstats bar Toggles the metrics boss bar overlay.
/pulse netstats reset Resets all metrics counters to zero.
/pulse packetNames Lists all observed packet class names and channel IDs.
/pulse packetNames classes Lists only observed packet class names.
/pulse packetNames channels Lists only observed custom payload channel IDs.
/pulse packetNames reset Clears the observed packet name lists.

Config Commands

The following commands can be used to adjust configurable settings in the pulse.properties file without a server reboot (Use /pulse reload after running these commands to hotswap changes). These commands can be suffixed with a value to set the setting, or used without a value to view the current setting.

  • /pulse config batchingEnabled Master toggle for the smart packet batching system. When true, outgoing packets are buffered and flushed in batches instead of individually. (default: true)
  • /pulse config batchingMode Batching mode: smart_execution (flush on tick + limits), strict_tick (flush only on tick end), interval (flush on a timer). (default: smart_execution)
  • /pulse config batchingMaxBatchSize Maximum number of packets to buffer before forcing a flush. (default: 1024)
  • /pulse config batchingMaxBatchBytes Maximum bytes to buffer before forcing a flush. (default: 32000)
  • /pulse config batchingFlushInterval Interval in milliseconds for the INTERVAL batching mode. (default: 25)
  • /pulse config batchingSafetyMarginBytes Safety margin in bytes subtracted from the max batch bytes limit to prevent overflow. (default: 64)
  • /pulse config batchingInstantPackets List of packet class names that should flush the buffer immediately when sent. (default: ClientboundHurtAnimationPacket, ClientboundDamageEventPacket, ClientboundBlockEntityDataPacket)
  • /pulse config batchingIgnoredPackets List of packet class names that should always bypass the buffer entirely. (default: [])
  • /pulse config batchingInstantChannels List of plugin channel IDs (e.g. axiom:hello) whose custom payload packets should flush the buffer immediately when sent. Use /pulse packetNames channels to discover channel IDs. (default: [])
  • /pulse config batchingIgnoredChannels List of plugin channel IDs whose custom payload packets should always bypass the buffer entirely. Use /pulse packetNames channels to discover channel IDs. Note: minecraft:register and minecraft:unregister are handled at the Connection level and always bypass the buffer regardless of this list. (default: [])
  • /pulse config batchingChatPacketsBypass When true, chat-related packets bypass the buffer for instant delivery. (default: true)
  • /pulse config batchingOffThreadBypass When true, packets sent from off the server thread bypass the buffer. (default: true)
  • /pulse config batchingWriteQueue When true, buffered packets are queued and written in a single event loop task instead of calling Connection.send() per packet, eliminating per-packet lambda allocations and cross-thread task scheduling. (default: true)
  • /pulse config batchingPacketCoalescing When true, packets in the coalesce list are bundled together into BundlePackets on flush, reducing the client's received packet count. (default: true)
  • /pulse config batchingCoalescePackets List of packet class names to coalesce into BundlePackets (e.g. particles, sounds). Supports inner classes with dot syntax (Foo.Bar). (default: ClientboundLevelParticlesPacket, ClientboundSoundPacket, ClientboundSoundEntityPacket)
  • /pulse config batchingCoalesceBundleLimit Maximum number of sub-packets per BundlePacket. Vanilla client enforces a hard limit of 4096. (default: 4000)
  • /pulse config optExplosionsEnabled When true, block updates from explosions are grouped by chunk and replaced with full chunk resends if they exceed the threshold. (default: true)
  • /pulse config optExplosionsBlockChangeThreshold Number of block changes in a single chunk required to trigger a full chunk resend instead of individual updates. (default: 512)
  • /pulse config optExplosionsLogOptimizations When true, logs a message each time the explosion optimization replaces block updates with a chunk resend. (default: false)
  • /pulse config metricsEnabled When true, the metrics collection system is active and computes network statistics. (default: true)
  • /pulse config metricsUpdateInterval How often (in seconds) the metrics system recomputes derived statistics. (default: 1)
  • /pulse config metricsModuleNetwork Enables the network metrics module (PPS, bandwidth). (default: true)
  • /pulse config metricsModuleCpu Enables the CPU metrics module (process CPU usage estimation). (default: true)
  • /pulse config metricsModuleMemory Enables the memory metrics module (saved allocation estimation). (default: true)
  • /pulse config metricsModuleWriteQueue Enables the write queue metrics module (event loop task savings tracking). (default: true)

Permission Nodes

PulseNet uses the Fabric Permissions API for command permissions. Each node has a fallback vanilla permission level for servers without a permissions mod.

General

Node Default Description
pulsenet.pulse ALL Access the /pulse base command (shows version)
pulsenet.reload GAMEMASTERS Reload the PulseNet config file
pulsenet.netstats GAMEMASTERS View network, CPU, and memory statistics
pulsenet.netstats.bar GAMEMASTERS Toggle the metrics boss bar overlay
pulsenet.netstats.reset GAMEMASTERS Reset all metrics counters to zero
pulsenet.packetnames GAMEMASTERS List observed packet class names and channel IDs

Config

Config commands are generated dynamically per config value. The <name> below corresponds to the camelCase config key (e.g. batchingEnabled, metricsUpdateInterval).

Node Default Description
pulsenet.config GAMEMASTERS List all config values
pulsenet.config.<name>.get GAMEMASTERS Read a specific config value
pulsenet.config.<name>.set GAMEMASTERS Change a specific config value

Try My Other Mods!

All server-side Fabric mods — no client installation required.

Mod Description Links
e6ce366187de25be0efc7ecc736fc27f05452888_96.webp Arcana Novum Minecraft's biggest server-only full-feature Magic Mod! Adds powerful items, multiblocks and bosses! GitHub Modrinth CurseForge
c6c224a3d8068cfb9b054e2a03eb9704906dd8cb_96.webp Ancestral Archetypes A highly configurable, Origins-style mod that lets players pick a mob to gain unique abilities! GitHub Modrinth CurseForge
b35cbf33da842f170d0aa562033aaddc2a9ab653_96.webp Ender Nexus Highly configurable /home, /spawn, /warp, /tpa and /rtp commands all in one, and individually disablable. GitHub Modrinth CurseForge
dae01789d609498b8f1637ab31d8fe20b6108020_96.webp Fabric Mail An in-game virtual mailbox system for sending packages and messages between online and offline players. GitHub Modrinth CurseForge
028062616fc2fb729afdbdc697d60f93ff61a918_96.webp Fabric Trade Adds /trade, a secure player-to-player trading interface. GitHub Modrinth CurseForge
a401b9bf08c33d85c907025d6689c657b5168508_96.webp Limited AFK AFK detection and management with configurable kick thresholds for servers. GitHub Modrinth CurseForge
97afbda2e56c3f14e04d0f9e0e1fe99db6bd2f27_96.webp Links in Chat Makes URLs posted in chat clickable. GitHub Modrinth CurseForge

Support and Contributions

PulseNet is an open-source project by PulseMC. We welcome contributions regarding Netty, Mixin, and protocol-level optimizations.


PulseNet: The Heartbeat of High-Performance Networking.
PulseNet Banner

PulseNet

The Heartbeat of High-Performance Networking - Fabric Edition by BorisShoes

PulseNet is a Fabric mod that brings high-performance packet batching to your Minecraft server. By replacing standard per-packet network flushes with intelligent batching, PulseNet reduces system call overhead and CPU usage while maintaining low-latency delivery of critical packets.

Website Discord

Project Overview

PulseNet is a Fabric mod that replaces Minecraft's default per-packet network flushing with a smart batching system. Outgoing packets are grouped and flushed together, drastically reducing kernel syscall overhead and event loop task scheduling while keeping combat, chat, and other latency-sensitive packets instant. Designed to work seamlessly alongside other Fabric mods via Mixin compatibility.


Installation

PulseNet is a server-side Fabric mod. Drop it into your mods/ folder alongside Fabric API.

Requirements:


Features

Feature Description
Smart Packet Batching Groups outgoing packets within a tick and flushes them in a single kernel syscall instead of one per packet. Supports three modes: smart_execution, strict_tick, and interval.
Write Queue Replaces per-packet event loop task submissions with a single batched write task, eliminating lambda allocations and cross-thread scheduling overhead.
Packet Coalescing Bundles similar low-priority packets (particles, sounds) into BundlePackets, reducing the client's received packet count.
Explosion Optimization Detects mass block changes from explosions and replaces individual block update packets with a full chunk resend when a configurable threshold is exceeded.
Packet Classification Automatically classifies packets as Critical, Instant, Chat, Ignored, or Coalesce — ensuring latency-sensitive packets (keepalive, disconnect, combat) always bypass the buffer. Fabric infrastructure packets (minecraft:register, minecraft:unregister) are handled at the Connection level to prevent mod handshake failures.
Real-Time Metrics Built-in metrics system tracking logical/physical PPS, bandwidth, CPU usage, memory savings, and write queue efficiency. Viewable via commands or an in-game boss bar.
Mixin Compatibility Uses a @WrapOperation approach that runs after all other mixins (Polymer, server-side translations, etc.), ensuring full compatibility with the Fabric mod ecosystem.
Hot-Reloadable Config All settings are configurable via pulse.properties and in-game commands (/pulse config, /pulse reload) with no restart required.

Commands

Command Description
/pulse Displays the current PulseNet version.
/pulse reload Reloads the configuration from disk.
/pulse config View and modify all configuration settings in-game.
/pulse netstats [network|cpu|ram|all] Displays real-time network, CPU, and memory statistics.
/pulse netstats bar Toggles the metrics boss bar overlay.
/pulse netstats reset Resets all metrics counters to zero.
/pulse packetNames Lists all observed packet class names and channel IDs.
/pulse packetNames classes Lists only observed packet class names.
/pulse packetNames channels Lists only observed custom payload channel IDs.
/pulse packetNames reset Clears the observed packet name lists.

Config Commands

The following commands can be used to adjust configurable settings in the pulse.properties file without a server reboot (Use /pulse reload after running these commands to hotswap changes). These commands can be suffixed with a value to set the setting, or used without a value to view the current setting.

  • /pulse config batchingEnabled Master toggle for the smart packet batching system. When true, outgoing packets are buffered and flushed in batches instead of individually. (default: true)
  • /pulse config batchingMode Batching mode: smart_execution (flush on tick + limits), strict_tick (flush only on tick end), interval (flush on a timer). (default: smart_execution)
  • /pulse config batchingMaxBatchSize Maximum number of packets to buffer before forcing a flush. (default: 1024)
  • /pulse config batchingMaxBatchBytes Maximum bytes to buffer before forcing a flush. (default: 32000)
  • /pulse config batchingFlushInterval Interval in milliseconds for the INTERVAL batching mode. (default: 25)
  • /pulse config batchingSafetyMarginBytes Safety margin in bytes subtracted from the max batch bytes limit to prevent overflow. (default: 64)
  • /pulse config batchingInstantPackets List of packet class names that should flush the buffer immediately when sent. (default: ClientboundHurtAnimationPacket, ClientboundDamageEventPacket, ClientboundBlockEntityDataPacket)
  • /pulse config batchingIgnoredPackets List of packet class names that should always bypass the buffer entirely. (default: [])
  • /pulse config batchingInstantChannels List of plugin channel IDs (e.g. axiom:hello) whose custom payload packets should flush the buffer immediately when sent. Use /pulse packetNames channels to discover channel IDs. (default: [])
  • /pulse config batchingIgnoredChannels List of plugin channel IDs whose custom payload packets should always bypass the buffer entirely. Use /pulse packetNames channels to discover channel IDs. Note: minecraft:register and minecraft:unregister are handled at the Connection level and always bypass the buffer regardless of this list. (default: [])
  • /pulse config batchingChatPacketsBypass When true, chat-related packets bypass the buffer for instant delivery. (default: true)
  • /pulse config batchingOffThreadBypass When true, packets sent from off the server thread bypass the buffer. (default: true)
  • /pulse config batchingWriteQueue When true, buffered packets are queued and written in a single event loop task instead of calling Connection.send() per packet, eliminating per-packet lambda allocations and cross-thread task scheduling. (default: true)
  • /pulse config batchingPacketCoalescing When true, packets in the coalesce list are bundled together into BundlePackets on flush, reducing the client's received packet count. (default: true)
  • /pulse config batchingCoalescePackets List of packet class names to coalesce into BundlePackets (e.g. particles, sounds). Supports inner classes with dot syntax (Foo.Bar). (default: ClientboundLevelParticlesPacket, ClientboundSoundPacket, ClientboundSoundEntityPacket)
  • /pulse config batchingCoalesceBundleLimit Maximum number of sub-packets per BundlePacket. Vanilla client enforces a hard limit of 4096. (default: 4000)
  • /pulse config optExplosionsEnabled When true, block updates from explosions are grouped by chunk and replaced with full chunk resends if they exceed the threshold. (default: true)
  • /pulse config optExplosionsBlockChangeThreshold Number of block changes in a single chunk required to trigger a full chunk resend instead of individual updates. (default: 512)
  • /pulse config optExplosionsLogOptimizations When true, logs a message each time the explosion optimization replaces block updates with a chunk resend. (default: false)
  • /pulse config metricsEnabled When true, the metrics collection system is active and computes network statistics. (default: true)
  • /pulse config metricsUpdateInterval How often (in seconds) the metrics system recomputes derived statistics. (default: 1)
  • /pulse config metricsModuleNetwork Enables the network metrics module (PPS, bandwidth). (default: true)
  • /pulse config metricsModuleCpu Enables the CPU metrics module (process CPU usage estimation). (default: true)
  • /pulse config metricsModuleMemory Enables the memory metrics module (saved allocation estimation). (default: true)
  • /pulse config metricsModuleWriteQueue Enables the write queue metrics module (event loop task savings tracking). (default: true)

Permission Nodes

PulseNet uses the Fabric Permissions API for command permissions. Each node has a fallback vanilla permission level for servers without a permissions mod.

General

Node Default Description
pulsenet.pulse ALL Access the /pulse base command (shows version)
pulsenet.reload GAMEMASTERS Reload the PulseNet config file
pulsenet.netstats GAMEMASTERS View network, CPU, and memory statistics
pulsenet.netstats.bar GAMEMASTERS Toggle the metrics boss bar overlay
pulsenet.netstats.reset GAMEMASTERS Reset all metrics counters to zero
pulsenet.packetnames GAMEMASTERS List observed packet class names and channel IDs

Config

Config commands are generated dynamically per config value. The <name> below corresponds to the camelCase config key (e.g. batchingEnabled, metricsUpdateInterval).

Node Default Description
pulsenet.config GAMEMASTERS List all config values
pulsenet.config.<name>.get GAMEMASTERS Read a specific config value
pulsenet.config.<name>.set GAMEMASTERS Change a specific config value

Try My Other Mods!

All server-side Fabric mods — no client installation required.

Mod Description Links
e6ce366187de25be0efc7ecc736fc27f05452888_96.webp Arcana Novum Minecraft's biggest server-only full-feature Magic Mod! Adds powerful items, multiblocks and bosses! GitHub Modrinth CurseForge
c6c224a3d8068cfb9b054e2a03eb9704906dd8cb_96.webp Ancestral Archetypes A highly configurable, Origins-style mod that lets players pick a mob to gain unique abilities! GitHub Modrinth CurseForge
b35cbf33da842f170d0aa562033aaddc2a9ab653_96.webp Ender Nexus Highly configurable /home, /spawn, /warp, /tpa and /rtp commands all in one, and individually disablable. GitHub Modrinth CurseForge
dae01789d609498b8f1637ab31d8fe20b6108020_96.webp Fabric Mail An in-game virtual mailbox system for sending packages and messages between online and offline players. GitHub Modrinth CurseForge
028062616fc2fb729afdbdc697d60f93ff61a918_96.webp Fabric Trade Adds /trade, a secure player-to-player trading interface. GitHub Modrinth CurseForge
a401b9bf08c33d85c907025d6689c657b5168508_96.webp Limited AFK AFK detection and management with configurable kick thresholds for servers. GitHub Modrinth CurseForge
97afbda2e56c3f14e04d0f9e0e1fe99db6bd2f27_96.webp Links in Chat Makes URLs posted in chat clickable. GitHub Modrinth CurseForge

Support and Contributions

PulseNet is an open-source project by PulseMC. We welcome contributions regarding Netty, Mixin, and protocol-level optimizations.


PulseNet: The Heartbeat of High-Performance Networking.

Screenshots

Gallery

This project has no gallery images yet.

Versions

Files

Relations

Project Relations

More like this

Similar Mods

Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.

On ModDex

Community snapshot

0
Ratings
0
Followers
0
In stacks

By the numbers

Statistics

~3,000
Total Downloads
CurseForge
<1,000
Modrinth
~2,000
Last Updated
CurseForge
Created
CurseForge
Modrinth
Last synced
When ModDex last fetched this project from CurseForge or Modrinth. Every project is re-checked on a schedule, and any project that ships a new file is synced automatically within hours of the release.
New file updates sync automatically
How syncing works