🧩 Архитектура и Mixin-инъекции
| Параметр | Технические детали |
|---|---|
| Root Package | net.vanillaoutsider.bedchathider |
| Mixin Configuration | vanilla-outsider-bed-chat-hider.mixins.json |
| Compatibility Level | JAVA_25 |
| Default Require Count | 1 (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)для блокировки прокрутки журнала чата.
Связанные страницы: Главная | Интерфейс экрана сна | Видимость чата и блокировка ввода
