Customizing bounty objectives in Bountiful can be done in two different ways:
- Data Packs
It is recommended that you read up on both methods, because knowing how one system works will aid you with the other.
You can create your own data pack using instructions from the Minecraft wiki. You should come to an understanding that data packs override data from the vanilla game, and from other mods. In this case, you want to create a data pack that overrides Bountiful's data files, which can be found right here.
To aid in the creation of Data Packs, you may want to use a mod such as Open Loader that allows global data pack loading across all worlds.
A "config pack", as I call it, is nearly identical to a data pack, except the folder structure exists inside of the config folder. In the config folder, you will find two subfolders:
Just like with data packs, you can create Pools and Decrees, and add them here. However, unlike data packs, you do not need to create a subfolder for each mod you are adding compatibility for, since we are modifying the pool and decree data after it has already been loaded.
By default, adding a new file will add all of the file's elements into the game data. If you instead wish to replace the datapack/game data with your config data, you can add
"replace": true to the top of your file's json object.
Bountiful tries to balance itself against the vanilla game, but inevitably it's understandable that you've got some mods. Perhaps you want to make some things more expensive, or replace emeralds with a different type of currency. In that case, we can do what we call a "patch".
Lets say we want to take the farmer objective that asks the player to bring back some saplings, and make the saplings worth more. Maybe 50 is too low, and we want to increase it to 100. To do that, we would create a new file at
config/bountiful/bounty_pools/farmer_objs.json and put this in it:
When Bounty data loads, Bountiful will look for the ID
farmer_obj_oak_sapling in the
farmer_objs pool, and overwrite the old
unitWorth with the new one. Any JSON key can be patch-overwritten for any pool entry.
We could use this method to do any sort of updates we want, such as:
- Increase the worth of a reward or objective
- Make a reward more or less rare
- Change how many of the objective/reward can be asked for / given
Removing a Single Entry
If we wanted to take the earlier example, and instead completely remove the oak sapling from the farmer objective pool, we just need to do this refer to it by its ID and set it to null in
Entire Pool Wipes
Removing all entries from a pool is simple. If you want to completely remove all entries from
farmer_objs.json, write this text a new file at
This uses the
replace key we mentioned earlier and replaces the entire contents of the
farmer_objs pool with an empty list.
If you want to remove certain decrees and pools from the game, Bountiful's config allows you to specify certain datapack/game data files which you would like to exclude from loading. For example:
bounty_pools/bountiful/*will exclude all Bountiful pools from loading
bounty_pools/*will exclude all pools from loading
*would exclude all pools and decrees from loading
Some content (namely, decrees or objectives/rewards with custom translation keys) may require you to contribute a localization to the game. This can be done via a resource pack. If you'd like a more simple approach, then something such as Open Loader (mentioned above) will also work wonderfully.