promotional bannermobile promotional banner

JobsFabric

A comprehensive serverside jobs system with progression, economy rewards, and customizable jobs for Minecraft 1.20.1

JobsFabric - Minecraft Fabric Mod

A comprehensive serverside jobs system with progression, economy rewards, and customizable tasks for Minecraft 1.20.1 Fabric servers.

Minecraft Fabric Java License

🌟 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

  1. Download the latest release: JobsFabric-0.1-1.20.1.jar
  2. Place in your server's mods/ folder
  3. Install required dependencies:
    • Fabric API (0.92.6+1.20.1)
    • Impactor Economy (5.3.0+)
  4. Start your server
  5. 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 startup
  • defaultOreProgress: Default progress value for auto-detected ores
  • defaultCropProgress: Default progress value for auto-detected crops
  • defaultBlockProgress: 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., _ore matches 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

🙏 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:


Note: This mod is serverside only. Players with vanilla Minecraft clients can join and use all features without installing anything.

The JobsFabric Team

profile avatar
  • 1
    Projects
  • 82
    Downloads