Skip to content

🖥️ HUD, диагностика и отрисовка интерфейса

ПараметрСпецификация
Движок отрисовкиnet.minecraft.client.gui.GuiGraphicsExtractor
Экранный контекстnet.minecraft.client.gui.screens.worldselection.AbstractGameRulesScreen
Цвет текста при наведении0xFFFFFFAA (Мягкая желтая подсветка)
Обычный цвет текста0xFFFFFFFF (Яркий белый)
Фон заголовка при наведении0x22FFFFFF (Полупрозрачный белый прямоугольник)
Разделитель категорий0x44AAAAAA (Горизонтальная линия)
Цвет включенного переключателя0x4400FF00 (Изумрудно-зеленый)
Цвет выключенного переключателя0x44FF0000 (Рубиново-красный)
Озвучивание доступностиNarratedElementType.TITLE (NarrationPriority.HOVERED)

📖 Обзор механики

Minecraft 26.2 существенно модернизировал графический конвейер клиента, переведя стандартные операции отрисовки на подсистему GuiGraphicsExtractor.

Collapsible Game Rules изначально оптимизирован под этот движок, обеспечивая прямое заполнение векторных областей, центрирование текста и поддержку экранного диктора без просадок FPS.


🎨 Цветовая палитра интерфейса

КомпонентШестнадцатеричный ARGBОписаниеМесто применения
Заливка при наведении0x22FFFFFF13% полупрозрачный белый оверлей.Заголовки категорий и кнопки панели действий.
Разделительная черта0x44AAAAAA27% полупрозрачная серая линия толщиной 1px.Нижняя грань заголовков и панели действий.
Текст при наведении0xFFFFFFAAМягкий желтый оттенок.Названия категорий и кнопок при наведении мыши.
Стандартный текст0xFFFFFFFF100% белый цвет.Названия категорий и значок количества правил.
Значок количества правилChatFormatting.GRAYВанильный серый цвет ( (N rules)).Суффикс после названия категории.
Фон включенного режима0x4400FF0027% полупрозрачный зеленый.Фон переключателя BooleanToggleWidget в режиме ✔ ON.
Фон выключенного режима0x44FF000027% полупрозрачный красный.Фон переключателя BooleanToggleWidget в режиме ✖ OFF.

💻 Детали реализации отрисовки

java
@Override
public void extractContent(GuiGraphicsExtractor graphics, int mouseX, int mouseY, boolean hovered, float a) {
    // 1. Premium Highlight on hover
    if (hovered) {
        graphics.fill(this.getX() - 2, this.getY(), this.getX() + this.getWidth() + 2, this.getY() + 24, 0x22FFFFFF);
    }

    // 2. Directional arrow, label, and child count badge
    String prefix = this.expanded ? "▼ " : "▶ ";
    Component countBadge = Component.literal(" (" + this.childCount + " rules)").withStyle(ChatFormatting.GRAY);
    Component display = Component.literal(prefix).append(this.label).append(countBadge);

    // 3. Centered text with dynamic hover tint
    graphics.centeredText(Minecraft.getInstance().font, display,
            this.getContentXMiddle(), this.getContentY() + 5, hovered ? 0xFFFFFFAA : 0xFFFFFFFF);
    
    // 4. Subtle separating line at the bottom
    graphics.fill(this.getX() + 10, this.getY() + 23, this.getX() + this.getWidth() - 10, this.getY() + 24, 0x44AAAAAA);
}

🔊 Звуковые сигналы и обратная связь

  • Событие: SoundEvents.UI_BUTTON_CLICK
  • Громкость: 1.0F
  • Высота тона: 1.0F
  • Условия срабатывания:
    • Клик левой или правой кнопкой мыши по категории.
    • Нажатие Пробела или Enter на заголовке категории.
    • Стрелка влево (свернуть) или Стрелка вправо (развернуть).
    • Клики по кнопкам «Развернуть все» и «Свернуть все».

🔗 Связанная документация

Official documentation & web portal for Dasik Igaijinn mods.