Навайбкодил свой Майнкрафт-сервер с кастомными плагинами

Делать было нечего, и тут вдруг пришла в голову идея сделать свой сервер в Майнкрафте. Поскольку я был в этом бом-бом, решил обратиться к моему старому доброму китайскому другу. А он сказал мне: «冰淇淋, друг, я тебе сам всё напишу».

Навайбкодил свой Майнкрафт-сервер с кастомными плагинами

Изначально идея была доколе тупая, сделать хардкор сервер с очень ограниченным миром, и вайпом если все игроки умерли. С этим мой китайский дружок справился буквально в 1 запрос. Скачал мне paper, gradle, плагин на ограничение мира и что-то там перекомпилировал в нем (не шарю ваще за миникрафтерские АПИ и за программирование в целом). Побегал я по этому серверу и понял, что что-то как-то не особо-то и интересно тут будет играть. После этого решил попробовать испытать вайбкодинг на прочность и заказал ему кое-какой плагин...

DeathSkull

Суть плагина в том что если игрок умирает на хардкоре (пермасмерть), другие игроки могли подобрать его череп и воскресить, потратив опыт. Поскольку этот плагин тоже пишется в один запрос, я решил немного расширить его и сделать некое усложнение.

Около черепа должна спауниться вредина (vex) и патрулировать соседние чанки. Главная особенность заключается в том что она преследует этот череп не важно где бы он находился и её поведение абсолютно случайное. То есть в большинстве своем вредина должна просто патрулировать местность, но иногда ей может захотеться пустить кому-нибудь кровь...

вредина атакует

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

Но у этого плагина был один недостаток: он перезабивал оперативку хостинга, который мне посоветовала нейросеть, поэтому от вредин пришлось отказаться. ;( Я поднял логи, и оказалось, что каждая вредина трекает сначала предметы в мире, блоки в мире, инвентари всех игроков и только после этого строит маршруты на передвижение. Я хотел упростить логику, но, к сожалению, все алгоритмы, которые я со своим китайским другом смогли придумать, не давали такое же поведение.

Но тут конечно больше роль сыграл хостинг с 2гб оперативы.

Выживаем
Выживаем

В общем, недостаток вредин надо было как-то компенсировать. Помимо того что они создавали странные ситуации, они еще и указывали, где находится череп в данный момент. А без вредин искать черепа игроков стало практически невозможным. Тогда я решил добавить функцию поиска черепов.

Решил я это быстро, просто добавил функцию поиска на компас. Как мне кажется, это достаточно неплохая идея, так как, кроме поиска, я добавил полезности ещё и другому предмету.

Так же немного проработал условия для воскрешения. Раньше для воскрешения требовался 30 уровень, но теперь плагин считал плейтайм и по формуле высчитывал стоимость воскрешения. Чем дольше играешь, тем дороже воскрешение. В довесок к этой игровой особенности я попросил китайского друга закачать мне на сервер плагин, который позволяет делать склянки опыта. Он сначала сам хотел написать такой плагин, но потом всё-таки подумал и скачал уже готовое решение.

В будущем я думаю как-то вернуть вредин, если не буквально, то хотя бы как игровую функцию создания опасности возле черепов игроков.

Навайбкодил свой Майнкрафт-сервер с кастомными плагинами

Temperature999

Далее я решил развивать идею хардкор выживания на бомжацком хосте, и добавить контроль температуры. Сначала я просто хотел найти какой-нибудь готовый плагин, и я его нашел, это был Temperature999. Но при тестировании его в реалиях игры оказалось, что он чё-то какой-то всратый, поэтому я решил довести его до ума.

Главная проблема в логике плагина это действие брони. По задумке автора, она должна защищать от охлаждения и перегрева, но в конечном итоге она защищала от нормальных показателей температуры тела. То есть когда вы замерзли и одели теплую броню вы добавляете резист к изменению показателя температуры. Да, вы начинаете согреваться, но при этом согревание останавливается резистом. Великая логика...

Я решил реализовать всё намного проще и сделал, что броня должна вести температуру тела в среднее значение (50 из 100). Если взять тот же пример: в моей логике те цифры резиста просто добавлялись к текущей температуре тела каждые 5 секунд до момента, пока температура не придёт в норму. Никаких сложных формул, морозный биом тянет температуру к нулю со скоростью 2, а мой сет брони тянет температуру к 50 со скоростью 3. И неожиданно броня стала работать.

Конфиг который можно настраивать ручками
Конфиг который можно настраивать ручками

Попутно я добавил поддержку медной брони, которой почему-то изначально не было. Добавил возможность редактировать изменение температуры разным горячим и холодным блокам. А также сделал кэширование температуры игроков, ведь в оригинальном плагине температура игроков не сохранялась при перезаходе и её можно просто было абузить.

Конечно никаких исходников у этого плагина не было, поэтому мой китайский друг сам декомпилировал, пересобрал и скомпилировал плагин обратно. Просто чудо техники.

Хост

Хост, который я упоминал ранее, тоже посоветовал китайский дружок. Он узнал, на каком хосте дешевле всего можно развернуть тестовый сервак на paper и чтобы там ещё был доступ через FTP-менеджер (удобная штука, блин). На сайтике, конечно, поначалу ничего не было понятно, особенно тому, кто раньше не хостил серваки. Но нейронка и тут помогла, прочитала мануал и просто дала мне инструкцию для чайников.

Навайбкодил свой Майнкрафт-сервер с кастомными плагинами

Вот такие развлечения у меня. Кстати, серверу всего неделя. Мб еще буду писать, что удалось прикрутить через нейронку, если это кому то интересно

4
2
5 комментариев