Skip to content

🧩 Архитектура и Mixin-инъекции

ПараметрТехнические детали
Root Packagenet.vanillaoutsider.bedchathider
Mixin Configurationvanilla-outsider-bed-chat-hider.mixins.json
Compatibility LevelJAVA_25
Default Require Count1 (injectors.defaultRequire: 1)

🏛️ Обзор архитектуры классов

                        [ BedChatHiderClient ]
                        (ClientModInitializer)

                  ┌───────────────┴───────────────┐
                  ▼                               ▼
       [ InBedChatScreenMixin ]           [ ChatScreenMixin ]
       (Widget & Layout Injection)        (Input & Render Gating)
                  │                               │
                  ▼                               ▼
     Перемещение 'Встать с постели' и кнопка 'Скрыть чат' Обход рендеринга чата, клавиш, кликов и колесика

🔍 Подробный реестр инъекций Mixin

1. InBedChatScreenMixin (InBedChatScreen.class)

  • Целевой метод: init()
  • Точка внедрения: @At("TAIL")
  • Действия:
    • Изменяет размер leaveBedButton с $200\text{px}$ до $98\text{px}$ в позиции $X = W/2 - 100$.
    • Добавляет кнопку-переключатель Button размером $98\text{px}$ в позиции $X = W/2 + 2, Y = H - 40$.
    • Синхронизирует видимость поля input и фокус через bedchathider$updateChatState().

2. ChatScreenMixin (ChatScreen.class)

  • Целевой метод 1: extractRenderState(GuiGraphicsExtractor, int, int, float, CallbackInfo)
    • @At("HEAD"), cancellable = true
    • Когда hideChat равен true в InBedChatScreen: вызывает super.extractRenderState и отменяет рендеринг ChatScreen.
  • Целевой метод 2: keyPressed(KeyEvent, CallbackInfoReturnable<Boolean>)
    • @At("HEAD"), cancellable = true
    • Перенаправляет на super.keyPressed(event) для блокировки ввода текста и стрелок.
  • Целевой метод 3: mouseClicked(MouseButtonEvent, boolean, CallbackInfoReturnable<Boolean>)
    • @At("HEAD"), cancellable = true
    • Перенаправляет на super.mouseClicked(event, doubleClick) для блокировки кликов по ссылкам чата.
  • Целевой метод 4: mouseScrolled(double, double, double, double, CallbackInfoReturnable<Boolean>)
    • @At("HEAD"), cancellable = true
    • Перенаправляет на super.mouseScrolled(x, y, scrollX, scrollY) для блокировки прокрутки журнала чата.

Связанные страницы: Главная | Интерфейс экрана сна | Видимость чата и блокировка ввода

Official documentation & web portal for Dasik Igaijinn mods.