https://github.com/mineinabyss/idofront
Shared logic for our plugins and Gradle buildscripts
https://github.com/mineinabyss/idofront
gradle gradle-kotlin-script helper-functions spigot
Last synced: about 1 year ago
JSON representation
Shared logic for our plugins and Gradle buildscripts
- Host: GitHub
- URL: https://github.com/mineinabyss/idofront
- Owner: MineInAbyss
- License: mit
- Created: 2020-01-16T00:39:45.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2025-04-19T17:54:33.000Z (about 1 year ago)
- Last Synced: 2025-04-19T20:17:40.922Z (about 1 year ago)
- Topics: gradle, gradle-kotlin-script, helper-functions, spigot
- Language: Kotlin
- Homepage:
- Size: 997 KB
- Stars: 14
- Watchers: 4
- Forks: 10
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# Idofront
[](https://repo.mineinabyss.com/#/releases/com/mineinabyss/idofront-util)
[](https://wiki.mineinabyss.com/idofront)
[](https://wiki.mineinabyss.com/contributing/)
Idofront is a set of modules we share between plugins. It includes helpful Minecraft extensions, gradle conventions, and more.
## Gradle quickstart
To use idofront as a platform in your projects:
#### Add idofrontVersion to your gradle.properties
```properties
idofrontVersion=...
```
#### Configure your settings.gradle
```kotlin
pluginManagement {
repositories {
gradlePluginPortal()
maven("https://repo.mineinabyss.com/releases")
}
}
dependencyResolutionManagement {
val idofrontVersion: String by settings
repositories {
maven("https://repo.mineinabyss.com/releases")
}
versionCatalogs {
create("idofrontLibs").from("com.mineinabyss:catalog:$idofrontVersion")
}
}
```
#### Configure your build.gradle
```kotlin
plugins {
alias(idofrontLibs.plugins.mia.kotlin.jvm)
alias(idofrontLibs.plugins.mia.copyjar)
alias(idofrontLibs.plugins.mia.papermc)
alias(idofrontLibs.plugins.mia.nms)
alias(idofrontLibs.plugins.mia.autoversion)
// ...
}
dependencies {
compileOnly(idofrontLibs.bundles.idofront.core)
compileOnly(idofrontLibs.kotlinx.serialization.json)
// ...
}
```
#### Updating
Run `gradle updateIdofrontVersion`
# Modules
**Click on a module to see its wiki page!**
**`idofront-autoscan`** -
Helper functions for finding annotated classes at runtime, we use it to register things at startup.
[**`idofront-catalog`**](https://wiki.mineinabyss.com/idofront/gradle/catalog/) -
Gradle [version catalog](https://docs.gradle.org/current/userguide/platforms.html#sub:version-catalog) containing our commonly used dependencies, including all idofront projects.
[**`idofront-catalog-shaded`**](https://wiki.mineinabyss.com/idofront/platforms/) -
A Paper plugin with all the dependencies shaded, intended to be used by our other plugins using Paper's `join-classpath` option.
[**`idofront-commands`**](https://wiki.mineinabyss.com/idofront/command-dsl/) -
A DSL for quickly building Minecraft commands.
[**`idofront-config`**](https://wiki.mineinabyss.com/idofront/config/) -
Simple config system using kotlinx.serialization. Supports yaml, json, and more.
**`idofront-fonts`** -
Font related helper functions, including (negative) spacing.
[**`idofront-gradle`**](https://wiki.mineinabyss.com/idofront/gradle/plugins/) -
Gradle plugins to share build logic, including using NMS with mappings, and publishing to our maven repo.
**`idofront-logging`** -
Super simple logging functions with MiniMessage support.
[**`idofront-nms`**](https://wiki.mineinabyss.com/idofront/nms/) -
TypeAliases and `toNMS()`, `toBukkit()` functions for many NMS classes
[**`idofront-serializers`**](https://wiki.mineinabyss.com/idofront/serialization/) -
Config-centric serializers for many Bukkit classes for kotlinx.serialization, including ItemStack, Recipes, or Components (via MiniMessage.)
**`idofront-text-components`** -
Helper functions for adventure `Component`s
[**`idofront-util`**](https://wiki.mineinabyss.com/idofront/util/) -
General utilities like destructure functions, plugin load helpers, or operator functions for Vector and Location.
# Reference material
- This repo seems interesting to borrow from as a setup for conventions plugins: https://github.com/huanshankeji/gradle-common
- https://github.com/jjohannes/gradle-demos/tree/main