Skip to content

Arsitektur Paket & Mixin

Referensi teknis ini merinci hierarki paket, tata letak kode sumber, dan titik injeksi Mixin.


📊 Diagram Arsitektur Paket

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

🧩 Tabel Rincian Target Mixin

Kelas MixinKelas Target MinecraftMetode / Titik TargetTipe InjeksiTujuan
DebugScreenEntriesMixinnet.minecraft.client.gui.components.debug.DebugScreenEntries<clinit> @At("TAIL")@InjectMendaftarkan ID entri speedometer dan membungkus entri asli player_speed jika ada.
DebugScreenEntriesMixinnet.minecraft.client.gui.components.debug.DebugScreenEntriesregister@InvokerMemanggil metode privat vanilla register(Identifier, DebugScreenEntry).
DebugScreenEntryListMixinnet.minecraft.client.gui.components.debug.DebugScreenEntryListrebuildCurrentList @At("HEAD")@InjectMemastikan status speedometer secara default menjadi DebugScreenEntryStatus.IN_OVERLAY.

🔒 Keamanan Thread & Garansi Non-Blocking

  • Semua injeksi Mixin dieksekusi secara eksklusif pada Thread Render Klien Minecraft.
  • Implementasi non-blocking tanpa kunci menjamin nol penurunan frame ($<0.001\text{ ms}$).

🔗 Halaman Terkait

Official documentation & web portal for Dasik Igaijinn mods.