PulseNet
Серверный мод оптимизации сети для Fabric, использующий пакетную обработку пакетов и другие оптимизации. Полностью совместим с Krypton.
- Загрузчики
- Fabric
- Скачиваний на Modrinth
- 9,4 тыс.
- Подписчиков на Modrinth
- 12
- версии
- 3
- Обновлён
- 17 сентября 202617 сент.
- Опубликован
- в 2026
Коротко о моде
Ставится только на сервер; игрокам ставить не нужно

PulseNet
Сердцебиение высокопроизводительной сети — издание для Fabric от BorisShoes
PulseNet — это мод для Fabric, который приносит высокопроизводительную пакетную обработку пакетов на ваш сервер Minecraft. Заменяя стандартные сбросы сети для каждого пакета на интеллектуальную пакетную обработку, PulseNet снижает накладные расходы системных вызовов и нагрузку на CPU, сохраняя при этом доставку критических пакетов с низкой задержкой.
Обзор проекта
PulseNet — это мод для Fabric, который заменяет стандартный сброс сети для каждого пакета в Minecraft на умную систему пакетной обработки. Исходящие пакеты группируются и сбрасываются вместе, что резко снижает накладные расходы на системные вызовы ядра и планирование задач событийного цикла, при этом бой, чат и другие чувствительные к задержке пакеты остаются мгновенными. Разработан для бесшовной работы вместе с другими модами для Fabric через совместимость с Mixin.
Установка
PulseNet — это серверный мод для Fabric. Поместите его в папку mods/ вместе с Fabric API.
Требования:
- Fabric Loader 0.18.5+
- Fabric API
- Minecraft 26.1+
Java 25+
- Последние сборки: https://modrinth.com/mod/pulsenet
Возможности
| Возможность | Описание |
|---|---|
| Умная пакетная обработка | Группирует исходящие пакеты в пределах тика и сбрасывает их одним системным вызовом ядра вместо одного вызова на пакет. Поддерживает три режима: smart_execution, strict_tick и interval. |
| Очередь записи | Заменяет отправку задач событийного цикла для каждого пакета одной пакетной задачей записи, устраняя аллокации лямбд и накладные расходы на кросс-поточное планирование. |
| Объединение пакетов | Собирает похожие низкоприоритетные пакеты (частицы, звуки) в BundlePacket, снижая количество получаемых клиентом пакетов. |
| Оптимизация взрывов | Обнаруживает массовые изменения блоков от взрывов и заменяет отдельные пакеты обновления блоков на полную пересылку чанка при превышении настраиваемого порога. |
| Классификация пакетов | Автоматически классифицирует пакеты как Critical, Instant, Chat, Ignored или Coalesce — гарантируя, что чувствительные к задержке пакеты (keepalive, disconnect, бой) всегда обходят буфер. Инфраструктурные пакеты Fabric (minecraft:register, minecraft:unregister) обрабатываются на уровне Connection, чтобы предотвратить сбои рукопожатия модов. |
| Метрики в реальном времени | Встроенная система метрик отслеживает логический/физический PPS, пропускную способность, нагрузку на CPU, экономию памяти и эффективность очереди записи. Просмотр через команды или внутриигровой боссбар. |
| Совместимость с Mixin | Использует подход @WrapOperation, который выполняется после всех остальных миксинов (Polymer, серверные переводы и т. д.), обеспечивая полную совместимость с экосистемой модов Fabric. |
| Горячая перезагрузка конфига | Все настройки конфигурируются через pulse.properties и внутриигровые команды (/pulse config, /pulse reload) без необходимости перезапуска. |
Команды
| Команда | Описание |
|---|---|
/pulse | Показывает текущую версию PulseNet. |
/pulse reload | Перезагружает конфигурацию с диска. |
/pulse config | Просмотр и изменение всех настроек конфигурации в игре. |
/pulse netstats [network|cpu|ram|all] | Показывает статистику сети, CPU и памяти в реальном времени. |
/pulse netstats bar | Переключает оверлей боссбара с метриками. |
/pulse netstats reset | Сбрасывает все счётчики метрик в ноль. |
/pulse packetNames | Перечисляет все наблюдаемые имена классов пакетов и ID каналов. |
/pulse packetNames classes | Перечисляет только наблюдаемые имена классов пакетов. |
/pulse packetNames channels | Перечисляет только наблюдаемые ID каналов пользовательских payload. |
/pulse packetNames reset | Очищает списки наблюдаемых имён пакетов. |
Команды конфигурации
Следующие команды позволяют менять настройки в файле pulse.properties без перезапуска сервера (после выполнения этих команд используйте /pulse reload для применения изменений на лету). К команде можно добавить значение, чтобы задать настройку, или использовать её без значения, чтобы посмотреть текущее значение.
/pulse config batchingEnabledГлавный переключатель системы умной пакетной обработки пакетов. Если true, исходящие пакеты буферизуются и отправляются пакетами, а не по отдельности. (по умолчанию: true)/pulse config batchingModeРежим пакетной обработки: smart_execution (отправка на тике + лимиты), strict_tick (отправка только в конце тика), interval (отправка по таймеру). (по умолчанию: smart_execution)/pulse config batchingMaxBatchSizeМаксимальное количество пакетов в буфере до принудительной отправки. (по умолчанию: 1024)/pulse config batchingMaxBatchBytesМаксимальное количество байт в буфере до принудительной отправки. (по умолчанию: 32000)/pulse config batchingFlushIntervalИнтервал в миллисекундах для режима пакетной обработки INTERVAL. (по умолчанию: 25)/pulse config batchingSafetyMarginBytesЗапас безопасности в байтах, вычитаемый из лимита максимального размера пакета для предотвращения переполнения. (по умолчанию: 64)/pulse config batchingInstantPacketsСписок имён классов пакетов, которые должны немедленно отправлять буфер при отправке. (по умолчанию: ClientboundHurtAnimationPacket, ClientboundDamageEventPacket, ClientboundBlockEntityDataPacket)/pulse config batchingIgnoredPacketsСписок имён классов пакетов, которые всегда должны полностью обходить буфер. (по умолчанию: [])/pulse config batchingInstantChannelsСписок ID каналов плагинов (например,axiom:hello), чьи пакеты с пользовательской полезной нагрузкой должны немедленно отправлять буфер при отправке. Используйте/pulse packetNames channelsдля поиска ID каналов. (по умолчанию: [])/pulse config batchingIgnoredChannelsСписок ID каналов плагинов, чьи пакеты с пользовательской полезной нагрузкой всегда должны полностью обходить буфер. Используйте/pulse packetNames channelsдля поиска ID каналов. Примечание:minecraft:registerиminecraft:unregisterобрабатываются на уровне Connection и всегда обходят буфер независимо от этого списка. (по умолчанию: [])/pulse config batchingChatPacketsBypassЕсли true, пакеты, связанные с чатом, обходят буфер для мгновенной доставки. (по умолчанию: true)/pulse config batchingOffThreadBypassЕсли true, пакеты, отправленные не из потока сервера, обходят буфер. (по умолчанию: true)/pulse config batchingWriteQueueЕсли true, буферизованные пакеты ставятся в очередь и записываются одной задачей в цикле событий вместо вызова Connection.send() для каждого пакета, что устраняет лямбда-аллокации на каждый пакет и планирование задач между потоками. (по умолчанию: true)/pulse config batchingPacketCoalescingЕсли true, пакеты из списка объединения собираются вместе в BundlePackets при отправке, уменьшая количество пакетов, получаемых клиентом. (по умолчанию: true)/pulse config batchingCoalescePacketsСписок имён классов пакетов для объединения в BundlePackets (например, частицы, звуки). Поддерживает внутренние классы через точечный синтаксис (Foo.Bar). (по умолчанию: ClientboundLevelParticlesPacket, ClientboundSoundPacket, ClientboundSoundEntityPacket)/pulse config batchingCoalesceBundleLimitМаксимальное количество подпакетов в одном BundlePacket. Ванильный клиент накладывает жёсткий лимит в 4096. (по умолчанию: 4000)/pulse config optExplosionsEnabledЕсли true, обновления блоков от взрывов группируются по чанкам и заменяются полной пересылкой чанка, если превышают порог. (по умолчанию: true)/pulse config optExplosionsBlockChangeThresholdКоличество изменений блоков в одном чанке, необходимое для запуска полной пересылки чанка вместо отдельных обновлений. (по умолчанию: 512)/pulse config optExplosionsLogOptimizationsЕсли true, записывает сообщение каждый раз, когда оптимизация взрывов заменяет обновления блоков пересылкой чанка. (по умолчанию: false)/pulse config metricsEnabledЕсли true, система сбора метрик активна и вычисляет сетевую статистику. (по умолчанию: true)/pulse config metricsUpdateIntervalКак часто (в секундах) система метрик пересчитывает производную статистику. (по умолчанию: 1)/pulse config metricsModuleNetworkВключает модуль сетевых метрик (PPS, пропускная способность). (по умолчанию: true)/pulse config metricsModuleCpuВключает модуль метрик CPU (оценка использования CPU процессом). (по умолчанию: true)/pulse config metricsModuleMemoryВключает модуль метрик памяти (оценка сохранённых аллокаций). (по умолчанию: true)/pulse config metricsModuleWriteQueueВключает модуль метрик очереди записи (отслеживание экономии задач в цикле событий). (по умолчанию: true)
Permission Nodes
PulseNet использует Fabric Permissions API для прав на команды. У каждого узла есть запасной ванильный уровень прав для серверов без мода на права.
Общие
| Узел | По умолчанию | Описание |
|---|---|---|
pulsenet.pulse | ALL | Доступ к базовой команде /pulse (показывает версию) |
pulsenet.reload | GAMEMASTERS | Перезагрузить файл конфигурации PulseNet |
pulsenet.netstats | GAMEMASTERS | Просмотр статистики сети, CPU и памяти |
pulsenet.netstats.bar | GAMEMASTERS | Переключить оверлей с боссбаром метрик |
pulsenet.netstats.reset | GAMEMASTERS | Сбросить все счётчики метрик в ноль |
pulsenet.packetnames | GAMEMASTERS | Показать список наблюдаемых имён классов пакетов и ID каналов |
Конфигурация
Команды конфигурации генерируются динамически для каждого значения конфига. `ниже соответствует ключу конфига в camelCase (например,batchingEnabled, metricsUpdateInterval`).
| Узел | По умолчанию | Описание |
|---|---|---|
pulsenet.config | GAMEMASTERS | Показать все значения конфига |
| `pulsenet.config..get` | GAMEMASTERS | Прочитать конкретное значение конфига |
| `pulsenet.config..set` | GAMEMASTERS | Изменить конкретное значение конфига |
Попробуйте мои другие моды!
Все моды — серверные для Fabric, установка на клиент не требуется.
|
| Fabric Trade | Добавляет /trade — безопасный интерфейс обмена между игроками. |
| |
| Limited AFK | Определение и управление AFK с настраиваемыми порогами кика для серверов. |
| |
| Links in Chat | Делает ссылки, отправленные в чат, кликабельными. |
|
Поддержка и вклад
PulseNet — проект с открытым исходным кодом от PulseMC. Мы рады вкладу в оптимизации, связанные с Netty, Mixin и протоколами.
- Discord Pulse: Присоединяйтесь к нашему сообществу
- Discord Бориса: Discord по моддингу от Бориса
- Проблемы: Сообщить об ошибках на GitHub
Частые вопросы
Как установить PulseNet?
Установите Fabric под свою версию Minecraft, скачайте PulseNet под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть PulseNet?
У PulseNet есть сборки для Minecraft 26.1–26.3.
Нужен ли PulseNet на сервере?
Ставится только на сервер; игрокам ставить не нужно