Skip to content

Releases: Ayfri/Kore

2.0.2-1.21.11

21 Apr 10:18
Immutable release. Only release title and notes can be modified.
80bc008

Choose a tag to compare

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

16 Apr 20:32
Immutable release. Only release title and notes can be modified.
3b15b62

Choose a tag to compare

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

02 Apr 22:20
0c95069

Choose a tag to compare

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

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

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!")
	}
}

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
}

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)
}

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()
	}
}

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...
Read more

1.42.1-1.21.11

20 Feb 14:58

Choose a tag to compare

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

15 Feb 18:51

Choose a tag to compare

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

13 Feb 23:47

Choose a tag to compare

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

13 Feb 20:26

Choose a tag to compare

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

11 Feb 01:05

Choose a tag to compare

1.41.1-1.21.11-rc2

11 Feb 01:01

Choose a tag to compare

1.41.1-1.21.11-rc1

11 Feb 00:57

Choose a tag to compare