Skip to content

F3 除錯界面整合

本頁面記錄了 速度計 (Speedometer) 如何使用 DebugScreenEntriesDebugScreenEntryList 接入 Minecraft 的客戶端除錯渲染流水線。


📊 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()
   Speedometer 識別碼                              玩家速度識別碼
        |                                               |
 DebugEntrySpeedometer                     DebugEntryPlayerSpeedWrapper
   (獨立行)                                   (合併行)

⚙️ 註冊生命週期流程

  1. 靜態類別載入注入 (DebugScreenEntriesMixin): 在 DebugScreenEntries 的類別載入尾部 (<clinit>),速度計調用私有靜態 register 方法將 speedometer 註冊進原版條目表 (ENTRIES_BY_ID)。
  2. 預設狀態初始化 (DebugScreenEntryListMixin): 當 DebugScreenEntryList.rebuildCurrentList() 執行時,速度計會檢查 allStatuses 中是否存在 speedometer。若不存在,則預設自動將其註冊為 DebugScreenEntryStatus.IN_OVERLAY 狀態。
  3. Spy Wrapper Replacement: 若原版原生註冊了 player_speed(例如在 Minecraft 26.3+ 中),DebugScreenEntriesMixin 會將 ENTRIES_BY_ID 中的原版物件替換為我們的 DebugEntryPlayerSpeedWrapper 攔截包裝器。

🔗 相關頁面

Official documentation & web portal for Dasik Igaijinn mods.