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, ...).

Quick start

  • Getting started: Check out the Getting Started guide for a step-by-step introduction to creating your first datapack.
  • Prerequisites: Java 21+ and a Kotlin-capable build environment.
  • Starter template: use the Kore Template for a ready-to-run project: Kore Template.
  • Create & generate: see Creating A Datapack for lifecycle and output options (.generate(), .generateZip(), .generateJar()).

Installable modules

Kore is split into installable modules. Start with kore, then add the others depending on the abstractions or tooling you need.

kore - Core DSL

  • Build datapacks with the main Kore DSL.
  • Artifact: io.github.ayfri.kore:kore:VERSION
  • Snapshot builds from each commit on master: add https://central.sonatype.com/repository/maven-snapshots/ and use VERSION-SNAPSHOT
  • Start here: Getting Started

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: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

Minimal example

fun main() {
    dataPack("example") {
        function("display_text") { tellraw(allPlayers(), textComponent("Hello World!")) }
    }.generateZip()
}
Kotlin

Essential reading

  • Getting Started: step-by-step guide to create your first datapack.
  • Creating A Datapack: lifecycle, output paths, and generation options.
  • Commands: comprehensive guide to all Minecraft commands with examples.
  • Functions: building functions, tags, and command helpers.

Full documentation index

Core Guides

Commands

  • Macros - dynamic command arguments for reusable functions.

Concepts

  • Components - item/component builders and custom components.
  • Chat Components - formatted messages and text components.
  • Colors - chat colors and formatting options.
  • Scoreboards - objectives, teams, and scoreboard displays.

Data-Driven

Helpers

OOP

Advanced

Short tips

  • Keep builders small and reusable; prefer extracting predicates and modifiers.
  • Enable prettyPrint in Configuration during development for readable JSON.
  • Reach for OOP Utilities when multiple gameplay features should share the same handles instead of re-building selectors and score names manually.
  • Use Components + Predicates together for robust item checks and inventory management.
  • Use Helpers Utilities to avoid reimplementing common glue code such as renderers, scheduler patterns, raycasts, or scoreboard-based maths.

Known issues

Check out the Known Issues page for a list of known issues and workarounds.

Community & source

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