Want to hire codetaylor to work on a mod or other Java project?
Join the discord and check out the #hire-me channel for details.
* * * * *
Dropt is a block drop replacement mod that allows defining complex drop conditions and replacement rules.
Dropt rules can be defined using ZenScript, JSON, or the DroptAPI.
* * * * *
Features
Performance:
- uses rule caching per block state to significantly improve performance
Matches based on:
- block (meta, meta wildcard, multiple meta values) (whitelist/blacklist)
- items dropped (meta, meta wildcard, multiple meta values, oredict) (whitelist/blacklist)
- harvester type (player, non-player, any)
- harvester held item (meta, meta wildcard) (whitelist/blacklist)
- harvester game stages (requires gamestages mod)
- harvester player name
- biome (whitelist/blacklist)
- dimension (whitelist/blacklist)
- vertical range
Replacement strategies:
- add to existing drops
- replace all drops
- replace all drops if drop selected
- replace all matched dropped items (replace items defined in match)
- replace all matched dropped items if drop selected (replace items defined in match)
Drop strategies:
- repeat (can select the same drop more than once)
- unique (can select a drop only once)
Drop selection count based on:
- fixed value
- random value in defined range
- fortune modified
Drop selection based on:
- fortune modified weight value
- minimum fortune level
- silk touch requirement (required, excluded, any)
Drop quantity based on:
- fixed value
- random value in defined range
- fortune modified
Drops:
- can define drop list per drop
- can define drops with meta wildcard
- can define drops as oredict entry
- can define xp to drop (fortune modified range)
- can define drops with NBT data
Performance
Dropt parses all strings when the rules are loaded to reduce unnecessary string parsing and string concatenation during matching. Some string equivalency testing is used during matching. It uses a simple linear search to cache rules in lists and the profiling output below is the result of a worst-case scenario in which the rule to match is at the end of a 100k+ rule list.
- [INFO] Injected 103573 rules in 118 ms
- [INFO] Parsed 103575 rules in 532 ms
- [INFO] Cached 1 rules from 103575 rules in 56 ms, blockState: minecraft:stone[variant=stone]
- [INFO] Searched 1 rules in 1 ms
- [INFO] Modified drops in 0 ms
- [INFO] Searched 1 rules in 1 ms
- [INFO] Modified drops in 0 ms
To reproduce the profiling on your machine, see the config options.
Commands
/dropt reload
- reload configuration during runtime
/dropt hand
- copy the held item's string for quick pasting into the .json file; also assists with lengthy NBT tags
/dropt verbose
- log the resource location and meta value for all broken blocks to the console
Configuration
Dropt uses .json configuration files placed in the [instance]/config/dropt
folder. Filenames are not important so long as they have the .json extension and you can have as many files as you like.
Logging
Any errors in the .json syntax are reported via the Forge log. When reloading in-game, errors will be reported to the chat console.
All errors are also logged to the log file: [instance]/dropt.log
.
Additional debug output can be enabled per-rule and will be dumped to the log file. See the docs for more information.
* * * * *
Required Mods
Related Mods
* * * * *
This mod may NOT be reposted to any mod rehosting websites. #StopModReposts