/DatapackBuildManager

A simple python build system for managing dependencies of Minecraft Datapacks.

Primary LanguagePythonMIT LicenseMIT

DatapackBuildManager

A simple build system for managing dependencies of Minecraft Datapacks written in Python, sort of like a make file for datapacks. It currently automates:

  • Downloading dependencies from a URL (local files are also supported)
  • Cleaning datapack of dangling files
  • Copying dependencies into datapack, merging files where pratical
  • Integrating function tags
  • Upgrading versioned libraries build version (doesn't cover all edge cases, you will need to check what does and does not get updated)

As with any tool that could potentially destroy your project, please take backups (I mean, you are using git, right?)

Usage:

Setup your dependencies.json file (see example in repo)

Run this from command line for basic operation:
    python build-datapack.py <datapack>

For advanced operation, add -h to see flags:
    python build-datapack.py -h

As of v1.2, it is recommended to use the new -o flag.
This will build your datapack into a new file, instead of modifying it directly.
    python build-datapack.py <datapack directory> -o <output directory>

Known Libraries

These are datapack libraries that work with DatapackBuildManager. If you know of a library that should be on this list, please contact me.

If an end-user has several datapacks that use different versions of a library, the conflicting versions overwrite each other and can cause issues. 'Versioned' libraries are formatted to prevent this problem by preventing files from being overwritten and ensuring the latest version of the library is used. 'Static' libraries are unversioned, but are intended to never change so they can't cause conlicts.

Library Author Description Versioned Note
AESTD Aeldrion "Aeldrion's standard command library" - A common library of useful entity tags, block tags, item tags, entity tags, predicates, and other useful stuff 🔴
Block Utils ICY105 Adds various utilities for interacting with blocks. Currently limited to detecting redstone power. ✅
ChunkScan ICY105 Adds a post-gen chunk scaning system. Supports any dimension (including custom), custom worldheights, and is compatible with other worldgen systems, both normal and postgen. ✅
ChunkScan.Ores ICY105 Adds a custom ore generation system built on ChunkScan. Supports any dimension (including custom) and biome filtering. ✅ Requires ChunkScan
Custom Shields gibbsly Implements a system for adding custom shields with attributes to the game. 🔴
Datapack Energy ICY105 Adds a robust and optimized energy transfer system for Tech datapacks adding machines. ✅
EHID gibbsly "Entity id & hit detection" - a system for determing when an entity is attack and what attacked it, including from projectiles. 🔴
Floating-Point Artithmetic gibbsly A library for performing math operations in different number bases, including floating-point. 🔴
FluidCrafting ICY105 Add custom fluid mechanics, including storage and transporation. ✅
Get Shape Util asd988 Provides a system for getting the shape of most blocks. 🔴
Iris Aeldrion An extremely precise system for determing what block a player is looking at. 🔴
Lantern Load LanternMC A common system for controlling load order. This is the basis of most libraries, and all versioned libraries. Static Usually you do not need to add this explicitly, any datapack depending on LanternLoad will implement it themselves.
LIEE gibbsly "Low impact equipment effect utility" - an efficient system for detecting items using attributes instead of NBT checks 🔴
List DB rx Implements a storage based associative array, storing arbitrary NBT data assigned to a scoreboard value 🔴
Loottable Autosmelt ICY105 Adds loot-table based tool abilities like autosmelt and void. 🔴 Extensive loot table modifications can cause incompatibilies between libraries.
LTOS gibbsly "loot table output specification" - A utility to reliably determine who broke a block and what was broken. 🔴 Extensive loot table modifications can cause incompatibilies between libraries.
NBT Crafting API BigPapi13 Implements a system to access the NBT of items in the vanilla crafting table. Only works on unstackable items, and cannot affect output. 🔴
Player Action ICY105 Provides hooks for various player actions, including click detection. ✅
Player DB rx Implements an efficient system for storing and retrieving per-player data in storage. ✅
QCB Ellivers "Queit Custom Barrels" - Adds a common cross-datapack soloution to remove barrel opening sounds from custom blocks without using /stopsound. 🔴
Random Aeldrion Provides a variety of random number generators. 🔴
Ray Collision Detector K-bai A precise ray-marching system to locate blocks. 🔴
Score Based Damage ErrorCraft Adds a system for damaging players using attributes 🔴
Smithed Actionbar MC Smithed Adds a cross-datpack soloution for requesting use of the actionbar, instead of monopolizing its use. ✅ The repo is uncompiled- you will need a compiled link, or you will need to download, build, and direct DBM to local files.
Smithed Crafter MC Smithed Adds a cross-datapack barrel-based custom crafting table for NBT recipes. ✅ The repo is uncompiled- you will need a compiled link, or you will need to download, build, and direct DBM to local files.
Smithed Custom-Block MC Smithed Adds utilities relating to handleing custom blocks, such as placing custom blocks. ✅ The repo is uncompiled- you will need a compiled link, or you will need to download, build, and direct DBM to local files.
Smithed Damage MC Smithed Adds an API for damaging entities, including players through attribute manipulation. Includes calculations for armor and enchantments. ✅ The repo is uncompiled- you will need a compiled link, or you will need to download, build, and direct DBM to local files.
Smithed Item MC Smithed Adds and API for adding custom durability to items. ✅ The repo is uncompiled- you will need a compiled link, or you will need to download, build, and direct DBM to local files.
Smithed Prevent Aggression MC Smithed Adds a cross-datpack soloution for preventing hostile mobs from attacking technical entites like wandering traders. ✅ The repo is uncompiled- you will need a compiled link, or you will need to download, build, and direct DBM to local files.
String Parsing 5uso Adds a system for for parsing strings into character arrays. 🔴
WASD Arithmetic MulverineX Adds detection of local direction input (wasd) using maths. 🔴