##Frequently Asked Questions (for plugin developers)
###New API? Where do I start?
You can start by heading off to the official Sponge Documentation and reading up a bit on how to start writing your own plugins. Keep in mind the guides there typically assume you have prior knowledge of Java. If you just wanna delve right into exploring all the classes, or just need to look something up, the JavaDocs for SpongeAPI are available.
###I want to make plugins, but I don’t know Java!
Learning a programming language takes time and effort. There are a number of resources everywhere around the internet; look around for some. The official Java Documentation by Oracle is a nice place to start.
###How do I test my plugin?
Usually, you’ll want to have a test server to play around with your plugin. Instructions to set up a Sponge server can be found in the Official Sponge Documentation. Instructions to set up a Sponge server within a development environment can be found within the respective project’s README.md (Forge/Vanilla).
###Do I test with Sponge or SpongeVanilla?
This is entirely upon your preference. If you would like to work with trying to make your plugin support interventions by server mods, then you should work with Sponge. If you only want to focus on a vanilla, mod-free environment, play with SpongeVanilla.
###Help! My plugin isn’t working!
Always debug your plugin as much as you can, so you can be sure whether or not the fault belongs to your code, or to the Sponge implementation’s. If you find it to be your problem, do a little research on the forum and see if someone else has had the same problem and has a solution given to them (Search button on the top right [magnifying glass]); it makes it a whole lot easier for us forum stalkers to not have to deal with much duplicates. If you cannot find a solution, you can post your dilemma on the forums under the Plugin Development
category and some of us can see what we can do.
Please remember that we are only a community and not a full-blown organization of professional helpers; do your research first before asking us.
###How should I report bugs or improvements?
Before submitting an issue, you should check to see if someone else has already addressed it. Check the issue tracker of the repository and the forums for your problem, and if you don’t find any, then continue on.
Issues regarding Sponge or the API should be submitted to the respective repository’s GitHub Issue Tracker. Be as elaborate as possible with explaining your issue, creating a system takes a lot of brain power and information is all we have to work with. Include use cases, possible solutions and resources like stacktraces if you have them.
###Something’s wrong with Sponge?
The team isn’t perfect with their work; there’re always gonna be a few bugs here and there within the code. As an open source project, the team welcomes any effort to help squash these bugs. Assuming you’ve correctly debugged your plugin and are certain the fault isn’t your code, you can always submit an issue to the GitHub Issue Tracker for the respective implementation of Sponge you’re developing for (Forge/Vanilla). This is only for things that’re wrong with how Sponge is working; if you have a missing feature, scroll down.
###The API’s missing something I need!
As always, hunt down for information to see if your feature has already been addressed by someone else, or if its even already implemented and you just turned a blind eye. This helps keep duplicates on the low so we can keep focus on tracking things we haven’t already gotten to. If it has yet to exist, you can file an issue on the SpongeAPI’s repository issue tracker and discuss your new feature there with the team.
###When will [feature] be implemented?
Careful with your words. As a developer, this stands to be a very irritating question; the development process is a delicate one–we cannot afford to rush things and leave i’s undotted and t’s not crossed. A lazy development process like that will kill the project faster than we think it would. Be patient; the team works hard and they’ve come far. Rememebr, you can always try to help as a contributor to the project.
###I wanna try and help with Sponge!
The team welcomes any and all contributions to the project; if you wish to help build the internal code of Sponge, you should check the issue trackers of the Sponge and SpongeVanilla repositories to check what needs to be done. If you wish to help with planning the API features, visit the SpongeAPI repository. Please remember to follow the contribution guidelines when writing contributions. The guidelines are shown to you by GitHub when you attempt to make a pull request or an issue.
####… but I’m not a coder?
Don’t worry; you don’t need to know a single bit of Java or any of the sorts like our developers. A contribution can be as small as pitching ideas to the team – your creative mind can help shape the project on its way. But, if you’d rather help with something else, the SpongeDocs are hurting for updates on information! You can help by researching the current build of Sponge and figuring out how it works, and putting it in words on a documentation page!
If there are any other questions you think I should address in this FAQ, please make a post in this topic.
##Resources
####Go sight-seeing!
Official Sponge Documentation
SpongeAPI Java Docmentation
Sponge (Forge) Repository
Sponge (Vanilla) Repository
SpongeAPI Repository
SpongeDocs Repository