Dropt

Mods
2,109,874 Downloads Last Updated: May 15, 2020 Game Version: 1.12.2

logo logo logo

 

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