НАЖМИ, чтобы запустить свой Сервер Майнкрафт + 8🎁
modМоды/StackDeobfuscator
StackDeobfuscator

StackDeobfuscator

Технический Fabric-мод для Minecraft, который заменяет нечитаемые имена классов и методов в логах и crash report на понятные Yarn, Quilt или Mojang mappings.

Оцените первым
Открыть в FateLauncher
7.8M
196

Что делает StackDeobfuscator

StackDeobfuscator - технический Fabric-мод для Minecraft Java Edition, предназначенный для разработчиков модов и владельцев тестовых серверов. Он автоматически заменяет обфусцированные имена классов и методов в логах, ошибках и crash report на читаемые названия из Yarn, Quilt или Mojang mappings.

Без такого инструмента Minecraft часто показывает что-то вроде net.minecraft.class_310. По этой строке сложно понять, какой именно участок игры вызвал сбой. StackDeobfuscator превращает ее в понятное имя, например net.minecraft.client.MinecraftClient, поэтому причину ошибки можно искать намного быстрее.

Геймплей мод не меняет. Новые блоки, предметы, мобы или механики он не добавляет. Его задача уже и практичнее: сделать диагностику Minecraft понятной за пределами среды разработки. Это особенно полезно при тестировании сборки модов, запуске клиента с большим количеством дополнений и поиске причины падения на сервере.

Зачем нужен этот мод

В production-сборке Minecraft имена классов и методов обычно обфусцированы. В результате обычный crash report выглядит как длинный список class_ и method_, а разработчику приходится вручную сопоставлять их с mappings.

StackDeobfuscator выполняет это преобразование автоматически:

  • заменяет нечитаемые имена классов на понятные названия;
  • расшифровывает имена методов в stack trace;
  • обрабатывает ошибки, выведенные в консоль;
  • изменяет crash report, чтобы его было проще анализировать;
  • использует выбранные Yarn, Quilt или Mojang mappings;
  • загружает и разбирает mappings асинхронно, не блокируя запуск игры.

На практике это экономит время при разборе конфликтов между модами. Вместо поиска по условному class_309.method_1474 можно сразу увидеть, что ошибка связана с обработчиком клавиатуры или другим конкретным компонентом Minecraft.

Как выглядит результат

Ниже показана разница между обычным обфусцированным stack trace и отчетом после обработки StackDeobfuscator.

До установки

[23:13:08] [Render thread/ERROR]: Reported exception thrown!
net.minecraft.class_148: Manually triggered debug crash
         at net.minecraft.class_309.method_1474(class_309.java:509) ~[client-intermediary.jar:?]
         at net.minecraft.class_310.method_1574(class_310.java:1955) ~[client-intermediary.jar:?]
         at net.minecraft.class_310.method_1523(class_310.java:1180) ~[client-intermediary.jar:?]
         at net.minecraft.class_310.method_1514(class_310.java:801) ~[client-intermediary.jar:?]
         at net.minecraft.client.main.Main.main(Main.java:237) ~[minecraft-1.19.4-client.jar:?]
         at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:462) ~[fabric-loader-0.14.18.jar:?]
         at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) ~[fabric-loader-0.14.18.jar:?]
         at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) ~[fabric-loader-0.14.18.jar:?]
         at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:88) ~[NewLaunch.jar:?]
         at org.prismlauncher.EntryPoint.listen(EntryPoint.java:126) ~[NewLaunch.jar:?]
         at org.prismlauncher.EntryPoint.main(EntryPoint.java:71) ~[NewLaunch.jar:?]
Caused by: java.lang.Throwable: Manually triggered debug crash
         at net.minecraft.class_309.method_1474(class_309.java:506) ~[client-intermediary.jar:?]
         ... 10 more

После обработки через Yarn или Quilt mappings

[23:11:25] [Render thread/ERROR]: Reported exception thrown!
net.minecraft.util.crash.CrashException: Manually triggered debug crash
         at net.minecraft.client.Keyboard.pollDebugCrash(Keyboard.java:509) ~[client-intermediary.jar:?]
         at net.minecraft.client.MinecraftClient.tick(MinecraftClient.java:1955) ~[client-intermediary.jar:?]
         at net.minecraft.client.MinecraftClient.render(MinecraftClient.java:1180) ~[client-intermediary.jar:?]
         at net.minecraft.client.MinecraftClient.run(MinecraftClient.java:801) ~[client-intermediary.jar:?]
         at net.minecraft.client.main.Main.main(Main.java:237) ~[minecraft-1.19.4-client.jar:?]
         at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:462) ~[fabric-loader-0.14.18.jar:?]
         at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) ~[fabric-loader-0.14.18.jar:?]
         at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) ~[fabric-loader-0.14.18.jar:?]
         at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:88) ~[NewLaunch.jar:?]
         at net.prismlauncher.EntryPoint.listen(EntryPoint.java:126) ~[NewLaunch.jar:?]
         at net.prismlauncher.EntryPoint.main(EntryPoint.java:71) ~[NewLaunch.jar:?]
Caused by: java.lang.Throwable: Manually triggered debug crash
         at net.minecraft.client.Keyboard.pollDebugCrash(Keyboard.java:506) ~[client-intermediary.jar:?]
         ... 10 more

После обработки через Mojang mappings

[23:04:12] [Render thread/ERROR]: Reported exception thrown!
net.minecraft.ReportedException: Manually triggered debug crash
         at net.minecraft.client.KeyboardHandler.tick(KeyboardHandler.java:509) ~[client-intermediary.jar:?]
         at net.minecraft.client.Minecraft.tick(Minecraft.java:1955) ~[client-intermediary.jar:?]
         at net.minecraft.client.Minecraft.runTick(Minecraft.java:1180) ~[client-intermediary.jar:?]
         at net.minecraft.client.Minecraft.run(Minecraft.java:801) ~[client-intermediary.jar:?]
         at net.minecraft.client.main.Main.main(Main.java:237) ~[minecraft-1.19.4-client.jar:?]
         at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:462) ~[fabric-loader-0.14.18.jar:?]
         at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) ~[fabric-loader-0.14.18.jar:?]
         at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) ~[fabric-loader-0.14.18.jar:?]
         at org.prismlauncher.launcher.impl.StandardLauncher.launch(StandardLauncher.java:88) ~[NewLaunch.jar:?]
         at net.prismlauncher.EntryPoint.listen(EntryPoint.java:126) ~[NewLaunch.jar:?]
         at net.prismlauncher.EntryPoint.main(EntryPoint.java:71) ~[NewLaunch.jar:?]
Caused by: java.lang.Throwable: Manually triggered debug crash
         at net.minecraft.client.KeyboardHandler.tick(KeyboardHandler.java:506) ~[client-intermediary.jar:?]
         ... 10 more

Разница заметна сразу. class_310 превращается в MinecraftClient или Minecraft, а method_1574 получает имя tick. Такой отчет проще читать человеку, который не держит в голове таблицы соответствий Minecraft mappings.

Поддерживаемые mappings

StackDeobfuscator может работать с несколькими наборами mappings. Выбор зависит от того, какие названия удобнее использовать в конкретном проекте.

Набор mappingsСовместимые версии MinecraftРазмер загрузкиРазмер кэша
Yarn18w49a, снапшот Minecraft 1.14, и новее1.4 MiB1.4 MiB
QuiltMinecraft 1.18.2 и новее1.4 MiB плюс 1.1 MiB для версий ниже 1.19.21.4 MiB плюс 1.1 MiB для версий ниже 1.19.2
MojangMinecraft 1.14.4, 19w36a, снапшот 1.15, и новее9.0 MiB без сжатия плюс 559.1 KiB1.3 MiB плюс 558.6 KiB

Размеры приведены по состоянию на 12 мая 2024 года, когда актуальной версией была Minecraft 1.20.6. Mojang mappings занимают больше места, потому что исходные данные не сжимаются так же, как другие наборы.

Yarn и Quilt проверяют наличие обновлений версии раз в 48 часов. Для каждой версии Minecraft mappings скачиваются и разбираются один раз, после чего используются из локального кэша. Повторно загружать одни и те же данные при каждом запуске не требуется.

Где StackDeobfuscator особенно полезен

В одиночной игре обычному игроку этот мод почти не нужен, если только он не помогает тестировать собственную сборку. Зато при разработке Fabric-модов польза заметна сразу: crash report становится пригодным для чтения, а поиск конфликтующего мода занимает меньше времени.

На сервере StackDeobfuscator помогает администраторам и разработчикам разбирать ошибки в консоли. Если сервер падает во время загрузки мира, обработки тика или выполнения конкретного действия игрока, читаемые названия методов дают гораздо больше зацепок, чем набор числовых идентификаторов.

Особенно хорошо мод подходит для:

  • тестовых серверов Minecraft;
  • крупных сборок модов на Fabric;
  • проверки новых версий модов;
  • анализа клиентских и серверных crash report;
  • подготовки понятных отчетов об ошибках;
  • разработки модов без постоянного запуска полноценной среды разработки.

Важно понимать ограничение: StackDeobfuscator не исправляет саму ошибку и не определяет виноватый мод автоматически. Он делает stack trace понятнее. Причину сбоя все равно нужно искать по контексту, версии Minecraft, установленным модам и строкам вокруг исключения.

Совместимость и версии

StackDeobfuscator рассчитан на Fabric и поддерживает версии Minecraft от ранних снапшотов 1.14 до линейки 1.21.x. Проект распространяется именно как Fabric-мод, поэтому для его работы нужен Fabric Loader. Поддержка Forge или NeoForge в описании проекта не заявлена.

Есть важный нюанс по новым версиям. Для Minecraft новее 1.21.11 мод считается устаревшим, потому что в этих версиях обфускация больше не требует такого инструмента. На старых версиях он по-прежнему поддерживается и сохраняет смысл, особенно в разработке и тестировании модов.

Последний релиз StackDeobfuscator - версия 1.4.3. В ней добавлены данные версий для веб-просмотрщика mappings и обновлена библиотека, чтобы снизить вероятность конфликтов с другими модами.

Что изменится после установки

В самой игре почти ничего. Интерфейс, производительность, мир и механики Minecraft остаются прежними. Изменения касаются технической стороны:

  • сообщения об ошибках становятся читаемее;
  • названия классов и методов отображаются в выбранной системе mappings;
  • crash report проще передавать разработчику для анализа;
  • диагностика проблем в сборке модов становится быстрее;
  • mappings загружаются в фоне и сохраняются для повторного использования.

Поэтому StackDeobfuscator не стоит воспринимать как мод для улучшения FPS или добавления контента. Это небольшая утилита для диагностики, которая раскрывает техническую часть Minecraft там, где ванильный отчет обычно выглядит слишком запутанно.

Практические нюансы

Если вы устанавливаете StackDeobfuscator ради конкретного crash report, сначала проверьте версию Minecraft и загрузчик. Набор mappings должен соответствовать версии игры, иначе часть названий может остаться без расшифровки или отображаться не так, как ожидается.

Для разработчиков Fabric-модов Yarn часто удобнее благодаря привычным именам из экосистемы Fabric. Quilt mappings подходят для проектов, ориентированных на Quilt, а Mojang mappings могут быть полезнее тем, кто работает с официальной системой именования Minecraft.

На производительность во время игры мод не должен заметно влиять: основная работа связана с обработкой сообщений об ошибках и загрузкой mappings. Первая загрузка данных может занять больше времени, особенно при выборе Mojang mappings, но после кэширования повторная обработка выполняется без повторного скачивания полного набора.

StackDeobfuscator также известен отдельным веб-инструментом для преобразования stack trace. Он полезен, когда нужно быстро разобрать уже существующий отчет без установки дополнительного мода в игру.

Итог

StackDeobfuscator - специализированный Fabric-мод для Minecraft, который переводит обфусцированные stack trace на язык, понятный разработчикам и администраторам. Он поддерживает Yarn, Quilt и Mojang mappings, работает с клиентскими и серверными ошибками, а данные загружает асинхронно и хранит в кэше.

Если вы регулярно собираете моды, тестируете Fabric-проекты или разбираете падения Minecraft на сервере, такая утилита заметно упрощает диагностику. Для новых версий после 1.21.11 она уже не требуется, но на совместимых старых версиях остается удобным способом быстро понять, где именно возникла проблема.

Скриншоты StackDeobfuscator

After - Yarn/Quilt Mappings
15 апреля 2023 г.
After - Mojang Mappings
15 апреля 2023 г.
Before - Unreadable Classnames
15 апреля 2023 г.

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

Нажмите на диапазон, чтобы выбрать точную версию.

Платформы

Поддерживаемые окружения

Клиент и сервер

Создатели

Детали

Лицензия:
Опубликован:3 года назад
Обновлён:2 года назад

Версии мода StackDeobfuscator

Доступно 10 версий. Сначала показаны самые популярные и самые свежие.

10 из 10 версий
Самые популярные
R
1.4.3StackDeobfuscator v1.4.3
1.14.x1.15.x1.16.x1.17–1.17.1
R
1.4.1StackDeobfuscator v1.4.1
1.14.x1.15.x1.16.x1.17–1.17.1
R
1.4.2StackDeobfuscator v1.4.2
1.14.x1.15.x1.16.x1.17–1.17.1
R
1.3.2StackDeobfuscator v1.3.2
1.14.x1.15.x1.16.x1.17–1.17.1
R
1.4.0StackDeobfuscator v1.4.0
1.14.x1.15.x1.16.x1.17–1.17.1
R
1.3.1StackDeobfuscator v1.3.1
1.14.x1.15.x1.16.x1.17–1.17.1
Самые Новые
R
1.3.0StackDeobfuscator v1.3.0
1.14.x1.15.x1.16.x1.17–1.17.1
R
1.2.1StackDeobfuscator v1.2.1
1.19.423w12a
R
1.2.0StackDeobfuscator v1.2.0
1.19.423w12a
R
1.1.0StackDeobfuscator v1.1.0
1.19.423w12a
Главная