PHPackages                             galaxygames/ovommand - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [CLI &amp; Console](/categories/cli)
4. /
5. galaxygames/ovommand

ActiveLibrary[CLI &amp; Console](/categories/cli)

galaxygames/ovommand
====================

a normal framework virion designed to parse command data for PocketMine-MP

524[1 issues](https://github.com/GalaxyGamesMC/Ovommand/issues)PHPCI passing

Since Oct 4Pushed 11mo ago1 watchersCompare

[ Source](https://github.com/GalaxyGamesMC/Ovommand)[ Packagist](https://packagist.org/packages/galaxygames/ovommand)[ RSS](/packages/galaxygames-ovommand/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (6)Used By (0)

[   ![ovo_logo](https://raw.githubusercontent.com/idumpster/image/main/ovommand/svg/blue/ovommand_title.svg)](https://github.com/GalaxyGamesMC/Ovommand)
**a feature-rich virion framework to handle commands for [PocketMine-MP](https://github.com/pmmp/PocketMine-MP)**
📔[Docs](https://github.com/GalaxyGamesMC/Ovommand/wiki)⠀⠀🔌[Demo plugin](https://github.com/idumpster/OvoTest)

📖 Introduction
--------------

[](#-introduction)

Ovommand is a command parsing and handling framework for PocketMine-MP. It made it easy for defining, registering, and executing commands with complex parameter structures, validation, and hierarchical organization.

Important

This branch was for the upcoming change in PMMP's upcoming PR [\#6685](https://github.com/pmmp/PocketMine-MP/pull/6685) related to command aliases, etc

Important

Please note that this project is still at a very early stage and has not yet been released officially, and interfaces may be added or removed without notice. Please do not use Ovommand in a production!

 [![ovo_warning](https://raw.githubusercontent.com/idumpster/image/main/ovommand/svg/yellow/short/ovommand_stupon.svg)](https://raw.githubusercontent.com/idumpster/image/main/ovommand/svg/yellow/short/ovommand_stupon.svg)
This project is under construction....

### Features

[](#features)

1. - Custom command with rich customizability
2. - Custom subcommand/parameters with command enum support
3. - Parser for complex parameters with syntax checkers
    - - Position parameter (`~~ ~`, `12 -31 ~123`, etc) - Done?
    - - Target parameter (`@a`, `@s`, etc...) - Currently unstable
    - - Float, Int, Text,... parameter
    - - Json parameter
4. - Default enums support (player list, gamemode, boolean, etc)
5. - Constraints for commands
6. - Usage generator for commands/subcommands
7. - Duplicate command name handle (adding counter to the command name)
8. - Attribute supports (temp abandoned)
9. - CommandHelper: an easy way to create a command without class register mess
10. - Closure command
11. - ?

### Requirement

[](#requirement)

- PHP 8.2 or higher
- [PMMP](https://github.com//pmmp/PocketMine-MP) 5.27.0 or higher
- [simple-packet-handler](https://github.com/Muqsit/SimplePacketHandler) 0.1.5 or higher

Getting Started
---------------

[](#getting-started)

Contributing
------------

[](#contributing)

Yes, please...

Note
----

[](#note)

### A. Namespace system

[](#a-namespace-system)

1. If plugin A has `namespace: ns` set in `plugin.yml` then
    a) plugin A has `force namespace`

---

Issues:
-------

[](#issues)

1. - `$returnRaw` in `BaseResult` is confusing and useless?
2. - `isBlockPos` current do nothing in CoordinateResult
3. - Allow users to decide how the subcommand aliases are handled (multiple overloads vs packed enum)
4. - Command namespace system (as vanilla addon) and duplicate command name.

 Show useless dumpsEnums system:

Soft EnumHard EnumCan value be read by owner?YESYESCan value be read by other? (Public)YESYESCan value be read by other? (Private)NONOCan value be written by owner? (Before server starts)YESYESCan value be written by others? (Private)NONOCan value be written by others? (Before server starts, not Protected)YESYESCan value be written by owner? (After server starts)YESNOCan value be written by others? (After server starts, not Protected)YESNOCan value be written by others? (Before server starts, Protected)NONOCan value be written by others? (After server starts, Protected)NONOCan alias be written by owner? (Before server starts)YESYESCan alias be written by owner? (After server starts)YESNOCan alias be written by others? (Before server starts, not Protected)YESYESCan alias be written by others? (Before server starts, Protected)NONOCan alias be written by others? (After server starts, not Protected)YESNOCan alias be written by others? (After server starts, Protected)NONOTODO:

- make reasonable enum that handle it value correctly (string -&gt; value)
- custom enum, parameters, enum-based parameters
- feature rich
- usage messages
- result system (parser), not that good tho :l
- attribute supports (temp abandoned)
- SubCommand doesn't require perms if wanted
- make syntax parser based on its string pos, not the string itself for the accuracy in catching broken syntax spoiled
- fix a bug where the parser cannot check the correct span leading to this to be valid: `/tp ~~~ a`, where a is not valid but the parser cannot know that because it don't expect that to be a case!
- fix broken SYNTAX\_PRINT\_VANILLA
- fix an issue where it failed to parse the parameter after position parameter that has less than the span! eg: ~~~ a, failed to parse a

Suggest:

- make canParse and parse into one
- empty parameter functionality
- allow parameter to not provide data to the ingame auto-complete
- make overloadId global which will make the code shorter
- template? (temp abandoned)
- move part of Ovommand to BaseCommand
- do subCommand even need description?
- more features to the syntax parser
- rename parsedId &amp; matchedId in Results to rawParsedCount &amp; parsedCount

Discuss:

- Default Enums should have its own register and a version checker!? (temp abandoned)
- the problem with shared data is that if other plugins try to use other plugins enum... the enum might not exist due to plugin loading order!
- Default enums can have duplicated values if the event called more than twice on different plugins!
- Merge onRun() and onSyntaxError()?
- Add supports for private enums and synced properties for soft enums

Self note:

- Soft enums cannot spread out its value using flag 1!
- Two enums, one soft and one hard could have a same name
- Enum name could be set to anything, not just ascii / UTF-8

❌ ✔️ ✅

checkeduncheckedcrossed✓\_✗☑☐☒

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance33

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity27

Early-stage or recently created project

 Bus Factor1

Top contributor holds 99% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/4c4ac9363d9b5d995b7571f31826f7485f80b50953db503554623af0a98ddcdd?d=identicon)[NTT1906](/maintainers/NTT1906)

---

Top Contributors

[![NTT1906](https://avatars.githubusercontent.com/u/54394881?v=4)](https://github.com/NTT1906 "NTT1906 (596 commits)")[![poggit-bot](https://avatars.githubusercontent.com/u/22427965?v=4)](https://github.com/poggit-bot "poggit-bot (3 commits)")[![renovate[bot]](https://avatars.githubusercontent.com/in/2740?v=4)](https://github.com/renovate[bot] "renovate[bot] (3 commits)")

---

Tags

bedrockcommandminecraftphppmmppocketminevirion

### Embed Badge

![Health badge](/badges/galaxygames-ovommand/health.svg)

```
[![Health](https://phpackages.com/badges/galaxygames-ovommand/health.svg)](https://phpackages.com/packages/galaxygames-ovommand)
```

###  Alternatives

[wp-cli/wp-cli

WP-CLI framework

5.0k17.2M320](/packages/wp-cli-wp-cli)[consolidation/annotated-command

Initialize Symfony Console commands from annotated command class methods.

22569.8M19](/packages/consolidation-annotated-command)[chi-teck/drupal-code-generator

Drupal code generator

26947.8M5](/packages/chi-teck-drupal-code-generator)[seld/cli-prompt

Allows you to prompt for user input on the command line, and optionally hide the characters they type

24725.8M17](/packages/seld-cli-prompt)[illuminate/console

The Illuminate Console package.

12944.1M5.1k](/packages/illuminate-console)[php-tui/php-tui

Comprehensive TUI library heavily influenced by Ratatui

589747.0k6](/packages/php-tui-php-tui)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
