Майнкрафт как писать плагины
Туториал - "От а до я" Создания плагина Minecraft | Bukkit по-русски
Сегодня я заново открываю цикл статей и на этот раз. забрасывать его не буду и даже буду отвечать на ваши коментарии. Ну что ж, от слов к делу. Поехали!
Подготовка
Для написания своих плагинов нам понадобятся:
Так же понадобятся базовые знания по Java. Если таковых нет, то вот ссылки по “поднятию скила”:Установка и настройка Eclipse
Если вы уже знакомы с Eclipse или увас другая IDE, то пропускайте этот раздел.
Проблем с установкой эклипса возниктуть не должно: его нужно просто распаковать в любоую папку и запустить. Сразу после этого, эклипс попросит указать, какое рабочее пространство(workspace) сейчас открыть. Это папка, в которой будут сохранятся все созданные проекты и где ее располагать – лично ваше решение. Если вам всеранво, то оставляйте все как есть. Если вдруг захотите изменить рабочее пространстро, то не переживайте: при каждом следующем запуске, эклипс сново спросит вас о рабочем пространстве. Таких пространств можно наделать сколько угодно и каждое может быть настроено по разному, под какие-то определенные цели. К примеру у меня есть 2 рабочих пространства: для написания обычных java-приложений и для написания плагинов под “ведро”. Если вдруг вам надоест это сообщение, там есть галочка «Use this as the default and do not ask again», что позволяет задать workspace по-умолчанию.+
Как только вы определитесь с выбором места и загрузится Eclipse, то мы увидим пригласительную вкладку… которую сразу же закрываем. Она нам ни к чему.
Теперь же мы видим рабочее пространство самого эклипса. Из всего этого, нам понадобится только следующие панели:
- Package Explorer
Здесь будут отображаться ваши проекты, пакеты(о них позже) и всевозможные файлы наших будующих плагинов. - Problems
Этой панелькой мы будем редко пользоваться(если вообще до нее дело дойдет), но сказать о ней стоит. Здесь будут показываться ошибки, допущенные в коде, а так же предупреждающие сообщения о возможных ошибках или неточностях. - Outline
Тут будет отображаться навигация непосредственно по коду открытого java исходника.
Рабочее место почти готово. Осталось только поставить еще 2 галочки в настройках.
Переходим в меню Window -> Preferences, далее по древу General -> Editor -> Text Editors и выставляем галочку «Show line numbers», чтобы включить отображение нумерации строк. Теперь переходим в General -> Workspace и в группе «Text file encoding» выставляем кодировку UTF-8, самым установив кодировку по-умолчанию.
С установкой и настройкой покончено. Теперь поясню, как создавать новый проект для плагина. Это можно сделать одим из 3-х способов:
- Меню File -> New -> Java Project
- Кнопка на панели инструментов
- Правый клик в Package Explorer
Нажимаем Next.
В появившемся окне, переходим на вкладку Libraries, нажимаем кнопку Add External JARs и выбираем скаченный Bukkit API
Жмем Finish.
Слева, в Package Explorer, показался наш проект с папкой src, в которой будут храниться наши исходные коды. Теперь созданим новый класс. Делается это точно так же, как и с Java Project.
В окне New Java Class нам понадобятся только следующие графы:
- Package
указывается пакет, в котором будет хранится наш класс. Формат имени должен быть примерно такой: ru.dmitriymx.bukkit.tutorial.
Если в двух словах и на пальцах, то пакеты в ява – это пространство имен(namespace) или «виртуальные папки», в которые помещаются классы. Подробнее про это можно прочитать здесь: [1], [2], [3]. - Name
указываем название класса (у меня это DmxFirstPlugin)
Вот теперь переходим непосредственно к коду.
Пишем простой плагин
Как только мы создали новый класс, нашему взору предстает уже готовый пустой шаблон
Пока это всего лишь пустой класс, который абсолютно бесполезен в быту. Будем это исправлять. Изменяем вот это
на это
Эклипс подчеркнет нам JavaPlugin, указывая на ошибку в коде. Если подвести мышь к такому подчеркнутому коду, то откроется окошко с описанием ошибки и способы ее решения. В данном случае нам нужно импортировать класс из Bukkit API, для чего выбираем пункт «Import ‘JavaPlugin’(org.bukkit.plugin.java)»
Сразу же замечаем, как над всем нашим кодом вписалась строчка
Немного теоретического материала. У плагинов есть 3 основных метода: onEnable(), onDisable() и onLoad(). Первые два отвечают за включение и отключение плагина, а последний срабатывает когда плагин непосредственно подгружается в память сервера. Из этого следует, что onLoad выполняется самым первым, но сам плагин начинает работать только после вызова onEnable со стороны сервера. По выключению или перезагрузки сервера, вызывается метод onDisable.
С “точками входа-выхода” разобрались. Давайте теперь напишем что-нибудь более-менее работоспособное. Приведем общий код класса к следующему виду:
кому невидна вторая часть:
о что мы сейчас написали – готовый плагин. Все что он делает – это пишет в чат о приходе и уходе игрока на сервер. Разбираться в его работе будем по порядку(а как иначе?).
Сперва обращу внимание на строку объявления класса. Как видно, к нашему классу добавилось расширение Listener. Не углубляясь в дебри явы, скажу проще: указывая данное расширение, мы тем самым расширяем область применения класса не только как плагина(JavaPlugin), но и как обработчика событий(Listener). А вот как раз в методе onEnable() мы регистрируем наш класс на сервере как обработчик событий(this – это указание «на самого себя», если кто забыл).
Далее следует 2 наших обработчика событий onJoin() и onQuit(). Первый отвечает а событие входа игрока на сервер, а второй – за уход. С помощью метода event.getPlayer().sendMessage(), мы можем отправить сообщение тому игроку, которое вызвал данное событие(в нашем случае игроку, который зашел). Статический класс ChatColor хранит в себе константы цветов для окраски. Думаю как им пользоваться уже видно из примера. Так же, оба наших обработчка оповещают других игроков на сервере о произошетших событиях, но делают это по разному. В onJoin() с помощью метода event.setJoinMessage() мы меняем привычное сообщение «Player joined the game» на любое другое. А в onQuit() мы поступили инача(в целях примера): убрали вывод сообщения о выходе и сообщаем об этом через метод getServer().broadcastMessage(), который просто посылает всем игрокам на сервере указанное сообщение.+
Дело осталось за малым: написание важного файлика plugin.yml и упаковка всего этого в jar-файл.
plugin.yml – это файл описания плагина. В нем задается название плагина, главный класс, описание и какие комманды зарегестрировать за плагинов(об этом позже) и т.д. В нашем случае, файлик должен выглядеть так:
Ой, забфл сказать, где этот файлик должен находится. Жмем правой кнопкой мыши в PackageExplorer по папке src и через меню New выбираем File. В поле File name пишем plugin.yml и жмем Finish. В открывшемся текстовом редакторе, пишем то, что я указывал выше. Всё сохраняем и переходим к последней фазе: упаковке.
Правый тык по папке src -> Export. В древе папок, открываем Java и выбираем JAR file и жмем Next. Из голочек оставляем только «Export generated class files and resources» и «Compress the contents of the JAR file». В поле JAR file указываем, куда будем сохранять полученный плагин. После нажатия на Finish, плагин можно класть в папку plugins, запускать сервер и проверять его работу.
Видите? Это совсем просто. С практикой вы наберетесь больше опыта и сможете делать более крутые плагины, даже такие легендарные как WorldEdit и WorldGuard.
Источник
Как легко изменить Minecraft с помощью TypeScript
от Джоша Вульфа
Обычно для модификации Minecraft требуется кодирование на Java и множество строительных лесов. Теперь вы можете писать и делиться модами Minecraft, используя TypeScript / Javascript.
ScriptCraft - это библиотека моддинга JavaScript для Minecraft с открытым исходным кодом, и мы написали поддержку TypeScript и набор инструментов для создания знакомого интерфейса разработчика для тех, кто пришел из страны JavaScript (включая Yeoman и NPM).
В этой статье я расскажу, как настроить и собрать свой первый мод TypeScript Minecraft менее чем за час - всего за 20 минут, в зависимости от вашего интернет-соединения.
В этом видео (щелкните здесь, если встраивание не работает выше) я покажу вам, как написать базовый мод Minecraft с помощью TypeScript и запустить его на локальном компьютере с настольным компьютером и мобильным сервером Minecraft.
Ниже я расскажу вам о шагах со ссылками на ресурсы.
Предварительные требования
Вам понадобится некоторое программное обеспечение, установленное на вашем компьютере, чтобы запустить сервер Minecraft и инструменты для написания вашего плагина.Установите все четыре следующих компонента:
Клиент Minecraft
Вам понадобится клиент Minecraft для тестирования вашего плагина.
Установите хотя бы одно из следующего:
- Minecraft Java Edition - настольный клиент, если вы хотите протестировать на сервере Bukkit.
- Minecraft Pocket Edition - мобильный клиент, если вы хотите протестировать на сервере Nukkit
Почему вы никогда не должны / перезагружать на Spigot, Bukkit и Paper |
Команда / reload
существует в Букките с самых первых дней. Идея была проста - позволить владельцам серверов быстро перезагружать конфигурацию плагинов без перезапуска сервера. Эта идея была похожа на старую одноименную команду hMod. Однако, чтобы упростить написание плагинов, команда перезагрузки просто отключила плагин и повторно запустила механизмы загрузки плагинов Bukkit. Хотя эта концепция существовала в hMod в виде отдельных команд, она требовала более контролируемого использования.Одновременно можно было включить / отключить только отдельные плагины.
Поскольку Java не предоставляет надлежащего способа «выгрузить» классы, которые сервер уже загрузил, это начало вызывать несколько тонких проблем и ошибок. Повторная загрузка всего в некоторых случаях вызывала конфликты между старой и новой версиями классов, что было особенно плохо при изменении файлов jar плагина. По этой причине Spigot всегда не рекомендовал использовать команду перезагрузки. Существенное отвращение к команде перезагрузки было очевидно еще в 2011 году, только вскоре после запуска Bukkit.
По мере развития Minecraft то, что требовалось для перезагрузки, становилось намного сложнее, пока концепция перезагрузки не стала невозможной. В каждом недавнем обновлении команда перезагрузки вызывала больше проблем. Прямо сейчас никто не должен использовать команду / reload. Это вызывает значительную нестабильность в Minecraft, Bukkit и практически в любом плагине, который использует Bukkit API. В настоящее время такое простое действие, как проверка разрешений игрока, может вызвать проблемы после перезагрузки.
Если вам нужно:
- Добавить плагин после того, как сервер уже запущен
- Обновить подключаемый модуль во время работы сервера
- Удалить плагин во время работы сервера
ПЕРЕЗАГРУЗИТЕ СЕРВЕР (Или, в худшем случае, для первого, включите его с помощью PlugMan).
Если вам нужно:
- Обновить конфигурацию плагинов
Используйте предоставленную плагином команду перезагрузки, например / cb reload
перезагрузит конфигурацию CraftBook.
Если вы изменили какие-либо файлы jar, при перезагрузке сервера создаст нестабильный сервер, даже если вы этого не заметите. Команда / reload
- это ВСЕГДА либо ненужная, либо небезопасная.
Примечание! Это не относится к команде перезагрузки Sponge.Команда перезагрузки Sponge не выполняет того, что делает Bukkit, а вместо этого отправляет плагинам событие, сообщающее им, что была запрошена перезагрузка. После этого плагин должен перезагрузить конфигурации.
Примечание 2! Если вы хотите использовать команду Minecraft
/ reload
для перезагрузки пакетов данных на Bukkit, вы можете смело использовать/ minecraft: reload
.
Обновление CraftBook до Minecraft 1.13
Опубликовано 18 ноября 2018 г.
Обновление CraftBook до версии 1.13 имел несколько проблем, но теперь он работает правильно. В будущем также ожидаются несколько серьезных изменений.
Что нового в WorldEdit 7.1?
Опубликовано 24 января 2020 г.
Прошло более полугода с момента последнего большого обновления WorldEdit, и теперь мы выпускаем WorldEdit 7.1 с множеством новых функций и улучшений!
Как сохранять и загружать схемы с помощью WorldEdit
Опубликовано 27 июня 2019 г.
Узнайте, как загружать и вставлять файлы схем в Minecraft с помощью WorldEdit, и даже сделать свои собственные, чтобы поделиться ими с друзьями или в Интернете!
.PrismarineJS / mineflayer: создавайте ботов Minecraft с помощью мощного, стабильного и высокоуровневого JavaScript API.
перейти к содержанию Зарегистрироваться- Почему именно GitHub? Особенности →
- Обзор кода
- Управление проектами
- Интеграции
- Действия
- Пакеты
- Безопасность
- Управление командой
- Хостинг
- мобильный
- Истории клиентов →
- Безопасность →
- Команда
- Предприятие
- Проводить исследования
bukkit - Как наложить текстуру на объект в подключаемом модуле Minecraft
Переполнение стека- Около
- Товары
- Для команд
- Переполнение стека Общественные вопросы и ответы
- Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
- Вакансии Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимайте технических специалистов и создавайте свой бренд работодателя