

Revelationary
Активный0.0
Установок
Последнее обновление
Версии
Revelationary
О чем этот мод
Revelationary представляет собой систему постепенного открытия блоков и предметов, управляемую через конфигурационные файлы. Отныне разработчики модов и сборок могут создавать прогрессивное исследование мира с поэтапным обнаружением новых ресурсов по мере прохождения игроком контента.
Основной принцип работы
Вместо того чтобы вываливать на игрока все доступные ресурсы с самого начала, система позволяет скрывать определенные блоки под видом привычных. Например, вместо редкой руды пользователь видит обычный камень. И только после достижения конкретного достижения (например, победа над драконом Энда) тайна раскрывается — и игрок начинает замечать эти блоки в естественной среде их обитания.
Ключевые преимущества
- Прогрессивное развитие — игрок не перегружается избытком неизвестных ресурсов в начале игры
- Индивидуальные откровения — система работает независимо для каждого игрока
- Высокая производительность — реализация оптимизирована и не создает дополнительной нагрузки
- Элегантная интеграция — скрытые блоки сохраняют свойства и дроп маскирующего блока до момента открытия
Технические ограничения
При выборе масок для блоков стоит учитывать, что они наследуют все физические свойства оригинала:
- Размер и форма хитбокса
- Пропускаемость света
- Прочие технические характеристики
Оптимальными кандидатами для маскировки руд станут камень или глубинный сланец, имеющие схожие параметры. Также можно замаскировать специальное растение под мак — оба имеют маленький хитбокс и проходимы для игрока.
Для разработчиков
Если вы программист, используйте Revelation API для динамического изменения свойств блоков в зависимости от их видимости. Это открывает возможность, например, создания цветов, полностью скрытых в воздушном пространстве.
Настройка через Data Pack
Файлы конфигурации размещаются в директории resources/data/<mod_id>/revelations
Пример конфигурационного файла:
{
"advancement": "spectrum:milestones/reveal_quitoxic_reeds",
"block_states": {
"minecraft:grass": "minecraft:beacon",
"minecraft:tall_grass": "minecraft:obsidian",
"minecraft:tall_grass[half=upper]": "minecraft:netherite_block"
},
"items": {
"minecraft:nether_star": "minecraft:gunpowder"
}
}
Создание скрытых элементов
От разработчиков требуется реализовать интерфейс RevelationAware
:
public class HiddenItem extends Item implements RevelationAware {
Identifier advancementForDiscovery;
Item displayAsItem;
public HiddenItem(Settings settings, Identifier advancementForDiscovery, Item displayAsItem) {
super(settings);
this.advancementForDiscovery = advancementForDiscovery;
this.displayAsItem = displayAsItem;
registerDisguise();
}
@Override
public Identifier getAdvancementNeeded() {
return advancementForDiscovery;
}
@Override
public Hashtable<BlockState, BlockState> getBlockStateDisguises() {
return new Hashtable<>();
}
@Override
public Pair<Item, Item> getItemDisguise() {
return new Pair<>(this, displayAsItem);
}
@Override
public void onHide() { }
@Override
public void onReveal() { }
}
Реакция на открытие секретов
Можно настроить выполнение кода при обнаружении скрытого контента:
RevelationHolder.registerDiscoveryCallback(new RevelationHolder.RevealCallback() {
@Override
public void trigger(List<Identifier> advancements, List<Block> blocks, List<Item> items) {
for(Block block : blocks) {
if(Registry.BLOCK.getId(block).getNamespace().equals(YOUR_MOD_ID)) {
// Разместите здесь ваш код
// Например, показать всплывающее уведомление
break
}
}
}
});