За последние несколько лет IntelliJ от JetBrains быстро стала лучшей IDE для разработчиков Java. В нашем последнем отчете о состоянии Java IntelliJ была предпочтительной средой разработки для 55% респондентов, по сравнению с 48% годом ранее.

Одна из особенностей, которая делает IntelliJ столь привлекательным для разработчиков Java, — это возможность расширять и создавать новые функции с помощью плагинов. В этом руководстве мы рассмотрим создание плагина IntelliJ, чтобы продемонстрировать несколько способов расширения IDE.

Обратите внимание: хотя эта статья посвящена плагинам IntelliJ, все IDE JetBrains имеют общий код. Следовательно, многие из используемых здесь методов можно применить к другим IDE JetBrain, таким как PyCharm, RubyMine и т. Д.

2. Функциональность плагина

Функциональность плагина для IntelliJ обычно попадает в одну из 4 категорий:

  • Пользовательские языки : возможность писать, интерпретировать и компилировать код, написанный на разных языках.
  • Фреймворки : поддержка сторонних фреймворков, таких как Spring
  • Инструменты : интеграция с внешними инструментами, такими как Gradle
  • Надстройки пользовательского интерфейса : новые пункты меню, окна инструментов и кнопки и многое другое.

Плагины часто делятся на несколько категорий . Например, подключаемый модуль Git, поставляемый с IntelliJ, взаимодействует с исполняемым файлом git, установленным в системе. Плагин предоставляет свое окно инструментов и элементы всплывающего меню, а также интегрируется в рабочий процесс создания проекта, окно настроек и многое другое.

Создание и компиляция bukkit/spigot плагина через IntelliJ IDEA

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

Самый простой способ начать работу с плагинами IntelliJ — использовать их плагин DevKit. Доступ к нему можно получить из меню New > Project :

Обратите внимание, что мы должны использовать JetBrains JDK, чтобы гарантировать, что требуемые классы подключаемых модулей доступны в пути к классам. IntelliJ должен поставляться с подходящим JDK по умолчанию, но если нет, мы можем скачать его отсюда.

На момент написания этой статьи мы можем использовать Java 8 только для написания плагинов IntelliJ . Это связано с тем, что JetBrains в настоящее время не предоставляет официального JDK для Java 9 или выше.

4. Пример плагина

Чтобы продемонстрировать написание плагина IntelliJ, мы создадим плагин, который обеспечивает быстрый доступ к популярному веб-сайту Stack Overflow из нескольких областей в среде IDE. Мы добавим:

  • Пункт меню «Инструменты» для перехода на страницу «Задать вопрос».
  • Пункт всплывающего меню как в текстовом редакторе, так и в выводе консоли для поиска выделенного текста в переполнении стека.

4.1. Создание действий

Действия — это основной компонент, используемый для написания плагинов IntelliJ . Действия запускаются событиями в среде IDE, такими как щелчок по пункту меню или кнопке панели инструментов.

Читайте также:  Как создать Майнкрафт персонажа в блендере

Первым шагом в создании действия является создание класса Java, расширяющего AnAction . Для нашего плагина Stack Overflow мы создадим 2 действия.

Первое действие открывает страницу Задать вопрос в новом окне браузера:

Мы используем встроенный класс BrowserUtil, потому что он обрабатывает все нюансы открытия веб-страницы в разных операционных системах и браузерах.

Второе действие открывает страницу поиска Stack Overflow и передает текст поиска в виде строки запроса. На этот раз мы реализуем два метода.

Первый реализуемый нами метод аналогичен нашему первому действию и обрабатывает открытие веб-браузера.

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

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

В этом случае мы используем PSI для определения языка программирования файла:

PsiFile file = e.getData(CommonDataKeys.PSI_FILE); Language lang = e.getData(CommonDataKeys.PSI_FILE).getLanguage(); String languageTag = «+[» + lang.getDisplayName().toLowerCase() + «]»;

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

Чтобы получить текст для поиска, мы будем использовать API редактора для извлечения выделенного текста на экране:

final Editor editor = e.getRequiredData(CommonDataKeys.EDITOR); CaretModel caretModel = editor.getCaretModel(); String selectedText = caretModel.getCurrentCaret().getSelectedText();

Хотя это действие одинаково для окон редактора и консоли, доступ к выделенному тексту работает одинаково.

Теперь мы можем собрать все это вместе в объявлении actionPerformed :

This has the advantage of letting us dynamically register actions. For example, if we write a plugin to integrate with a remote API, we might want to register a different set of actions based on the version of the API that we call.

The disadvantage to this approach is that actions do not register at startup. We have to create an instance of ApplicationComponent to manage actions, which requires more coding and XML configuration.

5. Testing the Plugin

As with any program, writing an IntelliJ plugin requires testing. For a small plugin like the one we have written, it’s sufficient to ensure the plugin compiles and that the actions we created work as expected when we click them.

We can manually test (and debug) our plugin by using a Plugin run configuration:

This will launch a new instance of IntelliJ with our plugin activated. This allows us to click the different menu items we created and ensure the proper Stack Overflow pages open up.

If you wish to do more traditional unit testing, IntelliJ provides a headless environment to run unit tests. We can write tests using any test framework we want, and the tests run using real, unmocked components from the IDE.

Читайте также:  Как сделать бесконечную ферму цветов в Майнкрафте

6. Deploying the Plugin

The plugin DevKit provides a simple way to package plugins so we can install and distribute them. Simply right-click the plugin project and select “Prepare plugin module for Deployment”. This will generate a JAR file inside the project directory.

The generated JAR file contains the code and configuration files needed to load into IntelliJ. You can install it locally, or publish it to a plugin repository for use by others.

The screenshot below shows one of the new Stack Overflow menu items in action:

7. Conclusion

В этой статье мы разработали простой плагин, который освещает лишь некоторые из способов улучшения IntelliJ IDE.

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

Как всегда, полный код нашего образца плагина можно найти в нашем репозитории GitHub.

Популярные посты

  • Программирование
  • Программирование

Источник: ru.minecraftfullmod.com

Использование Idea#

Запустите Idea и в стартовом окне кликните по кнопке «Projects», затем «Open» и найдите место расположения вашего проекта, как показано ниже. Нажимайте «ОК», чтобы открыть проект.

Демонстрация открытия проекта

Потребуется подождать около минуты, пока среда разработки полностью загрузит необходимые библиотеки Gradle и подготовит проект к работе. За процессом открытия проекта можно следить в правом нижнем углу среды разработки.

Теперь откройте меню «View» в верхней части экрана и выберите пункты «Tools Windows > Gradle».

У вас откроется окно с Gradle задачами. Gradle — популярная система автоматической сборки, которая из исходников собирает готовые программы и делает еще много других необходимых, но рутинных дел. Эти самые дела называются задачами/заданиями/тасками — tasks.

Выглядит оно примерно так:

Демнострация Gradle задач

Выполните задачу setupDecompWorkspace из группы forgegradle . Тем самым мы произведём загрузку необходимых библиотек для написания мода и работы с исходным кодом Minecraft и Minecraft Forge.

Решение проблем#

К сожалению, на старых версиях Forge Gradle профили запуска проекта для IntelliJ Idea не создаются автоматически и приходится производить дополнительные манипуляции для исправления этого. Либо вы можете открыть папку с проектом через консоль и выполнить установку так .gradlew setupDecompWorkspace idea .

Чтобы не выходя из Idea произвести установку профилей, в том же самом окне с задачами найдите «other» и запустите задачу «genIntellijRuns». Если по какой-то причине вам выдаёт ошибку вида «NullPointerException», то найдите «build setup» и запустите задачу «init».

Читайте также:  Как вылить воду из пипетки Майнкрафт

В новых версиях Intellij Idea вы можете столкнуться с красным крестиком на кнопке запуска вашего проекта

Ошибка запуска

Откройте список и выберите «Edit Configurations. »

Настройка

В открывшемся окне выберите «Minecraft Client», затем в выпадающем меню classPath выберите «McModding.main»

Настройка конфига проекта

Повторите аналогичную процедуру для «Minecraft Server», нажмите «Apply» и «OK».

В игре нет текстур/переводов/звуков из мода#

Возможно вы столкнётесь с проблемой, что не загружаются ресурсы мода, чтобы это исправить, необходимо открыть настройки IntelliJ Idea и проделать такие манипуляции:

Настройка загрузки ресурсов

Нажмите «OK» и ваш проект полностью готов к разработке мода в IntelliJ Idea!

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

Урок первый. Знакомство с модом.

Если со 2 пунктом возникли вопросы, то вот небольшая помощь.

Переходим по ссылке выше.

Качаем Mdk. Там будет рекламное окошко. Спустя 5 секунд ожидания жмем SKIP и ждем окончания загрузки. Это дожен быть .zip архив.

Его нужно распаковать в какую-либо папку, предлагаю назвать её так же, как и мод. Конечно у всех названия будут разными, но есть свои условия имени мода. Оно может состоять только из английских букв и цифр. А вместо пробелов ставим -. Мод я назову: TutorialMod-Astler-v1. А папка получит имя tutorial_mod.

Ваше название может быть полностью иным, но не забывайте (a-z, A-Z, 0-9) и —.

Начало работы с IDE

Вот сейчас будет интересно. Открываем IntelliJ IDEA (ну или что там вы решили использовать).

Видите пункт Import Project? Он наш. В окошке находим нашу папку и жмем ОК.

Тут жмем Далее (Next) пока не увидим Завершить (Finish). Иными словами: Ничего не меняем. А после завершения импорта видим окно програмы:

Тут в правом нижнем углу нажимаем на Import Gradle, ведь нам его еще настраивать. Ждем завершения импорта.

Когда очередная настройка будет завершена: открываем меню Gradle справа. Во вкладке fg_runs выбираем genIntellijRuns (или другой, в зависимости от вашей IDE). Запуск этой команды создаст необходимые файлы конфигурации для запуска Minecraft прямо из Intellij.

В правом верхнем углу открываем выпадающее меню, где выбираем Edit Configuration….

В открывшемся окошке, в пункте Use classpath of module выбираем пункт имя_папки_с_модом.main:

И жмем ОК. После этого в том же выпадающем меню выбираем runClient и жмем на зеленую стрелочке Play рядом. Если все было сделано верно — начнеться запуск игры.

В меню Mods (Моды) можно увидеть Example Mod. Это заготовка для нашего будущего мода, и именно с его настройки мы продолжим в следующем уроке.

Источник: geekstand.top