Skip to content

패키지 아키텍처 및 믹스인

이 기술 참조는 패키지 계층 구조, 소스 배치 및 Mixin 주입 대상 목록을 설명합니다.


📊 패키지 아키텍처 다이어그램

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 주입 대상 상세 분석표

Mixin 클래스대상 Minecraft 클래스대상 메서드 / 지점주입 유형목적
DebugScreenEntriesMixinnet.minecraft.client.gui.components.debug.DebugScreenEntries<clinit> @At("TAIL")@Injectspeedometer 항목 ID를 등록하고 네이티브 player_speed 항목이 존재할 경우 래핑합니다.
DebugScreenEntriesMixinnet.minecraft.client.gui.components.debug.DebugScreenEntriesregister@Invoker바닐라 비공개 register(Identifier, DebugScreenEntry) 메서드를 호출합니다.
DebugScreenEntryListMixinnet.minecraft.client.gui.components.debug.DebugScreenEntryListrebuildCurrentList @At("HEAD")@Injectspeedometer 상태가 기본적으로 DebugScreenEntryStatus.IN_OVERLAY로 설정되도록 보장합니다.

🔒 스레드 안전성 및 비차단 보장

  • 모든 Mixin 주입은 Minecraft 클라이언트 렌더 스레드에서만 독점적으로 실행됩니다.
  • 락(Lock) 없는 완벽한 비차단 구현으로 프레임 드롭 제로($<0.001\text{ ms}$)를 보장합니다.

🔗 관련 페이지

Official documentation & web portal for Dasik Igaijinn mods.