Skip to content

🧩 Arsitektur & Analisis Mixin

ParameterRincian Teknis
Root Packagenet.vanillaoutsider.bedchathider
Mixin Configurationvanilla-outsider-bed-chat-hider.mixins.json
Compatibility LevelJAVA_25
Default Require Count1 (injectors.defaultRequire: 1)

🏛️ Ringkasan Arsitektur Kelas

                        [ BedChatHiderClient ]
                        (ClientModInitializer)

                  ┌───────────────┴───────────────┐
                  ▼                               ▼
       [ InBedChatScreenMixin ]           [ ChatScreenMixin ]
       (Widget & Layout Injection)        (Input & Render Gating)
                  │                               │
                  ▼                               ▼
     Posisikan ulang 'Tinggalkan Tempat Tidur' & tombol 'Sembunyikan Obrolan' Lewati render obrolan, tombol keyboard, klik, dan scroll

🔍 Inventaris Injeksi Mixin Terperinci

1. InBedChatScreenMixin (InBedChatScreen.class)

  • Metode Target: init()
  • Titik Injeksi: @At("TAIL")
  • Tindakan:
    • Mengubah ukuran leaveBedButton dari $200\text{px}$ menjadi $98\text{px}$ pada $X = W/2 - 100$.
    • Menambahkan Button toggle berukuran $98\text{px}$ pada $X = W/2 + 2, Y = H - 40$.
    • Menyelaraskan visibilitas kotak input dan status fokus via bedchathider$updateChatState().

2. ChatScreenMixin (ChatScreen.class)

  • Metode Target 1: extractRenderState(GuiGraphicsExtractor, int, int, float, CallbackInfo)
    • @At("HEAD"), cancellable = true
    • Saat hideChat bernilai true di InBedChatScreen: memanggil super.extractRenderState dan membatalkan rendering ChatScreen.
  • Metode Target 2: keyPressed(KeyEvent, CallbackInfoReturnable<Boolean>)
    • @At("HEAD"), cancellable = true
    • Mengalihkan ke super.keyPressed(event) untuk menonaktifkan pengetikan teks dan tombol navigasi panah.
  • Metode Target 3: mouseClicked(MouseButtonEvent, boolean, CallbackInfoReturnable<Boolean>)
    • @At("HEAD"), cancellable = true
    • Mengalihkan ke super.mouseClicked(event, doubleClick) untuk mencegah klik URL tautan obrolan.
  • Metode Target 4: mouseScrolled(double, double, double, double, CallbackInfoReturnable<Boolean>)
    • @At("HEAD"), cancellable = true
    • Mengalihkan ke super.mouseScrolled(x, y, scrollX, scrollY) untuk menonaktifkan gulir riwayat obrolan.

Halaman Terkait: Beranda | Tata Letak UI Layar Tempat Tidur | Visibilitas Obrolan & Pemblokiran Input

Official documentation & web portal for Dasik Igaijinn mods.