By continuing to use this site, you agree to the Terms of Service of this website, including usage of cookies.

OK, Don't show this again

Note: Virion spec v3 has been released, which no longer requires DEVirion. Consider updating your plugin to use virion v3 using Composer + pharynx instead.
Debugging tool for virion developers and users
version 1.2.8
Direct Download How to install?
Switch version
2854 Downloads / 9953 Total
8 Reviews
Plugin Description §

DEVirion is the virion dependency manager. It can be used to run plugins from source if they require virions.

  1. Install this plugin
  2. Create a directory called virions next to the plugins folder (not inside it!)
  3. Drop the virions you use into the virions folder. Both packaged (.phar) virions and source (folder) virions are acceptable. (Just like how you install plugins with DevTools)


  • DEVirion will not shade plugins. Hence, this plugin must only be used for virion/plugin development. Released plugins must not depend on DEVirion to load virions.
  • DEVirion cannot automatically detect what virions are needed. Use the CLI to automatically download virions required for a certain project.

Command Line Options (for PocketMine)

You may also use the command-line option --load-virions to specify an additional folder to scan virions from (similar to the plugin path), or --load-virion (singular) to explicitly load a folder virion at the specified path (does not work with phar virions). For example, if you have this folder structure:

/server/virions/libstrange/ (with a virion.yml in this folder)
/libs/librare/ (with a virion.yml in this folder)
/misc/libtrivial/ (with a virion.yml in this folder)
  • Running ./ in /server/ will automatically load libweird and libstrange.
  • Running ./ --load-virions=/libs/ will additionally load libodd and librare
  • Running ./ --load-virion=/misc/libtrivial/ will additionally load libtrivial.
  • Running ./ --load-virion=/misc/libnormal.phar will not load libnormal, because --load-virion does not support phar virions — it's usually not necessary, and you should copy it to virions folder instead.

Command Line Interface (Standalone executable)


=== DEVirion.phar usage ===
php /path/to/DEVirion.phar install <manifest> <project> <folder> [--replace]
    - Downloads all virions required by a project
    - <manifest> is the path to the .poggit.yml of the project. You may put an
      URLs here.
    - <project> is the case-insensitive name of the project.
    - <folder> is the path to the folder that virions should be installed in.
      This should be /path/to/your_server/virions
    - --replace will cause DEVirion to overwrite existing virions with the same
      name DEVirion uses ({VirionName}_v{MajorVersion}.phar)

php /path/to/DEVirion.phar download <owner> <repo> <project> <version> [--branch=":default"] [--output="/path/to/output.phar"]
    - Downloads a virion build from Poggit
    - <owner>, <repo> and <project> are the case-insensitive names of the repo
      owner, repo and project containing the virion. <project> can be ~ if same
      as <repo>.
    - <version> is the SemVer version constraint for the virion required.
      Same as the version field in .poggit.yml
    - Only builds from the --branch branch will be used. ":default" means the
      current default branch of the repo. --branch or --branch=* will accept
      all branches.
    - If --output is provided, the virion will be downloaded to there.
      Otherwise, it is downloaded to <project>.phar (or "<project>_(n).phar" if
      exists). --output without a value will echo the file contents to stderr.
      (There is no option to echo to stdout because stdout is used for showing
      verbose information)


To run the CLI,

  • PHP 7.0 or above is required
  • The OpenSSL extension must be present to provide the https:// wrapper (cURL is not required)
  • The YAML extension is required.
  • (Will be fixed soon) The production phar may not contain the shebang line #!/usr/bin/env php in the stub, so directly executing devirion.phar blah blah blah may not work.
What's new §
  • API 4 threading changes
  • Fix #16 (#19)
      • Removed unused import
  • Follow the changes in pmmp/ClassLoader@af7e270, close #20
  • Merge pull request #14 from jasonwynn10/4.0
    • API 4 threading changes
  • Merge pull request #17 from Blackjack200/master
    • fix PHP 7.4 deprecation
  • Merge pull request #22 from poggit/4.0
    • 4.0
  • api 4.0
  • fix PHP 7.4 deprecation
  • no longer required
  • Fixed #9
  • 3.0.0 API updates

3.0.0-ALPHA12 support

Updated API versions

  • Update for API 3.0.0-ALPHA9
  • Bumped patch version
  • Change loading order
    • Reason: a main class of a plugin extending or implementing a class on a virion could not be called before, because the implement/extend are called when loading plugins, not when enabling them

Plugin now loads at STARTUP.

using v1.2.8
15 Apr 22
using v1.2.8
25 Mar 22
using v1.2.8
19 Dec 21
very useful and bug free, plus there's no alternative so you should use it
using v1.2.7
10 Oct 20
Staff Outdated
using v1.2.7
31 Mar 20
using v1.2.7
30 Mar 20
Great plugin, i am using it all the time to develop new plugins & virions. 5⭐💜
using v1.2.7
09 Jul 19
Thx @SOF3
using v1.2.5-ALPHA12
20 Apr 18

Reply to review by :

/ 5
Supported API versions
Producers §
  • Collaborators:
    • @SOF3
  • Contributors:
    • @Blackjack200
    • @alvin0319
    • @falkirks
    • @fuyutsuki
    • @jasonwynn10
    • @thebigsmileXD
License §
Developer Tools
Other files

You can leave one review per plugin release, and delete or update your review at any time

/ 5