StreamerSuite
Anti Stream-Sniping
Protect creators on your server from F3 leaks, coordinate exposure, and location tracking.
What it does
StreamerSuite hides the three things a sniper needs — the world seed, real coordinates, and player identity — without ever touching the world itself. Everything runs at the packet layer through PacketEvents, so the server state stays real; only what reaches a protected player's client is rewritten.
Every protection is a per-player setting. It toggles live from chat or the GUI and is saved to SQLite, so it comes back the moment the player logs in.
Features
Bedrock obfuscation
The random bedrock layer leaks the world seed — a single screenshot is enough to recover it. StreamerSuite rewrites that layer with a pattern derived from a private server seed, and keeps block updates near bedrock in sync so the fake pattern never desyncs or gives itself away.
Location obfuscation
Every coordinate sent to the player is shifted by a hidden, chunk-aligned offset, and their movement and block interactions are quietly shifted back. F3 shows a believable but false position while gameplay stays exactly the same. Toggling it reloads the world through a same-tick bounce — no rejoin needed.
Name obfuscation
Hide the streamer's real name from everyone else — tab list, chat, system messages, team entries and entity metadata — behind a stable alias. Or flip it around and hide everyone else's names from the streamer, so a stream never exposes who else is online.
Skin masking
An outfit identifies a player as fast as a name. Wherever a name is masked, the skin is swapped too, from a bundled database of real, Mojang-signed textures. Each player gets a stable, seed-picked fake skin, overridable from the GUI.
Chat panel & Stream Mode
/streamersuite opens a temporary chat panel: the chat is cleared and every other message ( server, plugins, other players) is muted for you until it closes, so only the panel is on screen. It shows your protection states and a clickable toolbar, plus a Suggestions view that reviews your setup and warns about gaps ("your location obfuscation is off", "custom mask selected but never set").
/stream is one toggle: entering snapshots your current settings and turns every protection on; leaving asks for a quick confirmation and restores your exact previous setup.
Full GUI control
Everything is customisable per player from a clean menu: a private obfuscation seed that reshapes the bedrock pattern, the coordinate offset (zero out your spot, type an exact shift, reroll or reset), the alias other players see, the style masked names render in, and the fake skin. Free-text values are typed through an anvil prompt, and every change is pushed to the client on the spot.
Compatibility
- Paper 1.18.2 and newer
- PacketEvents bundled and relocated — no extra downloads
- No world edits, no NMS which means obfuscation is packet-only
- Commands, aliases and permission nodes are all configurable
- English and Spanish included; add your own language file
Configuration — everything is configurable
Nothing is hard-coded. Feature switches, defaults, the seed, permission nodes, the bedrock pattern per world, the GUI layout, the skin database and every message are all yours to edit. Even the command names and aliases are defined in config — rename them to fit your server.
config.yml
YAML:
# Language file to load from /lang (messages_<language>.properties).
# English and Spanish ship by default — drop in your own and point to it here.
language: en
# Global obfuscation seed. 0 = randomised on first start.
# Every player's bedrock pattern, coordinate offset and alias derive from it.
seed: 0
# Master switches. Turn any feature off server-wide and it never runs.
features:
bedrock: true
location: true
name: true
skin: true
# What each protection defaults to for a player who has never changed it.
defaults:
bedrock: true
location: false
name-self: false
name-others: false
skin: false
# Players listed here are protected automatically — no command needed.
streamers: []
# Every command name and alias is yours to rename.
command:
name: streamersuite # the main command
aliases:
- st # add as many aliases as you like
stream: stream # the one-toggle stream-mode command
# Rename any permission node to match your existing setup.
permissions:
command: streamersuite.command
gui: streamersuite.gui
admin: streamersuite.admin
toggle-bedrock: streamersuite.toggle.bedrock
toggle-location: streamersuite.toggle.location
toggle-name-self: streamersuite.toggle.name-self
toggle-name-others: streamersuite.toggle.name-others
toggle-skin: streamersuite.toggle.skin
location:
# World the live location toggle bounces through. Empty = auto-pick.
bounce-world: ""
bedrock:
# Per-environment bedrock bands, so even custom generators get a correct
# fake pattern. Each band is a from/to range (min+N, max-N or absolute Y),
# a filler block, and an optional thicken-upward flag.
bands:
normal:
- from: min+1
to: min+4
filler: deepslate
nether:
- from: 1
to: 4
filler: netherrack
- from: 123
to: 126
filler: netherrack
thicken-upward: true
end: []
database:
file: preferences.db # SQLite file that persists every player's settings
guis.yml — every menu is a layout you can redraw: title, row pattern, and a bound action per item.
YAML:
settings:
title: "key:gui.title"
pattern:
- "#########"
- "####h####"
- "#d#l#n#k#" # d bedrock l location n name k skin
- "#########"
- "##p#s#e##" # p protect s stream e expose
- "####x####" # x close
items:
d:
material: BEDROCK
name: "key:gui.category.bedrock" # key: pulls from the language file
lore:
- "key:toggle.bedrock.description"
- ""
- "key:gui.open-hint"
action: "open bedrock" # actions: toggle, open, back, close, input, cycle, run
skins.yml — the fake-skin database. Ships with a hundred real, signed textures; add or remove freely.
YAML:
skins:
- name: "Notch"
value: "<base64 texture value>"
signature: "<mojang signature>"
lang/messages_<language>.properties — every line of text, in MiniMessage. Recolour, reword or translate anything.
Code:
stream.on=<prefix> <gray>Stream mode is on. All of your protections are active.
advice.location-off=<red>Your location obfuscation is off; F3 shows your real coordinates.
Run /st reload to pick up GUI, skin, language and most config changes live; the seed, feature master switches and command names apply on the next restart.
Developer API
A dependency-free API module lets other plugins render through a viewer's eyes: mask names in components or strings, read the active coordinate offset to shift structured numbers, ask what a viewer should see for any player, and subscribe to preference changes. Scoreboards and custom overlays stay consistent with the plugin's masking when they render through it.
.
