Skip to content

Repository files navigation

Deprecated: Moved To 1MB-CMIAPI

This standalone PluginVersions project is deprecated. Development has moved into 1MB-CMIAPI. This repository may remain available in case we ever need to roll back to a standalone plugin, but new work should happen in 1MB-CMIAPI.


PluginVersions download-on-hangardownload-on-spigot

PluginVersions creates an alphabetically sorted list of loaded plugins and their versions. This 1MB update also keeps a human-readable plugin inventory database, lets you curate plugin URLs over time, and exports Markdown reports for GitHub, Discord, or server documentation.

Tested Environment

This Paper build compiles against PaperMC 26.1.2 (paper-api:26.1.2.build.20-alpha) with Java 25. The generated plugin.yml declares api-version: 1.21.11 so the same jar can load on Paper 1.21.11 and Paper 26.1.2. The plugin reports version 2.0.0.

The plugin data folder is plugins/1MB-PluginVersions/.

The only root command is /pv. The long /pluginversions command is not registered; the namespaced command remains available as pluginversions:pv.

All commands can be executed from the console. In-game use requires the matching permission.

Build

gradle clean build

The compiled jar is written to libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar.

Build metadata can be printed with:

gradle printBuildConfig

Test Server

Use the centralized Paper test-server runner from the Codex servers workspace. Do not use this repository's local /servers/ folder for new tests.

/Users/floris/Projects/Codex/servers/run-test-server --paper 1.21.11 --plugin libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar --foreground
/Users/floris/Projects/Codex/servers/run-test-server --paper 26.1.2 --plugin libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar --foreground

Commands

CommandDescription
/pv help [page|topic]Shows help pages.
/pv list [page]Lists loaded plugins and versions. Without a page, it lists every loaded plugin.
/pv reloadReloads config.yml and the active translation file.
/pv debug [page|topic]Shows status, plugin details, server details, counts, commands, permissions, placeholders, config, set, and URL pages.
/pv debug url add <plugin> <url>Stores a manual URL and infers the URL type.
/pv debug url add <plugin> <type> <url>Stores a manual URL with a custom type such as source, docs, or download.
/pv debug url del <plugin> [type] <url>Removes a stored manual URL.
/pv debug url list <plugin>Lists manual URLs stored for a plugin.
/pv debug url audit [page]Shows URL coverage for tracked plugins.
/pv config [page]Shows active configuration values.
/pv set <path> <value>Updates a known config.yml setting, saves it, and reloads the plugin settings. Filesystem paths are console-only.
/pv export [markdown|discord]Updates the database and writes timestamped plus stable latest export files.

Paged commands return No such page when the requested number is outside the available range.

Permissions

All permissions except pluginversions.help default to op.

PermissionDescription
pluginversions.*Grants every PluginVersions command and URL action.
pluginversions.helpAllows access to help pages.
pluginversions.listAllows listing loaded plugins.
pluginversions.reloadAllows reloading config and translations.
pluginversions.debugAllows viewing debug pages.
pluginversions.configAllows viewing active config values.
pluginversions.setAllows changing known config values.
pluginversions.exportAllows exporting plugin inventory reports.
pluginversions.url.*Grants all manual URL database actions.
pluginversions.url.listAllows listing and auditing URL entries.
pluginversions.url.addAllows adding manual URL entries.
pluginversions.url.delAllows removing manual URL entries.

Placeholders

Language phrases live in translations/Locale_EN.yml and use MiniMessage. Legacy ampersand color codes are migrated at runtime if older values are found, but new phrases should use MiniMessage tags.

Language tokens include {name}, {display-name}, {internal-name}, {version}, {spacing}, {page}, {pages}, {count}, {enabled}, and {disabled}.

If PlaceholderAPI is installed, PluginVersions registers these placeholders:

PlaceholderResult
%pluginversions_total%Loaded plugin count.
%pluginversions_enabled%Enabled plugin count.
%pluginversions_disabled%Disabled plugin count.
%pluginversions_database_tracked%Plugins currently tracked in the inventory database.
%pluginversions_version_<plugin>%Version for a loaded plugin.
%pluginversions_url_<plugin>_<type>%First matching detected or manual URL for a plugin and type.

Configuration

config.yml contains only operational settings and is fully commented. Player-facing phrases, command text, colors, and placeholders are kept in translations/Locale_EN.yml.

PluginVersions loads and saves config.yml with Bukkit's comment-aware YAML API. Existing admin-edited values are preserved, missing defaults are added safely, and comments survive first creation, /pv reload, server restarts, and /pv set edits.

Anonymous metrics are disabled by default with settings.enable-metrics: false.

Update checks are disabled by default with check-for-updates: false.

The YAML database is stored at plugins/1MB-PluginVersions/plugins-database.yml by default. It tracks each plugin's display name, internal name, version, enabled state, description, authors, contributors, dependencies, provided plugins, website, detected URLs, manual URLs, and scan history.

database.file and exports.directory are filesystem paths and can only be changed from the console or by editing config.yml.

Config file I/O runs synchronously during plugin enable, /pv reload, and /pv set. That work is intentionally limited to the small config.yml file; generated database and export writes only happen during scan/export commands.

URL Database

Detected URLs come from plugin metadata such as website and description fields. Manual URLs are stored under manual-urls and are merged with detected URLs in exports.

Known inferred URL types include github, jenkins, modrinth, hangar, spigot, dev-bukkit, ci, and website. You can also provide your own type:

/pv debug url add LuckPerms source https://github.com/LuckPerms/LuckPerms
/pv debug url add LuckPerms download https://modrinth.com/plugin/luckperms

Exports

Exports are written to plugins/1MB-PluginVersions/exports/ by default.

CommandFiles
/pv export markdownplugins-YYYY-MM-DD-HHMMSS.md and plugins-latest.md
/pv export discordplugins-discord-YYYY-MM-DD-HHMMSS.md and plugins-discord-latest.md

Credits

PluginVersions credits mart-r, GabrielHD150, SlimeDog, and mrfloris as authors. Updates in this branch include implementation help from OpenAI.

About

List installed plugins and versions alphabetically

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - mrfdev/PluginVersions: List installed plugins and versions alphabetically · GitHub
Skip to content

Repository files navigation

Deprecated: Moved To 1MB-CMIAPI

This standalone PluginVersions project is deprecated. Development has moved into 1MB-CMIAPI. This repository may remain available in case we ever need to roll back to a standalone plugin, but new work should happen in 1MB-CMIAPI.


PluginVersions download-on-hangardownload-on-spigot

PluginVersions creates an alphabetically sorted list of loaded plugins and their versions. This 1MB update also keeps a human-readable plugin inventory database, lets you curate plugin URLs over time, and exports Markdown reports for GitHub, Discord, or server documentation.

Tested Environment

This Paper build compiles against PaperMC 26.1.2 (paper-api:26.1.2.build.20-alpha) with Java 25. The generated plugin.yml declares api-version: 1.21.11 so the same jar can load on Paper 1.21.11 and Paper 26.1.2. The plugin reports version 2.0.0.

The plugin data folder is plugins/1MB-PluginVersions/.

The only root command is /pv. The long /pluginversions command is not registered; the namespaced command remains available as pluginversions:pv.

All commands can be executed from the console. In-game use requires the matching permission.

Build

gradle clean build

The compiled jar is written to libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar.

Build metadata can be printed with:

gradle printBuildConfig

Test Server

Use the centralized Paper test-server runner from the Codex servers workspace. Do not use this repository's local /servers/ folder for new tests.

/Users/floris/Projects/Codex/servers/run-test-server --paper 1.21.11 --plugin libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar --foreground
/Users/floris/Projects/Codex/servers/run-test-server --paper 26.1.2 --plugin libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar --foreground

Commands

CommandDescription
/pv help [page|topic]Shows help pages.
/pv list [page]Lists loaded plugins and versions. Without a page, it lists every loaded plugin.
/pv reloadReloads config.yml and the active translation file.
/pv debug [page|topic]Shows status, plugin details, server details, counts, commands, permissions, placeholders, config, set, and URL pages.
/pv debug url add <plugin> <url>Stores a manual URL and infers the URL type.
/pv debug url add <plugin> <type> <url>Stores a manual URL with a custom type such as source, docs, or download.
/pv debug url del <plugin> [type] <url>Removes a stored manual URL.
/pv debug url list <plugin>Lists manual URLs stored for a plugin.
/pv debug url audit [page]Shows URL coverage for tracked plugins.
/pv config [page]Shows active configuration values.
/pv set <path> <value>Updates a known config.yml setting, saves it, and reloads the plugin settings. Filesystem paths are console-only.
/pv export [markdown|discord]Updates the database and writes timestamped plus stable latest export files.

Paged commands return No such page when the requested number is outside the available range.

Permissions

All permissions except pluginversions.help default to op.

PermissionDescription
pluginversions.*Grants every PluginVersions command and URL action.
pluginversions.helpAllows access to help pages.
pluginversions.listAllows listing loaded plugins.
pluginversions.reloadAllows reloading config and translations.
pluginversions.debugAllows viewing debug pages.
pluginversions.configAllows viewing active config values.
pluginversions.setAllows changing known config values.
pluginversions.exportAllows exporting plugin inventory reports.
pluginversions.url.*Grants all manual URL database actions.
pluginversions.url.listAllows listing and auditing URL entries.
pluginversions.url.addAllows adding manual URL entries.
pluginversions.url.delAllows removing manual URL entries.

Placeholders

Language phrases live in translations/Locale_EN.yml and use MiniMessage. Legacy ampersand color codes are migrated at runtime if older values are found, but new phrases should use MiniMessage tags.

Language tokens include {name}, {display-name}, {internal-name}, {version}, {spacing}, {page}, {pages}, {count}, {enabled}, and {disabled}.

If PlaceholderAPI is installed, PluginVersions registers these placeholders:

PlaceholderResult
%pluginversions_total%Loaded plugin count.
%pluginversions_enabled%Enabled plugin count.
%pluginversions_disabled%Disabled plugin count.
%pluginversions_database_tracked%Plugins currently tracked in the inventory database.
%pluginversions_version_<plugin>%Version for a loaded plugin.
%pluginversions_url_<plugin>_<type>%First matching detected or manual URL for a plugin and type.

Configuration

config.yml contains only operational settings and is fully commented. Player-facing phrases, command text, colors, and placeholders are kept in translations/Locale_EN.yml.

PluginVersions loads and saves config.yml with Bukkit's comment-aware YAML API. Existing admin-edited values are preserved, missing defaults are added safely, and comments survive first creation, /pv reload, server restarts, and /pv set edits.

Anonymous metrics are disabled by default with settings.enable-metrics: false.

Update checks are disabled by default with check-for-updates: false.

The YAML database is stored at plugins/1MB-PluginVersions/plugins-database.yml by default. It tracks each plugin's display name, internal name, version, enabled state, description, authors, contributors, dependencies, provided plugins, website, detected URLs, manual URLs, and scan history.

database.file and exports.directory are filesystem paths and can only be changed from the console or by editing config.yml.

Config file I/O runs synchronously during plugin enable, /pv reload, and /pv set. That work is intentionally limited to the small config.yml file; generated database and export writes only happen during scan/export commands.

URL Database

Detected URLs come from plugin metadata such as website and description fields. Manual URLs are stored under manual-urls and are merged with detected URLs in exports.

Known inferred URL types include github, jenkins, modrinth, hangar, spigot, dev-bukkit, ci, and website. You can also provide your own type:

/pv debug url add LuckPerms source https://github.com/LuckPerms/LuckPerms
/pv debug url add LuckPerms download https://modrinth.com/plugin/luckperms

Exports

Exports are written to plugins/1MB-PluginVersions/exports/ by default.

CommandFiles
/pv export markdownplugins-YYYY-MM-DD-HHMMSS.md and plugins-latest.md
/pv export discordplugins-discord-YYYY-MM-DD-HHMMSS.md and plugins-discord-latest.md

Credits

PluginVersions credits mart-r, GabrielHD150, SlimeDog, and mrfloris as authors. Updates in this branch include implementation help from OpenAI.

About

List installed plugins and versions alphabetically

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - mrfdev/PluginVersions: List installed plugins and versions alphabetically · GitHub
Skip to content

Repository files navigation

Deprecated: Moved To 1MB-CMIAPI

This standalone PluginVersions project is deprecated. Development has moved into 1MB-CMIAPI. This repository may remain available in case we ever need to roll back to a standalone plugin, but new work should happen in 1MB-CMIAPI.


PluginVersions download-on-hangardownload-on-spigot

PluginVersions creates an alphabetically sorted list of loaded plugins and their versions. This 1MB update also keeps a human-readable plugin inventory database, lets you curate plugin URLs over time, and exports Markdown reports for GitHub, Discord, or server documentation.

Tested Environment

This Paper build compiles against PaperMC 26.1.2 (paper-api:26.1.2.build.20-alpha) with Java 25. The generated plugin.yml declares api-version: 1.21.11 so the same jar can load on Paper 1.21.11 and Paper 26.1.2. The plugin reports version 2.0.0.

The plugin data folder is plugins/1MB-PluginVersions/.

The only root command is /pv. The long /pluginversions command is not registered; the namespaced command remains available as pluginversions:pv.

All commands can be executed from the console. In-game use requires the matching permission.

Build

gradle clean build

The compiled jar is written to libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar.

Build metadata can be printed with:

gradle printBuildConfig

Test Server

Use the centralized Paper test-server runner from the Codex servers workspace. Do not use this repository's local /servers/ folder for new tests.

/Users/floris/Projects/Codex/servers/run-test-server --paper 1.21.11 --plugin libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar --foreground
/Users/floris/Projects/Codex/servers/run-test-server --paper 26.1.2 --plugin libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar --foreground

Commands

CommandDescription
/pv help [page|topic]Shows help pages.
/pv list [page]Lists loaded plugins and versions. Without a page, it lists every loaded plugin.
/pv reloadReloads config.yml and the active translation file.
/pv debug [page|topic]Shows status, plugin details, server details, counts, commands, permissions, placeholders, config, set, and URL pages.
/pv debug url add <plugin> <url>Stores a manual URL and infers the URL type.
/pv debug url add <plugin> <type> <url>Stores a manual URL with a custom type such as source, docs, or download.
/pv debug url del <plugin> [type] <url>Removes a stored manual URL.
/pv debug url list <plugin>Lists manual URLs stored for a plugin.
/pv debug url audit [page]Shows URL coverage for tracked plugins.
/pv config [page]Shows active configuration values.
/pv set <path> <value>Updates a known config.yml setting, saves it, and reloads the plugin settings. Filesystem paths are console-only.
/pv export [markdown|discord]Updates the database and writes timestamped plus stable latest export files.

Paged commands return No such page when the requested number is outside the available range.

Permissions

All permissions except pluginversions.help default to op.

PermissionDescription
pluginversions.*Grants every PluginVersions command and URL action.
pluginversions.helpAllows access to help pages.
pluginversions.listAllows listing loaded plugins.
pluginversions.reloadAllows reloading config and translations.
pluginversions.debugAllows viewing debug pages.
pluginversions.configAllows viewing active config values.
pluginversions.setAllows changing known config values.
pluginversions.exportAllows exporting plugin inventory reports.
pluginversions.url.*Grants all manual URL database actions.
pluginversions.url.listAllows listing and auditing URL entries.
pluginversions.url.addAllows adding manual URL entries.
pluginversions.url.delAllows removing manual URL entries.

Placeholders

Language phrases live in translations/Locale_EN.yml and use MiniMessage. Legacy ampersand color codes are migrated at runtime if older values are found, but new phrases should use MiniMessage tags.

Language tokens include {name}, {display-name}, {internal-name}, {version}, {spacing}, {page}, {pages}, {count}, {enabled}, and {disabled}.

If PlaceholderAPI is installed, PluginVersions registers these placeholders:

PlaceholderResult
%pluginversions_total%Loaded plugin count.
%pluginversions_enabled%Enabled plugin count.
%pluginversions_disabled%Disabled plugin count.
%pluginversions_database_tracked%Plugins currently tracked in the inventory database.
%pluginversions_version_<plugin>%Version for a loaded plugin.
%pluginversions_url_<plugin>_<type>%First matching detected or manual URL for a plugin and type.

Configuration

config.yml contains only operational settings and is fully commented. Player-facing phrases, command text, colors, and placeholders are kept in translations/Locale_EN.yml.

PluginVersions loads and saves config.yml with Bukkit's comment-aware YAML API. Existing admin-edited values are preserved, missing defaults are added safely, and comments survive first creation, /pv reload, server restarts, and /pv set edits.

Anonymous metrics are disabled by default with settings.enable-metrics: false.

Update checks are disabled by default with check-for-updates: false.

The YAML database is stored at plugins/1MB-PluginVersions/plugins-database.yml by default. It tracks each plugin's display name, internal name, version, enabled state, description, authors, contributors, dependencies, provided plugins, website, detected URLs, manual URLs, and scan history.

database.file and exports.directory are filesystem paths and can only be changed from the console or by editing config.yml.

Config file I/O runs synchronously during plugin enable, /pv reload, and /pv set. That work is intentionally limited to the small config.yml file; generated database and export writes only happen during scan/export commands.

URL Database

Detected URLs come from plugin metadata such as website and description fields. Manual URLs are stored under manual-urls and are merged with detected URLs in exports.

Known inferred URL types include github, jenkins, modrinth, hangar, spigot, dev-bukkit, ci, and website. You can also provide your own type:

/pv debug url add LuckPerms source https://github.com/LuckPerms/LuckPerms
/pv debug url add LuckPerms download https://modrinth.com/plugin/luckperms

Exports

Exports are written to plugins/1MB-PluginVersions/exports/ by default.

CommandFiles
/pv export markdownplugins-YYYY-MM-DD-HHMMSS.md and plugins-latest.md
/pv export discordplugins-discord-YYYY-MM-DD-HHMMSS.md and plugins-discord-latest.md

Credits

PluginVersions credits mart-r, GabrielHD150, SlimeDog, and mrfloris as authors. Updates in this branch include implementation help from OpenAI.

About

List installed plugins and versions alphabetically

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - mrfdev/PluginVersions: List installed plugins and versions alphabetically · GitHub
Skip to content

Repository files navigation

Deprecated: Moved To 1MB-CMIAPI

This standalone PluginVersions project is deprecated. Development has moved into 1MB-CMIAPI. This repository may remain available in case we ever need to roll back to a standalone plugin, but new work should happen in 1MB-CMIAPI.


PluginVersions download-on-hangardownload-on-spigot

PluginVersions creates an alphabetically sorted list of loaded plugins and their versions. This 1MB update also keeps a human-readable plugin inventory database, lets you curate plugin URLs over time, and exports Markdown reports for GitHub, Discord, or server documentation.

Tested Environment

This Paper build compiles against PaperMC 26.1.2 (paper-api:26.1.2.build.20-alpha) with Java 25. The generated plugin.yml declares api-version: 1.21.11 so the same jar can load on Paper 1.21.11 and Paper 26.1.2. The plugin reports version 2.0.0.

The plugin data folder is plugins/1MB-PluginVersions/.

The only root command is /pv. The long /pluginversions command is not registered; the namespaced command remains available as pluginversions:pv.

All commands can be executed from the console. In-game use requires the matching permission.

Build

gradle clean build

The compiled jar is written to libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar.

Build metadata can be printed with:

gradle printBuildConfig

Test Server

Use the centralized Paper test-server runner from the Codex servers workspace. Do not use this repository's local /servers/ folder for new tests.

/Users/floris/Projects/Codex/servers/run-test-server --paper 1.21.11 --plugin libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar --foreground
/Users/floris/Projects/Codex/servers/run-test-server --paper 26.1.2 --plugin libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar --foreground

Commands

CommandDescription
/pv help [page|topic]Shows help pages.
/pv list [page]Lists loaded plugins and versions. Without a page, it lists every loaded plugin.
/pv reloadReloads config.yml and the active translation file.
/pv debug [page|topic]Shows status, plugin details, server details, counts, commands, permissions, placeholders, config, set, and URL pages.
/pv debug url add <plugin> <url>Stores a manual URL and infers the URL type.
/pv debug url add <plugin> <type> <url>Stores a manual URL with a custom type such as source, docs, or download.
/pv debug url del <plugin> [type] <url>Removes a stored manual URL.
/pv debug url list <plugin>Lists manual URLs stored for a plugin.
/pv debug url audit [page]Shows URL coverage for tracked plugins.
/pv config [page]Shows active configuration values.
/pv set <path> <value>Updates a known config.yml setting, saves it, and reloads the plugin settings. Filesystem paths are console-only.
/pv export [markdown|discord]Updates the database and writes timestamped plus stable latest export files.

Paged commands return No such page when the requested number is outside the available range.

Permissions

All permissions except pluginversions.help default to op.

PermissionDescription
pluginversions.*Grants every PluginVersions command and URL action.
pluginversions.helpAllows access to help pages.
pluginversions.listAllows listing loaded plugins.
pluginversions.reloadAllows reloading config and translations.
pluginversions.debugAllows viewing debug pages.
pluginversions.configAllows viewing active config values.
pluginversions.setAllows changing known config values.
pluginversions.exportAllows exporting plugin inventory reports.
pluginversions.url.*Grants all manual URL database actions.
pluginversions.url.listAllows listing and auditing URL entries.
pluginversions.url.addAllows adding manual URL entries.
pluginversions.url.delAllows removing manual URL entries.

Placeholders

Language phrases live in translations/Locale_EN.yml and use MiniMessage. Legacy ampersand color codes are migrated at runtime if older values are found, but new phrases should use MiniMessage tags.

Language tokens include {name}, {display-name}, {internal-name}, {version}, {spacing}, {page}, {pages}, {count}, {enabled}, and {disabled}.

If PlaceholderAPI is installed, PluginVersions registers these placeholders:

PlaceholderResult
%pluginversions_total%Loaded plugin count.
%pluginversions_enabled%Enabled plugin count.
%pluginversions_disabled%Disabled plugin count.
%pluginversions_database_tracked%Plugins currently tracked in the inventory database.
%pluginversions_version_<plugin>%Version for a loaded plugin.
%pluginversions_url_<plugin>_<type>%First matching detected or manual URL for a plugin and type.

Configuration

config.yml contains only operational settings and is fully commented. Player-facing phrases, command text, colors, and placeholders are kept in translations/Locale_EN.yml.

PluginVersions loads and saves config.yml with Bukkit's comment-aware YAML API. Existing admin-edited values are preserved, missing defaults are added safely, and comments survive first creation, /pv reload, server restarts, and /pv set edits.

Anonymous metrics are disabled by default with settings.enable-metrics: false.

Update checks are disabled by default with check-for-updates: false.

The YAML database is stored at plugins/1MB-PluginVersions/plugins-database.yml by default. It tracks each plugin's display name, internal name, version, enabled state, description, authors, contributors, dependencies, provided plugins, website, detected URLs, manual URLs, and scan history.

database.file and exports.directory are filesystem paths and can only be changed from the console or by editing config.yml.

Config file I/O runs synchronously during plugin enable, /pv reload, and /pv set. That work is intentionally limited to the small config.yml file; generated database and export writes only happen during scan/export commands.

URL Database

Detected URLs come from plugin metadata such as website and description fields. Manual URLs are stored under manual-urls and are merged with detected URLs in exports.

Known inferred URL types include github, jenkins, modrinth, hangar, spigot, dev-bukkit, ci, and website. You can also provide your own type:

/pv debug url add LuckPerms source https://github.com/LuckPerms/LuckPerms
/pv debug url add LuckPerms download https://modrinth.com/plugin/luckperms

Exports

Exports are written to plugins/1MB-PluginVersions/exports/ by default.

CommandFiles
/pv export markdownplugins-YYYY-MM-DD-HHMMSS.md and plugins-latest.md
/pv export discordplugins-discord-YYYY-MM-DD-HHMMSS.md and plugins-discord-latest.md

Credits

PluginVersions credits mart-r, GabrielHD150, SlimeDog, and mrfloris as authors. Updates in this branch include implementation help from OpenAI.

About

List installed plugins and versions alphabetically

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - mrfdev/PluginVersions: List installed plugins and versions alphabetically · GitHub
Skip to content

Repository files navigation

Deprecated: Moved To 1MB-CMIAPI

This standalone PluginVersions project is deprecated. Development has moved into 1MB-CMIAPI. This repository may remain available in case we ever need to roll back to a standalone plugin, but new work should happen in 1MB-CMIAPI.


PluginVersions download-on-hangardownload-on-spigot

PluginVersions creates an alphabetically sorted list of loaded plugins and their versions. This 1MB update also keeps a human-readable plugin inventory database, lets you curate plugin URLs over time, and exports Markdown reports for GitHub, Discord, or server documentation.

Tested Environment

This Paper build compiles against PaperMC 26.1.2 (paper-api:26.1.2.build.20-alpha) with Java 25. The generated plugin.yml declares api-version: 1.21.11 so the same jar can load on Paper 1.21.11 and Paper 26.1.2. The plugin reports version 2.0.0.

The plugin data folder is plugins/1MB-PluginVersions/.

The only root command is /pv. The long /pluginversions command is not registered; the namespaced command remains available as pluginversions:pv.

All commands can be executed from the console. In-game use requires the matching permission.

Build

gradle clean build

The compiled jar is written to libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar.

Build metadata can be printed with:

gradle printBuildConfig

Test Server

Use the centralized Paper test-server runner from the Codex servers workspace. Do not use this repository's local /servers/ folder for new tests.

/Users/floris/Projects/Codex/servers/run-test-server --paper 1.21.11 --plugin libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar --foreground
/Users/floris/Projects/Codex/servers/run-test-server --paper 26.1.2 --plugin libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar --foreground

Commands

CommandDescription
/pv help [page|topic]Shows help pages.
/pv list [page]Lists loaded plugins and versions. Without a page, it lists every loaded plugin.
/pv reloadReloads config.yml and the active translation file.
/pv debug [page|topic]Shows status, plugin details, server details, counts, commands, permissions, placeholders, config, set, and URL pages.
/pv debug url add <plugin> <url>Stores a manual URL and infers the URL type.
/pv debug url add <plugin> <type> <url>Stores a manual URL with a custom type such as source, docs, or download.
/pv debug url del <plugin> [type] <url>Removes a stored manual URL.
/pv debug url list <plugin>Lists manual URLs stored for a plugin.
/pv debug url audit [page]Shows URL coverage for tracked plugins.
/pv config [page]Shows active configuration values.
/pv set <path> <value>Updates a known config.yml setting, saves it, and reloads the plugin settings. Filesystem paths are console-only.
/pv export [markdown|discord]Updates the database and writes timestamped plus stable latest export files.

Paged commands return No such page when the requested number is outside the available range.

Permissions

All permissions except pluginversions.help default to op.

PermissionDescription
pluginversions.*Grants every PluginVersions command and URL action.
pluginversions.helpAllows access to help pages.
pluginversions.listAllows listing loaded plugins.
pluginversions.reloadAllows reloading config and translations.
pluginversions.debugAllows viewing debug pages.
pluginversions.configAllows viewing active config values.
pluginversions.setAllows changing known config values.
pluginversions.exportAllows exporting plugin inventory reports.
pluginversions.url.*Grants all manual URL database actions.
pluginversions.url.listAllows listing and auditing URL entries.
pluginversions.url.addAllows adding manual URL entries.
pluginversions.url.delAllows removing manual URL entries.

Placeholders

Language phrases live in translations/Locale_EN.yml and use MiniMessage. Legacy ampersand color codes are migrated at runtime if older values are found, but new phrases should use MiniMessage tags.

Language tokens include {name}, {display-name}, {internal-name}, {version}, {spacing}, {page}, {pages}, {count}, {enabled}, and {disabled}.

If PlaceholderAPI is installed, PluginVersions registers these placeholders:

PlaceholderResult
%pluginversions_total%Loaded plugin count.
%pluginversions_enabled%Enabled plugin count.
%pluginversions_disabled%Disabled plugin count.
%pluginversions_database_tracked%Plugins currently tracked in the inventory database.
%pluginversions_version_<plugin>%Version for a loaded plugin.
%pluginversions_url_<plugin>_<type>%First matching detected or manual URL for a plugin and type.

Configuration

config.yml contains only operational settings and is fully commented. Player-facing phrases, command text, colors, and placeholders are kept in translations/Locale_EN.yml.

PluginVersions loads and saves config.yml with Bukkit's comment-aware YAML API. Existing admin-edited values are preserved, missing defaults are added safely, and comments survive first creation, /pv reload, server restarts, and /pv set edits.

Anonymous metrics are disabled by default with settings.enable-metrics: false.

Update checks are disabled by default with check-for-updates: false.

The YAML database is stored at plugins/1MB-PluginVersions/plugins-database.yml by default. It tracks each plugin's display name, internal name, version, enabled state, description, authors, contributors, dependencies, provided plugins, website, detected URLs, manual URLs, and scan history.

database.file and exports.directory are filesystem paths and can only be changed from the console or by editing config.yml.

Config file I/O runs synchronously during plugin enable, /pv reload, and /pv set. That work is intentionally limited to the small config.yml file; generated database and export writes only happen during scan/export commands.

URL Database

Detected URLs come from plugin metadata such as website and description fields. Manual URLs are stored under manual-urls and are merged with detected URLs in exports.

Known inferred URL types include github, jenkins, modrinth, hangar, spigot, dev-bukkit, ci, and website. You can also provide your own type:

/pv debug url add LuckPerms source https://github.com/LuckPerms/LuckPerms
/pv debug url add LuckPerms download https://modrinth.com/plugin/luckperms

Exports

Exports are written to plugins/1MB-PluginVersions/exports/ by default.

CommandFiles
/pv export markdownplugins-YYYY-MM-DD-HHMMSS.md and plugins-latest.md
/pv export discordplugins-discord-YYYY-MM-DD-HHMMSS.md and plugins-discord-latest.md

Credits

PluginVersions credits mart-r, GabrielHD150, SlimeDog, and mrfloris as authors. Updates in this branch include implementation help from OpenAI.

About

List installed plugins and versions alphabetically

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - mrfdev/PluginVersions: List installed plugins and versions alphabetically · GitHub
Skip to content

Repository files navigation

Deprecated: Moved To 1MB-CMIAPI

This standalone PluginVersions project is deprecated. Development has moved into 1MB-CMIAPI. This repository may remain available in case we ever need to roll back to a standalone plugin, but new work should happen in 1MB-CMIAPI.


PluginVersions download-on-hangardownload-on-spigot

PluginVersions creates an alphabetically sorted list of loaded plugins and their versions. This 1MB update also keeps a human-readable plugin inventory database, lets you curate plugin URLs over time, and exports Markdown reports for GitHub, Discord, or server documentation.

Tested Environment

This Paper build compiles against PaperMC 26.1.2 (paper-api:26.1.2.build.20-alpha) with Java 25. The generated plugin.yml declares api-version: 1.21.11 so the same jar can load on Paper 1.21.11 and Paper 26.1.2. The plugin reports version 2.0.0.

The plugin data folder is plugins/1MB-PluginVersions/.

The only root command is /pv. The long /pluginversions command is not registered; the namespaced command remains available as pluginversions:pv.

All commands can be executed from the console. In-game use requires the matching permission.

Build

gradle clean build

The compiled jar is written to libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar.

Build metadata can be printed with:

gradle printBuildConfig

Test Server

Use the centralized Paper test-server runner from the Codex servers workspace. Do not use this repository's local /servers/ folder for new tests.

/Users/floris/Projects/Codex/servers/run-test-server --paper 1.21.11 --plugin libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar --foreground
/Users/floris/Projects/Codex/servers/run-test-server --paper 26.1.2 --plugin libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar --foreground

Commands

CommandDescription
/pv help [page|topic]Shows help pages.
/pv list [page]Lists loaded plugins and versions. Without a page, it lists every loaded plugin.
/pv reloadReloads config.yml and the active translation file.
/pv debug [page|topic]Shows status, plugin details, server details, counts, commands, permissions, placeholders, config, set, and URL pages.
/pv debug url add <plugin> <url>Stores a manual URL and infers the URL type.
/pv debug url add <plugin> <type> <url>Stores a manual URL with a custom type such as source, docs, or download.
/pv debug url del <plugin> [type] <url>Removes a stored manual URL.
/pv debug url list <plugin>Lists manual URLs stored for a plugin.
/pv debug url audit [page]Shows URL coverage for tracked plugins.
/pv config [page]Shows active configuration values.
/pv set <path> <value>Updates a known config.yml setting, saves it, and reloads the plugin settings. Filesystem paths are console-only.
/pv export [markdown|discord]Updates the database and writes timestamped plus stable latest export files.

Paged commands return No such page when the requested number is outside the available range.

Permissions

All permissions except pluginversions.help default to op.

PermissionDescription
pluginversions.*Grants every PluginVersions command and URL action.
pluginversions.helpAllows access to help pages.
pluginversions.listAllows listing loaded plugins.
pluginversions.reloadAllows reloading config and translations.
pluginversions.debugAllows viewing debug pages.
pluginversions.configAllows viewing active config values.
pluginversions.setAllows changing known config values.
pluginversions.exportAllows exporting plugin inventory reports.
pluginversions.url.*Grants all manual URL database actions.
pluginversions.url.listAllows listing and auditing URL entries.
pluginversions.url.addAllows adding manual URL entries.
pluginversions.url.delAllows removing manual URL entries.

Placeholders

Language phrases live in translations/Locale_EN.yml and use MiniMessage. Legacy ampersand color codes are migrated at runtime if older values are found, but new phrases should use MiniMessage tags.

Language tokens include {name}, {display-name}, {internal-name}, {version}, {spacing}, {page}, {pages}, {count}, {enabled}, and {disabled}.

If PlaceholderAPI is installed, PluginVersions registers these placeholders:

PlaceholderResult
%pluginversions_total%Loaded plugin count.
%pluginversions_enabled%Enabled plugin count.
%pluginversions_disabled%Disabled plugin count.
%pluginversions_database_tracked%Plugins currently tracked in the inventory database.
%pluginversions_version_<plugin>%Version for a loaded plugin.
%pluginversions_url_<plugin>_<type>%First matching detected or manual URL for a plugin and type.

Configuration

config.yml contains only operational settings and is fully commented. Player-facing phrases, command text, colors, and placeholders are kept in translations/Locale_EN.yml.

PluginVersions loads and saves config.yml with Bukkit's comment-aware YAML API. Existing admin-edited values are preserved, missing defaults are added safely, and comments survive first creation, /pv reload, server restarts, and /pv set edits.

Anonymous metrics are disabled by default with settings.enable-metrics: false.

Update checks are disabled by default with check-for-updates: false.

The YAML database is stored at plugins/1MB-PluginVersions/plugins-database.yml by default. It tracks each plugin's display name, internal name, version, enabled state, description, authors, contributors, dependencies, provided plugins, website, detected URLs, manual URLs, and scan history.

database.file and exports.directory are filesystem paths and can only be changed from the console or by editing config.yml.

Config file I/O runs synchronously during plugin enable, /pv reload, and /pv set. That work is intentionally limited to the small config.yml file; generated database and export writes only happen during scan/export commands.

URL Database

Detected URLs come from plugin metadata such as website and description fields. Manual URLs are stored under manual-urls and are merged with detected URLs in exports.

Known inferred URL types include github, jenkins, modrinth, hangar, spigot, dev-bukkit, ci, and website. You can also provide your own type:

/pv debug url add LuckPerms source https://github.com/LuckPerms/LuckPerms
/pv debug url add LuckPerms download https://modrinth.com/plugin/luckperms

Exports

Exports are written to plugins/1MB-PluginVersions/exports/ by default.

CommandFiles
/pv export markdownplugins-YYYY-MM-DD-HHMMSS.md and plugins-latest.md
/pv export discordplugins-discord-YYYY-MM-DD-HHMMSS.md and plugins-discord-latest.md

Credits

PluginVersions credits mart-r, GabrielHD150, SlimeDog, and mrfloris as authors. Updates in this branch include implementation help from OpenAI.

About

List installed plugins and versions alphabetically

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - mrfdev/PluginVersions: List installed plugins and versions alphabetically · GitHub
Skip to content

Repository files navigation

Deprecated: Moved To 1MB-CMIAPI

This standalone PluginVersions project is deprecated. Development has moved into 1MB-CMIAPI. This repository may remain available in case we ever need to roll back to a standalone plugin, but new work should happen in 1MB-CMIAPI.


PluginVersions download-on-hangardownload-on-spigot

PluginVersions creates an alphabetically sorted list of loaded plugins and their versions. This 1MB update also keeps a human-readable plugin inventory database, lets you curate plugin URLs over time, and exports Markdown reports for GitHub, Discord, or server documentation.

Tested Environment

This Paper build compiles against PaperMC 26.1.2 (paper-api:26.1.2.build.20-alpha) with Java 25. The generated plugin.yml declares api-version: 1.21.11 so the same jar can load on Paper 1.21.11 and Paper 26.1.2. The plugin reports version 2.0.0.

The plugin data folder is plugins/1MB-PluginVersions/.

The only root command is /pv. The long /pluginversions command is not registered; the namespaced command remains available as pluginversions:pv.

All commands can be executed from the console. In-game use requires the matching permission.

Build

gradle clean build

The compiled jar is written to libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar.

Build metadata can be printed with:

gradle printBuildConfig

Test Server

Use the centralized Paper test-server runner from the Codex servers workspace. Do not use this repository's local /servers/ folder for new tests.

/Users/floris/Projects/Codex/servers/run-test-server --paper 1.21.11 --plugin libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar --foreground
/Users/floris/Projects/Codex/servers/run-test-server --paper 26.1.2 --plugin libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar --foreground

Commands

CommandDescription
/pv help [page|topic]Shows help pages.
/pv list [page]Lists loaded plugins and versions. Without a page, it lists every loaded plugin.
/pv reloadReloads config.yml and the active translation file.
/pv debug [page|topic]Shows status, plugin details, server details, counts, commands, permissions, placeholders, config, set, and URL pages.
/pv debug url add <plugin> <url>Stores a manual URL and infers the URL type.
/pv debug url add <plugin> <type> <url>Stores a manual URL with a custom type such as source, docs, or download.
/pv debug url del <plugin> [type] <url>Removes a stored manual URL.
/pv debug url list <plugin>Lists manual URLs stored for a plugin.
/pv debug url audit [page]Shows URL coverage for tracked plugins.
/pv config [page]Shows active configuration values.
/pv set <path> <value>Updates a known config.yml setting, saves it, and reloads the plugin settings. Filesystem paths are console-only.
/pv export [markdown|discord]Updates the database and writes timestamped plus stable latest export files.

Paged commands return No such page when the requested number is outside the available range.

Permissions

All permissions except pluginversions.help default to op.

PermissionDescription
pluginversions.*Grants every PluginVersions command and URL action.
pluginversions.helpAllows access to help pages.
pluginversions.listAllows listing loaded plugins.
pluginversions.reloadAllows reloading config and translations.
pluginversions.debugAllows viewing debug pages.
pluginversions.configAllows viewing active config values.
pluginversions.setAllows changing known config values.
pluginversions.exportAllows exporting plugin inventory reports.
pluginversions.url.*Grants all manual URL database actions.
pluginversions.url.listAllows listing and auditing URL entries.
pluginversions.url.addAllows adding manual URL entries.
pluginversions.url.delAllows removing manual URL entries.

Placeholders

Language phrases live in translations/Locale_EN.yml and use MiniMessage. Legacy ampersand color codes are migrated at runtime if older values are found, but new phrases should use MiniMessage tags.

Language tokens include {name}, {display-name}, {internal-name}, {version}, {spacing}, {page}, {pages}, {count}, {enabled}, and {disabled}.

If PlaceholderAPI is installed, PluginVersions registers these placeholders:

PlaceholderResult
%pluginversions_total%Loaded plugin count.
%pluginversions_enabled%Enabled plugin count.
%pluginversions_disabled%Disabled plugin count.
%pluginversions_database_tracked%Plugins currently tracked in the inventory database.
%pluginversions_version_<plugin>%Version for a loaded plugin.
%pluginversions_url_<plugin>_<type>%First matching detected or manual URL for a plugin and type.

Configuration

config.yml contains only operational settings and is fully commented. Player-facing phrases, command text, colors, and placeholders are kept in translations/Locale_EN.yml.

PluginVersions loads and saves config.yml with Bukkit's comment-aware YAML API. Existing admin-edited values are preserved, missing defaults are added safely, and comments survive first creation, /pv reload, server restarts, and /pv set edits.

Anonymous metrics are disabled by default with settings.enable-metrics: false.

Update checks are disabled by default with check-for-updates: false.

The YAML database is stored at plugins/1MB-PluginVersions/plugins-database.yml by default. It tracks each plugin's display name, internal name, version, enabled state, description, authors, contributors, dependencies, provided plugins, website, detected URLs, manual URLs, and scan history.

database.file and exports.directory are filesystem paths and can only be changed from the console or by editing config.yml.

Config file I/O runs synchronously during plugin enable, /pv reload, and /pv set. That work is intentionally limited to the small config.yml file; generated database and export writes only happen during scan/export commands.

URL Database

Detected URLs come from plugin metadata such as website and description fields. Manual URLs are stored under manual-urls and are merged with detected URLs in exports.

Known inferred URL types include github, jenkins, modrinth, hangar, spigot, dev-bukkit, ci, and website. You can also provide your own type:

/pv debug url add LuckPerms source https://github.com/LuckPerms/LuckPerms
/pv debug url add LuckPerms download https://modrinth.com/plugin/luckperms

Exports

Exports are written to plugins/1MB-PluginVersions/exports/ by default.

CommandFiles
/pv export markdownplugins-YYYY-MM-DD-HHMMSS.md and plugins-latest.md
/pv export discordplugins-discord-YYYY-MM-DD-HHMMSS.md and plugins-discord-latest.md

Credits

PluginVersions credits mart-r, GabrielHD150, SlimeDog, and mrfloris as authors. Updates in this branch include implementation help from OpenAI.

About

List installed plugins and versions alphabetically

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - mrfdev/PluginVersions: List installed plugins and versions alphabetically · GitHub
Skip to content

Repository files navigation

Deprecated: Moved To 1MB-CMIAPI

This standalone PluginVersions project is deprecated. Development has moved into 1MB-CMIAPI. This repository may remain available in case we ever need to roll back to a standalone plugin, but new work should happen in 1MB-CMIAPI.


PluginVersions download-on-hangardownload-on-spigot

PluginVersions creates an alphabetically sorted list of loaded plugins and their versions. This 1MB update also keeps a human-readable plugin inventory database, lets you curate plugin URLs over time, and exports Markdown reports for GitHub, Discord, or server documentation.

Tested Environment

This Paper build compiles against PaperMC 26.1.2 (paper-api:26.1.2.build.20-alpha) with Java 25. The generated plugin.yml declares api-version: 1.21.11 so the same jar can load on Paper 1.21.11 and Paper 26.1.2. The plugin reports version 2.0.0.

The plugin data folder is plugins/1MB-PluginVersions/.

The only root command is /pv. The long /pluginversions command is not registered; the namespaced command remains available as pluginversions:pv.

All commands can be executed from the console. In-game use requires the matching permission.

Build

gradle clean build

The compiled jar is written to libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar.

Build metadata can be printed with:

gradle printBuildConfig

Test Server

Use the centralized Paper test-server runner from the Codex servers workspace. Do not use this repository's local /servers/ folder for new tests.

/Users/floris/Projects/Codex/servers/run-test-server --paper 1.21.11 --plugin libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar --foreground
/Users/floris/Projects/Codex/servers/run-test-server --paper 26.1.2 --plugin libs/1MB-PluginVersions-v2.0.0-006-j25-26.1.2.jar --foreground

Commands

CommandDescription
/pv help [page|topic]Shows help pages.
/pv list [page]Lists loaded plugins and versions. Without a page, it lists every loaded plugin.
/pv reloadReloads config.yml and the active translation file.
/pv debug [page|topic]Shows status, plugin details, server details, counts, commands, permissions, placeholders, config, set, and URL pages.
/pv debug url add <plugin> <url>Stores a manual URL and infers the URL type.
/pv debug url add <plugin> <type> <url>Stores a manual URL with a custom type such as source, docs, or download.
/pv debug url del <plugin> [type] <url>Removes a stored manual URL.
/pv debug url list <plugin>Lists manual URLs stored for a plugin.
/pv debug url audit [page]Shows URL coverage for tracked plugins.
/pv config [page]Shows active configuration values.
/pv set <path> <value>Updates a known config.yml setting, saves it, and reloads the plugin settings. Filesystem paths are console-only.
/pv export [markdown|discord]Updates the database and writes timestamped plus stable latest export files.

Paged commands return No such page when the requested number is outside the available range.

Permissions

All permissions except pluginversions.help default to op.

PermissionDescription
pluginversions.*Grants every PluginVersions command and URL action.
pluginversions.helpAllows access to help pages.
pluginversions.listAllows listing loaded plugins.
pluginversions.reloadAllows reloading config and translations.
pluginversions.debugAllows viewing debug pages.
pluginversions.configAllows viewing active config values.
pluginversions.setAllows changing known config values.
pluginversions.exportAllows exporting plugin inventory reports.
pluginversions.url.*Grants all manual URL database actions.
pluginversions.url.listAllows listing and auditing URL entries.
pluginversions.url.addAllows adding manual URL entries.
pluginversions.url.delAllows removing manual URL entries.

Placeholders

Language phrases live in translations/Locale_EN.yml and use MiniMessage. Legacy ampersand color codes are migrated at runtime if older values are found, but new phrases should use MiniMessage tags.

Language tokens include {name}, {display-name}, {internal-name}, {version}, {spacing}, {page}, {pages}, {count}, {enabled}, and {disabled}.

If PlaceholderAPI is installed, PluginVersions registers these placeholders:

PlaceholderResult
%pluginversions_total%Loaded plugin count.
%pluginversions_enabled%Enabled plugin count.
%pluginversions_disabled%Disabled plugin count.
%pluginversions_database_tracked%Plugins currently tracked in the inventory database.
%pluginversions_version_<plugin>%Version for a loaded plugin.
%pluginversions_url_<plugin>_<type>%First matching detected or manual URL for a plugin and type.

Configuration

config.yml contains only operational settings and is fully commented. Player-facing phrases, command text, colors, and placeholders are kept in translations/Locale_EN.yml.

PluginVersions loads and saves config.yml with Bukkit's comment-aware YAML API. Existing admin-edited values are preserved, missing defaults are added safely, and comments survive first creation, /pv reload, server restarts, and /pv set edits.

Anonymous metrics are disabled by default with settings.enable-metrics: false.

Update checks are disabled by default with check-for-updates: false.

The YAML database is stored at plugins/1MB-PluginVersions/plugins-database.yml by default. It tracks each plugin's display name, internal name, version, enabled state, description, authors, contributors, dependencies, provided plugins, website, detected URLs, manual URLs, and scan history.

database.file and exports.directory are filesystem paths and can only be changed from the console or by editing config.yml.

Config file I/O runs synchronously during plugin enable, /pv reload, and /pv set. That work is intentionally limited to the small config.yml file; generated database and export writes only happen during scan/export commands.

URL Database

Detected URLs come from plugin metadata such as website and description fields. Manual URLs are stored under manual-urls and are merged with detected URLs in exports.

Known inferred URL types include github, jenkins, modrinth, hangar, spigot, dev-bukkit, ci, and website. You can also provide your own type:

/pv debug url add LuckPerms source https://github.com/LuckPerms/LuckPerms
/pv debug url add LuckPerms download https://modrinth.com/plugin/luckperms

Exports

Exports are written to plugins/1MB-PluginVersions/exports/ by default.

CommandFiles
/pv export markdownplugins-YYYY-MM-DD-HHMMSS.md and plugins-latest.md
/pv export discordplugins-discord-YYYY-MM-DD-HHMMSS.md and plugins-discord-latest.md

Credits

PluginVersions credits mart-r, GabrielHD150, SlimeDog, and mrfloris as authors. Updates in this branch include implementation help from OpenAI.

About

List installed plugins and versions alphabetically

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages