ModsJava
stream-guard
Configurable Paper/Spigot plugin that gates world interaction behind live stream verification. Resources
⬇ Download on HangarOpen in MCModsHubGet it on Google Play →# StreamGuard
StreamGuard is a survival-server guardrail for communities that want world interaction gated behind
live stream verification.
Unverified players can be allowed to move, chat, and use safe commands, or they can be frozen,
command-limited, or kicked. World-affecting actions are configured separately, so each server can
choose how strict the live requirement should be.
## Server Target
- Paper/Spigot `1.20.1+`
- Java `17+`
- Classic `plugin.yml`
- No NMS or CraftBukkit internals
## Player Flow
Players manage their stream link from the server:
```text
/stream setup
/stream status
/stream link twitch
/stream link youtube
/stream verify
/stream cancel
```
Admins manage access, manual verification, and bypasses:
```text
/streamguard status
/streamguard bypass grant [duration] [reason]
/streamguard bypass remove
/streamguard verify [manual|twitch|youtube] [reason]
/streamguard unverify [reason]
/streamguard reload
```
Bypass durations support `s`, `m`, `h`, and `d` suffixes, such as `30m`, `2h`, or `1d`. Omitting
the duration grants a persistent bypass.
## Configuration
`config.yml` separates player state rules from world-affecting action rules.
- `enforcement.unlinked` controls players who have not linked a stream account.
- `enforcement.not-live` controls linked players who are not currently live.
- `enforcement.blocked-actions` controls block break/place, containers, pickup/drop, crafting,
trading, entity damage/interact, buckets, fire, and other guarded interactions.
- `onboarding.enabled` controls the optional provider-picker setup flow.
- `onboarding.provider-picker` controls the chest GUI title, rows, filler item, cancel item, and
provider buttons.
- `onboarding.chat-input` controls chat input timeout, max length, cancel keyword, and whether to
verify immediately after linking.
- `web.live-feed` controls the optional live feed API, CORS origins, refresh interval, and provider
metadata cache for the companion site.
- `commands.safe-while-unverified` keeps commands such as `/stream`, `/login`, and `/register`
usable when command blocking is enabled.
Each state can independently allow or block movement, chat, commands, and kick-on-join.
## Providers
Twitch verification uses the Helix streams API with:
```yaml
providers:
twitch:
enabled: true
client-id: ""
client-secret: ""
```
YouTube verification uses the YouTube Data API with:
```yaml
providers:
youtube:
enabled: true
api-key: ""
```
YouTube links accept either a channel ID or `@handle`.
Provider identity is modeled as data, not as a closed enum. A future provider, such as Discord
streaming presence, can add an infrastructure adapter and register its provider ID without changing
the core access policy.
## Companion Site
The optional live wall lives at
[minecraft-stream-guard-site](https://github.com/lutzseverino/minecraft-stream-guard-site). It reads
StreamGuard's `/api/live` feed and renders the currently live players as a fullscreen web wall.
## Support
StreamGuard is free and open source. If it helps your server, you can support development on
[Ko-fi](https://ko-fi.com/lutzseverino).
## Links
- Source: https://github.com/lutzseverino/minecraft-stream-guard
- Companion site: https://github.com/lutzseverino/minecraft-stream-guard-site
- Support development: https://ko-fi.com/lutzseverino
## License
StreamGuard is licensed under GPL-3.0-only.
stream-guard is a free Minecraft Java mod. Compatible with Minecraft 1.20.1, 1.20.2, 1.20.3, 1.20.4 and newer. Available via Hangar. Download it and open it directly in the game.
Explore more