Skip to content

1attila/Conduit

Repository files navigation

Conduit Logo

Python Versions PyPI Version License

A powerful, lightweight, and independent Python framework for building Minecraft server plugins.


✨ See it in action!

Conduit unlocks completely new possibilities for Vanilla Minecraft servers using the power of Python. Here are just a few examples of what you can build:

Renderer Plugin
📸 Renderer
Render in-game screenshots and automatically send them via a Discord bot!
Litematic Plugin
🏗️ Litematic
A pure, mod-less Python implementation for loading Litematica schematics directly into your world.
PictureLoader Plugin
🖼️ PictureLoader
Load high-quality, realistic images directly in-game.
Status Plugin
🖥️ Status
Fetch and monitor the real-time status of any machine running on the server.

📖 What is Conduit?

Conduit is an easy-to-use tool that allows you to control one or multiple Minecraft servers using Python.

It is designed with flexibility in mind and can be used in two ways:

  1. As a Standalone Program: Run python -m mconduit from your console, and it will automatically load all your plugins, connect to your servers, and start listening to events. Look how to install (it's very quick and easy)!

  2. As an API Framework: Import mconduit directly into your own Python applications to harness its powerful features - like Rcon dispatching, log-tailing, and data fetching - on your own terms.

🚀 Key Features

  • Completely Independent: Runs in a parallel process. Update or restart Conduit without having to restart your Minecraft server!
  • Modern Python API: Clean, intuitive, and strongly typed APIs for the best Developer Experience (DX).
  • Event-Driven: Uses Pygtail to actively read server logs, efficiently extracting useful information to trigger your custom events.
  • Rcon Integration: Execute commands and fetch player information seamlessly via Rcon.
  • Rich Feature Set: Built-in support for Permissions, Custom Commands, Multilingual translation, JSON Text generation, Data fetching, and a comprehensive CLI.

⚙️ How it Works (Conduit vs MCDR)

Conduit is highly inspired by MCDReforged, but with a major architectural difference: Conduit doesn't run the Minecraft server directly. It runs in a parallel process, communicating via Pygtail (Logs) and Rcon.

This prevents server crashes if something fails and makes it reloadable at runtime!

Another important difference is that Conduit allows managing multiple servers from a single instance.

The Conduit Architecture

flowchart LR
    %% Colors and Styles
    classDef user fill:#f9a826,stroke:#333,stroke-width:2px,color:#000;
    classDef conduit fill:#2196f3,stroke:#fff,stroke-width:2px,color:#fff;
    classDef plugin fill:#ffca28,stroke:#333,stroke-width:2px,color:#000;
    classDef mc fill:#4caf50,stroke:#fff,stroke-width:2px,color:#fff;
    classDef log fill:#607d8b,stroke:#fff,stroke-width:1px,color:#fff;

    U([👤 User]):::user

    subgraph ConduitSystem["Conduit Framework (Single Process)"]
        direction TB

        Handler(⚙️ Handler):::conduit
        Plug([🧩 Plugins]):::plugin

        Plug <--> Handler
    end    

    %% Servers
    subgraph S1["Survival Server"]
        direction TB

        MC1(Minecraft):::mc
        L1(📄 latest.log):::log
        MC1 --> L1
    end

    subgraph S2 ["Creative Server"]
        direction TB

        MC2(Minecraft):::mc
        L2(📄 latest.log):::log
        MC2 --> L2
    end

    %% User Interaction
    U <-.->|💻 CLI| Handler

    %% Connections

    Handler <-.->|🛜 Rcon| MC1
    Handler <--->|📜 Pygtail| L1
    
    Handler <-.->|🛜 Rcon| MC2
    Handler <--->|📜 Pygtail| L2
Loading

This instead is a simplified scheme of how MCDR works:

flowchart LR
    %% Colors and Styles
    classDef user fill:#f9a826,stroke:#333,stroke-width:2px,color:#000;
    classDef mcdr fill:#2196f3,stroke:#fff,stroke-width:2px,color:#fff;
    classDef plugin fill:#ffca28,stroke:#333,stroke-width:2px,color:#000;
    classDef mc fill:#4caf50,stroke:#fff,stroke-width:2px,color:#fff;

    U([👤 User]):::user

    subgraph Env1["Survival Environment"]
        direction TB

        M1(⚙️ MCDR):::mcdr
        P1([🧩 Plugins]):::plugin
        S1(Minecraft):::mc
        
        M1 <--> P1
        M1 <-->|Stdio| S1
    end

    subgraph Env2 ["Creative Environment"]
        direction TB

        M2(⚙️ MCDR):::mcdr
        P2([🧩 Plugins]):::plugin
        S2(Minecraft):::mc
        
        M2 <--> P2
        M2 <-->|Stdio| S2
    end

    %% User Interaction
    U <-.->|💻 CLI| M1
    U <-.->|💻 CLI| M2
Loading

Why choose Conduit?

Pros:

  • Easier and faster setup out of the box.

  • Completely independent process (safeguards your MC server uptime).

  • Update and reload plugins without stopping the Minecraft server.

  • One central CLI to manage handlers/attributes across multiple servers.

  • Extremely nice and pythonic API.

Current Limitations:

  • Currently only fully supports Vanilla (Bukkit/Spigot/Paper support coming soon).

🛠️ Quick Start

It's much easier to set up than you might think! Install Conduit via pip:

pip install mconduit

To run Conduit directly from the console:

python -m mconduit

Check out our comprehensive Wiki: How to Install for a full step-by-step configuration guide.


📚 Documentation

Everything you need to know about building plugins, configuring the server, and utilizing the API can be found on our Wiki.

🗺️ Roadmap

We are actively developing Conduit. Future updates include:

  • Support for Bukkit / Spigot / Paper / Forge / Fabric log formats.
  • More event hooks and deeper data fetching.
  • Further CLI enhancements.

🤝 Contributing

Contributions are more than welcome! Whether it's reporting bugs, suggesting features, writing documentation, or creating awesome new plugins.

  • Discord: Contact me directly at attila8829 or join MultiTech discord
  • Pull Requests: Feel free to open an issue or PR on this repository!

💙 Credits

This project was heavily inspired by the amazing work done by the MCDReforged team. Huge credits to them for pioneering this space!

About

A tool to control multiple Minecraft servers with Python!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages