Skip to content

🧩 Arquitetura e Análise de Mixins

ParâmetroDetalhes técnicos
Root Packagenet.vanillaoutsider.bedchathider
Mixin Configurationvanilla-outsider-bed-chat-hider.mixins.json
Compatibility LevelJAVA_25
Default Require Count1 (injectors.defaultRequire: 1)

🏛️ Visão geral da arquitetura de classes

                        [ BedChatHiderClient ]
                        (ClientModInitializer)

                  ┌───────────────┴───────────────┐
                  ▼                               ▼
       [ InBedChatScreenMixin ]           [ ChatScreenMixin ]
       (Widget & Layout Injection)        (Input & Render Gating)
                  │                               │
                  ▼                               ▼
     Reposiciona 'Sair da cama' e botão 'Ocultar chat' Ignora renderização do chat, teclas, cliques e rolagem

🔍 Inventário detalhado de injeções Mixin

1. InBedChatScreenMixin (InBedChatScreen.class)

  • Método alvo: init()
  • Ponto de injeção: @At("TAIL")
  • Ações:
    • Redimensiona leaveBedButton de $200\text{px}$ para $98\text{px}$ em $X = W/2 - 100$.
    • Adiciona o botão alternador Button de $98\text{px}$ em $X = W/2 + 2, Y = H - 40$.
    • Sincroniza a visibilidade e o foco de input via bedchathider$updateChatState().

2. ChatScreenMixin (ChatScreen.class)

  • Método alvo 1: extractRenderState(GuiGraphicsExtractor, int, int, float, CallbackInfo)
    • @At("HEAD"), cancellable = true
    • Quando hideChat for true em InBedChatScreen: invoca super.extractRenderState e cancela a renderização de ChatScreen.
  • Método alvo 2: keyPressed(KeyEvent, CallbackInfoReturnable<Boolean>)
    • @At("HEAD"), cancellable = true
    • Redireciona para super.keyPressed(event) para desativar a digitação e navegação de setas.
  • Método alvo 3: mouseClicked(MouseButtonEvent, boolean, CallbackInfoReturnable<Boolean>)
    • @At("HEAD"), cancellable = true
    • Redireciona para super.mouseClicked(event, doubleClick) para desativar cliques em links do chat.
  • Método alvo 4: mouseScrolled(double, double, double, double, CallbackInfoReturnable<Boolean>)
    • @At("HEAD"), cancellable = true
    • Redireciona para super.mouseScrolled(x, y, scrollX, scrollY) para desativar rolagem do histórico.

Páginas relacionadas: Início | Interface da Cama e Layout | Visibilidade do Chat e Bloqueio de Entrada

Official documentation & web portal for Dasik Igaijinn mods.