A Visual Studio Code extension providing powerful tools for working with Kore, a Kotlin library for creating Minecraft datapacks without writing JSON.
- Kore declaration discovery: Detects datapacks, functions, tags, predicates, recipes, advancements, dialogs, world-generation resources (features, carvers, density functions, structures), and the other Kore DSL builders in Kotlin files, including builders nested in a scope such as
recipes { }orstructures { } - Workspace-aware resolution: A
dataPack(NAMESPACE),function("leaf_$id")orlootTable(Names.PREFIX + "chest")resolves through thevalconstants of the workspace (chains likeval NS = "${BASE}_pack"included), and afun DataPack.setup()/fun setup(dp: DataPack)/context(dp: DataPack) fun setup()helper is filed under the datapack whosedataPack { }block calls it (directly or through other helpers). Helpers nobody calls fall back to the datapack declared in the closest folder, so a multi-project workspace like the KoreExamplesrepo keeps each project's helpers under its own pack - Gutter icons and hovers: Marks declarations in the editor and shows their resource location, generated output path, source location, and relevant Minecraft command
- Diagnostics: Warns when two declarations write the same file (the last one generated silently wins), reports a
function("helper")command whose target is not declared in the project with quick fixes (rename to a close match, call it under the namespace that declares it, swap invertednamespace, namearguments, or create the missing function), and checkscraftingShapedrecipes for grid size, row width, missing and unused keys. Turn them off withkore-assistant.diagnostics.enabled - Kore Explorer: Browses declarations as the generated output structure (datapack > namespace > resource folder > path folders, a function's
directoryincluded), by datapack and declaration kind with nested path folders, by source file, or as a flat list. Container rows show how many elements they hold and a hover summarizing their output folder, namespaces, kinds and files - Navigation and copy actions: Reveals the declaration source, "Reveal in Kore Explorer" from the editor context menu jumps to the row of the declaration under the cursor, and every explorer node has a context menu to copy its name, namespace, resource location, output path or folder, command, file path or
file:linedeclaration path; container rows also copy every resource location or output path underneath, one per line - Sorting, grouping and filter: Sort declarations by name, kind, namespace or declaration order in either direction, and filter the tree by name, namespace or output path. Grouping and sorting are remembered per workspace
- Snippets: Code snippets for quickly creating Kore elements with proper imports
Browse each datapack and its generated resources directly from the Activity Bar. Resource folders are grouped by their Kore declaration kind, and nested resource paths stay organized in the tree.
Hover a gutter icon to inspect the declaration's generated resource location and output path without leaving the source file.
You can install this extension through the VS Code Marketplace:
- Open VS Code
- Go to the Extensions view (
Ctrl+Shift+XorCmd+Shift+Xon macOS) - Search for "Kore Assistant"
- Click Install
Alternatively, you can install it directly from the VS Code Marketplace.
Kore is a modern Kotlin library that allows you to:
- Create Minecraft datapacks using Kotlin instead of JSON
- Write clean, type-safe code with full IDE support
- Generate commands, recipes, advancements and other datapack components
- Support for Minecraft 1.20 and later versions
Visit kore.ayfri.com for official documentation.
- Visual Studio Code 1.125.0 or newer
- A Kotlin language extension, e.g. the official Kotlin by JetBrains extension (powered by kotlin-lsp)
- Open a Kotlin file containing Kore declarations, such as
dataPack,function,predicate,blockTag, orrecipes { craftingShaped(...) } - The extension will automatically detect and highlight them with gutter icons
- Use the Kore Explorer in the Activity Bar to browse declarations by datapack and resource kind
- Select a declaration to jump to its Kotlin source, or right-click any node (datapack, namespace, folder, category, file or declaration) to copy one of its values or open its source
- Use the view toolbar to filter the tree, pick a grouping (output structure, kind, source file, flat list), pick a sort criterion (picking the active one again flips the direction) or rescan the workspace
- Right-click a gutter icon (or anywhere in a Kotlin editor) and pick "Kore: Reveal in Kore Explorer", or click the link at the end of the gutter hover, to select that declaration in the tree
- Use the snippets to quickly create new Kore elements (see snippets section below)
To refresh the icons manually, run the "Kore: Refresh Gutter Icons" command from the command palette.
The extension provides the following snippets for Kotlin files:
dp- Creates a datapack declaration with automatic importfn- Creates a function declaration with automatic import
kore-assistant.diagnostics.enabled(defaulttrue): report duplicate declarations, unresolvedfunctioncommands and invalidcraftingShapedpatterns in the Problems view- Explorer grouping (output structure, kind, source file, flat list), sort criterion and direction are toolbar choices remembered per workspace, not settings
Please file issues and feature requests on the project's repository.
This extension is licensed under the GNU General Public License v3.0.
Contributions to the Kore Assistant extension are welcome!
- Fork the repository
- Create your feature branch:
git checkout -b feature/amazing-feature - Install dependencies:
bun install - Make your changes
- Build and test:
bun run package - Commit your changes:
git commit -m 'Add some amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
The extension is published to the VS Code Marketplace automatically when a new tag is pushed to the repository.
To publish a new version:
- Update the version in
package.json - Update the CHANGELOG.md file
- Update the version badge in README.md
- Commit your changes:
git commit -m 'Release v0.x.x' - Tag the release:
git tag v0.x.x - Push the changes:
git push && git push --tags
GitHub Actions will automatically build and publish the extension.

