You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
CommandBridge is a proxy-to-backend command bridge for Minecraft networks running on Velocity. you write commands as YAML scripts on the proxy, CB validates them, registers them on whichever servers you specified, and handles dispatch. a player runs `/lobby` on a backend, the proxy picks it up. an admin runs `/alert` on Velocity, every backend executes it. commands go through instantly.
28
+
29
+
the whole reason this exists: plugin messages need a connected player to work. if a server is empty, you can't send commands to it. CB uses persistent WebSocket connections (or Redis) to fix that. commands work regardless of player presence.
30
+
31
+
one jar works everywhere. install the same file on Velocity and all your backends. it auto-detects the platform.
32
+
33
+
for the full writeup with visuals check the [documentation](https://cb.objz.dev), the [Modrinth page](https://modrinth.com/plugin/commandbridge), [Hangar](https://hangar.papermc.io/objz/CommandBridge/), or [SpigotMC](https://www.spigotmc.org/resources/commandbridge.133217/).
everything gets shaded into a single fat jar. there are a few modules but you only ever deal with one file.
22
55
23
-
CommandBridge connects your Velocity proxy to your backend servers using WebSockets(version 3.1.0 covers redis as alternative). It lets you run commands across your network even if no players are online.
56
+
`core` is the shared library that both sides depend on. networking (WebSocket via Undertow, Redis via Jedis), the YAML scripting engine with validation, security (TLS, auth), config management, and logging. anything that isn't platform-specific lives here.
24
57
25
-
### The Problem
58
+
`velocity` is the proxy-side plugin. command registration, the dispatch pipeline, the admin CLI, and the UI output all live here. this is the "server" side of the bridge.
26
59
27
-
Plugin messages need a player to work. If a server is empty, you can't send commands to it. CommandBridge uses persistent connections(or redis) to fix this.
60
+
`backends` is the shared client library for all backend platforms. it handles connecting to the proxy, routing incoming messages, and platform abstraction. underneath it there are platform-specific adapters for Bukkit, Paper, Folia, and Velocity-as-client. the adapters are kept thin on purpose, they only deal with thread dispatch and platform-specific API calls. shared logic stays in the parent module.
28
61
29
-
<palign="right">(<ahref="#top">back to top</a>)</p>
62
+
`api` is the public developer API for other plugins. channels, events, platform info. more on that below.
30
63
31
-
## Built With
64
+
`dist` handles shadow JAR packaging and publishing to Modrinth and Hangar.
32
65
33
-
[![Java][Java]][Java-url]
34
-
[![Undertow][Undertow]][Undertow-url]
35
-
[![Jackson][Jackson]][Jackson-url]
36
-
[![Velocity][Velocity]][Velocity-url]
37
-
[![Paper][Paper]][Paper-url]
38
-
[![Gradle][Gradle]][Gradle-url]
66
+
---
39
67
40
-
<palign="right">(<ahref="#top">back to top</a>)</p>
<palign="right">(<ahref="#top">back to top</a>)</p>
55
96
56
-
## Roadmap
97
+
---
98
+
99
+
## developer API
100
+
101
+
CB has a public API module for other plugins to interact with the bridge network. source is at [`api/`](https://github.com/objz/CommandBridge/tree/v3/api/src/main/java/dev/objz/commandbridge/api), full documentation will be on [cb.objz.dev](https://cb.objz.dev).
102
+
103
+
```java
104
+
CommandBridgeAPI api =CommandBridgeProvider.get();
0 commit comments