Интеграция с экраном отладки F3
На этой странице описано, как Спидометр интегрируется в клиентский конвейер рендеринга F3 через DebugScreenEntries и DebugScreenEntryList.
📊 Инфобокс интеграции с экраном F3
| Property | Value |
|---|---|
| Speedometer Registry Key | Identifier.withDefaultNamespace("speedometer") |
| Native Vanilla Key | Identifier.withDefaultNamespace("player_speed") |
| Interface Implemented | net.minecraft.client.gui.components.debug.DebugScreenEntry |
| Mixin Target 1 | net.minecraft.client.gui.components.debug.DebugScreenEntries |
| Mixin Target 2 | net.minecraft.client.gui.components.debug.DebugScreenEntryList |
| Default Display State | DebugScreenEntryStatus.IN_OVERLAY |
🏗 Архитектурная схема
+----------------------------------------------------------------+
| Minecraft F3 Debug Screen |
+----------------------------------------------------------------+
|
DebugScreenEntries.<clinit>()
|
DebugScreenEntriesMixin
|
+-----------------------+-----------------------+
| |
register() put()
ID Speedometer ID скорости игрока
| |
DebugEntrySpeedometer DebugEntryPlayerSpeedWrapper
(Отдельная строка) (Объединенная строка)⚙️ Процесс регистрации
- Инъекция при статической загрузке класса (
DebugScreenEntriesMixin): Во время инициализации (<clinit>)DebugScreenEntries, Speedometer вызывает приватный методregister, добавляяspeedometerв ванильный реестр (ENTRIES_BY_ID). - Инициализация состояния по умолчанию (
DebugScreenEntryListMixin): Когда вызываетсяDebugScreenEntryList.rebuildCurrentList(), Speedometer проверяет наличиеspeedometerвallStatuses. При отсутствии он автоматически регистрирует его какIN_OVERLAY. - Spy Wrapper Replacement: Если ваниль нативно регистрирует
player_speed(например, в Minecraft 26.3+),DebugScreenEntriesMixinзаменяет ванильный объект на нашDebugEntryPlayerSpeedWrapper.
