Перейти к содержимому



Команда молодости нашей... (с)

10.01.2016 22:13 | vasco в Статьи по плагинам

- Всем - стоять! Трамвай - прижаться вправо!
- Пендальф!!!
- Я майор милиции, Заслуженный пожарник Поволжья и Почетный дружинник!
Выходить по одному, сабли на пол, руки за голову!..
Команда была "Стоять!"... Я... сказал... "Стоять!"!!!
х/ф "Две сорванные башни"

Вот есть у нас несколько десятков событий баккита. Казалось бы, что еще нужно, чтобы спокойно встретить старость наладить взаимодействие с игроками? К сожалению, Minecraft - это не Black & White, одними жестами игре не объяснишь, что тебе от нее нужно. Рано или поздно приходится иметь дело с консолью, а именно - с консольными командами. Эти самые команды позволяют предельно формализованно отправить сервер в нужном направлении, пояснив с помощью аргументов - что нужно надеть на шею и что делать при встрече с поездом.

Консольные команды условно можно разделить на "административные", вводимые с консоли сервера (если к ней есть доступ), и "пользовательские", которые обычные игроки применяют, используя строку чата. Деление это достаточно условное, поскольку большинство "административных" команд можно запустить непосредственно из клиента игры через строку чата, так и многие "пользовательские" команды могут быть введены с консоли сервера. Так что деление это обуславливается скорее системой "разрешений" или "пермишенсов" (permissions), установленной на сервере для разных групп игроков (обязательно посвятим этому отдельную статью).


Читать полностью →    Комментариев: 0    -----    bukkit, plugins, команды

Не думай о событиях свысока!

05.01.2016 00:23 | vasco в Статьи по плагинам

- Какое главное событие в моей жизни?!
- шепотом Впереди...
- Главное событие в вашей жизни еще впереди!
к/ф "Собачье сердце"

Разрабатывая бесконечную, как мир Майнкрафта, тему написания плагинов, нельзя объехать на хромой кобыле обойти вниманием столь важный момент, как обработка событий Баккита. Собственно, события и их обработка - это основная причина, по которой в качестве Майнкрафт-сервера выбирают именно платформу Баккит (и ее производные). Без них разработка плагинов становится делом не то что муторным, а по сути невозможным. Думаю, процентов 90, а то и 95 действий плагинов сводятся к обработке того или иного баккитовского события. А все остальное - тоже либо подготовка к этому, либо обеспечение этих действий. В дальнейшем для упрощения повествования события баккита будут именоваться просто "событиями", без уточнения источника (хотя события могут генерить и другие компоненты сервера).

События сами по себе - это не скрижали, посланные свыше, а просто объекты (как и все в языке Ява), производные от класса org.bukkit.event.Event. В какой-то момент, при какой-то ситуации, создается объект события определенного типа и запускается в обработку. Появление данного события в обработке как раз и сигнализирует о возникновении некой ситуации на сервере. То есть события - это индикаторы возникновения некой ситуации (штатной или не очень), соответствующей данному типу событий.


Читать полностью →    Комментариев: 3    -----    bukkit, events, plugins

Новый год к нам мчится, скоро все случится..! (с)

31.12.2015 12:54 | vasco в Новости

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


Изображение



Читать полностью →    Комментариев: 4    -----

Монументальное полотно "Сеятель"

23.12.2015 20:40 | vasco в Статьи по плагинам

Киса, я давно вас хотел спросить как художник — художника. Вы… рисовать умеете?
к/ф "Двенадцать стульев"

"А когда же будет про Яву?", спросите вы. А "про яву" не будет. Ну не думаете же вы, в самом деле, что я сейчас начну долго и нудно объяснять - что такое пакеты и классы, циклы и интерфейсы? Беседа выйдет, конечно, "безумно интересной", но абсолютно непродуктивной: о программировании на Яве написан вагон и маленькая тележка книжек, тонких и толстых, пересказывать их краткое содержание - что может быть более глупым. Полно форумов, в том числе и на русском, где давно уже по 16 раз обсудили и решили все те проблемы, которые вы считаете неразрешимыми. Есть великолепный сайт, где собраны примеры по Яве на все случаи жизни.

Что касается документации непосредственно на баккит, то тут все немного сложнее. Я в настоящий момент пользуюсь справочником по Bukkit API, размещенным на сайте проекта Spigot. Раньше у баккита был свой голубенький шикарный справочник, но после известных событий он приказал жить долго и счастливо. Тем не менее, основную свою задачу спиготовский справочник выполняет вполне успешно, пользоваться им можно и нужно.


Читать полностью →    Комментариев: 0    -----

Новая редакция Правил сервера

20.12.2015 12:00 | vasco в Новости

Похоже, все кто хотел высказаться по поводу новой редакции Правил сервера - уже высказали свое мнение. Мы, со своей стороны, постарались учесть высказанные пожелания/возражения/дополнения. К сожалению, можно придумать еще пару тысяч ситуаций, не описываемых прямо нашими правилами. Но, как уже было сказано, превращать их в талмуд мы не собираемся, но многие из заданных в теме вопросов мы постараемся отразить в FAQ к правилам.

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

Огромное спасибо от имени администрации хочу сказать всем неравнодушным игрокам, принявшим деятельное участие в допиливании и шлифовке новой редакции правил.


Комментариев: 0    -----

Эклипсом по баккиту

15.12.2015 23:08 | vasco в Статьи по плагинам

Ударим автопробегом по бездорожью и разгильдяйству!
И.Ильф, Е.Петров "Золотой теленок"

Почти уверен, что уже вполне назрел сакральный вопрос: "А когда мы приедем?" (с). Отвечаю не менее шаблонно: "Приедем, когда приедем!" (с). Прежде чем приступить к собственно написанию этих самых плагинов, необходимо ответить на не менее важный вопрос - "А на чем (в чем) их писать?". Конечно, брутальные пацаны сейчас закидают меня тухлыми пингвиньими яйцами и скажут, что писать нужно в текстовом редакторе (конечно же, консольном), компилить и собирать - с помощью трехэтажной консольной конструкции, а если чего-то непонятно - RTFM (идти читать этот чертов мануал). До сих пор поражаюсь, почему они не пишут все исключительно на ассемблере?

На самом деле, все уже украдено написано до нас. Для написания плагинов используется все та же ява, на которой написаны и NMS и баккит. А под нее, в свою очередь, создано порядочное количество различных IDE (сред разработки), позволяющих, слава КПСС, обойтись без использования консольных команд. Большинство использует великолепную вещь, именуемую Eclipse(Эклипс). Работает она во всех распространенных операционных системах, имеет множество средств контроля корректности кода, а самое главное - собирает проект, благодаря специально системе компиляции, предельно быстро.


Читать полностью →    Комментариев: 7    -----    плагины, bukkit, eclipse

YML и все-все-все...

07.12.2015 14:59 | vasco в Статьи по плагинам

- Гляди, Пятачок!
- Ой, выходит... то есть... входит!
- Входит!!
- И выхо-о-одит! И входит... Замечательно выходит!
- И выходит! И входит! Хе-хе!
м/ф "Винни-пух"

Вся система настроек майнкрафт серверов и плагинов для них держится на конфигурационных файлах. Традиционно в качестве формата конфигов для mc-серверов используется YAML (он же YML) - формат сериализации данных, базирующийся на сдвиге выражения описания элемента данных относительно начала строки. Чтобы наглядно показать, о чем идет речь, приведу следующий пример (в нем начальные пробелы заменены на точки):
settings:
..debug: false
..save-user-cache-on-stop-only: false
..filter-creative-items: true
..moved-wrongly-threshold: 0.0625
..moved-too-quickly-threshold: 100.0
..bungeecord: false
..late-bind: false
..sample-count: 12
..player-shuffle: 0
..user-cache-size: 1000
..int-cache-limit: 1024
..timeout-time: 60
..restart-on-crash: true
..restart-script: ./start.sh
..netty-threads: 4
..attribute:
....maxHealth:
......max: 2048.0
....movementSpeed:
......max: 2048.0
....attackDamage:
......max: 2048.0


Читать полностью →    Комментариев: 0    -----

Новое лицензионное соглашение от Mojang

04.12.2015 18:43 | vasco в Новости

Мне вот тут неоднократно напоминали, что не прошло и пяти лет, как Mojang разродился-таки русифицированным лицензионным соглашением. И фраза

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

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


Комментариев: 2    -----

Ведро с гайками

26.11.2015 14:42 | vasco в Статьи по плагинам

- Кто он такой, этот Bukkit потерпевший? Куда он пошел? Я его, говорит, первый раз вижу!
к/ф "Мимино"

По сути, оригинальный сервер minecraft, в общих чертах описанный в предыдущей статье, является "вещью в себе", ибо написан так, как было удобно разработчикам. Взаимодействие с внешними модулями сводилось к минимальному набору событий, свойства (объекты) класса объявлялись либо публичными (с полным доступом) либо с дефолтным доступом (на уровне пакета) либо приватными, причем делалось это, похоже, без всякой системы, по крайней мере, какой-то строгой логичной системы я в этом не уловил. Примерно так же обстояло дело и с доступностью методов. Обычный ООП-подход, когда объект (переменная) класса объявляется приватной, а доступ к ней осуществляется методами get() и set() практически не использовался. Ну и таких косяков был - вагон.

И вот группа социально активных граждан сбилась в шайку и сваяла свою серверную сборку, с интерфейсами и событиями.Назвала она свое творение... нет, не Bukkit, назвали это CraftBukkit. Все классы пакета org.bukkit.craftbukkit.v1_X_RY (окончание такое же, как и у соответствующего ему NMS) разложены по подпакетам (item, event, entity и т.д.) и представляют собой, по сути, обертки для оригинальных классов. Однако структура их гораздо более продумана, свойства (переменные) и методы классов имеют четкую прослеживаемую систему видимости и доступа. Все что нужно (ну, почти все) доступно через соответствующие методы getXXX() и setXXX(). Доступ к оригинальному объекту NMS осуществляется [как правило] через метод getHandle(), причем этот оригинальный NMS-объект создается одновременно с соответствующим ему объектом CraftBukkit.


Читать полностью →    Комментариев: 3    -----    minecraft, bukkit, плагины

Что такое NMS и как с ним бороться?

24.11.2015 14:13 | vasco в Статьи по плагинам

Прошлой статьей мы начали небольшой цикл на тему написания плагинов для серверов Bukkit. Статья получилась из разряда "Вообще". Сегодня обратимся к конкретике и рассмотрим основы структуры майнкрафтовского сервера.

- Астронавты, которая тут цапа?!
- Там... ржавая гайка, родной.
- У вас все тут ржавое!
- А эта самая ржавая!
к/ф "Кин-дза-дза"

А вот тут как бы сам по себе, из ниоткуда, возник резонный вопрос: "А для чего мы все это делаем, и что это за Баккит такой?". Попробуем потихоньку разобраться во всех этих майновских хитросплетениях, поскольку без хотя бы минимального понимания механизма работы сервера писать для него плагины будет сущим мучением (испытано на себе, не повторять в домашних условиях!).

Итак, майновский сервер представляет собой jar-файл с набором откомпилированных до уровня байт-кода java-классов. Если интересно, можно открыть его каким-нибудь архиватором типа WinRAR или 7-zip (сейчас меня закидают яйцами пингвинов) и посмотреть как это все разложено по каталогам. Основной набор файлов лежит в подкаталоге /net/minecraft/server/v1_X_RY/, где X - мажорная (основная) версия сервера, а Y - минорный (вторичный) номер билда. Например, для майнкрафта версии 1.8.8 этот подкаталог имеет название "v1_8_R3". В подкаталоге находится более 1.5 тысяч файлов с расширением .class (java байт-код), обеспечивающих работу вашего сервера. Минорная версия (билд) меняется не очень часто, например, билд R3 тянется аж (если мне склероз не изменяет) с версии 1.8.4. Мажорный номер, как вы понимаете, меняется еще реже, в соответствии с изменением версии игры (например, переход с версии 1.7.10 на 1.8).


Читать полностью →    Комментариев: 0    -----