Talk to your players' client.
A plugin for Spigot and Paper (1.8 and newer). Send notifications, waypoints, cooldowns, vignettes and multi-line nametags to anyone on Solar, give your staff their tools, or turn off mods that don't fit your game mode.
A clean toast in the corner instead of another chat line.
Markers with distance, visible through walls. Per world, up to 64 per player.
Pearl, gapple or ability timers right above the hotbar, with a progress bar.
Tint the edges of the screen: red when the zone closes, gold on a kill streak.
Turn off zoom, fullbright, toggle sprint and more while players are on your server.
Teammates get a marker over their head with name and distance, even far away or behind walls.
Big centered titles with a subtitle and fades. They work on 1.7 too, which has no titles.
Up to 4 colored lines over a player's head: rank, team, health or anything else. From your plugin or straight from the config.
XRay, Nametags through walls and Bunny Hop, only for staff with the permission. They turn off the moment the permission goes away.
Know who plays on Solar, with their version, the moment they join.
Install
- Drop
EmberBridge-1.2.0.jarinto your server'spluginsfolder and restart. - Edit
plugins/EmberBridge/config.yml: your server name, which Solar mods to turn off, nametag lines and an optional welcome notification. Apply it with/emberbridge reload. - Join with Solar and run
/emberbridge demoto see everything at once./emberbridge listshows who's on Solar.
Players on other clients aren't affected: they never register the channel, so nothing is sent to them. Behind BungeeCord or Velocity, install it on each backend server. Once Solar players see the plugin on your server, it gets an "Solar features" badge in the Solar server lists.
Use it from your plugin
Add the API jar as a compileOnly / provided dependency and depend: [EmberBridge] in your plugin.yml. The API is split into modules (EmberBridge.module(...)): Nametag, StaffMod, Notification, Waypoint, Cooldown, Title, Team, Vignette and ModSetting. Each takes Recipients: one player, a list, or everyone on Solar. Everything runs on the main thread.
import gg.ember.bridge.api.*;
public final class ArenaListener implements Listener {
private final NametagModule nametags = EmberBridge.module(NametagModule.class);
private final StaffModModule staff = EmberBridge.module(StaffModModule.class);
private final CooldownModule cooldowns = EmberBridge.module(CooldownModule.class);
@EventHandler
public void onEmberJoin(EmberPlayerJoinEvent e) {
Player p = e.getEmberPlayer().getPlayer();
Recipients them = Recipients.of(p);
EmberBridge.module(NotificationModule.class).displayNotification(them,
Notification.builder().title("Welcome to the arena").body("First to 5 kills wins.").build());
EmberBridge.module(ModSettingModule.class).disableMods(them, Arrays.asList(EmberMod.ZOOM, EmberMod.FULLBRIGHT));
EmberBridge.module(WaypointModule.class).displayWaypoint(them,
Waypoint.builder("mid").name("Middle").location(arena.getCenter()).color("#FBBF24").build());
// everyone on Ember sees this player's rank over their head (also players who join later)
nametags.overrideNametag(Recipients.everyone(), p, Nametag.builder()
.line(ranks.prefix(p))
.line("&f" + p.getName())
.build());
// staff tools for moderators (on top of the emberbridge.staff.* permissions)
if (p.hasPermission("arena.mod")) staff.enableStaffMods(them, StaffMod.XRAY, StaffMod.NAMETAGS);
}
@EventHandler
public void onPearl(ProjectileLaunchEvent e) {
if (!(e.getEntity() instanceof EnderPearl)) return;
Player p = (Player) e.getEntity().getShooter();
cooldowns.displayCooldown(Recipients.of(p),
Cooldown.builder("pearl").name("Ender pearl").duration(15_000).color("#C084FC").build());
}
}Staff mods
Give the permission to your staff (ops have emberbridge.staff.* by default). They find the mods under Staff in the Solar mods menu, and only while they're on your server. Remove the permission and the mod turns off in their client within a second.
emberbridge.staff.xrayOnly ores, ancient debris and spawners stay visible, at full brightness.emberbridge.staff.nametagsEvery player's name through walls, from any distance, even sneaking or invisible.emberbridge.staff.bunnyhopJumps for you while you run forward, to keep up with someone.Nametags without code
Turn on nametags in the config and pick the lines. Placeholders: {name}, {displayname}, {health}, {world} and {ping}, with & color codes. Try one by hand with /emberbridge nametag <player> &cADMIN | &fName.
Mods you can turn off
zoomZoomfullbrightFullbrighttogglesprintToggle sprinttogglesneakToggle sneaktimechangerTime changernofogNo fogclearweatherClear weatherwaypointsPersonal waypoints (yours still show)pingsParty pingscrosshair3rdThird person crosshairThe protocol
Not on Bukkit? It's plain JSON on the ember:bridge plugin channel, so any server software can speak it. Solar registers the channel when it joins and then says hello.
// server → client, on the "ember:bridge" plugin channel (UTF-8 JSON)
{"type":"notification","title":"Welcome","body":"Have fun"}
{"type":"waypoint.add","id":"mid","name":"Middle","x":0,"y":64,"z":0,"color":"#FBBF24"}
{"type":"waypoint.remove","id":"mid"} {"type":"waypoint.clear"}
{"type":"cooldown.add","id":"pearl","name":"Ender pearl","millis":15000,"color":"#C084FC"}
{"type":"cooldown.remove","id":"pearl"}
{"type":"rules","disabled":["zoom","fullbright"]}
{"type":"vignette","color":"#E11D2E","opacity":0.4}
{"type":"title","title":"Round 1","subtitle":"Fight!","fadeIn":300,"stay":2000,"fadeOut":600}
{"type":"team","color":"#4ADE80","members":[{"uuid":"…","name":"Kairo","x":12.5,"y":64,"z":-3.2}]}
{"type":"nametag","uuid":"…","lines":["§c§lADMIN","§fKairo","§a20 HP"]} // protocol 3
{"type":"nametag.reset","uuid":"…"} {"type":"nametag.clear"}
{"type":"staff","mods":["xray","nametags"]} // the whole list: anything missing turns off
// client → server, right after joining
{"type":"hello","protocol":3,"version":"0.55.0+1.8.9","mc":"1.8.9"}Limits: 64 waypoints, 8 cooldowns and 32 teammates per player, cooldowns up to 1 hour, notification titles up to 60 characters, big titles up to 40, nametags up to 4 lines of 64 characters. Nametags and staff mods need protocol 3 (Solar 0.55 and newer); the plugin doesn't send them to older clients. The team list is sent whole every time (members missing from it are removed). Everything is cleared when the player leaves your server.