Skip to content

Architektur & Mixin-Übersicht

Diese technische Referenz beschreibt die Pakethierarchie, Quellcode-Struktur und Mixin-Injektionspunkte.


📊 Paketarchitektur-Diagramm

text
net.vanillaoutsider.speedometer
├── SpeedometerMod.java               <-- Constants & Identifier definitions
├── client
│   ├── SpeedometerClient.java        <-- ClientModInitializer entrypoint
│   ├── DebugEntrySpeedometer.java     <-- Custom DebugScreenEntry implementation
│   └── DebugEntryPlayerSpeedWrapper.java <-- Interceptor spy-wrapper for player_speed
└── mixin
    ├── DebugScreenEntriesMixin.java   <-- Hooks into DebugScreenEntries static init
    └── DebugScreenEntryListMixin.java <-- Enforces default IN_OVERLAY status

🧩 Mixin-Zielaufschlüsselungstabelle

Mixin-KlasseMinecraft-ZielklasseZielmethode / PunktInjektionstypZweck
DebugScreenEntriesMixinnet.minecraft.client.gui.components.debug.DebugScreenEntries<clinit> @At("TAIL")@InjectRegistriert die Eintrags-ID speedometer und umhüllt den nativen Eintrag player_speed, falls vorhanden.
DebugScreenEntriesMixinnet.minecraft.client.gui.components.debug.DebugScreenEntriesregister@InvokerRuft die private Vanilla-Methode register(Identifier, DebugScreenEntry) auf.
DebugScreenEntryListMixinnet.minecraft.client.gui.components.debug.DebugScreenEntryListrebuildCurrentList @At("HEAD")@InjectStellt sicher, dass der Status von speedometer standardmäßig auf DebugScreenEntryStatus.IN_OVERLAY gesetzt ist.

🔒 Thread-Sicherheit & blockierungsfreie Garantie

  • Alle Mixin-Injektionen werden ausschließlich auf dem Client-Render-Thread von Minecraft ausgeführt.
  • Die sperrenfreie, nicht blockierende Implementierung garantiert null Frame-Einbrüche ($<0.001\text{ ms}$).

🔗 Verwandte Seiten

Official documentation & web portal for Dasik Igaijinn mods.