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('Покупка совершена!');
}
});
});
Что тут происходит?
- Мы создаем сундук размером
small(27 слотов). - Задаем название — "Магазин у Боба".
- Добавляем две кнопки: алмазный меч с описанием и изумруд как кнопку покупки.
- Показываем сундук игроку через
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('Ты выбрал наковальню! Пора чинить снаряжение!');
}
});
});
Что мы сделали?
- Создали сундук на 27 слотов.
- Использовали метод
pattern, чтобы "нарисовать" интерфейс:x- это стеклянные панели,a- наковальня,_- пустые слоты. - В объекте
keyуказали, что значит каждый символ: стекло - это просто фон, а наковальня — активная кнопка с названием и описанием. - При выборе наковальни (слот 22) игрок получает сообщение.
Совет: Чтобы вычислить номер слота, считайте слоты слева направо, сверху вниз. Например, в сундуке 3x9 центральный слот третьей строки - это 2 * 9 + 4 = 22.
Почему стоит использовать ChestUI?
ChestUI - отличная библиотека для Майнкрафта, плюс которого является создание сундучного интерфейса. Вы можете создавать магазины, меню телепорта, квестовые интерфейсы или даже мини-игры, где выбор предмета в сундуке запускает действие. Это удобно, интуитивно и не требует от игроков учить сложные команды, создавать с нуля таковой интерфейс.
Публикация на этом заканчивается! Не забудьте прокомментировать этот пост. До новых встреч!
(еле как отыскал в архиве, ой бля. а теперь дайте поспать спокойно)