A powerful Paper/Spigot plugin for Minecraft 1.20+ that provides a lobby item unlocking system with customizable items and events.
EuroCrates is a feature-rich plugin that allows server administrators to create and manage unlockable lobby items. Perfect for:
- Game lobbies with progression systems
- Server tournaments and events
- Custom item unlock mechanics
- Player achievements and rewards
eurocrates-minecraft/
โโโ core/ # Core API
โ โโโ src/main/java/nl/eurocrates/core/
โ โโโ LobbyItemManager.java
โ โโโ ItemUnlockListener.java
โ โโโ items/
โ โโโ LobbyItem.java
โโโ plugin/ # Main plugin
โโโ src/main/java/nl/eurocrates/plugin/
โ โโโ EuroCrates.java # Main plugin class
โ โโโ EuroCratesCommand.java # Command handler
โ โโโ PlayerJoinListener.java
โโโ src/main/resources/
โโโ plugin.yml # Plugin manifest
โโโ config.yml # Configuration
Provides the fundamental interfaces and classes:
- LobbyItemManager: Main interface for item management
- LobbyItem: Represents an unlockable item
- ItemUnlockListener: Event interface for unlock events
Features:
- Full item registration and lifecycle management
- Player-specific unlock tracking
- Command system (/eurocrates, /unlock)
- Configuration management
- Event listeners for player join and unlocks
โจ Core Features:
- Trait-based plugin system for extensibility
- Dynamic plugin registration and lifecycle management
- egui integration for responsive UI
- Real-time plugin updates
- State management and persistence hooks
- ๐ฎ Lobby item registration and management
- ๐ Player-specific unlock tracking
- ๐ Item metadata (name, description, level requirements)
- ๐ฏ Event system for unlock listeners
- ๐พ Per-player unlock persistence
- ๐จ Beautiful in-game GUI commands
๐ฏ Gameplay Features:
- 8 default lobby items (weapons, armor, special items)
- Level-based unlock requirements
- Multi-language support (easily customizable)
- Per-player unlock history
- Admin reload functionality
- Java 17 or higher
- Paper/Spigot 1.20.x or higher
- Maven 3.6+ (for building)
- Download
EuroCrates.jarfrom the "https://github.com/MaxineterXD/EuroCrate" - Place it in your server's
plugins/folder - Restart your server
- Configure in
plugins/EuroCrates/config.yml
# Clone repository
git clone https://github.com/eurocrates/eurocrates-minecraft.git
cd eurocrates-minecraft
# Build with Maven (Java 17+ required)
mvn package -DskipTestsIf your default system Java is older than 17, set
JAVA_HOMEto a JDK 17+ installation first.
/eurocrates # Show lobby item list
/eurocrates list # View all available items
/eurocrates info <item-id> # View item details
/unlock <item-id> # Quick unlock command
/eurocrates reload # Reload plugin configuration
weapon_sword- Iron Sword (Level 1)weapon_bow- Longbow (Level 5)weapon_axe- Battle Axe (Level 10)
armor_leather- Leather Armor (Level 1)armor_iron- Iron Armor (Level 5)armor_diamond- Diamond Armor (Level 15)
special_elytra- Elytra Wings (Level 20)special_respawn- Respawn Anchor (Level 10)
Essential methods for plugin implementation:
id()- Get plugin unique identifiername()- Get human-readable plugin nameversion()- Get plugin versioninitialize()- Called when plugin loadsshutdown()- Called before plugin unloadsget_lobby_items()- Return available itemson_item_unlocked()- Handle unlock eventsupdate()- Called each frameget_state()- Return current plugin state
Main API for managing plugins:
register_plugin()- Add a plugin- `Configuration
Edit plugins/EuroCrates/config.yml:
plugin:
name: EuroCrates
debug: false
lobby:
enabled: true
items:
weapon_sword:
name: "Iron Sword"
description: "A powerful melee weapon"
level: 1
```Troubleshooting
### Plugin not loading?
- Check that Java 17+ is installed: `java -version`
- Verify Paper/Spigot version is 1.20+
- Check server logs for errors: `tail -f logs/latest.log`
### Items not appearing?
- Verify `config.yml` is properly formatted
- Use `/eurocrates reload` to refresh configuration
- Check console for parsing errors
### Permissions issues?
- Verify player has correct permission group
- Use `/lp user <player> permission` to debug
- Check permission plugin compatibility
## Contributing
1. Fork the repository
2. Create feature branch (`git checkout -b feature/amazing-feature`)
3. Commit changes (`git commit -m 'Add amazing feature'`)
4. Push to branch (`git push origin feature/amazing-feature`)
5. Open Pull Request
## License
This project is licensed under the MIT License - see [LICENSE](LICENSE) file for details.
## Support
- ๐ [Wiki & Documentation](https://github.com/eurocrates/eurocrates-minecraft/wiki)
- ๐ [Report Issues](https://github.com/eurocrates/eurocrates-minecraft/issues)
- ๐ฌ [Discord Community](https://discord.gg/eurocrates)
## Authors
- **Eurocrates Team** - *Initial work*
## Acknowledgments
- [PaperMC](https://papermc.io/) - High-performance Minecraft server
- [Bukkit API](https://hub.spigotmc.org/) - Plugin development framework
- Inspired by modern game launcher systems
```java
// Get all items
LobbyItem[] items = euroCrates.getAllItems();
// Unlock for player
Player player = Bukkit.getPlayer("PlayerName");
euroCrates.unlockItem(player, "weapon_sword");
// Check if unlocked
boolean unlocked = euroCrates.hasUnlocked(player, "weapon_sword");ItemUnlockListener listener = new ItemUnlockListener() {
@Override
public void onItemUnlocked(Player player, LobbyItem item) {
// Handle unlock
}
@Override
public boolean onItemUnlockAttempt(Player player, LobbyItem item) {
return true; // Allow unlock
}
};
euroCrates.registerListener(listener);# Build all modules
mvn clean package
# Build only core
mvn clean package -pl core
# Build only plugin
mvn clean package -pl plugin
# Skip tests
mvn clean package -DskipTests- Database persistence for unlocks
- Custom item effects/rewards
- Web dashboard for management
- Multi-server synchronization
- Advanced permission system
- Plugin API extensions
- Unlock animations/effects
- Built with egui - Immediate mode GUI
- Inspired by game engine plugin systems
- Thanks to the Rust community
Happy Plugin Development! ๐