Kore
Welcome to the Kore wiki!
Kore is a Kotlin library for building Minecraft datapacks with a concise, type-safe Kotlin DSL. It focuses on readable builders, stable generation of datapack JSON, and tight integration with vanilla concepts (functions, loot tables, predicates, worldgen, ...). Coming from raw datapacks? Read Why Kore or the migration-focused From Datapacks to Kore.
Quick start
- Getting started: Check out the Getting Started guide for a step-by-step introduction to creating your first datapack.
- Prerequisites: Java 25 (JDK 25) and a Kotlin 2.4+ build environment.
- Starter template: use the
Kore Templatefor a ready-to-run project:Kore Template. - Build faster: browse the Cookbook for practical patterns you can reuse.
Minimal example
IDE tooling
Kore Assistant brings gutter icons, hovers, and declaration navigation for the Kore DSL straight into your editor: IntelliJ IDEA | VS Code.
Jump to a topic
Getting Started
Data-driven Features
Concepts & Helpers
Looking for something more specific? The full page list, with search, lives in the sidebar on the left.
Installable modules
Kore is split into installable modules. Start with kore, then add the others depending on the abstractions or tooling you need.
All four modules are Kotlin Multiplatform (JVM + JS): the same coordinates publish JVM, JS, and common metadata variants. File/ZIP/JAR generation works on the JVM and Node.js; browser JS consumers build the DSL and call exportAsStrings() / generateZipBytes() instead. See Multiplatform Support for what runs where.
kore - Core DSL
- Build datapacks with the main Kore DSL.
- Artifact:
io.github.ayfri.kore:kore:VERSION - Snapshot builds from each commit on
master: addhttps://central.sonatype.com/repository/maven-snapshots/and useVERSION-SNAPSHOT
oop - Object-oriented gameplay utilities
- Add higher-level abstractions for boss bars, cooldowns, entities, game states, scoreboards, spawners, teams, and timers.
- Especially useful when several gameplay systems need to exchange data cleanly, such as syncing a
Teamwith a boss bar or reusing anEntityhandle across scoreboards and commands. - Artifact:
io.github.ayfri.kore:oop:VERSION - Explore: OOP Utilities
helpers - Utility-focused helpers
- Add renderers, raycasts, scheduler utilities, scoreboard math, state delegates, particle helpers, and related utilities.
- These helpers complement the core DSL well for advanced text pipelines, reusable state access, geometric particles, or command-heavy math routines.
- Artifact:
io.github.ayfri.kore:helpers:VERSION - Explore: Helpers Utilities
bindings - Datapack importer
- Import existing datapacks and generate type-safe Kotlin bindings for their functions, resources, and tags.
- Artifact:
io.github.ayfri.kore:bindings:VERSION - Explore: Bindings
Version Matrix
One Kore version per stable Minecraft version, the latest tagged pre-release as a separate Snapshot row, and the latest continuous -SNAPSHOT build from master as Maven Snapshot. Gradle coordinates link straight to Maven Central. Generated from GitHub releases and the current project version on every website build, so it always reflects the latest published version without manual edits.
Contributing to Kore
If you want to contribute to Kore itself, start with Contributing to Kore, the hub for architecture, workflow, issue/PR, and maintainer docs.
Useful contributor-facing internals:
- Architecture and Patterns - module boundaries and recurring implementation patterns.
- Arguments Internals - how the typed argument layer, resource wrappers, and literals fit together.
Short tips
- Keep builders small and reusable; prefer extracting predicates and modifiers.
- Enable
prettyPrintinConfigurationduring development for readable JSON. - Reach for
OOP Utilitieswhen multiple gameplay features should share the same handles instead of re-building selectors and score names manually. - Use
Components+Predicatestogether for robust item checks and inventory management. - Reach for
NBTswhen you need to build a payload once and reuse it across commands, chat, or predicates. - Use
Helpers Utilitiesto avoid reimplementing common glue code such as renderers, scheduler patterns, raycasts, or scoreboard-based maths. - Hit a wall? Check Known Issues for known workarounds before filing a bug.
Need help?
- Discord: join the Kore Discord for questions and to chat with other datapack devs.
- Issues & bugs: report them on the GitHub repository.
- Stuck on setup?: the Getting Started guide has a dedicated Troubleshooting section.
- Read first: Kore Hello World, a hands-on intro article.
Community & source
- Repository: Kore
- Starter template: Kore Template
- LLM-friendly documentation: llms.txt | llms-full.txt
- AI Agents skills: Kore-Skill (optional skills pack for AI-assisted Kore work)
For hands-on examples, follow the doc pages above - most pages include runnable snippets and links to test cases in the repository.
