Ritual thingy
Активный0.0
Установок
Последнее обновление
Версии
Ritual thingy
Модификация, которая позволяет разработчикам модов, сборок и датапаков создавать настраиваемые ритуалы призыва через систему, управляемую данными.
Основные возможности
Многоблочные структуры
Поддержка многоблочных структур реализована через интеграцию с Patchouli, при этом ведется разработка альтернативных систем. Добавляйте многоблочные конструкции через JSON-файлы Patchouli или используя соответствующий API. Блоки, добавленные в тег ritual-thingy:altar, проверяются на наличие многоблочных структур при нажатии правой кнопкой мыши.
Условия для предметов
Мод поддерживает проверку условий для предметов в основной руке игрока. Дополнительные условия можно добавить через API.
Волны существ
Возможность настройки нескольких волн, каждая из которых может содержать несколько групп мобов с настраиваемыми NBT-данными. Для каждой волны можно задать собственное название, цвет полосы босса и два режима отображения: по количеству существ или по общему здоровью.
Действия с предметами
Поддерживаются различные способы выдачи наград: добавление в инвентарь игрока, выпадение на месте ритуала или сброс сверху на ритуальный блок. Дополнительные действия можно реализовать через API.
Дополнительные функции включают настраиваемые задержки для полос боссов, пользовательские сообщения о начале и завершении ритуала, а также специальные звуковые эффекты.
Формат конфигурации
Файлы ритуалов должны располагаться по пути data/ВАШ_ПРОСТРАНСТВ_ИМЁН/rituals/НАЗВАНИЕ_РИТУАЛА.json
Ключи, отмеченные , являются обязательными (но могут быть опущены, если родительский тег отсутствует)
{
"soundEvent": "block.beacon.activate", // Звук, воспроизводимый в начале
"maxUses": 1, // Максимальное количество использований ритуала на игрока. Установите 0 для отключения
"altar": {
"patchouli": true, // Должно быть установлено в true
"id": "ritual-thingy:test_altar", // Идентификатор алтаря Patchouli
"itemCondition": { // Не включайте для отключения проверки предметов
"predicate": "ritual-thingy:mainhand", // Идентификатор предиката (по умолчанию "ritual-thingy:mainhand")
"ingredient": { // Ингредиент: использует тот же формат, что и рецепты
"item": "minecraft:stick"
},
"decrement": 1 // Удалить столько предметов из стека при использовании правильного предмета
},
"dimensionCondition": {
"dimensions": [
"minecraft:overworld"
], // Список разрешенных измерений
"allowed": true // True означает, что список содержит разрешенные измерения, false - запрещенные
}
},
"stack": { // Награда в виде предмета
"item": "minecraft:diamond_sword",
"count": 1
},
"startMessage": "Ritual starting", // Сообщение в начале
"completeMessage": "Ritual ending", // Сообщение в конце
"completeAction": "ritual-thingy:drop_offset", // Идентификатор действия с предметом (по умолчанию "ritual-thingy:none")
"trial": { // Пропустите для мгновенного завершения ритуала
"waveTickDelay": 80, // Задержка между волнами испытания в тиках
"beginningCountdown": 80, // Обратный отсчет до испытания в тиках
"delayBossBarColor": "blue", // Цвет полосы босса для задержки и отсчета
"waves": [ // Волны существ
{
"bossBarText": "Pig", // Текст полосы босса для волны
"bossBarColor": "blue", // Цвет полосы босса для волны
"isBoss": true, // Должна ли полоса босса отображать здоровье вместо количества существ
"spawnRange": 4, // Диапазон спавна мобов от нажатого блока
"startSound": "entity.wither.shoot", // Звук в начале волны
"endSound": "entity.experience_orb.pickup", // Звук в конце волны
"groups": [ // Отдельные группы существ
{// Эта группа содержит одну свинью без дополнительных данных
"count": 1,
"entityType": "minecraft:pig"
}
]
},
{
"bossBarText": "Cows",
"bossBarColor": "blue",
"spawnRange": 4,
"startSound": "entity.wither.shoot",
"endSound": "entity.experience_orb.pickup", // Используйте конечный звук последней волны как конечный звук самого ритуала
"groups": [
{
"count": 8,
"entityType": "minecraft:cow",
"tag": "{}" // Дополнительные данные существа (имя, броня, эффекты, вариант...)
}
]
}
]
}
}
Зависимости
Для использования API или других частей мода как разработчик добавьте это в ваш build.gradle
repositories {
maven {
url = 'https://maven.riftrealms.de/releases'
}
repositories {
maven { url 'https://maven.blamejared.com' }
}
}
dependencies {
// Добавьте версию в ваш gradle.properties или замените ${project.ritual_thingy_version} на версию мода
modApi "eu.ansquare.ritualthingy:ritual-thingy:${project.ritual_thingy_version}"
}
API
API Ritual позволяет моддерам добавлять собственные действия с предметами, условия и события, предотвращающие начало ритуала. Они регистрируются в общем инициализаторе в следующих форматах:
Условия
ItemConditionPredicate YOUR_CONDITION = RitualApi.registerItemCondition(new Identifier("YOUR_MOD_ID", "YOUR_CONDITION_ID"), (ingredient, player, pos) -> {
ItemStack stack = // Получить стек предметов
return new Pair<>(ingredient.test(stack), stack); // Проверить стек с ингредиентом и вернуть его для возможного уменьшения
});
Стандартные условия:
ritual-thingy:mainhandпроверяет предмет в основной руке игрока
Действия
ItemConditionPredicate YOUR_ACTION = RitualApi.registerItemAction(new Identifier("YOUR_MOD_ID", "YOUR_ACTION_ID"), (stack, player, pos) -> {
// Выполнить действие
});
Стандартные действия:
ritual-thingy:none- ничего не делатьritual-thingy:give- выдать предмет игрокуritual-thingy:drop- выбросить на позиции ритуального блокаritual-thingy:drop_offset- выбросить на один блок выше ритуального блока (сверху на него)
Предотвращение ритуалов
PreventRitualCallback.EVENT.register((player, world, hand, hitResult) -> {
return false; // Вернуть false, если ритуал не разрешен
});