
DataPackPlus (DP+)
A helpful Minecraft Fabric mod to improve the lives of data pack developers!
Report Bug
·
Request Feature
About the project
My friend Nedraw is a datapack developer, and we're working together on modding and datapack development. To help him out, I made an api for him, so he can make datapacks easier and with better performance.
I decided to open-source and publish this so I can help other people out.
Here are the features this mod adds.
/data math
This command allows you to do more complex and faster math operations.
Here are some examples on how to use the command:
/data math <operation> with <input_nbt> (Will just show the result in chat)
/data math <operation> storage <storage_identifier>
/data math <operation> storage <storage_identifier> <nbt_subpath>
/data variable
This command allows you to set and get specific variables for an entity.
Here are some examples on how to use the command:
/data variable <add|set|get> <variable> (Will just show the result in chat if get)
/data variable <add|set|get> <variable> to <storage_identifier>
/data variable <add|set|get> <variable> to <storage_identifier> <nbt_subpath>
Ridable players
You can have entities mount and dismount onto players; the player being ridden cannot force the entity to dismount.
Example of using /data math (the NBT schema is the same for variable)
/data modify storage minecraft:test in set value [43,35] (Storage nbt: {in:[43,35]} )
/data math add storage minecraft:test (Storage nbt: {in:[43,35],out:[78.0d]})
Math operations
For all arithmetic operations, the input is an array of numbers of any size. If the size is more than 2, it will treat it as chaining the operations, for example, if it's an add operation with 4 inputs, it will sum it all up.
If you want to know what these operations are, just search for them.
| Operation Name | Input Size | Notes |
|---|---|---|
| add | 2 | |
| subtract | 2 | |
| multiply | 2 | |
| divide | 2 | |
| mod (modulo) | 2 | |
| negate | 1 | |
| factorial | 1 | |
| power (exponentiation) | 2 | |
| root (nth root) | 2 | |
| distance | 2 | input: [x,y,z], [x,y,z] |
| distance_squared | 2 | input: [x,y,z], [x,y,z] |
| rad2deg (radians→deg) | 1 | |
| deg2rad (degrees→rad) | 1 | |
| sin | 1 | |
| cos | 1 | |
| tan | 1 | |
| arcsin | 1 | |
| arccos | 1 | |
| arctan | 1 | |
| arctan2 | 2 | |
| ceil (round up) | 1 | |
| round | 1 | |
| floor (round down) | 1 |
Variable Types
| Variable Name | Description | Type | Accessors |
|---|---|---|---|
| motion | The entity's motion/velocity | [double, double, double] | Get, Set, Add |
| hunger | The entity's foodLevel/Hunger and Saturation | [double (hunger), double (saturation) ] | Get, Set, Add |
| health | The entity's health | [double (0 to 20.0) ] | Get, Set, Add |
| held_slot | The player's selected hotbar slot | [int (0 to 8) ] | Get, Set, Add |
| fall_distance | How far the entity has fallen, 0 if they are not falling | [double] | Get |
| dimension | The entity's dimension/world with namespace | [string] | Get |
| position | The entity's xyz position | [double,double,double] | Get, Set, Add |
| angle | The entity's yaw and pitch angle | [double (yaw), double (pitch) ] | Get, Set, Add |
- Edition: Minecraft Java
- File type: .jar
- Minecraft version listed: 1.21.7
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Modrinth — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
- Ships as DataPackPlus-1.0.0.jar — drop this file into the mods folder
- Download size: 74 KB
- Download link checked 21 Aug 2026 — working
These come from our own check of the pack file, not from the source page.