{"id":15061878,"url":"https://github.com/MeveraStudios/Imperat","last_synced_at":"2025-12-30T00:36:32.548Z","repository":{"id":257674312,"uuid":"845214843","full_name":"VelixDevelopments/Imperat","owner":"VelixDevelopments","description":"Military grade command dispatching framework ","archived":false,"fork":false,"pushed_at":"2025-04-03T18:12:39.000Z","size":2054,"stargazers_count":27,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-03T19:23:55.844Z","etag":null,"topics":["api","bukkit","bungeecord","command-framework","command-line-interface","commands","minestom-library","spigot","velocity"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/VelixDevelopments.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-20T20:11:26.000Z","updated_at":"2025-04-03T18:09:53.000Z","dependencies_parsed_at":"2024-09-18T03:14:13.926Z","dependency_job_id":"2c8d703a-507e-4db4-bfc6-fcaf8022d61f","html_url":"https://github.com/VelixDevelopments/Imperat","commit_stats":null,"previous_names":["velixdevelopments/imperat"],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VelixDevelopments%2FImperat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VelixDevelopments%2FImperat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VelixDevelopments%2FImperat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VelixDevelopments%2FImperat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VelixDevelopments","download_url":"https://codeload.github.com/VelixDevelopments/Imperat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248225721,"owners_count":21068078,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","bukkit","bungeecord","command-framework","command-line-interface","commands","minestom-library","spigot","velocity"],"created_at":"2024-09-24T23:26:23.438Z","updated_at":"2025-12-30T00:36:32.543Z","avatar_url":"https://github.com/VelixDevelopments.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"https://raw.githubusercontent.com/MeveraStudios/Imperat/refs/heads/master/assets/logo.png\" alt=\"Imperat Logo\" width=\"600\"/\u003e\n\n# **Imperat** - The Blazing Fast Command Framework ⚡\n\n[![Maven Central](https://img.shields.io/maven-central/v/studio.mevera/imperat-core?style=for-the-badge\u0026color=blue)](https://search.maven.org/artifact/studio.mevera/imperat-core)\n[![License](https://img.shields.io/badge/License-Custom-green?style=for-the-badge)](LICENSE)\n[![Discord](https://img.shields.io/discord/1285395980610568192?style=for-the-badge\u0026color=7289da\u0026label=Discord)](https://discord.gg/McN4GMWApE)\n[![Documentation](https://img.shields.io/badge/Docs-Available-brightgreen?style=for-the-badge)](https://docs.mevera.studio/Imperat)\n[![Java](https://img.shields.io/badge/Java-17%2B-orange?style=for-the-badge)](https://java.com)\n\n**The most performant, feature-rich command framework for Java applications**\n\n[📚 **Documentation**](https://docs.mevera.studio/Imperat) • [💬 **Discord**](https://discord.gg/McN4GMWApE) • [🚀 **Get Started**](#-quick-start) • [✨ **Features**](#-features) • [📊 **Benchmarks**](#-performance)\n\n\u003c/div\u003e\n\n---\n\n## 🎯 **Why Imperat?**\n\nImperat isn't just another command framework—it's the **ultimate solution** for developers who demand both **blazing performance** and **rich features**. \u003cbr\u003e\nBuilt by [Mqzen](https://github.com/Mqzen), Imperat delivers sub-microsecond command execution while maintaining an elegant, intuitive API.\n\n\u003cdiv align=\"center\"\u003e\n\n\u003c/div\u003e\n\n---\n\n### 📊 **Performance**\nImperat provides the optimum performance for command execution and suggestion providing.\u003cbr\u003e\nWe have proven this  through running benchmarks using **JMH**:\n\n\u003cimg src=\"https://raw.githubusercontent.com/MeveraStudios/Imperat/refs/heads/master/assets/performance_chart.png\" alt=\"Comparison performance chart\"/\u003e\n\n| **Lightning Fast** ⚡ | **Feature Complete** 🎨 | **Multi-Platform** 🌍 |\n|:---:|:---:|:---:|\n| **29x faster** than Cloud\u003cbr/\u003e**10x faster** than Lamp | Annotations, builders, suggestions,\u003cbr/\u003epermissions, and much more | Bukkit, Velocity, BungeeCord,\u003cbr/\u003eMinestom, CLI, and more |\n\n\n| Framework | Median Latency | Throughput | vs Imperat |\n|:---------:|:--------------:|:----------:|:----------:|\n| **Imperat** ⚡ | **470ns** | **2.14M/sec** | **Baseline** |\n| Lamp | 5,016ns | 199K/sec | 10x slower |\n| Cloud | 12,208ns | 82K/sec | 29x slower |\n\n\u003csub\u003e*Benchmarked on complex command trees with 10+ depth levels and multiple branches*\u003c/sub\u003e\n\n\u003e 💡 **What does this mean?** On a busy Minecraft server with many players, Imperat adds only **0.47ms** overhead per 1000 commands, while Other framework like Cloud adds **12.2ms**—that's the difference between smooth gameplay and noticeable lag!\n\n---\n\n## ✨ **Features**\n\n\u003cdiv align=\"center\"\u003e\n\n|     **Core Features**      |    **Advanced Features**     | **Developer Experience** |\n|:--------------------------:|:----------------------------:|:------------------------:|\n| Annotation-based commands  |   Async command execution    |     Zero boilerplate     |\n|    Builder pattern API     | Tab completion \u0026 suggestions | Extensive documentation  |\n|   Unlimited subcommands    |    Permission management     | IDE autocomplete support |\n|    Parameter validation    |     Dependency injection     |  Custom parameter types  |\n| Multiple usage patterns |     Processing pipeline      |    Hot-reload support    |\n|    Greedy parameters    |      Command cooldowns       |    Context resolvers     |\n\n\u003c/div\u003e\n\n---\n\n## 🚀 **Quick Start**\n\n### **Step 1: Add Imperat to Your Project**\n\n\u003cdetails open\u003e\n\u003csummary\u003e\u003cb\u003eMaven\u003c/b\u003e\u003c/summary\u003e\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003estudio.mevera\u003c/groupId\u003e\n    \u003cartifactId\u003eimperat-core\u003c/artifactId\u003e\n    \u003cversion\u003e%LATEST_VERSION%\u003c/version\u003e\n\u003c/dependency\u003e\n\n\u003c!-- Add your platform module (e.g., for Bukkit) --\u003e\n\u003cdependency\u003e\n    \u003cgroupId\u003estudio.mevera\u003c/groupId\u003e\n    \u003cartifactId\u003eimperat-bukkit\u003c/artifactId\u003e\n    \u003cversion\u003e%LATEST_VERSION%\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eGradle (Kotlin DSL)\u003c/b\u003e\u003c/summary\u003e\n\n```kotlin\ndependencies {\n    implementation(\"studio.mevera:imperat-core:%LATEST_VERSION%\")\n    // Add your platform module (e.g., for Bukkit)\n    implementation(\"studio.mevera:imperat-bukkit:%LATEST_VERSION%\")\n}\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eGradle (Groovy)\u003c/b\u003e\u003c/summary\u003e\n\n```groovy\ndependencies {\n    implementation 'studio.mevera:imperat-core:%LATEST_VERSION%'\n    // Add your platform module (e.g., for Bukkit)\n    implementation 'studio.mevera:imperat-bukkit:%LATEST_VERSION%'\n}\n```\n\n\u003c/details\u003e\n\n### **Step 2: Initialize Imperat**\n\n```java\npublic class YourPlugin extends JavaPlugin {\n    private BukkitImperat imperat;\n\n    @Override\n    public void onEnable() {\n        // Create Imperat instance with builder pattern\n        this.imperat = BukkitImperat.builder(this)\n            .applyBrigadier(true)  // Enhanced suggestions on 1.13+\n            .build();\n        \n        // Register your commands\n        imperat.registerCommand(new GameModeCommand());\n    }\n}\n```\n\n### **Step 3: Create Your First Command**\n\n```java\n@Command({\"gamemode\", \"gm\"})\n@Permission(\"server.gamemode\")\n@Description(\"Change player gamemode\")\npublic class GameModeCommand {\n\n    @Usage\n    public void mainUsage(\n            Player source,\n            @Named(\"mode\") GameMode gameMode,\n            @Default(\"me\") @Named(\"target\") Player target\n    ) {\n        // Handle: /gamemode \u003cmode\u003e [target]\n        target.setGameMode(gameMode);\n        \n        source.sendMessage(\"§aGamemode updated to \" + gameMode.name());\n        if (target != source) {\n            target.sendMessage(\"§aYour gamemode was updated by \" + source.getName());\n        }\n    }\n    \n    // Independent root aliases.\n    @Command(\"gmc\")\n    @Permission(\"server.gamemode.creative\")\n    public void creative(Player source, @Default(\"me\") Player target) {\n        mainUsage(source, GameMode.CREATIVE, target);\n    }\n    \n    @Command(\"gms\")\n    @Permission(\"server.gamemode.survival\")\n    public void survival(Player source, @Default(\"me\") Player target) {\n        mainUsage(source, GameMode.SURVIVAL, target);\n    }\n}\n```\n\nThat's it! You've just created a fully-functional command with:\n- ✅ Multiple aliases (`/gamemode`, `/gm`)\n- ✅ Multiple shortcuts/root-aliases (`/gmc`, `/gms`)\n- ✅ Tab completion for GameMode and online players\n- ✅ Optional parameters with smart defaults\n- ✅ Permission checking\n---\n\n## 🎨 **Advanced Example - Complex Command Trees**\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eClick to see a real-world rank management system\u003c/b\u003e\u003c/summary\u003e\n\n```java\n@Command({\"rank\", \"group\"})\n@Permission(\"server.rank\")\n@Description(\"Complete rank management system\")\npublic class RankCommand {\n    \n    @Dependency\n    private RankManager rankManager;\n    \n    @Usage\n    public void help(CommandSource source, CommandHelp help) {\n        help.display(source);  // Auto-generated help menu\n    }\n    \n    @SubCommand(\"create\")\n    @Permission(\"server.rank.create\")\n    public void createRank(\n            CommandSource source,\n            @Named(\"name\") String rankName,\n            @Optional @Default(\"0\") @Named(\"weight\") int weight\n    ) {\n        Rank rank = rankManager.createRank(rankName, weight);\n        source.reply(\"§aCreated rank: \" + rank.getColoredName());\n    }\n    \n    @SubCommand(\"delete\")\n    @Permission(\"server.rank.delete\")\n    public void deleteRank(\n            CommandSource source,\n            @Named(\"rank\") Rank rank,  // Custom parameter type!\n            @Switch(\"confirm\") boolean confirm\n    ) {\n        if (!confirm) {\n            source.error(\"§cAdd --confirm to delete this rank\");\n            return;\n        }\n        \n        rankManager.deleteRank(rank);\n        source.reply(\"§aDeleted rank: \" + rank.getName());\n    }\n    \n    @SubCommand(\"give\")\n    @Permission(\"server.rank.give\")\n    @Cooldown(value = 5, unit = TimeUnit.SECONDS)\n    public void giveRank(\n            CommandSource source,\n            @Named(\"player\") Player target,\n            @Named(\"rank\") Rank rank,\n            @Optional @Named(\"duration\") Duration duration\n    ) {\n        rankManager.setPlayerRank(target, rank, duration);\n        source.reply(\"§aGave \" + rank.getColoredName() + \" §ato \" + target.getName());\n    }\n}\n```\n\n\u003c/details\u003e\n\n---\n\n## 🔧 **Platform Support**\n\n\u003cdiv align=\"center\"\u003e\n\n| Platform | Module | Status |\n|:--------:|:------:|:------:|\n| **Bukkit/Spigot/Paper** | `imperat-bukkit` | ✅ Stable |\n| **Velocity** | `imperat-velocity` | ✅ Stable |\n| **BungeeCord** | `imperat-bungee` | ✅ Stable |\n| **Minestom** | `imperat-minestom` | ✅ Stable |\n| **CLI Applications** | `imperat-cli` | ✅ Stable |\n| **Discord (JDA)** | `imperat-jda` | ✅ Beta |\n| **Sponge** | `imperat-sponge` | 🚧 Planned |\n\n\u003c/div\u003e\n\n---\n\n## 🎯 **Key Features Explained**\n\n### **⚡ Blazing Fast Performance**\n- **Sub-microsecond execution**: 470ns median latency\n- **Linear O(n) scaling**: Consistent performance even with deep command trees\n- **Minimal allocations**: Optimized memory usage\n\n### **🎨 Flexible Command Creation**\n- **Annotations**: Clean, declarative command structure\n- **Builder API**: Dynamic command generation\n- **Mixed approach**: Use both patterns in the same project\n\n### **🔌 Rich Parameter System**\n- **Custom types**: Register your own parameter types\n- **Validation**: Built-in `@Range`, `@Values`, and custom validators\n- **Greedy parameters**: `@Greedy` for multi-word inputs\n- **Flags \u0026 switches**: `--flag value` and `--switch` support\n\n### **🛡️ Advanced Permission System**\n- **Hierarchical permissions**: Command, subcommand, and parameter-level\n- **Auto Permission Assignment**: Generate permission nodes automatically\n- **Custom permission checks**: Implement complex permission logic\n\n### **📊 Processing Pipeline**\n- **Pre-processors**: Validate, log, or modify before execution\n- **Post-processors**: Handle results, logging, or cleanup\n- **Exception resolvers**: Centralized error handling\n\n---\n\n## 🤝 **Contributing**\n\nWe welcome contributions! Whether it's bug reports, feature requests, or pull requests.\n\n## 📜 **License**\n\nImperat is licensed under the [MIT License](LICENSE).\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n### **Ready to supercharge your commands?**\n\n[📚 **Read the Docs**](https://docs.mevera.studio/Imperat) • [💬 **Join our Discord**](https://discord.gg/McN4GMWApE) • [⭐ **Star on GitHub**](https://github.com/MeveraStudios/Imperat)\n\n**Built with ❤️ by [Mqzen](https://github.com/Mqzen) and [iiAhmedYT](https://github.com/iiAhmedYT)**\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMeveraStudios%2FImperat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMeveraStudios%2FImperat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMeveraStudios%2FImperat/lists"}