Kore Releases

Browse all Kore releases, release notes, and version history, automatically fetched from GitHub.

Changelogs focus on what changed between two minor Minecraft releases. If there were no changes in-between, you may see a short or empty entry.

Release Type
Sort Order
Minecraft Versions
26.1(24)
26.1.2(3)
26.1.1(2)
1.21(117)
1.21.11(23)
1.21.10(2)
1.21.9(15)
1.21.8(3)
1.21.7(3)
1.21.6(13)
1.21.5(15)
1.21.4(10)
1.21.3(2)
1.21.2(15)
1.21.1(4)
1.20(43)
1.20.6(2)
1.20.5(24)
1.20.4(2)
1.20.3(15)

Changelogs

Showing 35 out of 184 releases

2.7.0-26.1.2

open_in_newMinecraft changelog

This release updates Kore to Kotlin 2.4.0, which is great news because you don't need the -Xcontext-parameters compiler argument anymore ! I also migrated the UUIDArgument to use the new stable Uuid API from Kotlin instead of UUID from Java, this is because the API is more idiomatic to Kotlin and simpler and multiplatform.

If you're using the uuid() functions you probably don't need to change anything, else the migration is very easy:

UUID.fromString("...")Uuid.parse("...")
Kotlin
UUID.randomUUID()Uuid.random()
Kotlin

Documentation

  • docs(components): Revise components guide to update examples, clarify predicates, and link component matchers table. 9d3cf51
  • docs(generation): Add short KDoc to the generation module's key entry points. f8b527a

Refactors

  • refactor(uuid)!: Replace java.util.UUID with kotlin.uuid.Uuid across modules, update related methods and constructors accordingly.

Full changelog: https://github.com/Ayfri/Kore/compare/v2.6.2-26.1.2..v2.7.0-26.1.2

2.6.2-26.1.2

open_in_newMinecraft changelog
  • No changes were required.

Full changelog: https://github.com/Ayfri/Kore/compare/v2.6.2-26.1.1..v2.6.2-26.1.2

2.6.2-26.1.1

open_in_newMinecraft changelog

Bug Fixes

  • fix(chat-components): Simplify serialization logic for extra fields and enhance JSON/NBT handling in chat components. 0aee14b 34d72bb 400f99f

Full changelog: https://github.com/Ayfri/Kore/compare/v2.6.1-26.1.1-rc-1..v2.6.2-26.1.1

2.6.1-26.1

open_in_newMinecraft changelog
image

Welcome to Kore 26.1!

Kore 26.1 was a pretty long cycle.

It started with some groundwork on the late 1.21.11 side, then turned into a proper push for the new 26.1 data-driven systems. World clocks, timelines, villager trades, better time utilities, more worldgen coverage, and nicer OOP handles for displays and mannequins all landed here.

A lot of this cycle was also just polish, in the good way. There are plenty of docs, tests, serializer cleanups, and small API fixes in here because 26.1 added a lot of surface area, and I wanted Kore's DSL around it to feel nice instead of just technically complete.

What's new?

The big stuff this cycle was:

  • World Clocks and the expanded Time DSL let you create custom clocks, timelines, time markers, clock-aware predicates, and time.of(clock) command flows.
  • Villager Trades introduce fully data-driven villager_trade and trade_set generators, with item modifiers, predicates, and reusable trade pools.
  • Worldgen Features grew a lot during 26.1: more vanilla configured features, better block state providers, new height and number providers, and stronger test coverage for generated JSON.
  • Display Entities and Mannequins gained cleaner OOP entity handles, making it easier to summon, target, move, and manage generated entities from Kotlin.

A lot of the later releases were quieter, but they still mattered. Most of that work went into tightening serialization, filling API gaps, and expanding docs and test coverage for worldgen, predicates, commands, and helpers.

Code examples

Here are a few examples of what the biggest 26.1 additions look like in practice.

World clocks, timelines, and commands

val seasonClock = dataPack.worldClock("season")

dataPack.timeline("seasons", clock = seasonClock) {
	periodTicks = 96000

	timeMarker("spring", ticks = 0, showInCommands = true)
	timeMarker("summer", ticks = 24000, showInCommands = true)
	timeMarker("autumn", ticks = 48000, showInCommands = true)
	timeMarker("winter", ticks = 72000, showInCommands = true)
}

function("skip_to_winter") {
	time.of(seasonClock).set(timeMarker("winter", "my_mod"))
}
Kotlin

Villager trades and trade sets

This one defines a custom trade and groups it into a level-based trade set, which is exactly the kind of data-driven economy flow 26.1 made possible.

val wheatTrade = dataPack.villagerTrade("wheat_for_emerald") {
	wants(Items.WHEAT, count = 20)
	gives(Items.EMERALD)
	maxUses = constant(16f)
	xp = constant(1f)
}

dataPack.tradeSet(
	"custom_farmer_novice",
	trades = listOf(wheatTrade),
	amount = constant(1f),
) {
	allowDuplicates = false
}
Kotlin

Expanded worldgen DSL

Worldgen got a lot more expressive in 26.1, with richer configured features, state providers, and placement helpers.

val oakTreeCfg = tree {
	blobFoliagePlacer(radius = constant(2), offset = constant(0), height = 3)
	foliageProvider = simpleStateProvider(Blocks.OAK_LEAVES)
	straightTrunkPlacer(baseHeight = 5, heightRandA = 2, heightRandB = 0)
	trunkProvider = simpleStateProvider(Blocks.OAK_LOG)
	belowTrunkProvider = ruleBasedStateProvider {
		fallback = simpleStateProvider(Blocks.DIRT)
		rule {
			ifTrue { hasSturdyFace(direction = Direction.DOWN) }
			then(simpleStateProvider(Blocks.GRASS_BLOCK))
		}
	}
}

val oakTree = dataPack.configuredFeature("oak_tree", oakTreeCfg) {}

dataPack.placedFeature("oak_tree_placed", oakTree) {
	inSquare()
	count(constant(8))
	heightRange(trapezoidHeightProvider(minInclusive = 64, maxInclusive = 100, plateau = 12))
	biome()
}
Kotlin

OOP handles for generated entities

Helpers and OOP utilities also became easier to compose, especially when you want a generated display or mannequin to turn into a strongly-typed handle you can reuse later.

val display = blockDisplay {
	blockState(Blocks.STONE)
}.interpolable(vec3(0, 64, 0))

display.summon()

val entity = display.toEntity<BlockDisplayEntity>()

entity.addTag("intro_display")
entity.teleportTo(0, 65, 0)
Kotlin

Changelog

Documentation

  • docs(advanced): Extend Known_Issues.md with detailed limitations and workarounds for Kore. 51f7ab3
  • docs(ai): Update README and Home.md to include Kore-Skill AI skills pack link. 0cde2af
  • docs(bindings): Update Bindings.md with new setup steps and example improvements. d0028c5
  • docs(commands): Add KDoc to all commands. e5bf892
  • docs(commands): Fix wrong syntaxes in commands examples. 16ba50b
  • docs(concepts): Add Selectors.md with comprehensive overview on building Minecraft target selectors in Kore, including typed builders, filtering capabilities, and score-based conditions. 2d44932
  • docs(concepts): Add Time documentation for ticks, seconds, and days, usage examples, arithmetic, conversions, and command integration. 9b2c569
  • docs(contributing): Add Arguments.md and Cookbook.md for contributors. Introduction to Kore's argument system, practical datapack patterns, including setup functions, logic reuse, custom items, delayed actions, and more. 150a544 80bc008
  • docs(getting-started): Add link to "Learn X in Y Minutes - Kotlin" for a quick syntax refresher. 8b8750b
  • docs(getting-started): Expand Kotlin basics section, add explanations for val/var, functions, and extension functions, include quick learning resources links. 9ac611c
  • docs(guide): Revamp Getting_Started.md to provide a more comprehensive guide, emphasizing iterative development, modular project structure, and practical tips. ddbcb78
  • docs(guides): Add advanced migration guide from Datapacks to Kore. 5c22eba
  • docs(guides): Enhance configuration guide with detailed explanations. 8a3862f
  • docs(helpers): Update Display_Entities and Mannequins docs with OOP entity handles, code examples, and enhanced functionality descriptions. 48fac17
  • docs(markdown): Standardize links and hyphenation in documentation, fix inconsistent Markdown syntax, and improve clarity in examples and descriptions. c5df568
  • docs(nbt): Add complete documentation about NBTs. 5a7592d
  • docs(number-providers): Add KDoc to all number providers, update documentation. 8ff7ba5
  • docs(pages): Add copy button for markdown content and load sources. ec2d4c1 2ec7dcf
  • docs(villager-trades): Add Villager Trades documentation, update related pages with references to trade gating, item modifiers, and enchantments. 68f02d9
  • docs(world-clock): Add the World Clocks guide, update Timelines to reference clocks and time markers, improve examples, and align the docs with snapshot 26.1 changes. f3436b5
  • docs(worldgen): Add documentation for FloatProvider types with descriptions, examples, and usage scenarios in feature configuration. 2b1991e
  • docs(worldgen): Document IntProvider types with descriptions, examples, and usage scenarios in feature configuration. aeb9e5f
  • docs(worldgen): Expand Features.md with new vanilla feature types, no-config objects, modifiers, and height providers. Add examples, update descriptions, and fix typos. 676cc22

New Features

  • feat(arguments): Introduce MOB.INVENTORY, replacing the old PIGLIN and VILLAGER slots. aba3d82
  • feat(advancement): Add the player-interact-with-entity trigger. 69cd1be
  • feat(bindings): Add support for customizable HTTP request payload and headers, update related tests and documentation. eefe605
  • feat(bindings): Enhance the GitHub function with API key authentication details, add tests and docs. 00f7dcf
  • feat(chat-components): Add the fallback property to ObjectTextComponent and its subcomponents, update builders, tests, and docs. 30b7b80
  • feat(commands): Add the first swing command support with SwingHand and unit tests. e8bc54f
  • feat(commands): Add placeJigsaw overload with JigsawArgument, enhance placeTemplate with integrity and TemplateMirror, and improve KDoc for place functions. f885b8f
  • feat(commands): Expand /time with of subcommands for clocks, add pause, resume, new queries and setters, update docs and tests. 09fc73f
  • feat(commands): Expand swing with main-hand usage and targets support, update tests. f4ff4f4
  • feat(commands): Update locatePointOfInterest to use PointOfInterestTypeOrTagArgument, add KDoc comments to locate functions. 8a223fd 513a6d7 d4a906e
  • feat(data-driven): Add TradeSet and VillagerTrade generators with builder functions, integrate them into DataPack. 2d035ae c6f034b 94590e7
  • feat(datapack): Add path and iconPath utility functions, removing the need for the kotlinx.io library in simple projects. 8556f71
  • feat(entities): Add OOP entity handles for displays and mannequins, with selector-based targeting, UUID-based identity, and enhanced functionality. f22d89b
  • feat(entities): Add toEntity and entity factory methods for EntityType, update docs with usage examples, and extend tests to validate the new flow. 7e92bf3
  • feat(environment-attributes): Add ambientLightColor, blockLightTint, and nightVisionColor with tests and documentation. fa73f7a
  • feat(item-components): Add the AdditionalTradeCost component with tests and documentation. 79af872
  • feat(item-modifiers): Add includeAdditionalCostComponent to enchantRandomly and enchantWithLevels, update tests and documentation. c6f7022
  • feat(item-modifiers): Add setRandomDyes and setRandomPotion, update documentation and item modifier functionality. 55e6dae
  • feat(item-slot): Add the piglin item slot. 37a10b7
  • feat(nbt-utils): Add more builders for NBT lists. fbe3973
  • feat(oop): Add a more customizable ItemStack.summon. 91d4be2
  • feat(pig-sound-variants): Add the eatSound property to PigSoundVariant, update docs and tests. d96d2a4
  • feat(predicates): Add the environmentAttribute function and EnvironmentAttributeNumberProvider. 2e0c84e
  • feat(predicates): Add environmentAttributeCheck condition and overloads, update docs and tests. 654d184
  • feat(predicates): Add PlayerFoodPredicate with level and saturation, update tests and documentation. 09db797
  • feat(predicates): Add the clock parameter to TimeCheck, update overloads, and cover clock plus period combinations in tests. 7f1df0d
  • feat(predicates): Add the sum number provider, update documentation and tests. a4fc50e
  • feat(predicates): Add utility x, y, z setter functions to Position. 40995b2
  • feat(test-environments): Add the timelineAttributes environment, update docs and tests for timeline-driven mechanics. 5c6e0a6
  • feat(test-environments): Replace TimeOfDay with ClockTimeEnvironment, add a clock parameter, update tests and docs for clock-based time environments. 7b722ed
  • feat(time-command): Add the rate function to control day-night cycle speed, update tests and docs accordingly. 346ad90
  • feat(timelines): Add support for timeMarkers in timelines, introduce TimeMarkerArgument and TimelineMarker, update tests to cover marker usage and clock-aware flows. ea7bbef
  • feat(vec3): Enhance Vec3 and PosNumber with serialization support and docs. f68a73c
  • feat(website-styles): Add scrollMarginTop to the html element for better scrolling behavior. 7cfd313
  • feat(wolf-sound-variants): Add support for age-specific wolf sounds with adultSounds and babySounds, update tests and docs. c1c40b8
  • feat(worldclock): Add the WorldClock class and worldClock function, with tests for creation and registration. 77bd8a8
  • feat(worldgen): Add defaultClock to DimensionType, update tests and docs for WorldClock integration. 0af46d7
  • feat(worldgen): Add the endSpike factory function, update docs. b55db8d
  • feat(worldgen): Add extensive configuredFeature test coverage for many vanilla feature types, including bamboo, basaltColumns, dripstoneCluster, geode, and more. 53df549
  • feat(worldgen): Add FloatProvider factory functions with aliases for disambiguation, plus full unit test coverage for all supported float provider types. a1ea226
  • feat(worldgen): Add TrapezoidIntProvider and the trapezoid factory function, update functions.kt ordering. 16dab69

Bug Fixes

  • fix(advancement): Add the missing from AdvancementRoute, improve KDoc. bf07d93
  • fix(bindings): Correct the cache directory path in getCacheDir for consistency. 48bde8d
  • fix(bossbar): Add the missing setName overload with a text component and improve KDoc. 15b8767
  • fix(commands): Add the missing entity literal to teleport overloads, improve KDoc. 318f75e
  • fix(commands): Add the missing fill options for the fill command. c76866e
  • fix(commands): Add the missing set sub-literal for style in waypoint modify, refine KDoc for WaypointModify and related functions. c0a7fa2
  • fix(commands): Fix many clone grammar issues, add missing modes and sub-literals, improve KDoc. 9ed7482
  • fix(commands): Replace sequenceId with RandomSequenceArgument, improve random command KDoc. 5eb7557
  • fix(components): Replace InlinableList with List in ProvidesBannerPatterns, add PatternListSerializer, and update providesBannerPatterns helpers. 3515467
  • fix(data): Add missing support for string-based data commands, including append, insert, merge, and prepend operations. e041065
  • fix(docs): Update test commands in contributing documentation for consistency. 32feda0
  • fix(helpers): Fix the double namespace issue, broken self-recursion, and max-hit dedup in raycast. 933743b
  • fix(item): Correct the argument order in toItemArgument. 669152c
  • fix(playsound): Replace SoundArgument with SoundEventArgument in playSound. 4ae24e5
  • fix(stopwatch): Update the scale parameter to use a float type. 84edfb0
  • fix(time): Update Time.toString() to use toStringTruncatedIfRound, extend TitleCommand tests. 5b7969b
  • fix(vec): Fix the double truncation logic, add more tests, and repair the raycast test. b3e3618
  • fix(worldgen): Add the randomSelector factory function and DSL, update docs. 25114cc
  • fix(worldgen): Simplify Features serialization logic, replace InlinableListSerializer with ListSerializer, and preserve positional order with empty lists. ebde9c9

Refactors

  • refactor(item-components): Update components to support multiple IDs or tags for providesBannerPatterns, blocksAttacks, and damageResistant. 945596b
  • refactor(item-modifiers): Enhance setInstrument to support a single ID, a tag, or multiple IDs and tags, update related docs and tests. d3d82af
  • refactor(number-providers): Remove the custom serializer from ScoreTargetNumberProvider, simplify the implementation. e7d0d5a
  • refactor(worldgen): Add DSL improvements for RuleBasedBlockStateProvider, enhance rule configurability, update related tests and docs. 7af02b8
  • refactor(worldgen): Enhance the AlterGround tree decorator DSL, add builder block support, update tests and usage. c87b7e3
  • refactor(worldgen): Remove Flower, NoBonemealFlower, and RandomPatch configurations, update documentation to reflect the change. f16ae73
  • refactor(worldgen): Rename RuleBasedBlockStateProvider to RuleBasedStateProvider, update usages, tests, and docs accordingly. aef0afb
  • refactor(worldgen): Replace RuleBasedBlockStateProvider with BlockStateProvider across tree configurations, update the relevant docs and test cases. fa1f987

Full changelog: https://github.com/Ayfri/Kore/compare/v2.0.2-1.21.11..v2.6.1-26.1-rc-3

2.0.3-1.21.11

open_in_newMinecraft changelog

Another small release with many improvements to the documentation, a few small fixes, a missing advancement trigger, and improvements to NBTs with even its own documentation page.

Documentation

  • docs(advanced): Extend Known_Issues.md with detailed limitations and workarounds for Kore. 51f7ab3
  • docs(ai): Update README and Home.md to include Kore-Skill AI skills pack link. 0cde2af
  • docs(getting-started): Add link to "Learn X in Y Minutes - Kotlin" for quick syntax refresher. 8b8750b
  • docs(getting-started): Expand Kotlin basics section, add explanations for val/var, functions, and extension functions, include quick learning resources links. 9ac611c
  • docs(guide): Revamp Getting_Started.md to provide a more comprehensive guide, emphasizing iterative development, modular project structure, and practical tips. ddbcb78
  • docs(guides): Add advanced migration guide from Datapacks to Kore. 5c22eba
  • docs(guides): Enhance configuration guide with detailed explanations. 8a3862f
  • docs(nbt): Add complete documentation about NBTs. 5a7592d
  • docs(pages): Add copy button for markdown content and load sources. ec2d4c1 2ec7dcf

New Features

  • feat(advancement): Add player interact with entity trigger 69cd1be
  • feat(nbt-utils): Add more builders for Nbt Lists. fbe3973
  • feat(oop): Add a more customizable ItemStack.summon. 91d4be2
  • feat(vec3): Enhance Vec3 and PosNumber with serialization support and docs. f68a73c

Bug Fixes

  • fix(data): Add missing data ... string commands support, append, insert, merge, and prepend operations. e041065

Refactors

Full changelog: https://github.com/Ayfri/Kore/compare/v2.0.2-1.21.11..v2.0.3-1.21.11

2.0.2-1.21.11

open_in_newMinecraft changelog

Small but big release, adding a lot of missing KDoc on commands, new documentation for Selectors, Arguments Internals for contributors and a Cookbook with common patterns you would want to know.

I've also fixed many small issues with rarely used commands. Point Of Interest enum generation and argument support for locate poi command, new way to configure Bindings Github API Key and url parameters.

Documentation

  • docs(bindings): Update Bindings.md with new setup steps and example improvements. d0028c5
  • docs(commands): Add KDoc to all commands. e5bf892
  • docs(commands): Fix wrong syntaxes in commands examples. 16ba50b
  • docs(concepts): Add Selectors.md with comprehensive overview on building Minecraft target selectors in Kore, including typed builders, filtering capabilities, and score-based conditions. 2d44932
  • docs(contributing): Add Arguments.md and Cookbook.md for contributors. Introduction to Kore's argument system, practical datapack patterns, including setup functions, logic reuse, custom items, delayed actions, and more. 150a544 80bc008

New Features

  • feat(bindings): Add support for customizable HTTP request payload and headers, update related tests and documentation. eefe605
  • feat(bindings): Enhance GitHub function with API key authentication details, add tests and docs. 00f7dcf
  • feat(commands): Add placeJigsaw overload with JigsawArgument, enhance placeTemplate with integrity and TemplateMirror, and improve KDoc for place functions. f885b8f
  • feat(commands): Update locatePointOfInterest to use PointOfInterestTypeOrTagArgument, add KDoc comments to locate functions. 8a223fd 513a6d7 d4a906e
  • feat(predicates): Add utility x, y, z setter functions to Position. 40995b2

Bug Fixes

  • fix(advancement): Add missing from AdvancementRoute, improve KDoc. bf07d93
  • fix(bindings): Correct cache directory path in getCacheDir function for consistency. 48bde8d
  • fix(bossbar): Add missing setName with text component and improve KDoc. 15b8767
  • fix(commands): Add set sub-literal for style in waypoint modify, refine KDoc for WaypointModify and related functions. c0a7fa2
  • fix(commands): Add missing entity literal to teleport overloads, improve KDoc. 318f75e
  • fix(commands): Add missing fill options for fill command. c76866e
  • fix(commands): Fix many clone command grammar issues, add missing modes and sub-literals, improve KDoc. 9ed7482
  • fix(commands): Replace sequenceId with RandomSequenceArgument, improve random command KDoc. 5eb7557
  • fix(docs): Update test commands in contributing documentation for consistency. 32feda0
  • fix(item): Correct argument order in toItemArgument method. 669152c #216
  • fix(playsound): Replace SoundArgument with SoundEventArgument in playSound command. 4ae24e5
  • fix(stopwatch): Update scale parameter to use float type. 84edfb0

Full changelog: https://github.com/Ayfri/Kore/compare/v2.0.1-1.21.11..v2.0.2-1.21.11

2.0.1-1.21.11

open_in_newMinecraft changelog

Small fix to execute if block and a lot of new documentation on how to contribute to Kore!

Documentation

  • docs(commands): Add KDoc to all execute and execute condition functions. 6773147
  • docs(contributing): Add comprehensive contributor guides on architecture, workflow, CI/CD, and generator creation. 50d926c
  • docs(contributing): Revise guidelines for contribution, link to detailed docs for architecture, workflow, and CI/CD, and update README and website with clearer contribution instructions. 1fbb46a
  • docs(home): Fix error in example code. 8ea2d2e

Bug Fixes

  • fix(execute): Add missing execute if block with BlockTag argument. 993bf55

Full changelog: https://github.com/Ayfri/Kore/compare/v2.0.0-1.21.11..v2.0.1-1.21.11

2.0.0-1.21.11

open_in_newMinecraft changelog
kore-2 0-banner

Welcome to Kore 2.0!

Kore 2.0 is here! This release contains so many changes, improvements, and new features that it deserved a major version bump. From a completely revamped build system to powerful new OOP utilities and helpers, this is the biggest update Kore has ever seen.

What's new?

The new Helpers module provides a rich set of utilities for common datapack patterns:

  • Math engine - vector math, area utilities, and floating-point formatting helpers for Vec2, Vec3, Position, and Rotation.
  • Raycasts - easily create block and entity raycasts with configurable step size, max distance, and hit callbacks.
  • State delegates - Kotlin property delegates backed by scoreboards.
  • Text utilities - selectors, text components, and formatting helpers.
  • MiniMessageRenderer, MarkdownRenderer, and ANSIRenderer - advanced text formatting renderers.
  • VFX & Particles - high-level particle helpers for visual effects.

Also, the prior Helpers have been moved to the helpers module, such as Display Entities, Inventory Manager, Mannequins, Scheduler, and ScoreboardManager. See also Scoreboard Math.

The OOP module brings object-oriented abstractions on top of Minecraft commands:

  • Boss Bars - create and manage boss bars with team integration.
  • Entity management - EntityCommands for fluent entity manipulation.
  • Events - event-driven architecture for datapack logic.
  • Game State Machine - GameState and GameStateManager for managing game phases and transitions.
  • Spawners - configurable entity spawner utilities.
  • Timers & Cooldowns - schedule delayed or repeating actions with Timer and Cooldown APIs.

Code examples

Here are a few examples of what you can build with the biggest additions in Kore 2.0.

Helpers

This first example combines the math helpers with a raycast to measure a path and react to blocks or entities hit along the way.

val origin = pos(0, 64, 0)
val target = pos(12.75, 65.0, -3.5)
val distance = origin.distanceTo(target)

function("helpers_demo") {
	comment("Formatted distance: ${distance.toStringTruncatedIfRound()}")

	raycast(
		from = origin,
		direction = rotation(0f, 0f),
		maxDistance = 32.0,
		step = 0.25,
		onHitBlock = ::hitBlock,
		onHitEntity = ::hitEntity,
	)
}
Kotlin

And this one uses the particle helpers to turn an impact point into a small visual burst.

function("helpers_particles_demo") {
	val impact = pos(4.5, 65.0, -2.5)

	particle(
		particle = flame(),
		pos = impact,
		delta = vec3(0.15, 0.35, 0.15),
		speed = 0.02f,
		count = 12,
	)
}
Kotlin

This one shows how state delegates let you read and write scoreboard-backed values like regular Kotlin properties.

class GameContext {
	var score by score("game.score")
	var phase by score("game.phase")
}

val context = GameContext()

function("state_delegate_demo") {
	context.score += 10
	context.phase = 2
	comment("Score: ${context.score} | Phase: ${context.phase}")

	runIf(context.phase eq 2) {
		say("Phase 2 is over!")
	}
}
Kotlin

OOP

Here, a boss bar and a timer are wired together so players see the bar appear and initialize automatically when the intro starts.

val bossBar = BossBar("game:boss") {
	name = text("Final Boss")
	color = BossBarColor.PURPLE
	max = 100
}

val introTimer = Timer("game:intro", 100) {
	bossBar.players += allPlayers()
	bossBar.value = 100
}
Kotlin

This last example shows the event system forwarding a player join into the current game state, which keeps phase-specific logic nicely encapsulated.

val gameStateManager = GameStateManager(
	initialState = LobbyState(),
)

events.listen<PlayerJoinEvent> {
	gameStateManager.currentState.onPlayerJoin(player)
}
Kotlin

And here a spawner is paired with a cooldown to keep waves under control without scattering timing logic everywhere.

val waveCooldown = Cooldown("game:next_wave", 200)

val arenaSpawner = Spawner("game:arena") {
	spawnEntity = EntityTypes.ZOMBIE
	position = pos(0, 64, 0)
}

events.listen<TickEvent> {
	if (waveCooldown.isFinished) {
		arenaSpawner.spawn()
		waveCooldown.reset()
	}
}
Kotlin

Changelog

CI/CD

  • Add ci.yml workflow for automated tests. 2720e85
  • Add publish-snapshot.yml workflow for snapshot builds, update docs with snapshot setup instructions, and enhance build logic for snapshot versioning. b93e1df

Documentation

  • Update bindings documentation for namespace remapping and normalization. 5c066da - @e-psi-lon
  • Add scoreboard comparison examples for equalTo, notEqualTo, and related helpers. Extend documentation with Kotlin DSL mappings to generated commands. a516ef1
  • Add new documentation for helpers module (renderers, raycasts, math, particles, state delegates). 941fa47
  • Enhance Helpers and OOP documentation with new workflows, API examples, expanded Events, Display Entities, Raycasts, and scheduling sections. e6d986d
  • Update module descriptions, installation guides, and examples for bindings, helpers, and oop modules. 4c59c0b
  • Add OOP documentation for cooldowns, timers, game state machine, boss bars, events, entities, and spawners. 761d7ec 89bb489 33747c3

New Features

  • State: Add score-based comparison functions, runIf, runWhile, and repeatScore helpers. Enhance ScoreboardDelegate with asExecuteScore and scoreboardEntity integration. fd63024
  • State: Replace repeatScore with repeat, update iteration handling, enhance documentation, and adjust tests and examples. ce4a0ef
  • Bindings: Add support for per-namespace renaming. e9ded19 - @e-psi-lon
  • Bindings: Use XDG-compliant caching and prefer Path over File. 67e8f76 - @e-psi-lon
  • Maths: Add utility functions for truncation and formatting in Position, Rotation, Time, Vec2, and Vec3, improve toString methods and type-specific property access. fb0be06
  • Maths: Add delegate-based math helpers, improve trigonometric functions, enhance sqrt initialization, and update tests and documentation. c16b0e79
  • OOP: Add OOP wrappers for entity management, game state transitions, timers, spawners, and boss bars. d677d20 a8b3ba9 46f9de7

Bug Fixes

  • Bindings: Normalize namespace object name. a1b167a - @e-psi-lon
  • Commands: Add missing literal("under") argument to spreadPlayers command. c7cdcfa
  • Arguments: Fix unintended cast of Double coordinates to Int (e.g. 0.00), replace str with toStringTruncatedIfRound for correct entity positioning. c28b4ba 08a37ef - #213
  • Files: Fix createTempDirectory actually not creating the temporary directory, add more utilities to Path, and update docs and tests. 0c95069

Refactors

  • Arguments: Add Argument parsing and deserialization logic, enhance BlockArgument serializer, and introduce proxy creation for arguments. 6353257 bedbedc
  • Bindings: Add @Suppress("DEPRECATION") for deprecated properties, update code generators to use CodeBlock for pack metadata, remove infix remapping function. 449b021 b6c500a c9c5f78 - @e-psi-lon
  • Bindings: Use native cache directory for macOS and Windows. a68df12 - @e-psi-lon
  • Build: Remove buildSrc, migrate build logic to build-logic directory, introduce kotlin-dsl plugin, define version catalogs, configure repositories, and add kotest-conventions for shared test configuration. f0aab38 601b748 d30d43f 788d574
  • Core: Remove unnecessary @OptIn annotations, fix typos, improve validation for path commonality check. 4a44232
  • Generation: Add merging logic for load.json/tick.json tags, improve path normalization, fix duplicate archive entries, and simplify mod function parameters. 7d938be 865947d
  • Helpers & OOP: Migrate helpers from oop to dedicated helpers module, add Area utilities, enhance GameState/GameStateManager, improve entities, timers, teams, and standardize indentation to tabs. ace2f01 2efe908 53cef64 fd2326d
  • Scoreboard: Replace fn.data/fn.scoreboard with direct calls, update copyDataFrom/copyTo logic. b948855
  • Serialization: Improve deserialization logic, simplify serializers by leveraging EnumStringSerializer, enhance NBT/JSON compatibility. 1785d7a 20677eb
  • Utils: Simplify dateFormats calculations, optimize imports in MarkdownRenderer, simplify parentElement type usage. 3c168b9

Thanks to @e-psi-lon for his contributions!

Full changelog: https://github.com/Ayfri/Kore/compare/v1.42.1-1.21.11..v2.0.0-1.21.11

1.42.1-1.21.11

open_in_newMinecraft changelog

Small release to fix the default datapacks containing features field, also simplify the usage of pack formats and add more KDoc. I've also revamped a bit the tool I use to generate changelogs.

Documentation

  • docs(datapack): Update Creating A Datapack guide, improve minFormat/maxFormat examples, add legacy format handling and overlays DSL usage documentation. 79a34d7

Bug Fixes

  • fix(datapack): Make features optional. 13d9bd8

Refactors

  • refactor(colors): Add ColorSerializer deserialization for hex and named colors. 32f7e7a
  • refactor(pack): Update pack.mcmeta handling, add DSL for overlays, improve serialization for legacy fields, and clarify deprecation warnings. fbf7e5d
  • refactor(worldgen): Simplify Features serialization logic, add InlinableListSerializer, optimize toList and fromList conversion methods. b3c5d96

Full changelog: https://github.com/Ayfri/Kore/compare/v1.42.0-1.21.11..v1.42.1-1.21.11

1.42.0-1.21.11

open_in_newMinecraft changelog

A release to fix many small issues with advancements/item-modifiers/loot-tables/predicates/structures/test-instances, also some simplifications of serializers. It contains some small breaking changes so that's why the version bump.

Changelog

  • feat(maths): Add toArray and fromArray conversion for Vec3f, add deserialization support. 97a589c
  • feat(worldgen-structures): Add Terrain Adaptation and Pool Aliases documentation, enhance pool alias logic with weighted entries in tests. 6309c34
  • fix(advancements): Rename AvoidVibrations to AvoidVibration. 7c09253
  • fix(docs): Update Advancements.md and Triggers.md, add brewedPotion. Enhance Item_Modifiers.md with new examples, correct inconsistencies. 5626439
  • fix(item-modifiers): Add @Serializable to SetBookCover. b9a2cc4
  • fix(item-modifiers): Fix serialization of ApplyBonus item modifier. e3a867f
  • fix(item-modifiers): Remove UUIDArgument, add id property in AttributeModifier. 3d51818
  • fix(item-modifiers): Rename potion to id in SetPotion. dff1c54
  • fix(item-modifiers): Replace nbt with tag in SetCustomData and write as inline nbt, add helper to setBannerPattern. c820f1f
  • fix(loot-tables): Rename name to value in LootTable. 58b6d3e
  • fix(predicates): Add Light class to replace light field in Location. 64cdfa4
  • fix(predicates): Rename Enchantment int provider to EnchantmentLevel, update related functions. 6289eae
  • fix(predicates): Rename EntityScore to EntityScores. f46733a
  • fix(predicates): Replace Block with Location in steppingOn. 784e0d3
  • fix(predicates): Set default value of entity in EntityProperties to EntityType.THIS. 76d8717
  • fix(test-instances): Replace FunctionArgument with String for function references, align logic and documentation with new GameTest framework. 7f3514a
  • fix(test-instances): Replace Function with FunctionArgument, remove FunctionDSLBuilder. 41fda93
  • fix(worldgen-structures): Update pool alias logic, introduce weighted entries. 309b9fe
  • refactor(advancements): Replace criteria serialization logic with InlineSerializer, adjust trigger classes to remove name property. 82f6727
  • refactor(advancements): Set default lambda value for recipeUnlocked and recipeCrafted criteria. 4eb7e7f
  • refactor(item-modifiers): Adjust Source enum values, rename parameters in copyCustomData, add helper methods for MutableList<CopyNbtOperation>. 11f9481
  • refactor(predicates): Simplify Fluid sub predicate usage. a4657b7

Full changelog: https://github.com/Ayfri/Kore/compare/v1.41.3-1.21.11..v1.42.0-1.21.11

1.41.3-1.21.11

open_in_newMinecraft changelog

Small release to fix a pretty important bug.

Changelog

  • docs(website): Update Kore Template links to reflect new GitHub repository. 15e05b0
  • fix(arguments): Fix serialization of IntRangeOrInt with only min or max. 79b9c8d b8e3b2a

Full changelog: https://github.com/Ayfri/Kore/compare/v1.41.2-1.21.11..v1.41.3-1.21.11

1.41.2-1.21.11

open_in_newMinecraft changelog

Small fixes and improved predicates/pack usages.

Changelog

  • feat(pack): Add supportedFormats DSL, implement range and min-max validation, and add corresponding tests. 15d08f0
  • feat(predicates): Add matchTool function with ItemArgument support, enable multi-item condition handling. 60363c2
  • feat(predicates): Extend enchantments to support EnchantmentOrTagArgument with optional levels. 0ba6dd5
  • feat(utils): Add extractBaseMinecraftVersion, implement compareMinecraftVersions, update version filtering logic. 46be380
  • fix(loot-tables): Fix alternatives being mis-spelled and simplify usage. 177b236

Full changelog: https://github.com/Ayfri/Kore/compare/v1.41.1-1.21.11..v1.41.2-1.21.11

1.41.1-1.21.11

open_in_newMinecraft changelog

Massive update covering the snapshot cycle. Major additions to Worldgen, Environment control, and Combat components. Also a complete revamp of the documentation pages/architecture and to the updates page.

Changelog

Worldgen & Environment

  • feat(timelines): Introduced the Timelines System for data-driven environment animations (keyframes, easing).
  • feat(environment): Added fine-grained control for cloudColor, fogStart/End, waterFog, skybox, and CardinalLight.
  • feat(worldgen): Added BlendToGray modifier and Activity registry generator.

Combat & Components

  • feat(components): Added Weapon Components: KineticWeapon, PiercingWeapon, and DamageType.
  • feat(components): Added AttackRangeComponent with max/minCreativeReach.
  • feat(components): Added interactVibrations, minimumAttackCharge, and swingAnimation.

Datapack Utilities

  • feat(commands): Added worldborder (add/set/warning) and stopwatch commands.
  • feat(functions): Enhance addLine to support multiline strings, add test cases. 9775e08
  • feat(loot-tables): Added Slots entries (contents, empty, filtered, group, limit-slots) and fixed dynamic names.
  • feat(predicates): Added matchTool (multi-item support), isFallFlying, and isInWater.
  • feat(enchantments): Added ApplyImpulse, postPiercingAttack, and applyExhaustion.

Core & Docs

  • docs: Massive documentation overhaul (Worldgen, Tags, Trims, variants) + llms.txt support.
  • refactor: Migrated to Vanniktech Maven Publish (lighter & faster builds).

Full changelog: https://github.com/Ayfri/Kore/compare/v1.37.0-1.21.10..v1.41.1-1.21.11

1.37.0-1.21.10

open_in_newMinecraft changelog

Changelog

  • No changes were required.

Full changelog: https://github.com/Ayfri/Kore/compare/v1.37.0-1.21.10-rc1..v1.37.0-1.21.10

1.37.0-1.21.9

open_in_newMinecraft changelog

Changelog

  • No changes were required.

Full changelog: https://github.com/Ayfri/Kore/compare/v1.37.0-1.21.9-rc1..v1.37.0-1.21.9

1.33.2-1.21.8

open_in_newMinecraft changelog

Somes fixes, update to KNbt, new documentation and missing interfaces/generated things. Also, I'm currently working on something bigger and very interesting for Kore!

Changelog

  • chore(dependencies): Update knbt version from 0.11.8 to 0.11.9. c01183c
  • docs(macro): Add example for TeleportMacros and clarify limitations. 387be86
  • docs(publishing): Add guide for publishing datapacks using GitHub Actions. 98d7e5e
  • feat(generation): Add missing worldgen tags interfaces parents. 1a0e39e feat(generation): Add painting_asset to additional arguments and update tagsParents for PaintingAssetArgument. d095f93
  • feat(tags): Add missing common tags functions. d597df3
  • fix(advancements): Change background type to ModelArgument in AdvancementDisplay. c76b6b1
  • fix(execute): Fix execute if items syntax missing source literal name. 0202e87 #175
  • fix(generation): Move DEFAULT_DATAPACK_FORMAT to DataPack.Companion for easier use. 7a9c0ad
  • fix(painting): Change assetId type to PaintingAssetArgument in PaintingVariant. e3aff11, 966a085

Full changelog: https://github.com/Ayfri/Kore/compare/v1.33.1-1.21.8..v1.33.2-1.21.8

1.33.1-1.21.8

open_in_newMinecraft changelog

No changes at all since 1.21.7.

Changelog

  • No changes were required.

Full changelog: https://github.com/Ayfri/Kore/compare/v1.33.1-1.21.8-rc1..v1.33.1-1.21.8

1.33.1-1.21.7

open_in_newMinecraft changelog

1.33.1-1.21.6

open_in_newMinecraft changelog

The big new "small" release is finally out! I took a long time because life is life, and you can get pretty busy at some times, but now Kore is back and updating quickly!

See the new 1.21.6 changes from Minecraft themselves: https://www.minecraft.net/en-us/article/minecraft-java-edition-1-21-6

Changelog

  • No changes were required since 1.21.6-rc1.

Full changelog: https://github.com/Ayfri/Kore/compare/v1.28.0-1.21.5..v1.33.1-1.21.6

1.28.0-1.21.5

open_in_newMinecraft changelog

Finally, 1.21.5 is here! Check for previous releases for the full list of changes.

Changelog

  • No changes were required.

Full changelog: https://github.com/Ayfri/Kore/compare/v1.28.0-1.21.5-rc2..v1.28.0-1.21.5

Changelog since 1.21.4: https://github.com/Ayfri/Kore/compare/v1.23.0-1.21.4..v1.28.0-1.21.5

1.24.0-1.21.4

open_in_newMinecraft changelog

Small release containing one bug fix! But I also updated Kore to 2.1.0, this changes the process of creating projects because you have to ignore one warning, sadly that's the best way I found for the current state of Kore. We're waiting on the context parameters feature to release to remove these flags, but currently the KEEP is still in construction.

You'll now have to add this flag to freeCompilerArgs list : "-Xsuppress-warning=CONTEXT_RECEIVERS_DEPRECATED" Example

kotlin {
	compilerOptions {
		freeCompilerArgs = listOf("-Xcontext-receivers", "-Xsuppress-warning=CONTEXT_RECEIVERS_DEPRECATED")
	}
}
Kotlin

Note that I've also updated Kore-Template.

Changelog

  • chore(build): Update compiler arguments for context receivers. 192f9c1
  • chore(dependencies): Update jetbrains-compose to version 1.7.3, update kobweb to version 0.20.0, and upgrade kotlin.version to 2.1.0. 18f75fb a33baf6
  • fix(scoreboard): Update asString method to use camelCase, add tests for some scoreboard criterion. #135 c6ed581
  • feat(string-utils): Add camelCase function to convert strings to camel case. f033e3b

Full changelog: https://github.com/Ayfri/Kore/compare/v1.23.0-1.21.4..v1.24.0-1.21.4

1.23.0-1.21.4

open_in_newMinecraft changelog

Changelog

  • No changes were required.

Full changelog: https://github.com/Ayfri/Kore/compare/1.23.0-1.21.4..HEAD

1.21.3-1.21.3

open_in_newMinecraft changelog

Fixes a small bug, and increase the version of Kore making it aligned with Minecraft again, lul

Changelog

  • fix(chat-components): Fix chat components serialization in escaped JSON contexts. #123 0577198
  • refactor(advancements): Do not serialize empty conditions of triggers. decf34c

Full changelog: https://github.com/Ayfri/Kore/compare/v1.21.2-1.21.3..v1.21.3-1.21.3

1.21.2-1.21.3

open_in_newMinecraft changelog

Changelog

  • No changes were required.

Full changelog: https://github.com/Ayfri/Kore/compare/v1.21.2-1.21.2..v1.21.2-1.21.3

1.21.2-1.21.2

open_in_newMinecraft changelog

So this is it, 1.21.2 for 1.21.2, for explanation I started Kore at 1.0 on Minecraft 1.20, but by pure chance we stepped on a version where both Kore and Minecraft are in version 1.21.2 :')

Changelog

  • No changes were required.

Full changelog: https://github.com/Ayfri/Kore/compare/v1.21.2-1.21.2-rc2..v1.21.2-1.21.2

1.17.0-1.21.1

open_in_newMinecraft changelog

Another release with a big new feature : jar file generation. You can now create datapacks that can be used as mods for fabric, forge, neoforge and quilt mod-loaders ! Check out the documentation on this new feature here : https://github.com/Ayfri/Kore/wiki/creating-a-datapack#jar-generation The next release should be focused on updating Kore to 1.21.2 👌

Changelog

  • feat(creating-datapacks): Add NeoForge neoforge.mods.toml generation. f1f21e1 5f7f90c
  • feat(creating-datapacks): Add Quilt quild.mod.json generation. 44b75a
  • feat(creating-datapacks): Add forge mods.toml generation. 796a595
  • feat(creating-datapacks): Add jar generation and fabric mod generation. 3f60647
  • feat(generators): Generate minecraft version. c75f6cc
  • fix(neoforge): Fix NeoForge dependency type value should be lowercase.
  • refactor(datapacks): Streamline datapack generation from different mode into one unique, fix tags not merging when generating a zip, simplify generation. 22eb17b

Full changelog: https://github.com/Ayfri/Kore/compare/v1.16.0-1.21.1..v1.17.0-1.21.1

1.16.0-1.21.1

open_in_newMinecraft changelog

This release introduces a big new feature very cool for datapack developers: Being able to merge datapacks together, even with external datapacks or zip files. Check out the documentation on this new feature here. Let me know if this feature has any bugs or missing features!

Changelog

  • feat(chat-components): Introduce deserialization of chat components for Json. f105bd4
  • feat(datapacks): Add generations options, add merging with other packs option, add tests. d01296d
  • feat(pack-mcmeta): Introduce deserialization of SupportedFormats, add useful functions for comparing versions, add toString. 39d53e3
  • feat(tags): Introduce deserialization of Tags. 33a5b51

Full changelog: https://github.com/Ayfri/Kore/compare/v1.15.1-1.21.1..v1.16.0-1.21.1

1.15.1-1.21.1

open_in_newMinecraft changelog

Fixes a bug related to tag generation folder when setting the tag of a function using the setTag function, also updates unit tests about functions generation for checking if all files are correctly generated and are at the correct location.

[!IMPORTANT] I will in a future release rename the setTag function to addToTag because a function in Minecraft can be linked to multiple tags.

Changelog

  • fix(functions): Fix generated tag folder for setTag method of functions, update tests for functions generation files locations. #102 0efd2da

Full changelog: https://github.com/Ayfri/Kore/compare/v1.15.0-1.21.1..v1.15.1-1.21.1

1.15.0-1.21.1

open_in_newMinecraft changelog

Changelog

  • No changes were required.

Full changelog: https://github.com/Ayfri/Kore/compare/v1.15.0-1.21..v1.15.0-1.21.1

1.15.0-1.21

open_in_newMinecraft changelog

Kore is finally entirely compatible with 1.21, with a lot of fixes (even from features of prior versions, which is great for the project).

Changelog

  • No changes were required.

Full changelog: https://github.com/Ayfri/Kore/compare/v1.15.0-1.21-rc1..v1.15.0-1.21

1.10.1-1.20.6

open_in_newMinecraft changelog

Changelog

  • No changes were required.

Full changelog: https://github.com/Ayfri/Kore/compare/v1.10.1-1.20.6-rc1..v1.10.1-1.20.6

1.10.1-1.20.5

open_in_newMinecraft changelog

Changelog

  • No changes were required.

Full changelog: https://github.com/Ayfri/Kore/compare/v1.10.1-1.20.5-rc3..v1.10.1-1.20.5

1.1.0-1.20.4

open_in_newMinecraft changelog

Changelog

  • No changes were required.

Full changelog: https://github.com/Ayfri/Kore/compare/v1.1.0-1.20.4-rc1..v1.1.0-1.20.4

1.1.0-1.20.3

open_in_newMinecraft changelog

Changelog

  • No changes were required.

Full changelog: https://github.com/Ayfri/Kore/compare/v1.1.0-1.20.3-rc1..v1.1.0-1.20.3

1.0.0-1.20.2 First release !

Kore Library v1.0.0 Released! 🎉

I'm excited to announce the first stable release of the Kore library! After months of development and testing, Kore v1.0.0 is now available.

Get started now with the documentation and the example.

Your feedback and contributions are welcome! Feel free to open issues or pull requests on the GitHub repository.

Happy datapacking! ⛏️

archive
184
Total Releases
calendar_month
22/09/2023
First Release
calendar_month
02/07/2026
Latest Release

Releases by Minecraft Version

26.1
24
1.21
117
1.20
43