{"id":16444002,"url":"https://github.com/ayfri/kore","last_synced_at":"2026-04-03T00:59:04.502Z","repository":{"id":65225318,"uuid":"565476655","full_name":"Ayfri/Kore","owner":"Ayfri","description":"A Kotlin library to generate Datapacks for Minecraft Java.","archived":false,"fork":false,"pushed_at":"2026-02-10T20:47:06.000Z","size":12848,"stargazers_count":123,"open_issues_count":10,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-10T23:48:09.846Z","etag":null,"topics":["datapack","functions","kore","kotlin-dsl","kotlinserverside","minecraft","minecraft-datapack","minecraft-kotlin","modding","modding-tools"],"latest_commit_sha":null,"homepage":"https://kore.ayfri.com","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ayfri.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-11-13T14:36:08.000Z","updated_at":"2026-02-10T20:32:29.000Z","dependencies_parsed_at":"2024-01-08T09:25:57.931Z","dependency_job_id":"1d5b4710-2aa6-418d-ab14-b0222946cf4a","html_url":"https://github.com/Ayfri/Kore","commit_stats":null,"previous_names":["ayfri/kore","ayfri/datapack-dsl"],"tags_count":148,"template":false,"template_full_name":null,"purl":"pkg:github/Ayfri/Kore","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayfri%2FKore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayfri%2FKore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayfri%2FKore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayfri%2FKore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ayfri","download_url":"https://codeload.github.com/Ayfri/Kore/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ayfri%2FKore/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29428631,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T22:20:51.549Z","status":"ssl_error","status_checked_at":"2026-02-13T22:20:49.838Z","response_time":78,"last_error":"SSL_read: 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":["datapack","functions","kore","kotlin-dsl","kotlinserverside","minecraft","minecraft-datapack","minecraft-kotlin","modding","modding-tools"],"created_at":"2024-10-11T09:22:56.957Z","updated_at":"2026-04-03T00:59:04.493Z","avatar_url":"https://github.com/Ayfri.png","language":"Kotlin","funding_links":["https://www.buymeacoffee.com/ayfri"],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e Kore \u003c/h1\u003e\n\u003cp align=\"center\"\u003eA Kotlin library to write Datapacks for Minecraft.\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://github.com/Ayfri/Kore\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/github/stars/Ayfri/Kore?color=darkcyan\u0026logo=github\u0026style=flat-square\" title=\"Stars\" alt=\"Stars\"/\u003e\n\t\t\u003cimg alt=\"GitHub\" src=\"https://img.shields.io/github/license/Ayfri/Kore?style=flat-square\"\u003e\n\t\t\u003cimg alt=\"GitHub issues\" src=\"https://img.shields.io/github/issues-raw/Ayfri/Kore?color=dark_green\u0026logo=github\u0026style=flat-square\"\u003e\n\t\t\u003cimg alt=\"GitHub closed issues\" src=\"https://img.shields.io/github/issues-closed-raw/Ayfri/Kore?color=blue\u0026logo=github\u0026style=flat-square\"\u003e\n\t\t\u003cimg alt=\"Maven Central\" src=\"https://img.shields.io/maven-central/v/io.github.ayfri.kore/kore?style=flat-square\u0026logo=gradle\u0026label=latest%20version\"\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://kotlinlang.slack.com/archives/C066G9BF66A\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/%23kore-4A154B?logo=slack\u0026logoColor=white\u0026style=flat-square\" alt=\"Kotlin Slack\"\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://discord.gg/BySjRNQ9Je\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/badge/Discord-5865F2?logo=discord\u0026logoColor=white\u0026style=flat-square\" alt=\"Discord\"\u003e\n\t\u003c/a\u003e\n\u003c/p\u003e\n\u003chr\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003cimg src=\"kore typography 1200x600.png\" title=\"kore typography\" alt=\"kore typography\"/\u003e\n\u003c/p\u003e\n\n**Check the [website](https://kore.ayfri.com) for the latest documentation.**\n\n**LLM-friendly documentation**: [llms.txt](https://kore.ayfri.com/llms.txt) | [llms-full.txt](https://kore.ayfri.com/llms-full.txt)\n\nThis library is compatible and made for Minecraft Java 1.20 and later versions, I don't think I will support older versions nor Bedrock Edition.\u003cbr\u003e\nYou can still create your own fork and make it compatible with older versions.\u003cbr\u003e\nI will accept pull requests for older versions on a separate branch.\n\n## Getting Started\n\nNew on Kore ? Read the [Getting Started](https://kore.ayfri.com/docs/getting-started) guide to learn how to create your first datapack.\n\nYou can use the [Kore Template](https://github.com/Kore-Minecraft/Kore-Template) to start a new project with Kore.\n\nOr install one or more Kore modules by hand with Gradle. If you're starting a new datapack project, begin with the core\n`kore` module.\n\nWith Kotlin DSL:\n\n```kotlin\nimplementation(\"io.github.ayfri.kore:kore:VERSION\")\n```\n\nWith Groovy DSL:\n\n```groovy\nimplementation 'io.github.ayfri.kore:kore:VERSION'\n```\n\nFor builds published automatically from every commit on `master`, add the Sonatype snapshots repository and use the same\nversion with the `-SNAPSHOT` suffix:\n\n```kotlin\nrepositories {\n  mavenCentral()\n  maven(\"https://central.sonatype.com/repository/maven-snapshots/\")\n}\n\ndependencies {\n  implementation(\"io.github.ayfri.kore:kore:VERSION-SNAPSHOT\")\n}\n```\n\nThen activate the `-Xcontext-parameters` compiler option:\n\n```kotlin\nkotlin {\n\tcompilerOptions {\n\t\tfreeCompilerArgs.add(\"-Xcontext-parameters\")\n\t}\n}\n```\n\nYou should also use Java 21 or higher:\n\n```kotlin\nkotlin {\n\tjvmToolchain(21)\n}\n```\n\nThen create a `Main.kt` file and start writing your datapacks. See the [documentation](https://kore.ayfri.com/docs/home) for more information, including the [Commands guide](https://kore.ayfri.com/docs/commands/commands) for all available commands.\n\n## Installable Modules\n\nKore is split into installable modules. Start with `kore`, then add the others only when you need their extra\nabstractions or tooling.\n\n### Core DSL - `kore`\n\n- Docs: [Getting Started](https://kore.ayfri.com/docs/getting-started)\n- Use it to create Minecraft datapacks with the main Kore DSL.\n- Coordinates: `io.github.ayfri.kore:kore:VERSION`\n\n### Gameplay abstractions - `oop`\n\n- Docs: [OOP Utilities](https://kore.ayfri.com/docs/oop/utilities)\n- Adds object-oriented wrappers for entities, teams, scoreboards, timers, boss bars, spawners, and related gameplay\n  systems.\n- Especially useful when several gameplay features need to exchange state, for example wiring teams into boss bars,\n  scoreboards, timers, or entity handles.\n- Coordinates: `io.github.ayfri.kore:oop:VERSION`\n\n### Helper utilities - `helpers`\n\n- Docs: [Helpers Utilities](https://kore.ayfri.com/docs/helpers/utilities)\n- Adds utility-focused features such as renderers, raycasts, scheduler utilities, scoreboard math, state delegates, and\n  VFX helpers.\n- Great for filling gaps around the core DSL, like rich text rendering, reusable state access, particle shapes, or\n  math-heavy scoreboard workflows.\n- Coordinates: `io.github.ayfri.kore:helpers:VERSION`\n\n### Datapack importer - `bindings` (experimental)\n\n- Docs: [Bindings](https://kore.ayfri.com/docs/advanced/bindings)\n- Imports existing datapacks and generates type-safe Kotlin bindings for their resources.\n- Coordinates: `io.github.ayfri.kore:bindings:VERSION`\n\n## Example\n\n```kotlin\nfun main() {\n\tval datapack = dataPack(\"test\") {\n\t\tfunction(\"display_text\") {\n\t\t\ttellraw(allPlayers(), textComponent(\"Hello World!\"))\n\t\t}\n\n\t\trecipes {\n\t\t\tcraftingShaped(\"enchanted_golden_apple\") {\n\t\t\t\tpattern(\n\t\t\t\t\t\"GGG\",\n\t\t\t\t\t\"GAG\",\n\t\t\t\t\t\"GGG\"\n\t\t\t\t)\n\n\t\t\t\tkey(\"G\", Items.GOLD_BLOCK)\n\t\t\t\tkey(\"A\", Items.APPLE)\n\n\t\t\t\tresult(Items.ENCHANTED_GOLDEN_APPLE)\n\t\t\t}\n\t\t}\n\n\t\tfunction(\"tp_random_entity_to_entity\") {\n\t\t\tval entityName = \"test\"\n\t\t\tval entity = allEntities(limitToOne = true) {\n\t\t\t\tname = entityName\n\t\t\t}\n\n\t\t\tsummon(Entities.CREEPER, vec3(), nbt {\n\t\t\t\tthis[\"CustomName\"] = textComponent(\"Hello World!\")\n\t\t\t})\n\n\t\t\texecute {\n\t\t\t\tasTarget(allEntities {\n\t\t\t\t\tlimit = 3\n\t\t\t\t\tsort = Sort.RANDOM\n\t\t\t\t})\n\n\t\t\t\tifCondition {\n\t\t\t\t\tscore(self(), \"test\") lessThan 10\n\t\t\t\t}\n\n\t\t\t\trun {\n\t\t\t\t\tteleport(entity)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpack {\n\t\t\tdescription = textComponent(\"Datapack test for \", Color.GOLD) + text(\"Kore\", Color.AQUA) { bold = true }\n\t\t}\n\t}\n\n\tdatapack.generateZip()\n}\n```\n\n## Community Creations\n\n-   [SimplEnergyKore](https://github.com/e-psi-lon/SimplEnergyKore)\n-   [Kore-Bindings](https://github.com/e-psi-lon/Kore-Bindings)\n-   [OreCrops](https://github.com/e-psi-lon/OreCrops)\n-   [realms-map](https://github.com/Aeltumn/realms-maps)\n\n_How to add your project to the list ?_\n\n-   Create an issue or contact me on [Discord](https://discord.gg/BySjRNQ9Je).\n\n## Features\n\n-   Datapack generation as files or zips or jar files for mod-loaders.\n-   Function generation.\n-   All commands with all subcommands and multiple syntaxes.\n-   Generation of all data-driven features of Minecraft (Advancements, Loot Tables, Recipes, ...).\n-   Selectors.\n-   NBT tags.\n-   Chat components.\n-   World generation.\n-   Lists for all registries (Blocks, Items, Entities, Advancements, ...).\n-   Colors/Vector/Rotation/... classes with common maths/conversion operations.\n-   Macros support.\n-   Inventory/Scheduler managers.\n- Helper modules for raycasts, text renderers, scoreboard math, delegates, and VFX pipelines.\n- OOP gameplay helpers for boss bars, cooldowns, entities, scoreboards, spawners, teams, and timers.\n-   Scoreboard display manager (like on servers).\n-   Merging datapacks, even with existing zips.\n-   Generation of datapacks as mods usable with mod-loaders (Fabric, NeoForge, ...).\n-   Debugging system inside commands or functions.\n-   Common NBT tags generation (blocks, items, entities, ...).\n-   OOP module (experimental).\n\n\u003e Note: All APIs for commands, selectors, NBT tags, ... are public, so you can use them to create your own features.\n\n## Website\n\n### How the website works\n\n- **Location**: The website is a Kotlin Multiplatform subproject under `website/`.\n- **Frameworks \u0026 tools**: It uses [**Kobweb**](https://kobweb.varabyte.com/) (Kotlin/Compose for Web) with a Kotlin/JS target, Markdown processing, and small JS/npm deps exposed via the Gradle plugin. Generated Kotlin files are written to `build/generated/kore/src/jsMain/kotlin` during the build.\n- **Runtime**: [`AppEntry.kt`](./website/src/jsMain/kotlin/io/github/ayfri/kore/website/AppEntry.kt) initializes the Kobweb app, configures a custom Markdown renderer, and sets the site-wide error page via `InitKobweb`.\n- **Build output**: The static site export is produced by the `kobwebExport` Gradle task and placed under `website/.kobweb/site/` for deployment.\n\n### How to run the website\n\n- **Prerequisites**:\n  - Java 21 (JDK 21) installed and `JAVA_HOME` set.\n  - The project uses the Gradle wrapper (`gradlew`). Ensure it is executable on your platform.\n  - Node tooling for the Kotlin/JS parts (npm/yarn).\n\n - **Kobweb CLI (recommended for local dev)**:\n  - The Kobweb CLI provides a convenient development workflow for Kotlin/Kobweb projects. It runs a dev server with live reload and can export a static build.\n\n  - **Install the Kobweb CLI**: See the official instructions on the Kobweb website: [Kobweb CLI - Installation](https://kobweb.varabyte.com/docs/getting-started/getting-kobweb).\n\n  - **Run the dev server (live reload)**:\n\n    ```bash\n    kobweb run\n    ```\n\n    - By default the dev server runs on `http://localhost:8080` and watches Kotlin sources, Markdown content under `website/src/jsMain/resources/markdown/`, and static resources. Changes trigger rebuilds and browser reloads.\n    - Configure server settings (port, logging, etc.) in `website/.kobweb/conf.yaml`.\n\n  - **Export a static site**:\n\n    ```bash\n    kobweb export\n    ```\n\n    - The static output is written to `website/.kobweb/site/` and is suitable for deployment to static hosts.\n\n  - **Gradle tasks (alternative)**:\n    - If you prefer not to install the CLI, the Gradle tasks are still available:\n\n      ```bash\n      ./gradlew :website:kobwebStart -t # Run with live reload\n      ./gradlew :website:kobwebStop # Stop the server\n      ./gradlew :website:kobwebExport -PkobwebExportLayout=STATIC -PkobwebBuildTarget=RELEASE -PkobwebReuseServer=false\n      ```\n\n - **Troubleshooting**:\n  - If the dev server doesn't pick up generated Kotlin or Gradle config changes, restart the server.\n  - To change the dev server port, edit `website/.kobweb/conf.yaml` or use the CLI configuration options.\n  - If you see stale files, run `./gradlew :website:clean :website:build` before restarting the dev server.\n\n### Notes for contributors\n\n- Generated Kotlin for docs and GitHub releases is written to `build/generated/kore/src/jsMain/kotlin` and is created by Gradle tasks during the build; you generally do not need to commit those generated files.\n- If you modify Markdown front-matter or layout logic, re-run the build/export tasks to regenerate the site artifacts.\n\n## Known issues\n\nCheck out the [Known Issues](https://kore.ayfri.com/docs/advanced/known-issues) page for a list of known issues and workarounds.\n\n## Star History\n\n\u003ca href=\"https://www.star-history.com/#Ayfri/Kore\u0026Date\"\u003e\n \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=Ayfri/Kore\u0026type=Date\u0026theme=dark\" /\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=Ayfri/Kore\u0026type=Date\" /\u003e\n   \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=Ayfri/Kore\u0026type=Date\" /\u003e\n \u003c/picture\u003e\n\u003c/a\u003e\n\n## Contributing\n\nIf you want to contribute to this project, you can follow these steps:\n\n1. Fork the repository.\n2. Run gradle `kore:run` to run the tests.\n3. Make your changes.\n4. Create a pull request and wait for it to be reviewed and merged.\n\nYou can also create an issue if you find a bug or if you want to suggest a new feature.\n\n## Support\n\nIf you want to support the project, please consider donating !\n\n\u003ca href=\"https://www.buymeacoffee.com/ayfri\" target=\"_blank\"\u003e\u003cimg src=\"https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png\" alt=\"Buy Me A Coffee\" style=\"height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;\" \u003e\u003c/a\u003e\n\n## License\n\nThis project is licensed under the GNU 3.0 License – see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fayfri%2Fkore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fayfri%2Fkore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fayfri%2Fkore/lists"}