Плагин для Minecraft без кода
На сервере Minecraft всё, что выходит за рамки базовой игры, делается через плагин, а плагин пишется на Java. Это стена, в которую упирается большинство владельцев серверов: они точно знают, чего хотят, но единственный путь лежит через язык программирования, проект, который нужно скомпилировать, и API, который нужно выучить. Эта страница объясняет что можно сделать без этого, и главное — где проходят границы.
Стена и три известных способа её обойти
До NimBlock у того, кто не программирует, есть три варианта, и у каждого есть чёткая граница, которую стоит знать заранее.
- Командные блоки. Они находятся в мире, в конкретном месте, и срабатывают от редстоуна или по таймеру. Они не умеют реагировать на событие сервера, а тем более предотвращать его.
- Датапаки. Они остаются в рамках ванильной игры: функции, достижения, таблицы добычи. Никакой настоящей команды, никакого перехвата чата, никакой отмены действия. Зато они работают на ванильном сервере, без Paper.
- Skript. Гораздо мощнее двух предыдущих вариантов, и мощнее NimBlock. Это настоящий язык, а значит, нужно учить синтаксис и разбирать ошибки.
Все три варианта существуют давно и ничуть не устарели. Не хватало как раз ступени между командным блоком и языком программирования.
Правило в одном предложении
Вся грамматика NimBlock умещается в одном предложении: когда происходит это, если выполняются такие условия, то делать то-то. Плагин — это список правил, правило — это триггер, несколько условий и несколько действий. Больше учить нечего, и это сделано намеренно: грамматика, которая умещается в одном предложении, умещается и в голове.
В редакторе это блоки, которые соединяются друг с другом: блок, которому нельзя оказаться в каком-то месте, туда просто не встанет. А то, что пропустил редактор, ловит валидатор: спецификация принимается или отклоняется целиком, никогда наполовину. Плагин защиты, лишившийся своего правила защиты, никак не проявился бы в игре, а это как раз тот сбой, которого хочется избежать.
Что можно сделать уже сегодня
9 триггеров, 8 условий, 14 действий. Точный и актуальный список, с описанием каждого параметра, живёт на странице грамматики: он формируется на основе каталога, поэтому никогда не врёт. Вкратце о том, что они позволяют:
- Реагировать на происходящее: подключение, отключение, сообщение в чате, смерть, сломанный или поставленный блок, придуманную тобой команду, или просто каждые N секунд.
- Фильтровать по праву доступа, статусу оператора, миру, очкам здоровья, содержимому текста, сравнению чисел или вероятности.
- Действовать: сообщения, крупные заголовки, звуки, предметы, эффекты, лечение, телепортации, объявления на весь сервер, выполнение консольной команды и отмена только что произошедшего события. Именно последнее превращает этот список в настоящую защиту.
Что это не заменяет
Страница, которая обещает всё, не помогает никому. Чего NimBlock не делает:
- Никакой новой игровой механики. Новый тип блока, новая сущность, кастомный интерфейс инвентаря — это Java, и Java останется.
- Никаких переменных и циклов. Правило реагирует, а не вычисляет. Если твоя идея требует хранить сложное состояние между двумя событиями, значит, это уже за пределами этой грамматики.
- Никаких сторонних плагинов. NimBlock выполняет твои спецификации, а не загружает .jar, скачанный где-то ещё.
- Новая команда заработает только после следующего запуска. Всё остальное применяется на лету, без остановки сервера, но Minecraft регистрирует команды при запуске: об этом сообщается в панели в момент, когда это происходит, а не становится сюрпризом в игре.
Где выполняется плагин
Нигде не генерируется и не компилируется Java. Сервер загружает движок, написанный один раз для всех, и этот движок читает твою спецификацию. Именно поэтому у плагина, собранного здесь, нет технического долга: когда меняется Minecraft, адаптируется движок, один раз, а не каждый плагин, написанный с его помощью.
На сервере NimBlock установка занимает один клик, и плагин применяется без остановки игры. А сам движок будет опубликован в каталогах плагинов, чтобы та же спецификация работала и на сервере, размещённом не здесь.
Часто задаваемые вопросы
- Правда ли можно сделать плагин для Minecraft, не умея программировать?
- Да, но с одним условием: ты составляешь правила в рамках заданной грамматики, а не пишешь произвольную программу. Правило звучит так: «когда происходит это, если выполняются такие условия, то делать то-то». Почти всё, что нужно серверу для друзей, укладывается в эту форму: приветственные сообщения, награды, защита, объявления, свои команды. Не укладывается то, что требует придумать целую игровую механику, а вот это по-прежнему требует Java.
- В чём разница с командными блоками?
- Командные блоки находятся в мире, в конкретном месте, и срабатывают от редстоуна или по таймеру. Плагин срабатывает на событие сервера: игрок подключился, блок сломан, сообщение в чате. Чего командные блоки не умеют, так это реагировать на происходящее, а тем более предотвращать его. Правило NimBlock может отменить событие, которое только что произошло.
- А чем это отличается от датапака?
- Датапак остаётся в рамках ванильной игры: функции, достижения, таблицы добычи. Он не может добавить настоящую команду, перехватить чат или отменить действие. Плагин для Paper может, потому что работает внутри сервера, а не в данных мира. Зато датапак работает на ванильном сервере, а плагину нужен Paper или Spigot.
- А чем это отличается от Skript?
- Skript — прародитель жанра, и он куда мощнее, тут даже сравнивать нечего: это настоящий язык, с переменными, циклами и огромной библиотекой дополнений. Но раз это язык, значит, нужно учить синтаксис, разбирать ошибки, а файл не скажет, где именно он сломался. NimBlock умеет намного меньше, зато отказывается сохранять невалидное правило и показывает точное место проблемы прямо на нужном блоке. Если тебе комфортно со Skript — оставайся на Skript.
- Плагин где-нибудь компилируется в Java?
- Нет, и это ключевое решение продукта. Твоя спецификация остаётся файлом JSON, а сервер загружает движок, написанный один раз для всех, который читает её и выполняет. Ничего не генерируется, ничего не компилируется. Практическое следствие: за новую версию Minecraft приходится платить один раз, в этом движке, а не в каждом плагине, написанном с его помощью.
- Можно ли забрать плагин на сервер, который не размещён на NimBlock?
- Это в планах: движок, который читает спецификации, будет опубликован в каталогах плагинов. Спецификация — обычный файл JSON, движок читает его из папки плагинов сервера. На момент написания этой страницы это ещё не запущено.
Собери своё первое правило и посмотри, как оно заработает на уже существующем сервере.
Бесплатно во время бета-тестирования · один сервер на 1 ГБ на аккаунт