Skip to content

Интеграция с экраном отладки F3

На этой странице описано, как Спидометр интегрируется в клиентский конвейер рендеринга F3 через DebugScreenEntries и DebugScreenEntryList.


📊 Инфобокс интеграции с экраном F3

PropertyValue
Speedometer Registry KeyIdentifier.withDefaultNamespace("speedometer")
Native Vanilla KeyIdentifier.withDefaultNamespace("player_speed")
Interface Implementednet.minecraft.client.gui.components.debug.DebugScreenEntry
Mixin Target 1net.minecraft.client.gui.components.debug.DebugScreenEntries
Mixin Target 2net.minecraft.client.gui.components.debug.DebugScreenEntryList
Default Display StateDebugScreenEntryStatus.IN_OVERLAY

🏗 Архитектурная схема

+----------------------------------------------------------------+
|                     Minecraft F3 Debug Screen                   |
+----------------------------------------------------------------+
                               |
                   DebugScreenEntries.<clinit>()
                               |
                      DebugScreenEntriesMixin
                               |
        +-----------------------+-----------------------+
        |                                               |
   register()                                      put()
   ID Speedometer                                  ID скорости игрока
        |                                               |
 DebugEntrySpeedometer                     DebugEntryPlayerSpeedWrapper
   (Отдельная строка)                        (Объединенная строка)

⚙️ Процесс регистрации

  1. Инъекция при статической загрузке класса (DebugScreenEntriesMixin): Во время инициализации (<clinit>) DebugScreenEntries, Speedometer вызывает приватный метод register, добавляя speedometer в ванильный реестр (ENTRIES_BY_ID).
  2. Инициализация состояния по умолчанию (DebugScreenEntryListMixin): Когда вызывается DebugScreenEntryList.rebuildCurrentList(), Speedometer проверяет наличие speedometer в allStatuses. При отсутствии он автоматически регистрирует его как IN_OVERLAY.
  3. Spy Wrapper Replacement: Если ваниль нативно регистрирует player_speed (например, в Minecraft 26.3+), DebugScreenEntriesMixin заменяет ванильный объект на наш DebugEntryPlayerSpeedWrapper.

🔗 Связанные страницы

Official documentation & web portal for Dasik Igaijinn mods.