{"id":41590865,"url":"https://github.com/sisby-folk/kaleido-config","last_synced_at":"2026-01-24T09:30:49.939Z","repository":{"id":195685250,"uuid":"693423756","full_name":"sisby-folk/kaleido-config","owner":"sisby-folk","description":"Simple toml configuration library for java. A repackage of Quilt Config.","archived":false,"fork":false,"pushed_at":"2025-07-28T09:29:27.000Z","size":138,"stargazers_count":5,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-28T11:22:30.681Z","etag":null,"topics":["java","toml"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sisby-folk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-09-19T02:17:33.000Z","updated_at":"2025-07-28T09:29:30.000Z","dependencies_parsed_at":"2023-09-19T07:35:15.328Z","dependency_job_id":"433b5776-02ce-4d89-a197-40a5cf7b8da5","html_url":"https://github.com/sisby-folk/kaleido-config","commit_stats":null,"previous_names":["sisby-folk/kaleido-config"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/sisby-folk/kaleido-config","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sisby-folk%2Fkaleido-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sisby-folk%2Fkaleido-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sisby-folk%2Fkaleido-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sisby-folk%2Fkaleido-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sisby-folk","download_url":"https://codeload.github.com/sisby-folk/kaleido-config/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sisby-folk%2Fkaleido-config/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28723233,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T08:27:05.734Z","status":"ssl_error","status_checked_at":"2026-01-24T08:27:01.197Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","toml"],"created_at":"2026-01-24T09:30:49.337Z","updated_at":"2026-01-24T09:30:49.929Z","avatar_url":"https://github.com/sisby-folk.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kaleido\n\nA JIJ-safe implementation of [Quilt Config](https://github.com/QuiltMC/quilt-config) (a really good pure-java config library)\n\nIf used in a Minecraft mod, players can pair the mod with [McQoy](https://modrinth.com/mod/mcqoy) for in-game configuration.\n\n## Usage\n\nFirst, include the library:\n\n```groovy\nrepositories {\n    maven { url 'https://repo.sleeping.town/' }\n}\n\ndependencies {\n    implementation 'folk.sisby:kaleido-config:0.3.3+1.3.2'\n    include 'folk.sisby:kaleido-config:0.3.3+1.3.2'\n}\n```\n\nThen, create a config class. Fields must be non-final, but shouldn't be reassigned (use [ReflectiveConfig](https://github.com/QuiltMC/developer-wiki/blob/main/wiki/configuration/getting-started/en.md) for that).\n\n```java\npublic class GreeterConfig extends WrappedConfig {\n    @Comment(\"Whether to greet you on startup via the log\")\n    public boolean enabled = false;\n    /* Supports boolean, int, long, double, float, String, or any enum */\n    \n    @Comment(\"A list of names to call you in the logs\")\n    public List\u003cString\u003e coolNames = ValueList.create(\"\", \"buddy\", \"pal\", \"amigo\");\n    /* Also supports Map\u003cString, T\u003e via ValueMap.create() */\n    /* You can modify these programmatically via standard map/list methods (even in WrappedConfig) */\n\n    public EasterEggs easterEggs = new EasterEggs();\n    public static class EasterEggs implements Section {\n        @Comment(\"The chance for the greeting functionality to be run again (applies recursively)\")\n        @FloatRange(min=0.0F, max=0.9F) /* Also supports @IntegerRange and @Matches(regex) */\n        public float repetitionChance = 0.1F;\n    }\n}\n```\n\nLastly, use the `createToml` helper to create an instance of the config bound to a file:\n\n```java\npublic class Greeter {\n    // The file is created when this field is initialized, so put it inside a class with early-run / initializer code.\n    public static final GreeterConfig CONFIG = GreeterConfig.createToml(/* config path: */ Paths.get(\"config\"), /* parent folder (for multiple config files): */ \"\", /* file name: */ \"greeter\", GreeterConfig.class);\n\n    public static void main(String[] args) {\n        if (CONFIG.enabled) {\n            Random random = new Random();\n            do {\n                System.out.printf(\"Hi %s: %s\", CONFIG.coolNames.get(random.nextInt(CONFIG.coolNames.size())), String.join(\", \", args));\n            } while (random.nextFloat() \u003c= CONFIG.easterEggs.repetitionChance);\n        }\n    }\n}\n```\n\nOn run, this creates a config file at `config/greeter.toml`:\n\n```toml\n# Whether to greet you on startup via the log\n# default: false\nenabled = false\n# A list of names to call you in the logs\ncoolNames = [\"buddy\", \"pal\", \"amigo\"]\n\n[easterEggs]\n\t# The chance for the greeting functionality to be run again (applies recursively)\n\t# range: 0.0 - 0.9\n\t# default: 0.1\n\trepetitionChance = 0.1\n```\n\nOn restart (or after [McQoy](https://modrinth.com/mod/mcqoy) editing), the value of the fields will be populated from the content of the file.\n\n### Complex Examples\n\n- [PicoHUD](https://github.com/sisby-folk/picohud/blob/1.19/src/main/java/folk/sisby/picohud/PicoHudConfig.java) - with a self-contained instance, which is a nice pattern for single-mixin mods\n- [Item Descriptions](https://github.com/cassiancc/Item-Descriptions/blob/next-1.10/src/main/java/cc/cassian/item_descriptions/client/config/ModConfig.java) - using ReflectiveConfig\n- [Surveyor](https://github.com/sisby-folk/surveyor/blob/1.20/src/main/java/folk/sisby/surveyor/config/SurveyorConfig.java) - with heavy use of sections and enums\n- [Inventory Tabs](https://github.com/sisby-folk/inventory-tabs/blob/1.19/src/main/java/folk/sisby/inventory_tabs/InventoryTabsConfig.java) - with heavy usage of comments and data-driven maps\n\n## Breakages\n\nWe won't publish a breaking version of Kaleido.\n\nIf we're ever sold on a breaking change, we'll change the project classpath to prevent JIJ conflicts.\n\n## Afterword\n\nThis project isn't intended to steal attention from the actual effort put into Quilt Config - we're just re-exposing it in another context.\n\nQuilt Config is an extremely nice to use config solution, and in this (trivially created) form, it's extremely powerful as a version-universal, platform-universal way to define configuration for minecraft mods.\n\nWe felt this was going to go unacknowledged if it wasn't openly supported (or had finicky issues when JIJ'd alongside Quilt Loader, as raw QConf does) - so Kaleido seeks to rectify that.\n\nIf the original Quilt Config repo is ever archived or the maven goes down, we will convert this repo into a fork and re-create open issues.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsisby-folk%2Fkaleido-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsisby-folk%2Fkaleido-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsisby-folk%2Fkaleido-config/lists"}