Сборка сервера
Create: Simulated (входит в Create Aeronautics) 1.3.0

Create: Simulated 1.3.0 — NPE в RopeStrandHolderBehavior (краш трекинга верёвок)

Minecraft 1.21.1 NeoForge 21.1.228+ Клиент и сервер (краш — на стороне сервера) Обновлено 13.07.2026

Если ваш краш-лог содержит одну из этих строк — вы на верной странице:

Основная ошибка
java.lang.NullPointerException: Cannot invoke
"dev.simulated_team.simulated.content.blocks.rope.strand.server.ServerRopeStrand.getAttachment(...)"
because "this.ownedServerStrand" is null
	at dev.simulated_team.simulated.content.blocks.rope.RopeStrandHolderBehavior.makeUpdatePacket(RopeStrandHolderBehavior.java:167)
	at dev.simulated_team.simulated.content.blocks.rope.strand.server.ServerRopeTrackingSystem.sendTrackingData(ServerRopeTrackingSystem.java:78)
Скачать фикс Готовый .jar из GitHub Releases — положить в mods/
Скачать последний релиз Исходный код

Причина краша

Каждый тик ServerRopeTrackingSystem.sendTrackingData(int) проходит по активным верёвкам (ServerRopeStrand), которым нужна синхронизация, находит RopeStrandHolderBehavior в точке крепления и, если он найден, сразу собирает и отправляет пакет обновления через makeUpdatePacket().

makeUpdatePacket() четыре раза читает значения прямо с this.ownedServerStrand (getAttachment() дважды, getUUID(), getPoints()) без проверки на null. При рассинхроне жизненного цикла — верёвка всё ещё активна и зарегистрирована в менеджере уровня, но найденный RopeStrandHolderBehavior уже не считает себя её владельцем (похоже на гонку между выгрузкой чанка и разрывом крепления) — ownedServerStrand оказывается null, хотя сам behavior найден. Сервер падает с NullPointerException.

Как работает фикс

В коде уже есть готовый паттерн: если RopeStrandHolderBehavior в точке крепления не найден вовсе — итерация просто пропускается (continue). Фикс через Mixin @ModifyVariable перехватывает эту же переменную сразу после присвоения и принудительно делает её null, если holder.getOwnedStrand() == null — то есть поведение найдено, но сейчас ничего не отслеживает. Дальше отрабатывает уже существующая, проверенная ветка «пропустить эту нить в этом тике» — код отправки пакетов вообще не тронут.

Совместимость и установка

МодCreate: Simulated (входит в Create Aeronautics) 1.3.0 (только эта версия)
Minecraft1.21.1
ЗагрузчикNeoForge 21.1.228+
Куда ставитьКлиент и сервер (краш — на стороне сервера)

Требуется Create: Simulated 1.3.0 (модуль внутри Create Aeronautics / Offroad и других аддонов на его основе). Ставить на клиент и сервер — краш серверный, но при интегрированном (одиночном) сервере тот же код исполняется и на клиенте.

Runes & Rails открыто делится этим и другими фиксами с сообществом Create: Simulated (входит в Create Aeronautics) и Minecraft в целом — исходники и релиз доступны бесплатно, под MIT-лицензией. Ставьте на свой сервер, форкайте, дорабатывайте: репозиторий на GitHub. Все фиксы — на странице «Фиксы крашей».

Ко всем фиксам