Содержание

Management

Управление Магазином

Для управления товарами в магазине используются JSON файлы, которые необходимо создавать вручную в папке «.minecraft/config/oxygen/data/server/store/offers/». Текстуры для виджетов и иконок должны быть размещены в папке «.minecraft/config/oxygen/data/server/store/offers/textures/». Для перезагрузки данных во время игры можно использовать команду «/oxygenop store -reload-offers» (доступна операторам и консоли, только при значении «enable_store_management_ingame: true» в файле конфигурации Store).

Товары (описание и текстуры) синхронизируются с игроками автоматически и кэшируются на клиенте для оптимизации работы магазина.

Пример конфигурации можно взять тут. Вы можете скачать и поместить содержимое этой папки в корневую папку игры и протестировать всё самостоятельно.

Пример стуктуры JSON файла для описания товаров в магазине:

Файл конфигурации товаров представляет собой массив JSON объектов, где каждый объект содержит информацию об одном товаре. Store попытается загрузить содержимое всех JSON файлов в папке «.minecraft/config/oxygen/data/server/store/offers/» (включая вложенные папки), так что предлагается для каждой категории товаров создавать отдельный файл для удобства.

Для перезагрузки данных во время игры можно использовать команду «/oxygenop store -reload-offers», убедитесь что вы обновили «version_id» отредактированной сделки.

Порядок сделок в магазине зависит от их порядка в конфиге

Описание товара

Каждый товар представлен отдельным JSON объектом.

Идентификатор служит для сохранения ссылки на товар в системе подарков, так что если товар можно преобрести в подарок, то этот идентификатор не должен изменяться. Число должно быть уникальным относительно «persistent_id» и «version_id» других товаров.

В случае необходимости отредактировать товар (изменить описание, цену и т.д) для товара, который может быть куплен в подарок используется этот параметр. После внесения изменений его необходимо обновить, сохранив при этом уникальность относительно «persistent_id» и «version_id» других товаров. Обновление этого значения обеспечивает синхронизацию изменений с игроками.

Существуют три типа товаров: ITEM (набор предметов), COMMAND (выполнение команды от имени консоли) и SCRIPT (выполнение скрипта).

Категория определяет заздел, в котором будет отображаться товар в интерфейсе магазина. В качестве значения можно использовать значение «как есть» (прим. «Оружие») или ключ локализации для lang файлов (прим. «oxygen.store.category.weapon», c дальнейшим добавлением локализации для ключа).

Название будет отображаться в интерфейсе магазина.

Описание будет отображаться в интерфейсе магазина. Описание при отображении будет автоматически разделено на строки при необходимости, есть возможность вручную указать место переноса строки с помощью разделителя «\n».

Если указна стоимость «0», то товар можно получить бесплатно неограниченное количество раз. В этом случае рекомендуется настроить лимит «max_purchases» и/или «purchase_cooldown».

Если значение больше нуля, то оно будет использовано в качестве стоимости, а в интерфейсе магазина у виджета товара появиться индикация скидки.

Если необходимо снять товар с продажи, установите значение «false». Это лишит игроков возможности видеть товар в магазине и покупать его, но сохранит его в системе подарков.

Если товар можно купить в подарок другому игроку, установите «true».

Значение «- 1» означает отсутствие ограничений. При исчерпании лимита покупок игрок не сможет покупать товар для себя, в подарок или получать товар в качестве подарка.

Значение «0» означает отсутствие кулдауна. Во время действия кулдауна игрок не сможет покупать товар для себя, в подарок или принимать товар в качестве подарка.

Виджет может быть двух размеров: «BIG» (большой, 170 на 56 пикселей) и «SMALL» (маленький, 84 на 56 пикселей). Размер виджета определяет размеры текстуры для него. Размер текстуры должен быть кратным размеру виджета.

Каждый товар может иметь уникальную текстуру виджета (фона). Текстура должна быть расположена в папке «.minecraft/config/oxygen/data/server/store/offers/textures/». Текстуры могут быть расположены во вложенных папках, тогда название дополнительно должно содержать каталог (прим. «weapon/weapon_pack_1.png»). При отсутствии файла будет использована стандартная текстура «MISSING_TEXTURE».

Опционально. Иконки могут быть двух типов: «ITEM» (стандартный предмет) и «TEXTURE» (текстура с тултипом). Иконки позволяют дополнить виджет товара важной информацией - показать предметы, входящие в набор или описать товар с несколькими услугами.

Иконка типа ITEM

Пример:

Структура:

Описание параметров:

Координаты выставляются вручную, это позволяет размещать иконки на виджете в любом месте. Размеры виджетов: большой - 170 на 56 пикселей, маленький - 84 на 56 пикселей.

Данные любого предмета могут быть получены в игре с помощью команды «/oxygenc core -item -to-json {название файла (в одно слово, без .json)}» (предмет должен быть в руке). Файл будет создан в папке «.minecraft/config/oxygen/data/client/core/itemstack/».

Иконка типа TEXTURE

Пример:

Структура:

Описание параметров:

Координаты выставляются вручную, это позволяет размещать иконки на виджете в любом месте. Размеры виджетов: большой - 170 на 56 пикселей, маленький - 84 на 56 пикселей.

Текстура должна быть расположена в папке «.minecraft/config/oxygen/data/server/store/offers/textures/». Текстуры могут быть расположены во вложенных папках, тогда название дополнительно должно содержать каталог (прим. «icons/icon_64x64.png»). При отсутствии файла будет использована стандартная текстура «MISSING_TEXTURE».

Для переноса текста на следующую строку используйте разделитель «\n».

Существуют три типа товаров: ITEM (набор предметов), COMMAND (выполнение команды от имени консоли) и SCRIPT (выполнение скрипта). В зависимости от типа указанного в «type» этот объект должен содержать:

ITEM (набор предметов)

Набор предметов представляется в виде массива JSON объектов, содержащих данные предметов и количество каждого предмета.

Структура:

Описание параметров:

Данные любого предмета могут быть получены в игре с помощью команды «/oxygenc core -item -to-json {название файла (в одно слово, без .json)}» (предмет должен быть в руке). Файл будет создан в папке «.minecraft/config/oxygen/data/client/core/itemstack/».

COMMAND (набор команд для исполнения консолью)

Набор команд представляется в виде массива строк. Команды должны начинаться со слэша «/». Указатели: «@p» - ник игрока, «@pX» - координата игрока по X, «@pY» - координата игрока по Y, «@pZ» - координата игрока по Z, «@dim» - идентификатор измерения (числа int).

Для работы некоторых команд требуется включить командные блоки

Структура:

SCRIPT (исполняемый скрипт на JavaScript, TypeScript и Groovy)

Скрипт должен быть расположен в папке «.minecraft/config/oxygen/data/server/store/offers/scripts/». Скрипты могут быть расположены во вложенных папках, тогда название дополнительно должно содержать каталог (прим. «misc/misc_1.ts»). Скрипт должен возвращать boolean значение «true» при успешном выполнении для успешного завершения операции покупки.

Примечание: Поддержка скриптов обеспечивается аддонами Scripting Adapter (WIP), однако Core имеет встроенный адаптер для ECMAScript (TypeScript, JavaScript) и для его активации нужно установить значение «enable_ecmascript_adapter: true» в конфиге «core.json».

Структура: