Bukkit plugin to create smooth camera paths for cinematic purposes.

Overview

Spigot Plugin Template

Build Status GitHub release (latest SemVer including pre-releases) Spiget tested server versions Spiget Downloads Spiget Rating codecov Commitizen friendly semantic-release

You can use this template to develop your own high quality Spigot plugins using Gradle with ease.

Features

The template or better boilerplate comes with a lot of features that are useful if you want to develop high quality plugins. However you don't need to use all of them, you can simply remove the features you don't need.

Quickstart setup

  • Create a new Github project using this template.
  • Clone the new repository and open it in IntelliJ.
  • Update the gradle.properties file and change the following variables:
    • group: your-maven-group-id (e.g.: io.github.silthus)
    • pluginName: YourPluginName
    • author: YourName
  • Update the root.projectName inside settings.gradle. This will be your artifactId.
  • Delete the CHANGELOG.md. It will be generated on your first release.
  • Update the README to point to your project and spigot resource id.
  • Rename the java package and plugin to match your project.
  • Then execute the Server run configuration and the template will run the Spigot BuildTools to download and build spigot or paper for you.
  • Code away :) - and once you are ready, push your commit (in conventional commit style) to master.

Please read the Contributing Guidelines before submitting any pull requests or opening issues.

Releasing a new version of your plugin

One of the major benefits of this template is the fact that it will automatically release a new version on every push to master based on your commit messages. This makes sure your plugin is released following the semantic versioning guidelines. For this to work you have to follow a few simple rules:

  • Commit only working and tested code to the master branch. Use Pull Requests to work on bigger features or bug fixes and merge them when you are ready.
  • Every bugfix, feature and change should have one commit associated with it. Do not mix multiple bugs, features, etc. into one huge commit message. Keep your commit size small and commit often.
  • Your commit messages must follow the conventional commit rules.

Commit message format

See the conventional commit homepage for more details and examples on the topic. But here is a quick summary to get you started.

The Conventional Commits specification is a lightweight convention on top of commit messages. It provides an easy set of rules for creating an explicit commit history; which makes it easier to write automated tools on top of. This convention dovetails with SemVer, by describing the features, fixes, and breaking changes made in commit messages.

The commit message should be structured as follows:

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

The commit contains the following structural elements, to communicate intent to the consumers of your library or plugin:

  • fix: a commit of the type fix patches a bug in your codebase (this correlates with PATCH in semantic versioning).
  • feat: a commit of the type feat introduces a new feature to the codebase (this correlates with MINOR in semantic versioning).
  • BREAKING CHANGE: a commit that has a footer BREAKING CHANGE:, or appends a ! after the type/scope, introduces a breaking API change (correlating with MAJOR in semantic versioning). A BREAKING CHANGE can be part of commits of any type.
  • types other than fix: and feat: are allowed, for example @commitlint/config-conventional (based on the the Angular convention) recommends build:, chore:, ci:, docs:, style:, refactor:, perf:, test:, and others.
  • footers other than BREAKING CHANGE: <description> may be provided and follow a convention similar to git trailer format. Additional types are not mandated by the Conventional Commits specification, and have no implicit effect in semantic versioning (unless they include a BREAKING CHANGE).

A scope may be provided to a commit’s type, to provide additional contextual information and is contained within parenthesis, e.g., feat(parser): add ability to parse arrays.

Here are some examples:

Commit message with description and breaking change footer
feat: allow provided config object to extend other configs

BREAKING CHANGE: `extends` key in config file is now used for extending other config files
Commit message with no body
docs: correct spelling of CHANGELOG
Commit message with scope
feat(lang): add polish language
Commit message with multi-paragraph body and multiple footers
fix: correct minor typos in code

see the issue for details

on typos fixed.

Reviewed-by: Z
Refs #133

Publishing your maven package

Your plugin will be automatically published as a maven package on Github packages as soon as you release a new version.

About the group and artifactId

The group appended by your artifactId is used to uniquely identify your project when importing it in other projects. When you import spigot in your project you use the group org.spigotmc followed by the artifactId spigot-api and the version.

The following was taken from the offical maven naming guide.

  • groupId uniquely identifies your project across all projects. A group ID should follow Java's package name rules. This means it starts with a reversed domain name you control. For example: org.apache.maven, org.apache.commons.
    If you dont't own a domain, you can use the github domain io.github appended by your Github username, e.g. io.github.silthus
  • artifactId is the name of the jar without version. If you created it, then you can choose whatever name you want with lowercase letters and no strange symbols. For example: `maven, commons-math

Github Package Authentication

You need to configure authentication for Github Packages if you want to use your maven package in other projects.

  1. Create a Github Personal Access Token
  2. Create or update the gradle.properties inside C:\Users\%username%\.gradle with the following and replace YOUR_GITHUB_USERNAME with your Github username and YOUR_PERSONAL_ACCESS_TOKEN with the access token from step 1.
gpr.user=YOUR_GITHUB_USERNAME
gpr.key=YOUR_PERSONAL_ACCESS_TOKEN

Debugging your plugin

Copy your plugin automatically

You can export your plugin to the plugins directory from your working directory with the Gradle prepareSpigotPlugins task. The task will build and copy your plugin automatically into the plugins/ directory.

Running and debugging the Minecraft server

You can run or debug your plugin using the Server run configuration from within IntelliJ to automatically download the Minecraft server, built it, copy your and dependent plugins into it and start it in debugging mode.

This is due to the awesome power of Spigradle's debug tasks. Find out more on the Spigradle Github page.

References

Comments
Owner
Marius Metzger
Huge nerd. Lead Software Developer @Noxcrew.
Marius Metzger
Create: Liftoff is a create addon that hopes to empower the player even more with the industrial age of the create mod and space rockets!

Create: Liftoff Welcome to Create: Liftoff, a mod that hopes to empower the player even more with the industrial age of the create mod and space rocke

Tazer 9 Jun 6, 2022
A ready-to-use Minecraft Booter. EDUCATIONAL PURPOSES ONLY

DivineBooter DivineBooter is a special type of tool that attacks Minecraft servers sending packets and bots. Why should you choose DivineBooter over o

null 11 Dec 18, 2022
Bukkit/Bungee plugin to send Minecraft data to JMX

Bukkit/Bungee plugin to send Minecraft data to JMX

Fabrizio La Rosa 4 Jan 30, 2022
Plugin para minecraft 1.16+ (Spiggot/Bukkit)

TIERRA O NADA! Plugin para Minecraft Quieres pasar Minecraft de otra forma? Prueba con este plugin para Spiggot/Bukkit Minecraft Versión: 1.16+ Plugin

JkDev 3 Nov 12, 2022
A essentials bukkit plugin for your server

?? A essentials, lightweight, multilanguage, customizable, modular and complex plugin for Minecraft Server

Victor Rodrigues 8 Jan 30, 2022
🏃 A lightweight, multiarena, complex Parkour Spigot/Bukkit plugin for Minecraft Server

?? A lightweight, multiarena, multilanguage, completely configurable and complex Parkour Spigot/Bukkit plugin for Minecraft Server

Victor Rodrigues 6 Oct 17, 2022
LoliServer 是 Minecraft 较新版本 1.16.5 中的 Forge + Bukkit 服务端核心, 支持Forge Mod和Bukkit 插件, 兼容性与性能优秀, 于Mohist1.16.5基础加以维护更新

LoliServer 1.16.5 LoliServer-1.16.5,基于Forge并融合Paper/Spigot/Bukkit的高性能高兼容性的服务端核心 上游项目 Mohist Bukkit Paper CraftBukkit Spigot MinecraftForge Atom Thermo

LoliServer 0 Apr 29, 2022
A flexible minigame framework for bukkit.

Oyster Subproject of Oni, a framework which focused on minigames. QQ Group What It is a flexible framework that attempts to reduce costs for developin

SaltedFish Club 7 Dec 25, 2022
Fast Bukkit Custom Book Constructor for Minecraft 1.8 to 1.16.5

BookMaker ?? BookMaker is a fast Spigot API to create Custom Book for Minecraft 1.8 to 1.16.5. Features Create a book with your title, author and desc

Giovanni Ranieri 3 Oct 2, 2021
Bukkit transaction API for predicting when a server packet arrives at a client. Mainly intended for use in Minecraft anticheats.

Pledge A high performance and lightweight Bukkit packet tracking API for predicting when a server packet arrives at a client using transactions. Mainl

Thomazz 32 Dec 1, 2022
🚀Small java eventing library created to developer familiar with Bukkit,Nukkit and PowerNukkit...

FestivalKit ???? Small event library for developers familiar with Bukkit,PowerNukkit and Nukkit ???? Pequena libraria de eventos para desenvolvedores

Rick M. 2 Jan 2, 2022
💜 LiteSkullAPI Fast and extensive skull library for Bukkit/Spigot/Paper plugins

?? LiteSkullAPI Fast and extensive skull library for Bukkit/Spigot/Paper plugins. Helpful links: Support Discord GitHub issues Eternal Repository (Mav

Norbert Dejlich 16 Dec 2, 2022
Backdoor injector for Bukkit/Spigot plugins.

MinePatcher Backdoor injector for Bukkit/Spigot plugins. MinePatcher was developed to test the security systems of Minecraft servers. Usage: 1. Window

null 3 Sep 18, 2022
Minecraft Forge Hybrid server implementing the Spigot/Bukkit API (Cauldron for 1.18)

❓ About Magma is the next generation of hybrid minecraft server softwares. Magma is based on Forge and Paper, meaning it can run both Craftbukkit/Spig

Magma Foundation 12 Apr 18, 2022
This plugin disables commands specified in the configuration and prevents granting the "OP" authority to people not authorized in the plugin configuration.

Ares This plugin disables commands specified in the configuration and prevents granting the "OP" authority to people not authorized in the plugin conf

ᴠᴀʟᴇɴᴛɪɴ ᴢʜᴇʟᴇᴠ 6 Aug 30, 2022
Paper-nms-maven-plugin - A maven plugin for using NMS on paper with Mojang mappings.

paper-nms-maven-plugin A maven plugin for using NMS on paper with Mojang mappings. This plugin will both create the mapped paper dependency and instal

null 56 Dec 28, 2022
Plugin-power - A plugin for the ja-netfilter, it is a dragon slayer for asymmetric encryption.

plugin-power A plugin for the ja-netfilter, it is a dragon slayer for asymmetric encryption. Use the mvn clean package command to compile and use powe

null 110 May 25, 2022
Bleachhack-legacy - Do NOT create a Fabric 1.6.4 mod. Worst mistake of my life!

BleachHack Legacy BleachHack for older versions (for some reason) Installation To install, first install Fabric Legacy then download a built BH versio

null 9 Nov 21, 2022
COMMA Config API is an API allowing you to easily create complex and stylish config menu screens for Minecraft Fabric mods

COMMA Config API is an API allowing you to easily create complex and stylish config menu screens for Minecraft Fabric mods. COMMA stands for Configurable Options Menu Modding API

Dr. Rubisco 1 Jan 13, 2022