Команда разработчиков
100 subscribers
2 files
16 links
Именно тут мы научим вас создавать аддоны, объясним что и как использовать, и будем помогать вам, удачи в разработке!

По поводу рекламы - @NoHaijeSo1o
Если у вас есть какие либо предложения то можете написать нам:
@ShoneStew
@qspkp
Download Telegram
Нашёл репозитории с примерами кода. Уже давно про него знал, но не додумался до этого момента его скинуть. Вот сам репозитории:
https://github.com/JaylyDev/ScriptAPI/tree/stable/scripts
👍3
Раз в неделю или того хуже в канале появляется пост))
Так вот, хотел бы с вами поделиться одной мелкой деталью, лично у меня оно возникло час или около того назад.
При попытке отмены события отправки сообщения(ChatSendBeforeEvent) у меня не получается, если эта инструкция отмены находится в
system.run.
Тоесть:

// События, другой код и т.д...
system.run(() => {
ev.cancel = true; // Пытаемся отменить событие, но не получается
// Другой код...
});

Если что, вызовы через system.run мне нужны были для тех команд, которые запрашивали привилегии(в события типа BeforeEvents это частое явление).
Будьте бдительны, и делитесь с такими мелочами под этим постом
👍1
На ChestUI вышло обновление, которое добавляет возможность создать интерфейс в стиле печки через класс FurnaceFormData.
Параметры класса FurnaceFormData:

declare class FurnaceFormData {
/**
* @param isLit Указывает, включена ли печь в пользовательском интерфейсе.
*/
constructor(isLit?: boolean);
/**
* @remarks Количество слотов в интерфейсе печи.
*/
public slotCount: number;
/**
* @remarks Этот метод устанавливает заголовок для интерфейса печи.
* @param text Текст заголовка для интерфейса печи.
*/
title(text: string | RawMessage): FurnaceFormData;
/**
* @remarks Добавляет кнопку в интерфейс печи с иконкой из ресурспака.
* @param slot Слот, в котором будет отображаться предмет. Значение ограничено от 0 до 2.
* @param itemName Название предмета, которое будет отображаться.
* @param itemDesc Описание (лора) предмета, которое будет отображаться.
* @param texture ID типа или путь к текстуре. **НЕОБХОДИМО УКАЗАТЬ ПРЕФИКС ПРЕДМЕТА!** Для ванильных предметов это `minecraft:`. Смотрите `typeIds.js` для действительных предметов и значений данных.
* @param stackAmount Размер стака предмета. Ограничено значениями от 1 до 99.
* @param durability Прочность предмета. По умолчанию 0. Ограничено значениями от 1 до 99.
* @param enchanted Если предмет зачарован, укажите true.
*/
button(slot: number, itemName?: string | RawMessage, itemDesc?: (string | RawMessage)[], texture?: string, stackAmount?: number, durability?: number, enchanted?: boolean): FurnaceFormData;
/**
* @remarks
* Создает и отображает всплывающее окно. Возвращает результат
* асинхронно, когда игрок подтверждает или отменяет
* диалог.
*
* Этот метод не может быть вызван в режиме только для чтения.
*
* @param player
* Игрок, для которого будет отображен этот диалог.
*/
show(player: Player): Promise<ActionFormResponse>;
};

Как-то так. По туториалу на ChestUI - его не будет, скорее всего.
1👍1
⚙️ Создание кастомных комманд?
А мы то дожили, увидели на свет кастомные команды. С настраиваемым синтаксисом. Но обо всём по-подробнее.


Версия Script API 2.0.0-beta
В альфа-версии особо ничего не было добавлено, пока в бета-версии модуля добавили создание команд. Делается оно через класс CustomCommandRegistry, содержащийся в классе World.


👨‍💻 На практике: создаем кастомную команду
В официальной документации пример написан на TS, но нам будет легче на JS написать. Понятнее и удобнее. Сам пример:
import { world, system } from "@minecraft/server";

system.beforeEvents.startup.subscribe(({ customCommandRegistry }) => {
customCommandRegistry.registerCommand({
name: 'example:example',
description: 'Пример команды',
permissionLevel: 'Any',
optionalParameters: [{
type: 0,
name: 'example'
}]
}, (example) => {
world.sendMessage(`Число в числовом типе: ${example}`);
});
});

Давайте же разберём что тут да как. Я через событие старта скриптов создаю методом "registerCommand" новую команду "example:example". Задаю ему описание(при частичном вводе команды выводит подсказку и описание команды), после задаю разрешения.

Типы разрешения:
Any - все,
GameDirectors - игроки с оператором и командный блок,
Admin - игроки с оператором, но не командные блоки,
Host - только хост мира(предположительно работает только в локальном мире),
Owner - только с терминала(консоли) сервера.

После идут опции команды. name, логично, название параметра, а type - тип опции, оно может быть числовым, строковым, булевым и другим. Получать значение параметров надо, вводя их название в функцию callback(в этом примере мы через имя параметра example возвращаем параметр).


Вердикт?
А вердикт то ясен - пока создание кастомных команд сырое. Оно требует доработок, к примеру чтобы возвращал экземпляр игрока(дабы взаимодействовать с отправителем команды). Лучшее используйте команды через chatSend, в них больше функционала, как по мне. Ждём доработок и новых возможностей.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
И да, хайпово раз в месяц выпускать посты
👍2👏1
Команда разработчиков
Давно не было постов. На какую тему выпустить публикацию первым?
Итог - ChestUI. Пост будет написан на днях, после него будет 2 по количеству голосов выбранная тема и после 3-ая.
👍2
Заливать сюда аддон на открытие шалкера в инвентаре(сырой, в посте к аддону опишу что там недоделанно)
Anonymous Poll
81%
Да
5%
Нет
14%
Узнать результат
🔥2