NimBlock Войти

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

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

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

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

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

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

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

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

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

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

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

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 ГБ на аккаунт