Skip to content

Commit 865aadb

Browse files
committed
the commanndbridge description
1 parent eb11bb8 commit 865aadb

2 files changed

Lines changed: 130 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ breaking changes:
1414
- removed some unused config values
1515
- script version 3 is now required, older versions wont work anymore
1616

17+
latest commit: 37b29f5

DESCRIPTION.md

Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
![CommandBridge](https://cb.objz.dev/media/bars/compact.svg)
2+
3+
CommandBridge is a cross-server command execution plugin for Minecraft networks running on Velocity. You define commands in YAML scripts on the proxy, and CB registers and dispatches them across all connected backend servers. No plugin messaging, no player-online requirements, no limitations.
4+
5+
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 over WebSocket or Redis.
6+
7+
![separator](https://cb.objz.dev/media/bars/separator.svg)
8+
9+
<div align="center">
10+
<img src="https://cb.objz.dev/media/wordmark.svg" alt="CommandBridge" width="560">
11+
12+
</div>
13+
14+
<br>
15+
16+
<div align="center">
17+
18+
[![Documentation](https://img.shields.io/badge/Documentation-cb.objz.dev-7c3aed?style=for-the-badge)](https://cb.objz.dev)
19+
[![GitHub](https://img.shields.io/badge/GitHub-Source_Code-181717?style=for-the-badge&logo=github)](https://github.com/objz/CommandBridge)
20+
[![Discord](https://img.shields.io/badge/Discord-Join_Server-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/QPqBYb44ce)
21+
22+
</div>
23+
24+
25+
![separator](https://cb.objz.dev/media/bars/separator.svg)
26+
27+
28+
29+
### How it works
30+
31+
Everything runs through scripts. You create a `.yml` file, define the command name, arguments, where it registers, and what happens when someone runs it. Drop it in the scripts folder on Velocity and you're done. CB reads, validates, and registers commands on whichever servers you specified. If something is wrong, it tells you exactly what and skips that script. The rest still loads fine.
32+
33+
Here is a quick example. This registers `/alert` on the proxy and broadcasts a message to two backends as console:
34+
35+
```yaml
36+
version: 3
37+
name: alert
38+
description: Broadcast an alert to all servers
39+
40+
register:
41+
- id: "proxy-1"
42+
location: VELOCITY
43+
44+
defaults:
45+
run-as: CONSOLE
46+
execute:
47+
- id: "lobby"
48+
location: BACKEND
49+
- id: "survival"
50+
location: BACKEND
51+
52+
args:
53+
- name: message
54+
required: true
55+
type: GREEDY_STRING
56+
57+
commands:
58+
- command: "say [Alert]: ${message}"
59+
```
60+
61+
That's a real script. You can do a lot more than that, but this shows how simple the basics are.
62+
63+
![separator](https://cb.objz.dev/media/bars/separator.svg)
64+
65+
### Platforms
66+
67+
One jar works everywhere. Install the same file on Velocity and all your backends.
68+
69+
![6 Platforms](https://cb.objz.dev/media/bars/platforms.svg)
70+
71+
### Transport
72+
73+
Pick one. WebSocket is the default and works out of the box. Redis is there if you need it.
74+
75+
![Transport](https://cb.objz.dev/media/bars/transport.svg)
76+
77+
WebSocket mode: Velocity hosts the server, backends connect to it. No external dependencies. TLS built in.
78+
79+
Redis mode: all instances connect to your existing Redis server. Useful if your servers are behind NAT or you already run Redis for other things.
80+
81+
Both modes support multi-proxy setups. One Velocity runs as the primary, any additional proxies connect in client mode.
82+
83+
### Security
84+
85+
Every connection is authenticated with HMAC-SHA256. Both sides prove they know the secret without ever sending it over the wire. On top of that you get TLS encryption with three modes to choose from.
86+
87+
![Security](https://cb.objz.dev/media/bars/security.svg)
88+
89+
TOFU is the default. Velocity generates a self-signed certificate on first startup, backends pin it automatically. Zero manual certificate management, encrypted from the start.
90+
91+
### Execution modes
92+
93+
Commands can run in three different contexts depending on what you need.
94+
95+
![Execution Modes](https://cb.objz.dev/media/bars/executors.svg)
96+
97+
`CONSOLE` runs with full permissions. `PLAYER` runs as the player who triggered it. `OPERATOR` gives temporary elevated permissions for that specific command and nothing else.
98+
99+
### Arguments
100+
101+
Full argument parsing with tab completion via CommandAPI. 22 types covering everything from basic strings to Minecraft-specific types like players, locations, items, and entities.
102+
103+
![22 Argument Types](https://cb.objz.dev/media/bars/args.svg)
104+
105+
Arguments become `${name}` placeholders in your command strings. PlaceholderAPI is supported too if you need external data like player stats or economy values.
106+
107+
![separator](https://cb.objz.dev/media/bars/separator.svg)
108+
109+
### Built for real networks
110+
111+
CommandBridge is designed for production. Commands can be rate limited per player with cooldowns from milliseconds to hours. If a player is offline when a command targets them, CB queues it and executes it when they come back, even across server restarts.
112+
113+
You can apply delays to individual commands, reload all scripts without restarting with `/cb reload`, and run multiple commands in a single script with different targets and settings each. Everything is managed from one place on the Velocity proxy.
114+
115+
Player presence is tracked across the entire network, including multi-proxy setups. CB knows where every player is at all times, so commands that depend on a player being on a specific server just work. No guessing, no race conditions.
116+
117+
### Requirements
118+
119+
![Requirements](https://cb.objz.dev/media/bars/requirements.svg)
120+
121+
[CommandAPI](https://modrinth.com/plugin/commandapi) is required on every server. [PlaceholderAPI](https://modrinth.com/plugin/placeholderapi) via [PapiProxyBridge](https://modrinth.com/plugin/papiproxybridge) and [PacketEvents](https://modrinth.com/plugin/packetevents) are optional.
122+
123+
![separator](https://cb.objz.dev/media/bars/separator.svg)
124+
125+
### Metrics
126+
127+
This plugin collects anonymous statistics via [bStats](https://bstats.org/). You can disable this in `plugins/bStats/config.yml`.
128+
129+
![bStats](https://bstats.org/signatures/velocity/CommandBridge.svg)

0 commit comments

Comments
 (0)