Project Templates
Maven Project Template
Start your plugin development with a well-structured Maven project template:
Basic Maven Plugin Template
A complete Maven project template with the following features:
- Proper directory structure
- Pre-configured pom.xml with Bukkit dependencies
- Sample plugin.yml file
- Basic JavaPlugin implementation
- Example command and event listener
- Resource file handling examples
How to Use:
- Download and extract the template
- Open the project in your IDE
- Update the group ID, artifact ID, and version in pom.xml
- Rename the base package and main class
- Update the plugin.yml file with your plugin information
- Start coding your plugin!
Gradle Project Template
Modern Gradle Plugin Template
A modern Gradle project template with the following features:
- Kotlin DSL build script
- Shadow plugin for creating fat JARs
- Proper dependency management
- Resource filtering
- Multi-module project support
- Test framework setup
How to Use:
- Download and extract the template
- Open the project in your IDE
- Update the group and version in build.gradle.kts
- Rename the base package and main class
- Update the plugin.yml file with your plugin information
- Run the shadowJar task to build your plugin
Development Tools
Essential Development Tools
MockBukkit
Testing framework for Bukkit plugins that allows unit testing without a server.
Learn MoreIDE Setup and Plugins
Setting up your IDE correctly can significantly improve your development experience. Here are some recommended IDE plugins and configurations:
IntelliJ IDEA Setup
IntelliJ IDEA is the recommended IDE for Bukkit plugin development. Here are some useful plugins:
- Minecraft Development
Provides support for Bukkit, Spigot, and Paper plugin development, including code completion, inspections, and more.
Install Plugin - YAML/Ansible Support
Improves YAML editing for plugin.yml and config files.
Install Plugin - Maven Helper
Helps manage Maven dependencies and resolve conflicts.
Install Plugin
Eclipse Setup
Eclipse is a popular alternative for Java development. Here are some useful plugins:
- Buildship Gradle Integration
Provides Gradle support for Eclipse projects.
Install Plugin - YEdit
YAML editor for plugin.yml and configuration files.
Install Plugin - EclEmma Java Code Coverage
Code coverage tool for testing your plugin.
Install Plugin
Visual Studio Code Setup
VS Code is a lightweight alternative that works well for plugin development. Here are some useful extensions:
- Extension Pack for Java
A collection of extensions for Java development.
Install Extension - Maven for Java
Provides Maven support for Java projects.
Install Extension - YAML
YAML language support for plugin.yml and configuration files.
Install Extension
Libraries and Utilities
Recommended Libraries
These libraries can help you implement common features in your plugins without reinventing the wheel:
Adventure
A library for creating rich text messages with formatting, hover events, and click events.
Maven Dependency:
<dependency>
<groupId>net.kyori</groupId>
<artifactId>adventure-api</artifactId>
<version>4.14.0</version>
</dependency>
ConfigMe
A type-safe configuration library that makes working with config files easier.
Maven Dependency:
<dependency>
<groupId>ch.jalu</groupId>
<artifactId>configme</artifactId>
<version>1.3.0</version>
</dependency>
HikariCP
A high-performance JDBC connection pool for database operations.
Maven Dependency:
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>5.0.1</version>
</dependency>
ACF (Aikar's Command Framework)
A powerful command framework that simplifies command creation and handling.
Maven Dependency:
<dependency>
<groupId>co.aikar</groupId>
<artifactId>acf-paper</artifactId>
<version>0.5.1-SNAPSHOT</version>
</dependency>
Version Compatibility Utilities
These utilities help you maintain compatibility across different Minecraft versions:
NMS Utilities
Utilities for working with Minecraft server internals (NMS) across different versions:
- XSeries - Cross-version support for materials, sounds, and more
- ProtocolLib - For packet manipulation across versions
- NBTAPI - For working with NBT data across versions
Reflection Helpers
Libraries that simplify reflection for accessing version-specific code: