- Версия(и) Minecraft
- 1.20.1
Perimeter - Мод для Minecraft Forge 1.20.1
Всем привет! Разбавлю помирающий форум своим модиком. Короче давно у меня сидела идея создать мод на всякие заборы, датчики и прочие системы охраны.Давайте пройдемся по порядку, я вам тут все покажу. Запаситесь чайком, писанины будет много, как в старые добрые времена этого форума!
Ссылки на скачивание:
Curseforge
Modrinth
ЯндексДиск
Во-первых, для успешной работы всех задуманных мною механик надо было сделать сигналы редстоуна более доступными. Сначала я думал о реализации проводов по граням блоков наподобие Redstone Wires. Но потом оказалось, что сделать два коннектора и нарисовать между ними линию (а впоследствии кубоид) было не в пример проще. Создание этой системы заняло большую часть разработки мода, я бы сказал. Дня четыре на фулл-тайм я точно на них потратил. Но зато сделал.
Вообще изначально задумывалась модная на новых версиях стилистка в духе оригинального майна, но по ходу дела у меня все равно получилась какая то бледно-индустриальная гамма цветов. Ну да и пофиг).
А под них конечно же надо было сделать столбы - куда ж без них.
Итак, теперь Редстоуновые провода при соединении это единая система. Причем система нелинейная - к одному коннектору можно прицеплять до 3 проводов, что значительно увеличивает возможности. Система реализована на локальном уровне: каждый блок в своем BlockEntity знает и опрашивает все блоки системы. Это децентрализованная система устойчива к багам - если где то что то случится, другие блоки тут же все равно передадут правильную информацию, но наверное, не очень производительна в сравнении с централизованной системой. Оптимизация была сделана максимально возможная в данном случае: при любом удобном случае система прекращает обновляться и тикает впустую, ничего особо не нагружая. Редстоунификация довольной крупной деревни с использованием более 40 блоков в одной системе не давали просадок тпс\фпс.
Конечно многие блоки в моде реализую IBlockPostConnection, который позволяет им коннектится к красивейшим индустриальным столбикам!
Эти редстоун-провода намеренно игнорируют блоки для полной свободы игры. Их можно прокладывать как угодно в радиусе 20 блоков от коннектора на который был совершен ТЫК.
К столбам кстати прилагаются красивые светильнички на редстоуне, которые ставятся на любую сторону блока.
Ну а дальше я приступил к реализации своих блоков. Первым было решено сделать самый распространенный - инфракрасный пассивный датчик присутствия или в народе - объемник. Если кратко, принцип работы блока максимально приближен к реальному прототипу. Реальный датчик работает так: настраивается порог срабатывания: регистрируется изменение фонового инфракрасного излучения. Поскольку любое живое существо, которому будет надо проникнуть в охраняемое датчиком помещение, скорее всего будет теплокровным, то датчик незамедлительно зарегистрирует резко возросшее инфракрасное излучение и издаст сигнал тревоги. В моем случае механика работы под капотом выглядит так: создается фантомный AABB настраиваемого радиуса (от 1 до 8 блоков через ГУИшку), который тикая, регистрирует наличие Entity в зоне. Обнаруживая энтити, блок от себя до энтити рисует вектор, и если вектор не упирается в твердые блоки, то происходит сработка.
Вот он, слева.
Справа от него находится датчик с похожим функционалом, но реагирующий не на физически присутствие Энтити, а на издаваемые в заданной области (пока фиксированная - 4 блока) звуки. Это Звуковой датчик. Причем, в отличие от инфракрасного объемника, данный датчик работает в абсолютном объеме - стены не преграда (игровая условность для разнообразия). Есть несколько режимов работы: Все звуки, Блоки, Злые мобы, Нейтральные мобы, Игроки и Погода (не знаю зачем, я так и не понял какие звуки у погоды - на дождь он не срабатывает). Отслеживать текущий режим можно либо по боковому индикатору, либо при ПКМ переключении - на action bar будет отображаться сообщение о текущем режиме работы.
Еще есть блоки активной инфракрасной сигнальной системы: линейные инфракрасные излучатели, известные как СПЭКи (можете загуглить принцип работы). Здесь точно такой же: рисуется кубоид от центра до центра и при пересечении этого кубоида баундбоксом энтити блок трансмиттера начинает излучать сигнал редстоуна. Лазеры можно делать в любых направлениях - под углом, по диагонали, в пространстве и так далее. Полная свобода действий, но соединять можно только два блока - это важно.
Далее, чтобы немного разбавить свою рутину и отдохнуть от суточного пиления этих блоков, я занялся рисованием различных предметов для крафта и созданием простых блоков. Кстати, рисовать я не умею и ставил задачи по рисованию итемов ChatGPT. Мне оставалось только перерисовать на 16х поле созданные ею образы.
Вообще все итемы на этом скрине - исходно сгенерированы нейросетью. Они используются для стандартных крафтов и одном небольшом интерактивном крафте in world, о котором расскажу ближе к концу.
А так: можете скрафтить достаточно дорогие, но крайне крепкие (примерно в 3\4 от обсидина) железобетонные блоки: решетку, дверь, блок (два варианта), стена и колонна.
Ну что, перевели дух от офигенности? Продолжаем!
Следующими шагами стали создание нескольких видов сигнализационных и охранных сетей и заборов. Для удобства работы логики система была унифицирована и разделена на две части: входную и выходную. Она работает на WorldSavedData и вообще по красоте все сделано: сама система это один тип блока, а сигнализационный - отдельный блок. Таким образом сеть блоков тикает внутри своих BlockEntity, пересекаясь с реальным миром только через блок Контроллера, который и выдает сигнал в зависимости о сигнала в системе.
Первым на очереди был вибрационный кабель и его контроллер.
Вращается по осям (и его область детекции тоже) и соединяется с другими таким же блоками, а также имеет возможность быть замаскированным под обычный блок.
На скриншоте выше вы можете видеть примерное мое видение реализации данного кабеля. Кстати, его можно закопать и на один блок глубже: область детекции специально сделана 3.5 блока. Тут как ваша душа пожелает. Рендер был полностью скопирован с оригинального блока со всеми тенями, цветами биомов и так далее. Так что внешне фальшивый маск-блок отличить от обыкновенного невозможно.
Кстати в качестве бонуса добавил еще Технолампу - можете наблюдать ее над блоком контроллера. В целом это обычная лампа, разве что она светится тем уровнем света, которым запитана (т.е если сигнал редстоуна 5 - то уровень света тоже будет 5).
Вторым видом заборов стал сигнальный забор. Здесь механика аналогична вибрационному кабелю, но он улавливает сущности на один блок перед своей лицевой стороной. Ну и чтобы добавить побольше различий - этот забор отталкивает энтити от себя и активируется. Так что подойти к нему с лицевой стороны не представляется возможным. Он кстати интерполирует скорость и если на него налететь в режиме быстрого бега, есть шанс что вектор отражения рассчитается так что вас подкинет куда нить высоко
Он работает примерно также: при активации любого блока системы активируется вся система и все подключенные к сети эмиттеры начинают излучать сигнал редстоуна.
Третьим и заключительным типом забора является забор под напряжением. Единственное его фактическое отличие заключается в том, что контроллер ему не нужен, ведь он сам является потребителем редстоун-сигнала. При запитывании любого блока системы она активируется и в радиусе 0.5 вокруг каждого блока системы будет коллизия, которая наносит очень большой урон сущностям (игрок умирает с двух ударов). Обращаю внимание, что запитать ее можно исключительно от блока-источника редстоуна. Учитывая что коннекторы редстоун-сети в моем моде являются таковыми, можно строить вот такие вот красивенькие системы. Кстати, этот же забор коннектится к столбам, т.к своих угловых states у него пока нет.
Ну и далее из приятных мелочей: есть крайне взрывоустойчивый железобетонный
Кроме того, еще есть очень мощный прожектор, уже засветившийся на форуме ранее. Обязательно зацените красивый желтенький ореол от света, на него было потрачено времени примерно как на провода
Ну и напоследок - обещанный интерактивный крафт. Для того чтобы скрафтить микросхемы, которые используются почти во всех блоках - их три, нужно собрать компоненты в кейсе микросхемы в правильной последовательности. Подсказку по этому крафту можно увидеть как по зажатию Shift в инвентаре, так и и нажав Ctrl и наведя на блок. Если компоненты будут собраны в неправильной последовательности, вы потеряете их вместе с кейсом, так что будьте аккуратны! (тож игровая условность).
На этом я наверное закончу обзор своего мода.
Исходники можно поглядеть на моем Гитхабе: GitHub - MaxLegend/Perimeter: Minecraft Mod for 1.20.1
Открыт к баг-репортам и конструктивной критике.
Всем хорошего времени суток!