Helektra is a comprehensive practice server plugin designed and built entirely from scratch with zero dependencies. It's completely plug-and-play, featuring an optimized custom arena system, full version compatibility, extensive configuration options, and a powerful event system.
- Zero Dependencies - No external plugins required, works out of the box
- Performance First - Custom-built systems optimized for speed
- Version Compatibility - Full support from 1.8.x to 1.21.x and beyond
- Highly Configurable - Every aspect can be customized via YAML
- Modern Architecture - Clean code following industry best practices
Profile System - Persistent player data with MongoDB integration
Kit System - Fully customizable kits with editor GUI
Arena System - Advanced arena management with multiple reset strategies
Scoreboard System - Dynamic scoreboards based on player state
Configuration - Everything configurable via YAML files
Our custom-built arena system is designed for maximum performance and flexibility:
-
Multiple Reset Strategies
- Journal-based (track & revert changes)
- Section-based (chunk snapshots)
- Chunk Swap (instant swap)
- Hybrid (best of both worlds)
-
Smart Pooling - Pre-generated arenas ready for instant use
-
Physics Guard - Prevent TNT/liquid spread between arenas
-
Block Tracking - Intelligent change detection
-
Metrics - Real-time performance monitoring
- State-Based Display - Different scoreboard for each game state
- PlaceholderAPI Support - Full PAPI integration
- Custom Placeholders - Register your own placeholders
- Fully Configurable - Customize via
scoreboards.yml - Performance Optimized - Efficient update system
- Custom Events - Host tournaments and special matches
- Participant Tracking - Automatic player management
- Configurable Rewards - Set up prizes and incentives
- Localization System - Full i18n support
- Easy Translation - Simple YAML-based translations
- Per-Player Language - Players can choose their language
- NMS Abstraction Layer - Seamless version compatibility
- Strategy Pattern - Different implementations per version
- Automatic Detection - Plugin detects and adapts to server version
- Future-Proof - Easy to add support for new versions
- Minecraft Server - Paper, Spigot, or compatible fork (1.8-1.21+)
- Java - Java 21+ (for 1.20.5+) or Java 17+ (older versions)
- MongoDB - For persistent data storage
- PlaceholderAPI - Optional, for extended placeholder support
- Download the latest release from Releases
- Place the JAR file in your
plugins/folder - Configure MongoDB connection in
config.yml - Restart your server
- Done! The plugin is ready to use
# Download
wget https://github.com/joordih/helektra/releases/latest/download/Helektra.jar
# Move to plugins folder
mv Helektra.jar /path/to/server/plugins/
# Restart server
./restart.shAll configuration files are located in plugins/Helektra/:
| File | Purpose |
|---|---|
settings.yml |
General plugin settings |
kits.yml |
Kit configurations |
arenas.yml |
Arena templates and settings |
scoreboards.yml |
Scoreboard layouts and content |
menus.yml |
GUI menu configurations |
translations/ |
Language files |
# scoreboards.yml
scoreboard:
enabled: true
update-interval: 20
states:
LOBBY:
enabled: true
title: "&6&lHELEKTRA &7┃ &fLobby"
lines:
- " "
- "&6&lInfo"
- " &7* &ePlayers&7: &f{online_players}"
- " &7* &eLevel&7: &a{player_level}"
- " "
- "&fWelcome back, &e%player_name%"| Command | Description | Permission |
|---|---|---|
/kit |
Open kit selector | helektra.kit |
/kit edit <name> |
Edit a kit | helektra.kit.edit |
/settings |
Open settings menu | helektra.settings |
| Command | Description | Permission |
|---|---|---|
/arena create <name> |
Create new arena | helektra.arena.admin |
/arena delete <name> |
Delete arena | helektra.arena.admin |
/arena setspawn <name> |
Set arena spawn | helektra.arena.admin |
/helektra reload |
Reload configs | helektra.admin |
Helektra follows a clean, modular architecture:
helektra/
├── api/ - Public API interfaces
├── plugin/ - Core implementation
│ ├── model/ - Domain models
│ ├── service/ - Business logic
│ ├── repository/ - Data access
│ ├── di/ - Dependency injection
│ └── utils/ - Utilities
└── nms/ - Version-specific code
- Dependency Injection - Google Guice for loose coupling
- Repository Pattern - Abstract data access
- Service Pattern - Business logic separation
- Strategy Pattern - Version-specific implementations
- Adapter Pattern - External library wrappers
- Observer Pattern - Event-driven architecture
// Get the API
IHelektraAPI api = Helektra.getInstance().getAPI();
// Profile Service
IProfileService profiles = api.getProfileService();
profiles.getProfile(uuid).thenAccept(profile -> {
// Work with profile
});
// Arena Service
IArenaService arenas = api.getArenaService();
IArena arena = arenas.requestArena("duels");
// Kit Service
IKitService kits = api.getKitService();
IKit kit = kits.getKit("warrior");- Arena Reset - < 50ms for medium arenas
- Profile Load - < 10ms from cache
- Scoreboard Update - < 1ms per player
- Memory Usage - ~50MB for 100 players
- Async database operations
- Smart caching system
- Efficient event handling
- Optimized packet usage
- Pool-based arena management
# Clone repository
git clone https://github.com/joordih/helektra.git
cd helektra
# Build with Maven
mvn clean package
# Output: plugin/target/plugin-1.0-SNAPSHOT.jar- Maven 3.8+
- JDK 21+
- Git (for cloning)
- Issues - GitHub Issues
- Discord - Join our community server
- Wiki - Check the documentation
Please report it on GitHub Issues with:
- Server version
- Plugin version
- Steps to reproduce
- Error logs (if any)
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
Thanks to everyone who has contributed to Helektra!
This project is licensed under the MIT License - see the LICENSE file for details.