
Modrinth · Minecraft mod
dataLib
Advanced Minecraft Java datapack library for storage, predicates, events, and utilities.
Quick answer
Which dataLib release should I use?
dataLib 6.0.2 targets 26.2 with Fabric. Installation on the client is optional. Installation on the dedicated server is optional. No extra mods listed for this file.
Where it goes
Is dataLib required on the client, server, or both?
Installation on the client is optional. Installation on the dedicated server is optional.
The source marks this as usable on both the client and server.
What else does dataLib 6.0.2 need?
6.0.2. Change the file and its required mods may change too.
This file does not list any required mods. Do not add a library just because a different file uses it.
This file does not list any required or optional mods.
Before you install it
Add dataLib without breaking your instance.
Built for dataLib 6.0.2. Pick another file and the loader, install side or required mods may change.
- 01
Stick to this file
Use 6.0.2. It targets 26.2 with Fabric; another release may have different loader, side or dependency requirements.
- 02
Bring the mods it needs
This file does not list any required mods. Do not add a library just because a different file uses it.
- 03
Put it on the correct side
Installation on the client is optional. Installation on the dedicated server is optional.
- 04
Pick the file you checked
Use the “Get this file” button beside 6.0.2. It opens that exact file at the source.
About this project
What does dataLib add?
🔧 dataLib
🗄️ ARCHIVED
This project is archived and no longer maintained. No new features, bug fixes, or security patches will be released. The information below reflects the state of the project at the time of archival and is kept for reference only.
Use at your own risk — known issues will not be fixed, and newer Minecraft versions are not guaranteed to be compatible.
Minecraft Java Edition 26.2 | Multiplayer-Safe | Pure Datapack
Current version: v6.0.2
This datapack was considered safe to use as of its last release, but it no longer receives security improvements, bug fixes, or new features. There is no "up to date" version to move to.
Do not copy
datalib:inputordatalib:engineinto your own datapack. It is an internal implementation detail and may change without notice between releases.
⚠️ Do not use v5.1.1. That version bound
_rt_origin.mcfunctionto the load tag, causing it to run automatically on every load with no safe removal path. Fixed in later versions — always use the latest release.
⚠️ A
/reloadis still required after installation or after adding the load hook below. Automatic first-join initialization is not implemented in this version — do not rely on this until verified in-game with repeated reloads.
🛡️ This is a Minecraft Datapack — it contains no executables or scripts outside of
.mcfunctionfiles.
Some antivirus software may flag.mcfunctionfiles as suspicious due to macro-like syntax. This is a false positive. The pack has been scanned on VirusTotal and returned clean.
Only download from this official repository. Do not trust redistributed or repackaged versions from third-party sources.
📦 Installation
Download the latest release from the Modrinth versions page and place the
.zipinto<world>/datapacks/.Add the following logic to your datapack's
loadtag. Replace<namespace>with your own datapack's namespace (e.g.mypack) — this applies only to the function names, never todatalib:engine, which is dataLib's own fixed storage and must not be changed:
#> <namespace>:load
execute unless data storage datalib:engine {global:{loaded:1b}} run function <namespace>:load_datalib
#> <namespace>:load_datalib
# Guard checks the SAME storage/path the trigger condition checks (datalib:engine global.loaded).
execute if data storage datalib:engine {global:{loaded:1b}} run return 0
function dl_load:load/yes
function dl_load:load/fork_no
data modify storage datalib:engine global.loaded set value 1b
Fixed bug: duplicate load trigger (click to expand)
An earlier version checked datalib:engine {global:{loaded:1b}} in the trigger but set <namespace>:engine loaded_datalib in the guard — two different storages, two different paths. The set never satisfied the trigger's condition, so load_datalib re-ran every time the load tag fired. This doesn't crash anything, but it silently re-triggers dl_load:load/yes and fork_no on every reload, which can accumulate side effects depending on what those functions do.
Both the check and the set must target datalib:engine global.loaded. If you're updating from an older copy of this README, verify by reloading multiple times and confirming load_datalib does NOT re-run after the first load.
🏗️ Storage Architecture
datalib:engine (persistent data)
├── global
│ ├── version: "v6.0.2"
│ ├── loaded: 1b
│ └── tick: <int>
├── players
│ └── Steve { coins:150, level:5, xp:2300, online:1b, ... }
├── queue
│ └── [{func:"mypack:event/end", delay:100}]
├── cooldowns
│ └── Steve { fireball: 2460, dash: 1870 } ← expiry ticks
└── events
└── on_join: [{func:"mypack:welcome"}, {func:"mypack:xp_bonus"}]
datalib:input (sending data to a function)
datalib:output (receiving results from a function)
Note: All dataLib-owned state lives under the datalib: namespace only. Never mix a consuming pack's own namespace into dataLib's load-flag logic — that mismatch was the source of the bug above.
📦 Dependencies
Lantern Load
Repository: https://github.com/LanternMC/load
License: BSD 0-Clause (public domain)
Provides deterministic load order, version tracking, and pre/load/post-load hooks.
# Check if dataLib is loaded
execute if score #dataLib load.status matches 1.. run say dataLib is loaded
# Get version (major*10000 + minor*100 + patch → v6.0.2 = 601)
scoreboard players get dataLib load.status
StringLib
Repository: https://github.com/CMDred/StringLib
License: MIT
Bundled under the stringlib namespace. Exposed via datalib:core/lib/string/*.
| Function | Description |
|---|---|
lib/string/concat |
Join a string array |
lib/string/find |
Find substring index |
lib/string/replace |
Replace substring |
lib/string/split |
Split by separator |
lib/string/insert |
Insert at index |
lib/string/to_lowercase |
Lowercase (A–Z, fast) |
lib/string/to_uppercase |
Uppercase (a–z, fast) |
lib/string/to_number |
String → numeric NBT |
lib/string/to_string |
Value → string |
All functions read from datalib:input and write to datalib:output string.result.
data modify storage datalib:input string set value "Hello World"
data modify storage datalib:input find set value "World"
data modify storage datalib:input replace set value "Everyone"
function datalib:core/lib/string/replace
# datalib:output string.result → "Hello Everyone"
💬 Support
This project is archived. Issues and pull requests are not monitored and will not be actioned.
dataLib v6.0.2 | MC Java 26.2 | Pure Datapack
Project description from Modrinth.
Pick your setup
dataLib by Minecraft version and loader
Choose the version and loader you play, then open the matching release.
26.2
5 loader buildsCheck the dependencies, then try the file in a copied instance before changing a world you care about.
Recent files
dataLib versions and loaders
6.0.2
dataLib-full.jar
6 Aug 2026
v6.0.2
dataLib-dp.zip
3 Aug 2026
v6.0.1-updated2
dataLib.zip
29 Jul 2026
6.0.1_updated
dataLib-full.zip
28 Jul 2026
v6.0.1
dataLib.zip
26 Jul 2026
v6.0.1-pre2-modded+mod
datalib-v6.0.1-pre2-modded.jar
21 Jul 2026
v6.0.1-pre2-modded
dataLib-full.zip
21 Jul 2026
6.0.1-pre2+mod
datalib-6.0.1-pre2.jar
21 Jul 2026
6.0.1-pre2
dataLib-v6.0.1-pre2-datapack.zip
21 Jul 2026
v6.0.1-pre1-fixed4
dataLib-full.zip
16 Jul 2026
v6.0.1-pre1+fixed3
dataLib-full.zip
13 Jul 2026
v6.0.1-pre1-fixed2
dataLib-full.zip
12 Jul 2026
Looking for an older file? The official Modrinth project page is in Resources.