Rethink your datapack development experience with

Kore1.37.0
Minecraft1.21.10

A modern, type-safe Kotlin library for Minecraft datapack development. Create complex datapacks without ever writing JSON or MCFunction manually.

Get Started GitHub
fun main() {
	val datapack = dataPack("test") {
		function("display_text") {
			tellraw(allPlayers(), textComponent("Hello World!"))
		}

		recipes {
			craftingShaped("enchanted_golden_apple") {
				pattern(
					"GGG",
					"GAG",
					"GGG"
				)

				key("G", Items.GOLD_BLOCK)
				key("A", Items.APPLE)

				result(Items.ENCHANTED_GOLDEN_APPLE)
			}
		}

		function("tp_random_entity_to_entity") {
			val entityName = "test"
			val entity = allEntities(limitToOne = true) {
				name = entityName
			}

			summon(Entities.CREEPER, vec3(), nbt {
				this["CustomName"] = textComponent("Hello World!")
			})

			execute {
				asTarget(allEntities {
					limit = 3
					sort = Sort.RANDOM
				})

				ifCondition {
					score(self(), "test") lessThan 10
				}

				run {
					teleport(entity)
				}
			}
		}

		pack {
			description = textComponent("Datapack test for ", Color.GOLD) + text("Kore", Color.AQUA) {
				bold = true
			}
		}
	}

	datapack.generateZip()
}
Kotlin

Quick Installation

Start building your Minecraft datapacks with Kore by adding it to your project's dependencies.

dependencies {
    implementation("io.github.ayfri.kore:kore:1.37.0-1.21.10")
}
Kotlin

Check out the latest releases or read the getting started.

Why choose Kore?

Kore is built by datapack developers, for datapack developers. It focuses on developer experience, performance, and reliability.

architecture

Modern Architecture

Write datapacks for recent Minecraft versions with Kotlin. Leverage powerful features like extension functions and sealed classes to build robust and maintainable code.

data_object

Intuitive API

The API follows Minecraft's internal logic. Abstractions over commands and JSON formats minimize complexity, letting you focus on features rather than boilerplate.

group_add

Collaborative & Open

Kore is fully open-source and thrives on community. Whether solo or in a team, Kore provides the tools for any project size, backed by a growing ecosystem.

fun myDatapack() = dataPack("my_datapack") {
	function("test") {
		say("Hello World!")
	}

	function("gamemode_creative") {
		gamemode(Gamemode.CREATIVE)
		tellraw(
			targets = allPlayers(),
			message = "You are now in creative mode!",
			color = Color.GREEN
		)
	}
}
Kotlin

Simple APIs

Kore provides simple and intuitive APIs to create Minecraft datapacks and call commands. Almost all the lists from the game are available as enums, so you are always sure to use the right value.

fun myDatapack() = dataPack("my_datapack") {
	function("execute_my_function") {
		execute {
			ifCondition(myPredicate)

			run {
				function(myFunction)
				scoreboard.player(self()) {
					add(myScore, 1)
				}
			}
		}
	}
}
Kotlin

Perfect for big projects

Kore is perfect for big projects, as it allows you to split your code into multiple files and use the full power of Kotlin to manage your code.

fun myDatapack() = dataPack("my_datapack") {
	val myRecipe = recipesBuilder.smithingTransform(
		name = "diamond_to_netherite"
	) {
		template(Items.DIAMOND_BLOCK)
		base(Items.DIAMOND_SWORD)
		addition(Items.NETHERITE_INGOT)
		result(Items.NETHERITE_SWORD)
	}

	function("give_recipe") {
		recipe(allPlayers()).give(myRecipe)
	}
}
Kotlin

JSON-less

By using Kore, you don't have to write a single line of JSON ever. You only have one language to learn and maintain. Feature-complete code completion and documentation are available in your IDE.

fun myDatapack() = dataPack("my_datapack") {
	function("kore_is_great") {
		advancement(allPlayers {
			gamemode = !Gamemode.CREATIVE
			nbt = nbt {
				this["using_kore"] = true
			}
		}) {
			grant(Advancements.Story.SHINY_GEAR)
		}

		playSound(
			sound = Sounds.Block.EnchantmentTable,
			source = PlaySoundSource.MASTER,
			target = allEntities()
		)
	}
}
Kotlin

Type-safe

We crafted generators for dozens of Minecraft lists, so you can be sure to use the right value at the right place. No more typos in your commands, JSON files, or functions.

Join Our Community

Connect with other Kore developers and get involved

Frequently Asked Questions

Yes, Kore is compatible with all Minecraft versions from 1.20 to the latest version.

Yes, you can use other datapacks with Kore. By providing bindings for your datapacks, you can use them in your Kore code.

Kore is a modern, open-source, and easy-to-use Kotlin library for Minecraft datapack development. You can use it to create your own Minecraft Datapacks, and without writing a single line of JSON or MCFunction. You'll have great, precise, and fast code completion, and you'll be able to use the full power of Kotlin to manage your code. Furthermore, you can even create libraries to help you or others develop datapacks.

Yes, Kore's API is complete. It provides simple and intuitive APIs to create Minecraft datapacks and call commands. All the common lists of the game are available as enums (like all the blocks, items, enchantments, etc.), you are always sure to use the right value.

By providing APIs for creating your own commands/features, you can use Kore with mods. However, Kore is not compatible with mods directly.

Build your first datapack in Kotlin

Craft your first datapack with Kore and enjoy the power of Kotlin for Minecraft development.

Get Started