======================== Setting Up IntelliJ IDEA ======================== This article describes how to configure your **IntelliJ IDEA** workspace for plugin development with SpongeAPI and :doc:`a build system such as Maven or Gradle <../buildsystem/>` or the `Minecraft Development plugin `_. If you want to create your project completely from scratch, please skip ahead to the Gradle or Maven sections. Using the Minecraft Dev plugin sets up a working starting point and eliminates some of the guesswork in getting your project off the ground. Using IDEA Minecraft Dev Plugin to Create a Working Starting Point ================================================================== The `Minecraft Development plugin `_ for IntelliJ is a great plugin by a community member which makes plugin project creation much easier while also providing some neat and useful features for development. By default, it will create a project which uses Gradle as the build tool. Installing the Minecraft Dev Plugin ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This plugin is available on the JetBrains IntelliJ plugin repository. Because of this, you can install the plugin through IntelliJ's internal plugin browser. Navigate to ``File -> Settings -> Plugins`` and click the ``Browse Repositories...`` button at the bottom of the window. In the search box, simply search for ``Minecraft``. You can install it from there and restart IntelliJ to activate the plugin. Creating Your Project from a Template ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Open **IntelliJ IDEA**. * Click ``Create New Project``. * Select ``Minecraft`` in the popup. * Make sure your **Project SDK** is set to some version of Java 8/1.8. * Select ``Sponge plugin`` for your project type, then click ``Next``. * Enter your **Group ID**, **Artifact ID**, and **Version**. * Your **Group ID** should usually correspond to your Java package name. See :doc:`../plugin-class` for details. * Your **Artifact ID** should usually correspond to your **plugin ID** you chose earlier, e.g. ``myplugin``. * Your **Version** is up to you. See :doc:`../project/version-numbers` for details. * Select your desired build tool, either Gradle or Maven, and click ``Next``. * Check your **Plugin Name** and **Main Class Name** to make sure they are what you want. * Specify your desired plugin **description**, **authors**, **website**, and **dependencies** if you want. * Click ``Next`` to move on. * Verify your project name, location, and module information, then click ``Finish``. * The plugin will create a main java file as a starting point, with the logger already injected. You may add a ``logger.info()`` statement in the ``onServerStart`` event handler to verify that the plugin is working when you run it. Editing the Project Configuration ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Refer to the Gradle_ or Maven_ configuration sections, depending on what you chose during project creation. .. _Gradle: Creating a Plugin from Scratch -- Gradle ======================================== * Open **IntelliJ IDEA**. * Click ``Create New Project``. * Select ``Gradle`` in the popup. * If you want, select any additional libraries and frameworks you desire, for example Kotlin. * Make sure your **Project SDK** is set to some version of Java 8/1.8. * Click ``Next`` to move on. * Enter your **Group ID**, **Artifact ID**, and **Version**. * Your **Group ID** should usually correspond to your Java package name. See :doc:`../plugin-class` for details. * Your **Artifact ID** should usually correspond to your **plugin ID** you chose earlier, e.g. ``myplugin``. * Your **Version** is up to you. See :doc:`../project/version-numbers` for details. * Click ``Next`` twice, name your project, and click ``Finish``. * The project will be created without a ``src`` directory. If you add java files to the incorrect location underneath the project, they will be ignored and not compiled, so it is a good idea to enable the checkbox "Create directories for empty content roots", found in: * **Windows**: ``File`` -> ``Settings`` -> ``Build, Execution, Deployment`` -> ``Gradle`` * **Mac**: ``Intellij IDEA`` -> ``Preferences`` -> ``Build, Execution, Deployment`` -> ``Build Tools`` -> ``Gradle`` * Enabling ``Use Auto-import`` in the same location will allow change to the gradle configuration to automatically reload without IDEA prompting you each time. * Upon enabling those settings, a ``/src/main/java`` directory should be created, where you can start creating your main plugin code files. Editing the Build Script ~~~~~~~~~~~~~~~~~~~~~~~~ * Open ``build.gradle`` in the navigator and add the dependencies. * Edit the build script according to the instructions at :doc:`../project/gradle`. * Open the **Gradle tab** on the right of the IntelliJ window and hit the refresh button. * Gradle setup is done! Now you can start coding your plugin. .. _Maven: Creating a Plugin from Scratch -- Maven ======================================= Creating Your Project ~~~~~~~~~~~~~~~~~~~~~ * Open **IntelliJ IDEA**. * Click ``Create New Project``. * Select ``Maven`` in the popup. * Make sure your **Project SDK** is set to some version of Java 8/1.8. * Click ``Next`` to move on. * Enter your **Group ID**, **Artifact ID**, and **Version**. * Your **Group ID** should usually correspond to your Java package name. See :doc:`../plugin-class` for details. * Your **Artifact ID** should usually correspond to your **plugin ID** you chose earlier, e.g. ``myplugin``. * Your **Version** is up to you. See :doc:`../project/version-numbers` for details. * Click ``Next``. * Enter your project's name, and click ``Finish``. Editing the Project Configuration ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Open ``pom.xml`` in the navigator. * Edit the build configuration according to the instructions at :doc:`../project/maven`. * Refresh your Maven project. * Import the Maven changes, if prompted. Testing Your Plugin =================== The following instructions are a quick way to test your plugin, but won't be the most efficient way to iteratively develop. To make a ``.jar`` file, using Gradle: * Go to ``View`` -> ``Tool Windows`` -> ``Gradle`` * Under ``Tasks`` -> ``Build``, click on ``jar`` * The build process should create the jar underneath ``build\libs`` To make a ``.jar`` file, using Maven: * Go to ``View`` -> ``Tool Windows`` -> ``Maven Projects`` * In the ``Maven Projects`` window, expand your project's name * Under ``Plugins``, expand ``jar`` * Double click ``jar:jar`` * The build process should create the jar underneath ``target`` Copy your jar file to the ``mods`` directory of a working Sponge server, then restart the server to test. For a more efficient development process, see :doc:`../debugging` for instructions on running both the Sponge server and your plugin from within IDEA. This process allows for hot-swapping, allowing you to change plugin code without restarting the server. Importing An Existing Project (Gradle or Maven) =============================================== If you've already started with your project and want to import it again at a later point you need to import it instead of re-creating it inside your IDE: * Click ``File > Open`` or ``Import Project``. * **Gradle**: Navigate to the project's ``build.gradle`` file and select it. * **Maven**: Navigate to the project's ``pom.xml`` file and select it. * Make sure the settings are as you desire and click ``Ok``. Git Integration =============== JetBrains offers in-depth documentation on using their Git integration: https://www.jetbrains.com/help/idea/using-git-integration.html