JobsFabric - Minecraft Fabric Mod
A comprehensive serverside jobs system with progression, economy rewards, and customizable tasks for Minecraft 1.20.1 Fabric servers.
🌟 Features
- Multiple Jobs System: Players can have up to 3 active jobs simultaneously
- Progressive Leveling: Custom formula-based progression system with configurable requirements
- Economy Integration: Integrates with Impactor Economy for monetary rewards
- Anti-Exploit Protection: Prevents farming player-placed blocks and bonemeal abuse
- Modded Content Support: Fully compatible with modded blocks and items
- Auto-Detection: Automatically detects all ores, crops, and blocks on server startup
- Serverside Only: No client-side mod required - works with vanilla clients
- Customizable Jobs: JSON-based configuration for easy job creation and modification
- Interactive GUIs: Server-side GUI menus for job management and progress tracking
📋 Available Jobs
Phase 1 (Implemented)
- ⛏️ Miner: Break ores and stones to level up
- 🌾 Farmer: Harvest crops and plants
- 🏗️ Builder: Place blocks to earn progress
Phase 2 (Planned)
17+ additional jobs including Fighter, Fisherman, Hunter, Tamer, and more!
🔧 Dependencies
- Impactor Economy: 5.3.0+ (for economy rewards)
Bundled (Already Included in the Mod)
- SgUi: 1.2.2+1.20 (for server-side GUIs) - No separate installation needed
Note: These libraries are bundled for convenience. If you experience conflicts with other mods using these libraries, please report the issue on GitHub.
Optional
- LuckPerms: For permission-based features (planned)
📥 Installation
- Download the latest release:
JobsFabric-0.1-1.20.1.jar - Place in your server's
mods/folder - Install required dependencies:
- Fabric API (0.92.6+1.20.1)
- Impactor Economy (5.3.0+)
- Start your server
- Configure jobs in
config/jobs/
⚙️ Configuration
Configuration files are located in config/jobs/:
Main Config (config.json)
{
"jobs": {
"maxActiveJobs": 3,
"leaveCooldownMinutes": 15,
"saveProgressOnLeave": true
},
"storage": {
"autoSaveIntervalSeconds": 180
},
"autoDetection": {
"enabled": true,
"defaultOreProgress": 1.0,
"defaultCropProgress": 1.0,
"defaultBlockProgress": 1.0
}
}
Auto-Detection Settings:
enabled: Automatically scan registry for ores/crops/blocks on startupdefaultOreProgress: Default progress value for auto-detected oresdefaultCropProgress: Default progress value for auto-detected cropsdefaultBlockProgress: Default progress value for auto-detected placeable blocks
Note: Manual config entries always override auto-detected values!
Job Definitions (jobs/*.json)
Each job has its own JSON configuration file with:
- Progress Formula: Custom mathematical expressions (e.g.,
100 * (level^2)) - Action Types:
break,harvest,place, etc. - Special Progress: Material-specific multipliers
- Rewards: Economy rewards per level
- GUI Configuration: Custom icons and descriptions
Example job structure:
{
"id": "miner",
"name": "&6&lMiner",
"progressFormula": "100 * (level^2)",
"actionType": "break",
"xpReward": 0,
"xpRewardFormula": "",
"specialProgress": {
"_ore": 5.0,
"stone": 1.0
}
}
🎮 Usage
Player Commands
/jobs- Open the jobs menu (GUI)- Join jobs by clicking in the GUI
- View progress and statistics
- Leave jobs with progress saved
Admin Commands
(Coming in Phase 2)
🚀 Performance Optimizations
This mod includes several performance enhancements:
- Formula Caching: 50-80% reduction in mathematical calculations
- Memory Management: Automatic cleanup of tracking data every 5 minutes
- Dirty Tracking: Only saves modified player data
- Async Operations: Economy transactions run asynchronously
- Time-Based Expiry: Old entries auto-expire after 10 minutes
See OPTIMIZATION_REPORT.md for detailed analysis.
🔒 Anti-Exploit Features
- Block Placement Tracking: Player-placed blocks don't give mining progress
- Bonemeal Cooldown: 1-second cooldown prevents bonemeal farming
- Timestamp Tracking: Automatic cleanup prevents memory leaks
- Validation System: Action-type whitelists prevent invalid progress
🧩 Modded Content Support
The mod fully supports modded blocks and items:
- Uses full resource identifiers (e.g.,
modname:copper_ore) - Wildcard support (e.g.,
_orematches all ores) - Automatic compatibility with any mod
- No additional configuration required
See MODDED_CONTENT_SUPPORT.md for details.
🏗️ Development
Building from Source
# Clone the repository git clone https://github.com/Toastie0/Jobs.git cd Jobs # Build with Gradle ./gradlew build # Output: build/libs/JobsFabric-0.1-1.20.1.jar
Project Structure
src/main/java/net/advancedjobs/
├── AdvancedJobsMod.java # Main mod entry point
├── config/
│ └── ConfigManager.java # Configuration loader
├── controller/
│ └── JobController.java # Core job logic
├── economy/
│ └── ImpactorEconomyHandler.java
├── gui/
│ ├── JobListMenu.java # Main jobs GUI
│ └── JobProgressMenu.java # Job details GUI
├── handlers/
│ ├── BlockBreakHandler.java # Miner job
│ ├── CropHarvestHandler.java # Farmer job
│ └── BlockPlaceHandler.java # Builder job
├── objects/
│ ├── Job.java # Job data model
│ ├── User.java # Player data model
│ └── UserJobInfo.java # Job progress data
└── storage/
└── JsonStorageManager.java # JSON persistence
Tech Stack
- Language: Java 21
- Build Tool: Gradle 8.8
- Mod Loader: Fabric
- GUI Library: SgUi (server-side)
- Economy: Impactor API
- Storage: JSON with dirty tracking
📊 Roadmap
Phase 1: Core System ✅
- <input id="" class="task-list-item-checkbox" checked="checked" disabled="disabled" type="checkbox" aria-label="Completed task"> Job framework
- <input id="" class="task-list-item-checkbox" checked="checked" disabled="disabled" type="checkbox" aria-label="Completed task"> Progress tracking
- <input id="" class="task-list-item-checkbox" checked="checked" disabled="disabled" type="checkbox" aria-label="Completed task"> Economy integration
- <input id="" class="task-list-item-checkbox" checked="checked" disabled="disabled" type="checkbox" aria-label="Completed task"> Basic jobs (Miner, Farmer, Builder)
- <input id="" class="task-list-item-checkbox" checked="checked" disabled="disabled" type="checkbox" aria-label="Completed task"> Anti-exploit systems
- <input id="" class="task-list-item-checkbox" checked="checked" disabled="disabled" type="checkbox" aria-label="Completed task"> Performance optimizations
Phase 2: Expansion 🚧
- <input id="" class="task-list-item-checkbox" disabled="disabled" type="checkbox" aria-label="Incomplete task"> 17+ additional jobs
- <input id="" class="task-list-item-checkbox" disabled="disabled" type="checkbox" aria-label="Incomplete task"> Job-specific achievements
- <input id="" class="task-list-item-checkbox" disabled="disabled" type="checkbox" aria-label="Incomplete task"> Leaderboards
- <input id="" class="task-list-item-checkbox" disabled="disabled" type="checkbox" aria-label="Incomplete task"> Boosters & multipliers
- <input id="" class="task-list-item-checkbox" disabled="disabled" type="checkbox" aria-label="Incomplete task"> Permission integration
Phase 3: Advanced Features 📋
- <input id="" class="task-list-item-checkbox" disabled="disabled" type="checkbox" aria-label="Incomplete task"> Custom job creation GUI
- <input id="" class="task-list-item-checkbox" disabled="disabled" type="checkbox" aria-label="Incomplete task"> Job rewards (items, commands)
- <input id="" class="task-list-item-checkbox" disabled="disabled" type="checkbox" aria-label="Incomplete task"> Job quests/milestones
- <input id="" class="task-list-item-checkbox" disabled="disabled" type="checkbox" aria-label="Incomplete task"> Statistics dashboard
- <input id="" class="task-list-item-checkbox" disabled="disabled" type="checkbox" aria-label="Incomplete task"> API for developers
🤝 Contributing
Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.
📄 License
This project is licensed under the CC0 1.0 Universal (Public Domain) License - see the LICENSE file for details.
This means you can use, modify, and distribute this mod freely without any restrictions or attribution requirements.
👤 Author
Toastie
- GitHub: @Toastie0
🙏 Acknowledgments
- Fabric Team: For the excellent modding framework
- Impactor: For the economy API
- SgUi: For server-side GUI capabilities
- Minecraft Modding Community: For resources and support
📞 Support
For issues, questions, or suggestions:
- Open an issue on GitHub Issues
Note: This mod is serverside only. Players with vanilla Minecraft clients can join and use all features without installing anything.

