Skip to content

MaxineterXD/EuroCrate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

3 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿฐ EuroCrates - Minecraft Lobby Plugin

A powerful Paper/Spigot plugin for Minecraft 1.20+ that provides a lobby item unlocking system with customizable items and events.

Overview

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

Project Structure

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

Key Components

Core API

Provides the fundamental interfaces and classes:

  • LobbyItemManager: Main interface for item management
  • LobbyItem: Represents an unlockable item
  • ItemUnlockListener: Event interface for unlock events

Main Plugin

Features:

  • Full item registration and lifecycle management
  • Player-specific unlock tracking
  • Command system (/eurocrates, /unlock)
  • Configuration management
  • Event listeners for player join and unlocks

Features

โœจ 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

Requirements

  • Java 17 or higher
  • Paper/Spigot 1.20.x or higher
  • Maven 3.6+ (for building)

Installation

Pre-built JAR

  1. Download EuroCrates.jar from the "https://github.com/MaxineterXD/EuroCrate"
  2. Place it in your server's plugins/ folder
  3. Restart your server
  4. Configure in plugins/EuroCrates/config.yml

Building from Source

# Clone repository
git clone https://github.com/eurocrates/eurocrates-minecraft.git
cd eurocrates-minecraft

# Build with Maven (Java 17+ required)
mvn package -DskipTests

If your default system Java is older than 17, set JAVA_HOME to a JDK 17+ installation first.

Player Commands

/eurocrates                     # Show lobby item list
/eurocrates list                # View all available items
/eurocrates info <item-id>      # View item details
/unlock <item-id>               # Quick unlock command

Admin Commands

/eurocrates reload              # Reload plugin configuration

Item IDs

Weapons

  • weapon_sword - Iron Sword (Level 1)
  • weapon_bow - Longbow (Level 5)
  • weapon_axe - Battle Axe (Level 10)

Armor

  • armor_leather - Leather Armor (Level 1)
  • armor_iron - Iron Armor (Level 5)
  • armor_diamond - Diamond Armor (Level 15)

Special

  • special_elytra - Elytra Wings (Level 20)
  • special_respawn - Respawn Anchor (Level 10)

API Reference

LobbyPlugin Trait

Essential methods for plugin implementation:

  • id() - Get plugin unique identifier
  • name() - Get human-readable plugin name
  • version() - Get plugin version
  • initialize() - Called when plugin loads
  • shutdown() - Called before plugin unloads
  • get_lobby_items() - Return available items
  • on_item_unlocked() - Handle unlock events
  • update() - Called each frame
  • get_state() - Return current plugin state

PluginManager

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");

Registering Listeners

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);

Development

Building

# 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

Roadmap

  • Database persistence for unlocks
  • Custom item effects/rewards
  • Web dashboard for management
  • Multi-server synchronization
  • Advanced permission system
  • Plugin API extensions
  • Unlock animations/effects

Acknowledgments

  • Built with egui - Immediate mode GUI
  • Inspired by game engine plugin systems
  • Thanks to the Rust community

Happy Plugin Development! ๐Ÿš€

About

A plugin made by Maxineter_ for Servers that need a decent Crate Plugin

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors