跳到正文

PulseNet

作者:PulseMC

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

收藏

介绍

中文介绍正在准备中,下面暂时显示原文。
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 |
|:————————————————————————————————————–:|————————–|———————————————————————————————————–|—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————-|
| | Arcana Novum | Minecraft’s biggest server-only full-feature Magic Mod! Adds powerful items, multiblocks and bosses! | GitHub Modrinth CurseForge |
| | Ancestral Archetypes | A highly configurable, Origins-style mod that lets players pick a mob to gain unique abilities! | GitHub Modrinth CurseForge |
| | Ender Nexus | Highly configurable /home, /spawn, /warp, /tpa and /rtp commands all in one, and individually disablable. | GitHub Modrinth CurseForge |
| | Fabric Mail | An in-game virtual mailbox system for sending packages and messages between online and offline players. | GitHub Modrinth CurseForge |
| | Fabric Trade | Adds /trade, a secure player-to-player trading interface. | GitHub Modrinth CurseForge |
| | Limited AFK | AFK detection and management with configurable kick thresholds for servers. | GitHub Modrinth CurseForge |
| | 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 支持哪些 Minecraft 版本?

PulseNet 支持 Minecraft Java 版 26.1–26.3,共 5 个版本,可用的加载器:Fabric。下载时注意选择和你游戏版本一致的文件。

PulseNet 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:客户端和服务端都要装。

评论

登录后评论和评分