# Kore

> Kore is a Kotlin DSL datapack generator for Minecraft Java Edition. Create datapacks with type-safe code instead of writing JSON and MCFunction by hand. Open-source and production-ready.

Updated 2026-10-21. Canonical: https://kore.ayfri.com/docs/home

**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](https://kore.ayfri.com/docs/guides/why-kore.md) or the migration-focused [From Datapacks to Kore](https://kore.ayfri.com/docs/guides/from-datapacks-to-kore.md).

## Quick start

- **Getting started**: Check out the [Getting Started](https://kore.ayfri.com/docs/getting-started.md) 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 Template` for a ready-to-run project: [
  `Kore Template`](https://github.com/Kore-Minecraft/Kore-Template).
- **Build faster**: browse the [Cookbook](https://kore.ayfri.com/docs/guides/cookbook.md) for practical patterns you can reuse.
- **Try it first**: the [playground](https://kore.ayfri.com/playground) runs Kore in your browser, with nothing to install.

### Minimal example

```kotlin
fun main() {
	val datapack = dataPack("example") {
		function("display_text") {
			tellraw(allPlayers(), textComponent("Hello World!"))
		}
	}

	datapack.generateZip()
}
```

### IDE tooling

Kore Assistant brings gutter icons, hovers, and declaration navigation for the Kore DSL straight into your editor:
[IntelliJ IDEA](https://plugins.jetbrains.com/plugin/27025-kore-assistant) |
[VS Code](https://marketplace.visualstudio.com/items?itemName=ayfri.kore-assistant).

## Jump to a topic

- **Getting Started**: [Getting Started](https://kore.ayfri.com/docs/getting-started.md), [Creating a Datapack](https://kore.ayfri.com/docs/guides/creating-a-datapack.md), [Configuration](https://kore.ayfri.com/docs/guides/configuration.md)
- **Commands & Functions**: [Commands](https://kore.ayfri.com/docs/commands/commands.md), [Functions](https://kore.ayfri.com/docs/commands/functions.md), [Macros](https://kore.ayfri.com/docs/commands/macros.md), [Scheduler](https://kore.ayfri.com/docs/helpers/scheduler.md)
- **Data-driven Features**: [Predicates](https://kore.ayfri.com/docs/data-driven/predicates.md), [Loot Tables](https://kore.ayfri.com/docs/data-driven/loot-tables.md), [Recipes](https://kore.ayfri.com/docs/data-driven/recipes.md), [Advancements](https://kore.ayfri.com/docs/data-driven/advancements.md), [Enchantments](https://kore.ayfri.com/docs/data-driven/enchantments.md), [Dialogs](https://kore.ayfri.com/docs/data-driven/dialogs.md)
- **Concepts & Helpers**: [Components](https://kore.ayfri.com/docs/concepts/components.md), [Chat Components](https://kore.ayfri.com/docs/concepts/chat-components.md), [Scoreboards](https://kore.ayfri.com/docs/concepts/scoreboards.md), [Display Entities](https://kore.ayfri.com/docs/helpers/display-entities.md), [Mannequins](https://kore.ayfri.com/docs/helpers/mannequins.md), [Known Issues](https://kore.ayfri.com/docs/advanced/known-issues.md)

Looking for something more specific? The full page list, with search, lives in the sidebar on the left, and the
[Features](https://kore.ayfri.com/features) page lists everything Kore covers with in-game previews.

## 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](https://kore.ayfri.com/docs/advanced/multiplatform.md) for
what runs where.

### `kore` - Core DSL

- Build datapacks with the main Kore DSL.
- Artifact: `io.github.ayfri.kore:kore:2.28.0-26.3`
- Snapshot builds from each commit on `master`: add `https://central.sonatype.com/repository/maven-snapshots/` and use
  `2.28.0-26.3-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 `Team` with a boss
  bar or reusing an `Entity` handle across scoreboards and commands.
- Artifact: `io.github.ayfri.kore:oop:2.28.0-26.3`
- Explore: [OOP Utilities](https://kore.ayfri.com/docs/oop/oop-utilities.md)

### `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:2.28.0-26.3`
- Explore: [Helpers Utilities](https://kore.ayfri.com/docs/helpers/utilities.md)

### `bindings` - Datapack importer

- Import existing datapacks and generate type-safe Kotlin bindings for their functions, resources, and tags.
- Artifact: `io.github.ayfri.kore:bindings:2.28.0-26.3`
- Explore: [Bindings](https://kore.ayfri.com/docs/advanced/bindings.md)

## 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. Each stable Kore version links to its release notes on
the [Updates](https://kore.ayfri.com/updates) page. [Version Support](https://kore.ayfri.com/docs/guides/version-support.md) explains how to read these versions and
what changes between them.

| Minecraft version | Kore version | Type | Gradle coordinate | Published |
| --- | --- | --- | --- | --- |
| 26.3 | 2.28.0 | Maven Snapshot | `io.github.ayfri.kore:kore:2.28.0-26.3-SNAPSHOT` | master (continuous) |
| 26.3 | 2.28.0 | Stable | `io.github.ayfri.kore:kore:2.28.0-26.3` | 2026-10-26 |
| 26.2 | 2.16.0 | Stable | `io.github.ayfri.kore:kore:2.16.0-26.2` | 2026-10-08 |
| 26.1.2 | 2.8.0 | Stable | `io.github.ayfri.kore:kore:2.8.0-26.1.2` | 2026-07-21 |
| 1.21.11 | 2.0.3 | Stable | `io.github.ayfri.kore:kore:2.0.3-1.21.11` | 2026-05-29 |
| 1.21.10 | 1.37.0 | Stable | `io.github.ayfri.kore:kore:1.37.0-1.21.10` | 2026-01-25 |
| 1.21.8 | 1.33.2 | Stable | `io.github.ayfri.kore:kore:1.33.2-1.21.8` | 2025-11-14 |
| 1.21.7 | 1.33.1 | Stable | `io.github.ayfri.kore:kore:1.33.1-1.21.7` | 2025-09-19 |
| 1.21.5 | 1.28.0 | Stable | `io.github.ayfri.kore:kore:1.28.0-1.21.5` | 2025-08-29 |
| 1.21.4 | 1.24.0 | Stable | `io.github.ayfri.kore:kore:1.24.0-1.21.4` | 2025-01-12 |
| 1.21.3 | 1.21.3 | Stable | `io.github.ayfri.kore:kore:1.21.3-1.21.3` | 2024-12-19 |
| 1.21.2 | 1.21.2 | Stable | `io.github.ayfri.kore:kore:1.21.2-1.21.2` | 2024-12-19 |
| 1.21.1 | 1.17.0 | Stable | `io.github.ayfri.kore:kore:1.17.0-1.21.1` | 2024-11-11 |
| 1.21 | 1.15.0 | Stable | `io.github.ayfri.kore:kore:1.15.0-1.21` | 2024-09-15 |
| 1.20.6 | 1.10.1 | Stable | `io.github.ayfri.kore:kore:1.10.1-1.20.6` | 2024-06-02 |
| 1.20.4 | 1.1.0 | Stable | `io.github.ayfri.kore:kore:1.1.0-1.20.4` | 2023-12-07 |

## Contributing to Kore

If you want to contribute to Kore itself, start with [Contributing to Kore](https://kore.ayfri.com/docs/contributing/contributing.md), the hub
for architecture, workflow, issue/PR, and maintainer docs.

Useful contributor-facing internals:

- [Architecture and Patterns](https://kore.ayfri.com/docs/contributing/architecture-and-patterns.md) - module boundaries and recurring
  implementation patterns.
- [Arguments Internals](https://kore.ayfri.com/docs/contributing/arguments.md) - how the typed argument layer, resource wrappers, and literals fit
  together.

## Short tips

- Keep builders small and reusable; prefer extracting predicates and modifiers.
- Enable `prettyPrint` in [`Configuration`](https://kore.ayfri.com/docs/guides/configuration.md) during development for readable JSON.
- Reach for [`OOP Utilities`](https://kore.ayfri.com/docs/oop/oop-utilities.md) when multiple gameplay features should share the same handles
  instead of re-building selectors and score names manually.
- Use [`Components`](https://kore.ayfri.com/docs/concepts/components.md) + [`Predicates`](https://kore.ayfri.com/docs/data-driven/predicates.md) together for robust item checks and inventory
  management.
- Reach for [`NBTs`](https://kore.ayfri.com/docs/concepts/nbts.md) when you need to build a payload once and reuse it across commands, chat, or
  predicates.
- Use [`Helpers Utilities`](https://kore.ayfri.com/docs/helpers/utilities.md) to avoid reimplementing common glue code such as renderers,
  scheduler patterns, raycasts, or scoreboard-based maths.
- Hit a wall? Check [Known Issues](https://kore.ayfri.com/docs/advanced/known-issues.md) for known workarounds before filing a bug.

## Need help?

- **Discord**: join the [Kore Discord](https://discord.ayfri.com) for questions and to chat with other datapack devs.
- **Issues & bugs**: report them on the [GitHub repository](https://github.com/Ayfri/Kore/issues).
- **Stuck on setup?**: the [Getting Started](https://kore.ayfri.com/docs/getting-started.md) guide has a dedicated Troubleshooting section.
- **Read first**: [Kore Hello World](https://ayfri.com/articles/kore-hello-world/), a hands-on intro article.

## Community & source

- **Repository**: [Kore](https://github.com/Ayfri/Kore)
- **Starter template**: [Kore Template](https://github.com/Kore-Minecraft/Kore-Template)
- **LLM-friendly documentation**: [llms.txt](https://kore.ayfri.com/llms.txt) | [llms-full.txt](https://kore.ayfri.com/llms-full.txt) |
  every page also has a plain Markdown copy at its URL with `.md` appended, such as
  [`/docs/getting-started.md`](https://kore.ayfri.com/docs/getting-started.md)
- **AI Agents skills**: [Kore-Skill](https://github.com/Kore-Minecraft/Kore-Skill) (optional skills pack for AI-assisted
  Kore work)

### Community creations

Real projects built with Kore, useful to see the DSL used at full project scale:

- [SimplEnergyKore](https://github.com/e-psi-lon/SimplEnergyKore)
- [Kore-Bindings](https://github.com/e-psi-lon/Kore-Bindings)
- [OreCrops](https://github.com/e-psi-lon/OreCrops)
- [realms-map](https://github.com/Aeltumn/realms-maps)
- [jumpr](https://github.com/LluisJM/jumpr)

To add your project to the list, open an issue on the
[repository](https://github.com/Ayfri/Kore/issues) or ping me on [Discord](https://discord.ayfri.com).

For hands-on examples, follow the doc pages above - most pages include runnable snippets and links to test cases in the repository.
