Integrasi Layar Debug F3
Halaman ini mendokumentasikan bagaimana Spidometer berintegrasi ke dalam pipeline rendering debug F3 melalui DebugScreenEntries dan DebugScreenEntryList.
📊 Kotak Info Integrasi Debug 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 |
🏗 Diagram Arsitektur
+----------------------------------------------------------------+
| Minecraft F3 Debug Screen |
+----------------------------------------------------------------+
|
DebugScreenEntries.<clinit>()
|
DebugScreenEntriesMixin
|
+-----------------------+-----------------------+
| |
register() put()
ID Speedometer ID Kecepatan Pemain
| |
DebugEntrySpeedometer DebugEntryPlayerSpeedWrapper
(Baris Terpisah) (Baris Tergabung)⚙️ Alur Kerja Pendaftaran
- Injeksi Pemuatan Kelas Statis (
DebugScreenEntriesMixin): Selama inisialisasi tail (<clinit>) dariDebugScreenEntries, Speedometer memanggil metode privatregisteruntuk menambahkanspeedometerke registri entri vanilla (ENTRIES_BY_ID). - Inisialisasi Status Default (
DebugScreenEntryListMixin): SaatDebugScreenEntryList.rebuildCurrentList()dieksekusi, Speedometer memeriksa apakahspeedometerada diallStatuses. Jika belum ada, otomatis mendaftarkannya sebagaiIN_OVERLAY. - Spy Wrapper Replacement: Jika vanilla mendaftarkan
player_speedsecara native (misal di Minecraft 26.3+),DebugScreenEntriesMixinmengganti objek vanilla denganDebugEntryPlayerSpeedWrapperkami.
