Skip to main content

Add your description here

Project description

PaperMC Plugin Manager (ppm)

A modern, user-friendly command-line tool for managing PaperMC server plugins. Built with Python and featuring intelligent caching, automatic updates, and beautiful console output powered by Rich.

Features

  • ๐Ÿ” Smart Search: Search for plugins across Modrinth with fuzzy matching
  • ๐Ÿ“ฆ Easy Installation: Install plugins with a single command
  • โฌ†๏ธ Automatic Updates: Upgrade all outdated plugins with one command
  • โฌ‡๏ธ Version Management: Upgrade, downgrade, or switch between specific versions
  • ๐Ÿ’พ Intelligent Caching: Fast operations with apt-like cache system
  • ๐Ÿ“Š Beautiful UI: Rich terminal interface with progress bars, tables, and panels
  • ๐Ÿ”„ Version Detection: Automatically detects outdated plugins
  • ๐Ÿ“‹ Installation Status: See which plugins are installed at a glance

Installation

Using uv (Recommended)

git clone https://github.com/yourusername/papermc_plugin_manager.git
cd papermc_plugin_manager
uv sync

Using pip

git clone https://github.com/yourusername/papermc_plugin_manager.git
cd papermc_plugin_manager
pip install -e .

Usage

Basic Commands

Search for Plugins

ppm search <plugin-name>

Example:

ppm search viaversion

Show Plugin Information

ppm show <plugin-name-or-id>

Examples:

ppm show viaversion
ppm show P1OZGk5p  # Using plugin ID

This command displays:

  • Plugin metadata (author, downloads, latest versions)
  • Installation status (installed version or not installed)
  • Available versions
  • Uses cache when available for faster response

List Installed Plugins

ppm list

Shows all installed plugins with:

  • Project name
  • Version information
  • Release type (RELEASE, BETA, ALPHA)
  • Release date
  • Update status (Current or Outdated)

Update Plugin Cache

ppm update

Refreshes the cache with latest plugin information from Modrinth. Similar to apt update.

Install Plugins

# Install latest release version
ppm install <plugin-name>

# Install specific version
ppm install <plugin-name> --version <version>

# Install latest snapshot/beta
ppm install <plugin-name> --snapshot

# Skip confirmation prompts
ppm install <plugin-name> -y

Examples:

ppm install viaversion
ppm install viaversion --version 5.4.1
ppm install worldedit --snapshot -y

Smart Installation Behavior:

  • If plugin is not installed: Installs the specified version
  • If older version exists: Automatically upgrades to newer version
  • If specific version requested: Replaces existing version (allows downgrades)
  • If same version exists: Skips installation

Upgrade Plugins

ppm upgrade

Upgrades all outdated plugins to their latest versions. Respects release types:

  • RELEASE plugins upgrade to latest RELEASE
  • BETA plugins upgrade to latest BETA
  • ALPHA plugins upgrade to latest ALPHA

Uses cached information (run ppm update first to check for updates).

Advanced Usage

Server Information

ppm server-info

Displays current PaperMC server version and configuration.

Version-Specific Installation

# Downgrade to older version
ppm install viaversion --version 5.4.1 -y

# Upgrade to newer version
ppm install viaversion --version 5.6.0 -y

Workflow (APT-like)

# 1. List installed plugins (fast, uses cache)
ppm list

# 2. Update cache with latest plugin information
ppm update

# 3. Check which plugins are outdated
ppm list

# 4. Upgrade all outdated plugins
ppm upgrade

# 5. Install new plugin
ppm install luckperms

Cache System

The plugin manager uses an intelligent caching system stored in papermc_plugin_manager.yaml:

  • Plugin Cache: Stores metadata for installed plugins (SHA1, version info, project details)
  • Project Cache: Stores project information for faster lookups
  • SHA1 Validation: Cache entries are validated using file hashes
  • Auto-Cleanup: Removes stale cache entries for deleted plugins

Cache Commands

# Use cache (default for list and upgrade)
ppm list

# Force refresh cache
ppm update

# Show command uses cache when available
ppm show viaversion

Configuration

Set default platform (currently only Modrinth is supported):

export PPM_DEFAULT_PLATFORM=modrinth

Requirements

  • Python 3.10+
  • PaperMC server (must be run from server directory)
  • Internet connection for plugin downloads

Dependencies

  • typer - CLI framework
  • rich - Beautiful terminal output
  • requests - HTTP client
  • pyyaml - YAML cache files

Project Structure

papermc_plugin_manager/
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ papermc_plugin_manager/
โ”‚       โ”œโ”€โ”€ __init__.py
โ”‚       โ”œโ”€โ”€ __main__.py          # CLI commands
โ”‚       โ”œโ”€โ”€ plugin_manager.py    # Core plugin management logic
โ”‚       โ”œโ”€โ”€ connector_interface.py # Plugin source abstraction
โ”‚       โ”œโ”€โ”€ console.py            # Rich UI components
โ”‚       โ”œโ”€โ”€ utils.py              # Utility functions
โ”‚       โ””โ”€โ”€ connectors/
โ”‚           โ”œโ”€โ”€ modrinth.py       # Modrinth API integration
โ”‚           โ””โ”€โ”€ modrinth_models.py
โ”œโ”€โ”€ tests/
โ”œโ”€โ”€ pyproject.toml
โ””โ”€โ”€ README.md

Examples

Complete Setup Workflow

# Navigate to your PaperMC server directory
cd /path/to/papermc/server

# Search for a plugin
ppm search essentials

# View plugin details
ppm show essentialsx

# Install plugin
ppm install essentialsx -y

# List all installed plugins
ppm list

# Update cache to check for updates
ppm update

# Upgrade all outdated plugins
ppm upgrade -y

Managing Plugin Versions

# Install specific version
ppm install viaversion --version 5.4.1 -y

# Check installation
ppm list | grep ViaVersion

# Downgrade to older version
ppm install viaversion --version 5.3.0 -y

# Upgrade to latest
ppm install viaversion -y

Features in Detail

Outdated Detection

The plugin manager automatically detects outdated plugins by:

  1. Comparing installed version with latest version of same type
  2. Using semantic version comparison
  3. Caching results for performance
  4. Displaying status in the list command

Progress Tracking

All downloads show:

  • Real-time progress bar
  • Download speed
  • Estimated time remaining
  • Total file size

Smart Version Comparison

Handles various version formats:

  • Semantic versions (1.2.3)
  • Prefixed versions (v1.2.3)
  • Build numbers (1.2.3+build.123)
  • Snapshots (1.2.3-SNAPSHOT)

Error Handling

  • Validates PaperMC installation before operations
  • Checks for network connectivity
  • Handles corrupted cache gracefully
  • Provides clear error messages

Troubleshooting

"Could not determine PaperMC version"

Make sure you're running the command from your PaperMC server directory where the version_history.json file exists.

Cache Issues

Delete the cache file and update:

rm papermc_plugin_manager.yaml
ppm update

Plugin Not Found

Try searching with different terms or use the exact plugin ID:

ppm search <term>
ppm show <plugin-id>

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

[Add your license here]

Acknowledgments

Roadmap

  • Support for additional plugin sources (Bukkit, Spigot, Hangar)
  • Plugin dependency resolution
  • Bulk operations (install multiple plugins)
  • Plugin configuration management
  • Backup and restore functionality
  • Web interface

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

papermc_plugin_manager-0.0.1.tar.gz (27.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

papermc_plugin_manager-0.0.1-py3-none-any.whl (23.6 kB view details)

Uploaded Python 3

File details

Details for the file papermc_plugin_manager-0.0.1.tar.gz.

File metadata

  • Download URL: papermc_plugin_manager-0.0.1.tar.gz
  • Upload date:
  • Size: 27.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for papermc_plugin_manager-0.0.1.tar.gz
Algorithm Hash digest
SHA256 63454dd0d240d7199d26b34dfa91245c9fa4822a66d5ff1762574e54a1a214bd
MD5 ebd32042834041bf84e50d9be514ed3a
BLAKE2b-256 a2894d40156fe6bb9ffce1c88be7609353c1c1eac327c7c4065d53d943f6e9c3

See more details on using hashes here.

File details

Details for the file papermc_plugin_manager-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: papermc_plugin_manager-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 23.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for papermc_plugin_manager-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 565b4a48020db9ddabd349cb994363a777c4a567f90fb5a09ac3ca564de7939e
MD5 9c180b4301cf815fad357473e5cd2a53
BLAKE2b-256 5e8295817b3372b1b81f9ff49f4c32e0fb1aa4adaaf8b9cb1bdcb10bd0beebfc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page