Powerful codec oriented config library made with specific developers in mind. https://modrinth.com/project/greenhouse-config
  • Java 99.7%
  • Kotlin 0.3%
Find a file
Anastasia Chrysanthemum 77f6c04e5c
All checks were successful
Build / build (push) Successful in 2m34s
fix: Restore archivesName.set method.
2026-03-04 08:58:21 +11:00
.forgejo/workflows fix: Forgejo does not do GitHub's crap. 2026-01-21 06:49:54 +11:00
build_logic fix: Restore archivesName.set method. 2026-03-04 08:58:21 +11:00
fabric fix: Don't transitively apply dependencies from Polyamory. 2026-03-02 12:20:04 +11:00
gradle fix: Update NeoForm and NeoForge. 2026-03-02 17:55:00 +11:00
neoforge fix: Don't transitively apply dependencies from Polyamory. 2026-03-02 12:20:04 +11:00
templates feat: Delegate config saving to after the game loads. 2026-02-25 09:41:41 +11:00
xplat fix: Globalize lock for all GreenhouseConfigLangExecutor methods. 2026-03-04 08:54:51 +11:00
.editorconfig refactor: Update .editorconfig for *.jsonc. 2026-01-02 23:55:41 +11:00
.gitattributes feat: Initial commit. 2025-12-22 18:52:28 +11:00
.gitignore feat: Initial commit. 2025-12-22 18:52:28 +11:00
build.gradle.kts feat: Initial commit. 2025-12-22 18:52:28 +11:00
CHANGELOG.md fix: Globalize lock for all GreenhouseConfigLangExecutor methods. 2026-03-04 08:54:51 +11:00
gradle.properties fix: Update Mod Dev for a potential memory leak fix. 2026-02-26 18:27:48 +11:00
gradlew fix: Allow gradlew to be executed by owner. 2026-01-19 06:00:17 +11:00
gradlew.bat feat: Initial commit. 2025-12-22 18:52:28 +11:00
LICENSE feat: Initial commit. 2025-12-22 18:52:28 +11:00
README.md chore: Update README.md Configuration Language Support section. 2026-02-01 15:37:39 +11:00
settings.gradle.kts refactor: Rename buildSrc to build_logic. 2025-12-31 06:48:02 +11:00

Greenhouse Config

The most overengineered config library out there!

Greenhouse Config is a config library pretty much made for myself (ChrysanthCow), and anyone within Greenhouse.

Featuring a rich config builder system, it utilizes Codecs/DFU to write and read config files, as well as being able to data-fix when out of date.

Configuration Language Support

* - Should not typically be used in configs. Use JSONC instead if possible.

Config languages are supported through the in house Polyamory library.

Depending on the Library

When depending on Greenhouse Config, please make sure to include the mod inside your JAR. This is simply to avoid making users have to download a separate dependency just to play with your mod.

The below is for Kotlin DSL, you will need to adjust this for Groovy DSL.

repositories {
    maven {
        name = "Greenhouse Maven"
        url = "https://maven.greenhouse.lgbt/releases"
    }
}

val mappingsAttribute = Attribute.of("net.minecraft.mappings", String::class.java)

dependencies {
	// Depend on the Cross-Platform API...
	// For ModDevGradle, NeoGradle and any other Gradle toolchains that use Mojang Mappings at runtime.
	compileOnly("lgbt.greenhouse.config:greenhouse-config-api:${greenhouse_config_version}") {
		attributes {
			attribute(mappingsAttribute, "mojmap")
		}
	}
	// For Loom and any other Gradle toolchains that use Intermediary at runtime.
	modCompileOnly("lgbt.greenhouse.config:greenhouse-config-api:${greenhouse_config_version}") {
		attributes {
			attribute(mappingsAttribute, "intermediary")
		}
	}

	// Depend on the Fabric project, for Loom.
	modRuntimeOnly("lgbt.greenhouse.config:greenhouse-config-fabric:${greenhouse_config_version}")
	include("lgbt.greenhouse.config:greenhouse-config-fabric:${greenhouse_config_version}")

	// Depend on the NeoForge project, for ModDevGradle.
	runtimeOnly("lgbt.greenhouse.config:greenhouse-config-neoforge:${greenhouse_config_version}")
	jarJar("lgbt.greenhouse.config:greenhouse-config-neoforge:${greenhouse_config_version}")
}
greenhouse_config_version = 3.0.0+1.21.11

Have you seen that one XKCD comic about standards?

Quoted from kdl.dev.

Yes. I have. Please stop linking me to it.

Greenhouse Config is not meant to be a standard, it's simply my own methodology for doing configuration which I separated from my own mods to avoid having duplicate code across them.

At the end of the day, you should mod with tools you enjoy using, whether it be Greenhouse Config or something else.