Minecraft Dev for IntelliJ

#Introduction

Hi guys, this is my first post here. I’d like to show you a project of mine that I think is really cool, and hopefully you will too. I am building a plugin for IntelliJ which assists in developing Minecraft plugins of all kinds. Bukkit, Spigot, and Paper are supported on the Bukkit end, Sponge of course, as well as BungeeCord, and Forge, and LiteLoader. But I am going to focus on Sponge here now.

#Overview

Minecraft Dev for IntelliJ, or what I’ll just refer to as Minecraft Dev from here on, supports custom project creation and detection with both Gradle and Maven. I will show you what I mean here.

First, you can create a project of various types, again, we are only focused on Sponge here:

Now you’ll be presented with a screen where you can input the build system information, and choose either Gradle or Maven. For Sponge the default is Gradle. The Java version chooser will be removed in a future release.

After that, you will be shown a Sponge-specific settings page. The required options will be filled in already for you, but you can fill in the optional fields as well.

And after you click next it will ask you where you want the project to be located (standard IntelliJ), then the plugin will generate the project for you. Gradle will import the project, and in this example this is what is generated:

I think this will lower the barrier of entry for Sponge plugin development, and some people I’ve already met with on the Sponge team agree.

#Contributing

Now I can already see the comments: “Couldn’t you just do this with some templates? What’s the point for installing a whole plugin?”

Well, the point of this post isn’t to get you to use this plugin, it’s to help me make it awesome. I already have a few people who have agreed to help out building the Sponge feature-set, but the more input we get the better. Now, if you still want to use the plugin then by all means, it is already uploaded to the plugin repository. You can install it by simply searching for “Minecraft” in IntelliJ’s built-in plugin wizard.

###Desired Feature Set

So I want people to contribute, but what do we have in mind for this plugin? Well, the possibilities are basically endless, we just need to come up with good features. We want features that would be legitimately useful to anyone, not just beginners, and we want it to feel like a native IDE experience. So here’s a few idea’s we have so far:

  • Ore integration with a dependency chooser which automatically adds the required information to the Maven pom.xml or Gradle build.gradle
  • Event listener generator
  • Warnings for common mistakes, such as not using filtering for listeners where appropriate
  • Automatic run configurations for debugging plugins on the server

This is a pretty short list, and I imagine people can come up with many, many more awesome ideas.

How to Contribute

I would love to get the community involved in this project, and I hope you guys find it as interesting as I do and see the potential in this project. gabizou and kashike have joined me in this project helping me create this, and it would be great to get more people involved.

Here is the Github link for this project, which includes the issue tracker. If you would like to contribute, feel free to fork the project and create pull requests with features. If you want to contribute in other ways, feel free to create issues for any bugs you find or features you think would be nice to add.

If you want to communicate with me on this project you can PM me on IRC at any time. I have a #demon channel set up on esper and spi.gt that is dedicated to Minecraft Dev development discussion, so feel free to join me there. I am always in #sponge and #spongedev as well, where you can always ping me. If you don’t use IRC then feel free to PM me here or reply to this thread and I’ll try to get connected with you.

28 Likes

This is amazing. The pain of starting a project is sometimes discouraging, I hope people will be more productive with this IntelliJ plugin.
Impressive work!
Edit:
Sadly, the version uploaded on IntelliJ’s repo does not support Sponge.

1 Like

I am used to their product with PHPstorm and I also know the pain to start a new project from scratch. As of now I didn’t give a try to java but I will surely use your plugin and give some feedback.

Hopefully more people will be able to start creating sponge plugin, thumbs up for your work !

1 Like

I would recommend using the SpongeGradle plugin instead of a full build.gradle.
i.e.

plugins {
    id 'org.spongepowered.plugin' version '0.5.2'
}

group '${GROUP_ID}'
version '${PLUGIN_VERSION}'
#if (${HAS_DESCRIPTION})
description '${DESCRIPTION}'
#end

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
    compile '${DEP_GROUP_ID}:${DEP_ARTIFACT_ID}:${DEP_VERSION}'
}

This way, it shortens build.gradle and also includes mcmod.info automatically.

1 Like

Why doesn’t it support forge…

You must have downloaded an older version somehow, check for updates. The most recent version has full Sponge support.

Edit: I see that I was basing off of IntelliJ 2016.1.2, I just released a new build based off of 2016.1. That may work better for you.

It will. This project is heavily WIP.

This is pretty cool. It might be good if you could make a list of Listener classes (and maybe the events they listen to/method names) and it would generate the boilerplate and registering things.

Thanks for the suggestion, we are working on adding event boilerplates right now, but I also really like your other suggestion. Definitely will look into doing that.

It’d be really cool if it autogenerated classes that extend the classes that extend AbstractData (AbstractBooleanData, AbstractMappedData, etc.) along with the immutable counterpart and the builder.

1 Like

#toomanyextendsmod

#markdownfail

Try <b></b>#hashtag next time. Don’t worry, you’re not the only one to do this (one of the developers did that in a private message to me).

i dont bother with special formatting… i just type it out and regret later xD

Not at all for API 4.x since it’s more of a pain to get the code generation to work than it is to get the actual code generation implementation for API 5.x’s offering (which admittedly is going to be far simpler to do than anything else).

@Zidane, his personal way of killing my Eclipse environment.

I shall never hear the end of this…

This, my friends, is the sweet sweet taste of victory.

4 Likes

Really? All I can taste is salt from Dockter.

1 Like

( ͡° ͜ʖ ͡°)

2 Likes

A new release has been posted, with Forge support (along with combo SpongeForge plugin support). This was a huge update that took a lot of work, and it definitely introduced some new bugs. If you guys could remember to report any issues to the Github issues page here, that would be great! Thanks guys.

2 Likes

Wow! This is really nice to use! Thank you so much for this!