Scavenge Mod
Scavenge is a modification that gives players the ability to customize the behavior of any blocks when clicking the right and left mouse buttons. You can assign individual actions for interacting with blocks, creating unique game mechanics.
Main Features
You can add loot tables to the block behavior system that activate when specified conditions are met. All settings are loaded from JSON files and function similarly to a scripting programming language.
Activation Conditions
You can set special requirements for interacting with blocks:
- Player must crouch
- Player must have a diamond in hand
- Block becomes invulnerable to destruction
- Block disappears after 5 uses
- And many other options
Learning
For those who want to master creating scripts for Scavenge, detailed guides are available. Xaikii has prepared excellent training material on the basics of working with the system.
Documentation
Complete documentation is now built directly into the mod. To access reference materials, set the "printExamples" parameter in the configuration section and launch the game. Generated documentation files will appear in the game folder in the "scavenge_doc" directory. Information is organized by the principle: Plugin → PropertyType → PropertyName.
Script Debugging
Scavenge supports the function of dumping scripts loaded in the game. Activate the "dumpScripts" option to simplify the debugging process. This allows you to see which scripts were successfully loaded and which were rejected due to errors. Dumping occurs immediately after Scavenge scripts are reloaded without the need to restart the game.
Working with Datapacks
Adding Scripts
Scavenge is fully integrated with the datapack system. The mod automatically loads all files from the "datapacks/DATAPACK_NAME/data/DOMAIN/scavenge_scripts" folder and reloads them when resource packs are updated. Synchronization between server and client occurs automatically.
Technical Features
Due to integration with JEI, a special solution had to be implemented that reloads JEI one tick after scripts are updated, since JEI does not support automatic synchronization of recipes and data.
Key Changes
- Effects are executed only on the server, while conditions are checked on both server and client
- Mathematical operations and conditions have become more strict and flexible
- Error messages can now be added directly to conditions
- Conditions by default support inversion
- Standard Vanilla loot tables are used
- Bit operation support has been added
- Examples are generated for all functions