ChestUI: Введение

ChestUI: Введение

Команда разработчиков

📦 Глава "Сторонние модули". Часть 1. Модуль "ChestUI"

В прошлых частях мы разобрались с формами из @minecraft/server-ui, которые позволяют создавать модальное окно, слайдеры и кнопки. Но что, если мы хотим что-то более "ванильное"? Представьте: игрок открывает сундук, а там - не просто вещи, а полноценное меню для магазина, квестов или выбора режима игры. Звучит круто? Это и есть ChestUI - библиотека, которая превращает привычное модальное окно в интересный на вид сундучный интерфейс. Сегодня разберем, как работает библиотека, и покажем, как легко создать сундук-меню с кнопками, блек-джеком и бухлом!


⚙️ Класс "ChestFormData"

ChestFormData — один из двух классов библиотеки ChestUI. С ним вы можете создать интерфейс сундука любого размера, добавить в него предметы с названиями, описаниями и текстурами, а потом показать это игроку. Это идеально для магазинов, меню телепорта или даже интерактивных квестов. Давайте разберем, как это работает, и посмотрим пример кода!

Простой пример: Магазин с алмазным мечом

Предположим, мы хотим сделать маленький магазин, где игрок может "купить" алмазный меч. Вот как это выглядит:

import { ChestFormData } from 'ChestUI';
import { Player } from '@minecraft/server';

world.beforeEvents.itemUse.subscribe((ev) => {
    const player = ev.source;

    let form = new ChestFormData('small'); // Создаем сундук на 27 слотов
    form.title('Магазин у Боба'); // Задаем название
    form.button(0, 'Алмазный меч', ['Цена: 10 изумрудов'], 'minecraft:diamond_sword', 1, false); // Меч в слоте 0
    form.button(1, 'Купить', ['Нажми, чтобы купить!'], 'minecraft:emerald', 1, false); // Кнопка покупки в слоте 1

    form.show(player).then((res) => {
        if (res.canceled) return; // Если игрок закрыл сундук — выходим

        if (res.selection === 0) {
            player.sendMessage('Ты выбрал алмазный меч!');
        } else if (res.selection === 1) {
            player.sendMessage('Покупка совершена!');
        }
    });
});

Что тут происходит?

  1. Мы создаем сундук размером small (27 слотов).
  2. Задаем название — "Магазин у Боба".
  3. Добавляем две кнопки: алмазный меч с описанием и изумруд как кнопку покупки.
  4. Показываем сундук игроку через show и обрабатываем выбор: если игрок кликнул на меч, он просто смотрит, а если на изумруд — "покупает".

Важно: Слоты начинаются с 0, так что первый предмет — это slot: 0. Текстуры указываем с префиксом minecraft:, чтобы использовать ванильные предметы.


Немного сложный пример: Сундук с паттерном

Теперь давайте сделаем что-то более сложнее - меню с наковальней в центре и стеклянной рамкой вокруг. Для этого используем метод pattern, который позволяет "рисовать" сундук с помощью шаблона.

import { ChestFormData } from 'ChestUI';
import { Player } from '@minecraft/server';

world.beforeEvents.itemUse.subscribe((ev) => {
    const player = ev.source;

    let form = new ChestFormData('27'); // Сундук на 27 слотов (3x9)
    form.title('Кузница мастера');

    form.pattern([
        'xxxxxxxxx', // Первая строка — стеклянная рамка
        'x_______x', // Пустое пространство
        'x___a___x', // Наковальня в центре
        'x_______x',
        'xxxxxxxxx'
    ], {
        'x': { texture: 'minecraft:stained_glass_pane', itemName: '', itemDesc: [], stackSize: 1, enchanted: false }, // Стекло
        'a': { texture: 'minecraft:anvil', itemName: 'Наковальня', itemDesc: ['Чини свои вещи!'], stackSize: 1, enchanted: true } // Наковальня
    });

    form.show(player).then((res) => {
        if (res.canceled) return;

        if (res.selection === 22) { // Наковальня в центре (слот 22 в сундуке 3x9)
            player.sendMessage('Ты выбрал наковальню! Пора чинить снаряжение!');
        }
    });
});

Что мы сделали?

  1. Создали сундук на 27 слотов.
  2. Использовали метод pattern, чтобы "нарисовать" интерфейс: x - это стеклянные панели, a - наковальня, _ - пустые слоты.
  3. В объекте key указали, что значит каждый символ: стекло - это просто фон, а наковальня — активная кнопка с названием и описанием.
  4. При выборе наковальни (слот 22) игрок получает сообщение.

Совет: Чтобы вычислить номер слота, считайте слоты слева направо, сверху вниз. Например, в сундуке 3x9 центральный слот третьей строки - это 2 * 9 + 4 = 22.


Почему стоит использовать ChestUI?

ChestUI - отличная библиотека для Майнкрафта, плюс которого является создание сундучного интерфейса. Вы можете создавать магазины, меню телепорта, квестовые интерфейсы или даже мини-игры, где выбор предмета в сундуке запускает действие. Это удобно, интуитивно и не требует от игроков учить сложные команды, создавать с нуля таковой интерфейс.

Публикация на этом заканчивается! Не забудьте прокомментировать этот пост. До новых встреч!

(еле как отыскал в архиве, ой бля. а теперь дайте поспать спокойно)

Report Page