dataLib
No reviews yet
About Advanced Minecraft Java datapack library for storage, predicates, events, and utilities. Topics minecraft
Provides a framework or library for other mods to use.
Data Packs were introduced to vanilla Minecraft in version 1.13 and allow the server to modify data about the game, or run commands. Data Packs are compatible with all mod loaders.
Forge is a popular mod loader for versions 1.1+ of Minecraft.
Neoforge is a fork of the Minecraft Forge available for versions 1.20.1+ of Minecraft. Many Forge mods are compatible with Neoforge and vice versa.
Fabric is a mod loader for versions 1.14+ of Minecraft, particularly popular for client side and optimization mods.
Quilt is a fork of the Fabric mod loader. Many Fabric mods are compatible with Quilt and vice versa.
Community voices
Reviews
Click once to include, again to exclude, again to clear
No reviews yet. Be the first to review this project!
Get it on
Available Platforms
Compatibility
Supported Environments
About
Project Details
For authors
Embed Badge
If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.
Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.
Identifiers
Platform IDs
About
Description
🔧 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
Versions
Files
Relations
Project Relations
More like this
Similar Mods
Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.
On ModDex
Community snapshot
By the numbers
Statistics
Want to reach Minecraft players?
We're looking for a server hosting partner to feature here and other parts of the site. Interested? Send us a message!
Get in touchGet it on
Available Platforms
On ModDex
Community snapshot
By the numbers