> For the complete documentation index, see [llms.txt](https://docs.ohalee.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ohalee.com/products/modern-bedwars/architecture.md).

# Architecture

Modern BedWars is made of **four independently deployable modules** plus a few shared libraries. The modules talk to each other **exclusively over Redis pub/sub** — there is no BungeeCord plugin-messaging channel to configure. MariaDB stores persistent data: stats, cosmetics, disguises and leaderboards.

## Topology

```
                    +-------------------+
        players --> | Velocity proxy    |   <-- bedwars-proxy plugin
                    +---------+---------+
                              |
              +---------------+---------------+
              |                               |
     +--------v---------+            +--------v---------+
     | Lobby server(s)  |            | Game server(s)   |
     | Paper            |            | Paper 1.8 / 26.1+ |
     | bedwars-lobby    |            | bedwars          |
     +--------+---------+            +--------+---------+
              |                               |
              +---------------+---------------+
                              |
                  Redis pub/sub + MariaDB
                              |
                    +---------v---------+
                    | bedwars-service   |   <-- standalone Spring Boot
                    +-------------------+
```

## Modules

| Module     | Jar                        | Runs on                      | Role                                                                         |
| ---------- | -------------------------- | ---------------------------- | ---------------------------------------------------------------------------- |
| `velocity` | `Bedwars-Velocity-1.0.jar` | Velocity proxy               | Routes players, `/party`, `/spectate`, cross-server multiplier admin command |
| `master`   | `Bedwars-Lobby-1.0.jar`    | Paper lobby server(s)        | Queueing, leaderboards, profile/cosmetic GUIs, private games                 |
| `instance` | `Bedwars-Instance-1.0.jar` | Paper game server(s)         | Match lifecycle: shop, generators, upgrades, traps, beds, scoreboard         |
| `service`  | `Bedwars-Service.jar`      | Standalone JVM (Spring Boot) | Matchmaking brain: queue processing, server allocation, map distribution     |

All four jars are self-contained ("fat") jars — no extra `lib/` folder is needed. The **service host does not need a Minecraft server**, just a JVM with network access to Redis and MariaDB.
