NimBlock Войти

Плагин для Minecraft без кода

На сервере Minecraft всё, что выходит за рамки базовой игры, делается через плагин, а плагин пишется на Java. Это стена, в которую упирается большинство владельцев серверов: они точно знают, чего хотят, но единственный путь лежит через язык программирования, проект, который нужно скомпилировать, и API, который нужно выучить. Эта страница объясняет что можно сделать без этого, и главное — где проходят границы.

Стена и три известных способа её обойти

До NimBlock у того, кто не программирует, есть три варианта, и у каждого есть чёткая граница, которую стоит знать заранее.

  • Командные блоки. Они находятся в мире, в конкретном месте, и срабатывают от редстоуна или по таймеру. Они не умеют реагировать на событие сервера, а тем более предотвращать его.
  • Датапаки. Они остаются в рамках ванильной игры: функции, достижения, таблицы добычи. Никакой настоящей команды, никакого перехвата чата, никакой отмены действия. Зато они работают на ванильном сервере, без Paper.
  • Skript. Гораздо мощнее двух предыдущих вариантов, и мощнее NimBlock. Это настоящий язык, а значит, нужно учить синтаксис и разбирать ошибки.

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

Правило в одном предложении

Вся грамматика NimBlock умещается в одном предложении: когда происходит это, если выполняются такие условия, то делать то-то. Плагин — это список правил, правило — это триггер, несколько условий и несколько действий. Больше учить нечего, и это сделано намеренно: грамматика, которая умещается в одном предложении, умещается и в голове.

Правило « приветствие »
Когда игрок присоединяется к игре
если у игрока есть право nimblock.vip
то отправить «Добро пожаловать, {игрок}!»
выдать 1 хлеб
проиграть звук повышения уровня

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

Что можно сделать уже сегодня

9 триггеров, 11 условий, 14 действий. Точный и актуальный список, с описанием каждого параметра, живёт на странице грамматики: он формируется на основе каталога, поэтому никогда не врёт. Вкратце о том, что они позволяют:

  • Реагировать на происходящее: подключение, отключение, сообщение в чате, смерть, сломанный или поставленный блок, придуманную тобой команду, или просто каждые N секунд.
  • Фильтровать по праву доступа, статусу оператора, миру, очкам здоровья, содержимому текста, сравнению чисел или вероятности.
  • Действовать: сообщения, крупные заголовки, звуки, предметы, эффекты, лечение, телепортации, объявления на весь сервер, выполнение консольной команды и отмена только что произошедшего события. Именно последнее превращает этот список в настоящую защиту.

Что это не заменяет

Страница, которая обещает всё, не помогает никому. Чего NimBlock не делает:

  • Никакой новой игровой механики. Новый тип блока, новая сущность, кастомный интерфейс инвентаря — это Java, и Java останется.
  • Никаких переменных и циклов. Правило реагирует, а не вычисляет. Если твоя идея требует хранить сложное состояние между двумя событиями, значит, это уже за пределами этой грамматики.
  • Никаких сторонних плагинов. NimBlock выполняет твои спецификации, а не загружает .jar, скачанный где-то ещё.
  • Новая команда заработает только после следующего запуска. Всё остальное применяется на лету, без остановки сервера, но Minecraft регистрирует команды при запуске: об этом сообщается в панели в момент, когда это происходит, а не становится сюрпризом в игре.

Где выполняется плагин

Нигде не генерируется и не компилируется Java. Сервер загружает движок, написанный один раз для всех, и этот движок читает твою спецификацию. Именно поэтому у плагина, собранного здесь, нет технического долга: когда меняется Minecraft, адаптируется движок, один раз, а не каждый плагин, написанный с его помощью.

На сервере, размещённом в NimBlock, ты устанавливаешь плагин из панели, когда сервер в сети. К хостингу применяется описанное здесь правило неактивности. Можно также использовать движок NimBlock на сервере Paper у другого хостера: движок остаётся бесплатным, и эта автоматическая остановка там не действует. Поддерживаемые версии Paper указаны на Hangar и Modrinth.

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

Часто задаваемые вопросы

Правда ли можно сделать плагин для Minecraft, не умея программировать?
Да, но с одним условием: ты составляешь правила в рамках заданной грамматики, а не пишешь произвольную программу. Правило звучит так: «когда происходит это, если выполняются такие условия, то делать то-то». Почти всё, что нужно серверу для друзей, укладывается в эту форму: приветственные сообщения, награды, защита, объявления, свои команды. Не укладывается то, что требует придумать целую игровую механику, а вот это по-прежнему требует Java.
В чём разница с командными блоками?
Командные блоки находятся в мире, в конкретном месте, и срабатывают от редстоуна или по таймеру. Плагин срабатывает на событие сервера: игрок подключился, блок сломан, сообщение в чате. Чего командные блоки не умеют, так это реагировать на происходящее, а тем более предотвращать его. Правило NimBlock может отменить событие, которое только что произошло.
А чем это отличается от датапака?
Датапак остаётся в рамках ванильной игры: функции, достижения, таблицы добычи. Он не может добавить настоящую команду, перехватить чат или отменить действие. Плагин для Paper может, потому что работает внутри сервера, а не в данных мира. Зато датапак работает на ванильном сервере, а плагину нужен Paper или Spigot.
А чем это отличается от Skript?
Skript — прародитель жанра, и он куда мощнее, тут даже сравнивать нечего: это настоящий язык, с переменными, циклами и огромной библиотекой дополнений. Но раз это язык, значит, нужно учить синтаксис, разбирать ошибки, а файл не скажет, где именно он сломался. NimBlock умеет намного меньше, зато отказывается сохранять невалидное правило и показывает точное место проблемы прямо на нужном блоке. Если тебе комфортно со Skript — оставайся на Skript.
Плагин где-нибудь компилируется в Java?
Нет, и это ключевое решение продукта. Твоя спецификация остаётся файлом JSON, а сервер загружает движок, написанный один раз для всех, который читает её и выполняет. Ничего не генерируется, ничего не компилируется. Практическое следствие: за новую версию Minecraft приходится платить один раз, в этом движке, а не в каждом плагине, написанном с его помощью.
Можно ли забрать плагин на сервер, который не размещён на NimBlock?
Да. Движок, который читает спецификации, опубликован на Hangar, каталоге плагинов PaperMC: https://hangar.papermc.io/Mollenthiel/NimBlock. Спецификация — обычный файл JSON, движок читает его из папки плагинов сервера: правило, собранное здесь, работает и на Paper-сервере, который вы держите сами. Какие версии Paper поддерживаются, указано на странице каталога, и она обновляется с каждым выпуском.

Собери своё первое правило и посмотри, как оно заработает на уже существующем сервере.

Во время бета-тестирования хостинг бесплатный. Сервер останавливается, если в течение 15 минут нет подключённых игроков. При остановке твой мир не удаляется. Ты можешь снова запустить сервер из панели, когда появятся свободные ресурсы. Один сервер с 1 ГБ памяти на аккаунт.