Bukkit — это простой API, который позволяет модифицировать многопользовательский режим Minecraft с помощью плагинов.

Версии

Версия Minecraft Ссылка для ссылки Spigot Дата выхода
1.10.2 Ссылка на сайт 2016-11-03
1,10 Ссылка на сайт 2016-06-26
1.9.4 Ссылка на сайт 2016-06-09
1.9.2 Ссылка на сайт 2016-03-30
1,9 Ссылка на сайт 2016-02-29
1.8.8 Ссылка на сайт 2015-07-28
1.8.7 Ссылка на сайт 2015-06-05
1.8.6 Ссылка на сайт 2015-05-25
1.8.5 Ссылка на сайт 2015-05-22
1.8.4 Ссылка на сайт 2015-04-17
1.8.3 Ссылка на сайт 2015-02-20
1,8 Ссылка на сайт 2014-09-02
1.7.10 Ссылка на сайт 2014-06-26
1.7.9 Ссылка на сайт 2014-04-14
1.7.8 2014-04-11
1.7.5 Ссылка на сайт 2014-02-26
1.7.2 Ссылка на сайт 2013-10-25
1.6.4 Ссылка на сайт 2013-09-19
1.6.2 Ссылка на сайт 2013-07-08
1.5.2 Ссылка на сайт 2013-05-02
1.5.1 Ссылка на сайт 2013-03-21
1.4.7 Ссылка на сайт 2013-01-09
1.4.6 2012-12-20

Создание плагина

Предпосылки

  • JDK 7 или выше (рекомендуется: JDK 8+)

Добавление Буккита в зависимость

Самый простой способ добавить Bukkit API в ваш проект — загрузить Bukkit.jar непосредственно из репозитория Spigot и добавить его в путь к классу проекта. Устаревшие версии Bukkit можно найти в репозитории Bukkit .

Minecraft Как перевести Ядро Spigot Bukkit и плагины

Другой — добавить его как зависимость от Maven, добавив следующие строки в ваш pom.xml :

spigot-repo https://hub.spigotmc.org/nexus/content/repositories/snapshots/ org.bukkit bukkit provided

Основной класс

Основной класс плагина — это точка входа Bukkit для загрузки взаимодействия с вашим плагином. Это класс, который расширяет JavaPlugin и только один его экземпляр должен быть создан вашим плагином. По соглашению хорошо дать этому классу то же имя, что и ваш плагин.

Вот пример основного класса плагина для плагина «MyPlugin»:

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

public class MyPlugin extends JavaPlugin < private static MyPlugin instance; //Effectively final variable containing your plugin’s instance public MyPlugin()< if(MyPlugin.instance != null) < //Unnecessary check but ensures your plugin is only initialized once. throw new Error(«Plugin already initialized!»); >MyPlugin.instance = this; //A plugin’s constructor should only be called once > public static MyPlugin getInstance() < //Get’s your plugin’s instance return instance; >//your other code. >

Затем, чтобы получить доступ к вашему основному классу из другого класса, просто используйте MyPlugin.getInstance()

Создание плагинов для Minecraft #1 — Вводный урок


public class MyOtherClass < public void doSomethingWithMainClass()< MyPlugin.getInstance().getLogger().info(«We just used MyPlugin»); >>

Создание плагина.yml

Файл plugin.yml входит в корень вашего последнего файла jar и предоставляет важную информацию Bukkit для загрузки вашего плагина. Самый простой plugin.yml выглядит так

name: //The name of the plugin main: . //The fully qualified name of the main class. version: //The plugin’s version

Например, с приведенным выше классом MyPlugin

name: MyPlugin main: com.example.myplugin.MyPlugin version: 1.0

Создание тестового сервера в Windows

Чтобы иметь возможность создавать сервер, вам нужно иметь палец или файл bukkit jar. Переосмыслите тему версий, чтобы выбрать свою банку

  1. Сначала создайте новую папку. В этой папке поместите файл бандажа / буккита.
  2. Щелкните правой кнопкой мыши в папке и выберите «Создать»> «Текстовый документ».
  3. Назовите новый файл start.bat, щелкните его правой кнопкой мыши и нажмите «Изменить».
  4. Добавьте следующий код:

Не забудьте изменить для jar, который вы загрузили, прежде чем начинать эти темы.

  1. Вы можете редактировать -Xms для изменения минимально допустимой ОЗУ (Ex: -Xms1024M = 1024MB, -Xms1G = 1GB). Вы также можете редактировать -Xmx для изменения максимально допустимой ОЗУ. Убедитесь, что максимальное значение больше минимального.
  2. Сохраните файл, закройте окно и запустите файл start.bat . Теперь ваш сервер должен быть открыт. Чтобы запустить сервер, вы должны принять лицензионное соглашение .
  3. Если вы согласны с EULA , откройте eula.txt change eula=false для eula=true Нажмите «Сохранить», а затем вы должны теперь запустить свой сервер.
  4. Чтобы подключиться к вашему серверу, запустите start.bat , откройте Minecraft, добавьте сервер и поместите localhost в качестве IP.

инструмент сборки

Что это?

BuildTools.jar — это решение для создания Bukkit, CraftBukkit, Spigot и Spigot-API. Все это делается на вашем компьютере! Необходимо несколько предварительных программ, но приведенные ниже инструкции помогут вам в том, что вам нужно сделать.

Предпосылки

Для использования BuildTools необходимы два приложения: Git и Java.

Windows

Гит

Чтобы BuildTools запускался в Windows, вам нужно будет установить Git. Для Windows он распространяется через git-scm, который можно скачать здесь . Установите его там, где вам нравится, он предоставит git bash, который будет использоваться для запуска баннера BuildTools. Просто продолжайте работать, когда запускаете установщик.

Читайте также:  Майнкрафт фильмы самые страшные

Джава

Загрузите JRE 8 отсюда и установите. Просто продолжайте работать, когда запускаете установщик.

Linux

Как git, так и Java, а также команды утилиты могут быть установлены с помощью одной команды через диспетчер пакетов.

Debian / Ubuntu: sudo apt-get install git openjdk-7-jre-headless tar

CentOS / RHEL: sudo dnf install git java-1.7.0-openjdk-devel tar

Arch: pacman -S jdk8-openjdk git

макинтош

Возможно, Java необходимо обновить из распространенной версии Apple, и даже если она была ранее обновлена, возможно, потребуется связать ее с оболочкой. Следуйте приведенным ниже шагам: https://gist.github.com/johan/10590467

Запуск BuildTools

  1. Загрузите BuildTools.jar из https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar .
  2. Откройте ваш терминал, если вы находитесь в Linux, или git bash на Windows.
  1. Git bash можно найти на рабочем столе или в меню «Пуск» под названием «git bash». Также можно открыть его, щелкнув правой кнопкой мыши на чем угодно, так как теперь это элемент в вашем контекстном меню.
  1. В Windows вы можете либо использовать команду cd для изменения каталогов, либо щелкнуть правой кнопкой мыши пустое место в папке, где находится BuildTools.jar (не нажимайте на CreateTools.jar) и нажмите «git bash», который откроет его в вашем текущем каталоге.
  1. В Linux запустите git config —global —unset core.autocrlf, затем запустите java -jar BuildTools.jar в bash или другой соответствующей оболочке.
  2. В Windows запустите следующую команду в открывшемся окне git bash: java -jar BuildTools.jar. Имейте в виду, что требуется, чтобы у вас были BuildTools № 35 или более поздние версии, более старые версии не будут работать.
  3. На Mac выполните приведенные ниже команды, экспортируйте MAVEN_OPTS = «- Xmx2G» java -Xmx2G -jar BuildTools.jar
  4. Если вам нужна более старая версия, вы можете указать версию с аргументом —rev для BuildTools, например, для 1.8.8: java -jar BuildTools.jar —rev 1.8.8
  1. Подождите, как он строит ваши банки. Через несколько минут вы должны иметь свежую сборку банок!
  2. Вы можете найти CraftBukkit и Spigot в том же каталоге, в котором вы запускали BuildTools.jar (для версии minecraft 1.10 они были бы craftbukkit-1.10.jar и spigot-1.10.jar). Вы можете найти Spigot-API в Spigot Spigot-API target (для версии minecraft 1.10 это будет spigot-api-1.10-R0.1-SNAPSHOT.jar).

Источник: learntutorials.net

Bukkit — плагины для сервера Minecraft! Установка Bukkit.

Bukkit - плагины для сервера Minecraft! Установка Bukkit.

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

1. Скачать рекомендуемую версию Bukkit *click* или тестируемую *click*
2. Скачать файл по ссылке ниже.
3. Открыть его блокнотом или любым другим текстовым редактором и изменить craftbukkit.jar на название скачанного ранее Bukkit-файла (добавив версию, например «craftbukkit-1.6.4-r2.0.jar»)
ПРИМЕЧАНИЕ! Не забудьте убрать галочку с пункта «Использовать выбранную программу для всех файлов такого типа», иначе будет очень плохо.
4. Поместить оба файла в директорию сервера.
5. Запустить файл run.bat. Для выключения сервера прописать в консоли stop.

Требуемый файл:
runbat.zip [461 b] (22 апреля 2014, ️ 117)

Установка плагинов на Bukkit

1. Скачать нужный вам плагин.
2. Скопировать все требуемые файлы в папку /plugins в директории сервера.
3. Запустить сервер и перезапустить его.

Вот и всё. Желаю удачи вам и вашим проектам!

Источник: minecraftch.ru

Статья: Ведро с гайками

Фотография

  • Администраторы
  • Сообщений: 1784
  • Написал 26.11.2015 — 15:26

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

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

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

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

    Читайте также:  Как скрафтить глиняный горшок в Майнкрафт

    Однако структура их гораздо более продумана, свойства (переменные) и методы классов имеют четкую прослеживаемую систему видимости и доступа. Все что нужно (ну, почти все) доступно через соответствующие методы getXXX() и setXXX().

    Доступ к оригинальному объекту NMS осуществляется [как правило] через метод getHandle(), причем этот оригинальный NMS-объект создается одновременно с соответствующим ему объектом CraftBukkit.Основным достижением данной модификации сервера майна является серьезная переработка серверного цикла: была проведена серьезная работа по оптимизации обработки чанков, сущностей, обмена с клиентской частью. Переработан компонент спавна мобов, в бакките тысячи мобов уже не являются проблемой для сервера.

    Также под это дело появились дополнительные настройки в собственном конфигурационном файле (bukkit.yml). Однако с точки зрения разработчика плагинов главная заслуга баккитовцев не в этом. Главное, что они сделали — это сконструировали великолепный механизм взаимодействия (Bukkit API) между плагинами и сервером.

    Хотя, надо сказать, сделали они это несколько странным способом: создали в пакете org.bukkit дополнительную иерархическую структуру с интерфейсами, которые полностью повторяют своими названиями классы в пакете org.bukkit.craftbukkit.v1_X_RY, только не имеют в названии префикс . То есть, класс CraftEntity из пакета org.bukkit.craftbukkit.v1_X_RY.Entity наследует интерфейс Entity из пакета org.bukkit.Entity, причем все события и методы работают именно с объектами Entity, по сути, с интерфейсами.

    Умом я понимаю, что это связано с ограниченностью явы в плане множественного наследования классов, но в душе воротит от такой двойной бессмысленной работы. Что еще ощутимо напрягает, так это методы, которыми действуют (а может — уже «действовали») «баккитовцы»: баккит не является в чистом виде надстройкой над NMS, как, казалось бы, должно быть при строгом следовании принципам ООП, он с NMS образует чудную мешанину из кода, вызовы идут не только сверху вниз, как обычно происходит, в коде классов NMS не менее часто встречаются вызовы «наверх», к методам баккита.

    Особенно часто это происходит в ключевых точках генерации событий (баккитовских). В принципе, логика этого явления понятна: если у исходного продукта (NMS) нет достаточного количества контрольных точек (событий), к которым можно «прицепиться» для обработки тех или иных ситуаций, нет другого пути, кроме как вручную формировать такие точки, меняя напрямую его код.

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

    Собственно, вот эта самая совокупность интерфейсов из пакета org.bukkit, уже, как видно из названия, изолированная от версии NMS, и соответствующий им набор классов org.bukkit.craftbukkit.v1_X_RY, все еще привязанный к конкретному NMS, и называются Bukkit, он же баккит, он же ведро — прошу любить и жаловать. По сути, его же можно называть и CraftBukkit, что иногда и делают, хотя идеологически это все же немного разные вещи: CraftBukkit является модернизацией оригинального майнкрафт-сервера, а Bukkit является программным интерфейсом (API), связующим звеном между сервером и плагинами.

    Однако все уже давно привыкли рассматривать это как единое целое и привычно используют термин Bukkit. Вообще, главное богатство баккита заключается не в том, что он завернул все оригинальные классы в красивую обертку, а в том, что у него имеется огромное количество разного типа событий (несколько десятков), генерируемых сервером (теперь уже под управлением баккита) ежесекундно, и сообщающих о возникновении разного рода ситуаций.

    Теперь любой плагин может зарегистрировать на сервере свой обработчик событий нужного типа и выполнять какие-нибудь действия по возникновению оного. Это покрывает 99% всех потребностей плагинописателей, есть множество вполне серьезных плагинов, которые даже не лезут глубже баккитовских интерфейсов и событий.

    Зачем же люди морочатся с низкоуровневым доступом к объектам NMS, рискуя заработать несовместимость своего плагина с будущими версиями сервера? Дело в том, что даже баккит, при все богатстве его средств, не всегда может обеспечить полный спектр, так сказать, услуг и сервиса. Например, в нем до сих пор нет нормального интерфейса для работы со сделками торговца-непися, нет возможности отправить клиенту кастомный пакет, многие характеристики сущностей также доступны только средствами NMS. Поэтому волей-неволей периодически приходится лезть на уровень NMS и добывать информацию оттуда. Делается это, как уже было сказано выше, через метод getHandle():

    void process(Entity entity)< CraftEntity ce= (CraftEntity)entity; net[paste][/paste]minecraft[paste][/paste]server[paste][/paste]v1_8_R3[paste][/paste]Entity handle= ce[paste][/paste]getHandle(); if (handle instanceof net[paste][/paste]minecraft[paste][/paste]server[paste][/paste]v1_8_R3[paste][/paste]Entity) < [paste][/paste][paste][/paste][paste][/paste] >>

    То есть, сначала объект приводится к классу CraftBukkitа, соответствующему данному интерфейсу, а уж затем для полученного объекта пытаемся получить соответствующий ему NMS-объект. Желательно при этом проверять полученный результат на «вшивость», дабы не получить исключение со всеми вытекающими. Можно, в принципе, опустить эту проверку, поскольку баккитовский объект в отрыве от соответствующего ему NMS-объекта — это нонсенс. Но береженого, как говорится, бог бережет. Тем более, что сам баккит именно так и делает внутри методов своих классов. Отдельно нужно отметить, что иногда (в редких случаях) нет прямого соответствия классов баккита и NMS и, соответственно, у такого класса нет метода getHandle(), либо он может называться иначе. Исходники вам в помощь, бесценный кладезь информации по программированию на яве вообще и по устройству майнкрафтовского сервера в частности.

    Читайте также:  Какие инструменты в Майнкрафт

    Самое интересное, что на этом дело не закончилось. Компания еще более ушлых товарищей решила, что баккит уже не торт, и запилила свою сборку на его основе, назвав ее Spigot. С потоками и таймингами. Функционально они добавили всего-ничего, но вот оптимизировали они его еще более серьезно, добавив по сложившейся традиции в систему еще один конфиг-файл spigot.yml, в котором также имеется куча настроек по дальнейшему тюнингу системы. Особенно хорошо преимущества спигота раскрываются на многопроцессорных системах и с хорошим онлайном. А потом, в один прекрасный день, баккит как-бы приказал жить долго и счастливо. По крайней мере, народ высказал свое твердое и категоричное «фи» на известную тему (см. Страсти по ведру, еще и еще). А потом, после слива толстого небритого мужика в дурацкой шляпе и продажей всего нажитого жадному Билли дела и вовсе пошли по известному маршруту. В итоге компания негодующих активистов объединилась для создания мегамодификации мейнкрафт-сервера под названием Sponge (губка) на основе не менее легендарной системы тюнинга клиента майнкрафта Forge. Обещают задвинуть и баккит и спигот (тем более, что спиготовцы, вроде как, тоже решили поучаствовать в гешефте). Что они там наваяли еще не видел, но боюсь даже представить, во что выльется переделка всех написанных плагинов под новый API. Но, похоже, рано или поздно сделать это все равно придется. Кстати, об исходниках. Поскольку исходных кодов ни NMS ни баккита в свободном доступе нет и не предвидится, приходится как-то выкручиваться. Для выкручивания используется обычно маленькая, но гордая весьма полезная утилита FernFlowe. Я использую ее с небольшим патчиком, который исправляет кое-какие огрехи декомпиляции сложных классов. Пропатченный FernFlower можно скачать с нашего сайта. Утилита консольная, поэтому для декомпиляции jar-файлов использую обычно командный файл такого вида:

    java -jar fernflower[paste][/paste]jar %1 decomppause

    Как видно из примера, в каталоге с утилитой необходимо создать подкаталог decomp/. После этого перетаскиваем мышью (в винде, конечно) jar-файл, который нуждается в декомпиляции, на командный файл, в результате чего тот стартует и запускает утилиту fernflower.jar, передавая ему в качестве параметра декомпилируемый файл.

    Утилита шуршит некоторое время, захламляя черный экран белыми букафками, а затем в каталог decomp/ скидывает декомпилированный файл (с тем же именем и тем же расширением), в котором все файлы типа .class заменены декомпилированными файлами типа .java. Обычно я сразу распаковываю полученный jar с исходниками в каталог decomp/, в результате получаю каталог с именем исходного файла и набором распакованных исходников в нем. Очень удобно копаться, не нужно каждый раз лазить в архив.

    Первое, что вы должны декомпилировать, будет сам баккит (bukkit.jar), либо spigot.jar, если вы используете данную модификацию. Процесс это неппыстрый, минут 20 на покурить-оправиться у вас точно будет. Зато потом вы получите неплохой справочник по внутренностям вашего сервера, причем в текущей рабочей версии. Поверьте, это вам не раз еще пригодится для понимания особо сложных моментов.

    Кроме того, с помощью данной утилиты я частенько декомпилирую различные плагины (не всегда удается добыть исходники, да и иногда проще закинуть его на декомпиляцию, чем искать их в инете, благо обфускацию из плагинописателей почти никто не использует) на предмет посмотреть — как оно там все устроено унутре. Очень познавательное чтиво, надо сказать — почерпнул много ценных идей, чего и вам желаю. В общем, баккит — зло, но меньшее из имеющихся. Работать с ним можно и нужно. И совсем неплохо было бы уметь это делать.

    — У меня вопрос к свидетелю, можно? Спасибо. Скажите, подсудимый испытывал личную неприязнь к потерпевшему? — Да, испытывал. Он мне сказал: «Такую личную неприязнь я испытываю к потерпевшему. что кушать не могу!» к/ф «Мимино»

    В следующий раз, наверное, слегка затронем конфигурационные файлы (yml и json) и перейдем непосредственно к плагинам.

    • Поблагодарили: avttrue и Ovan

    Источник: minecrafting.ru