Servers {#if s && d}

{s.name}

{[ s.software ? `${s.software}${s.mc_version ? ` ${s.mc_version}` : ''}` : 'Not connected yet', s.plugin_version ? `integration ${s.plugin_version}` : null, s.online ? 'online' : s.last_seen ? `last seen ${timeAgo(s.last_seen)}` : null, ].filter(Boolean).join(' · ')}

{#if s.map_address} Open map{/if}
{#if !s.last_seen}

Waiting for the server to connect

Install the SCOPENET plugin or mod and put the token (ending in …{s.token_hint}) in its config. Lost it? Generate a new one.

{/if}
Online now{s.players} / {s.max_players || '–'}
TPS{s.online && s.tps != null ? s.tps.toFixed(1) : '–'}
Players seen{n(d.totals.players)}
Total playtime{duration(d.totals.playtime_secs)}

Leaderboard

{#if d.leaderboard.length}
{#each columns as c}{/each} {#each d.leaderboard as row, i (row.uuid)} {#each columns as c}{/each} {/each}
#Player{c.label}Last seen
{i + 1} {row.name}{cell(row, c.id)}{d.online_players.some((p) => p.uuid === row.uuid) ? 'Online' : timeAgo(row.last_seen)}
{:else}

Stats appear once players join.

{/if}

Online

{d.online_players.length}
{#if d.online_players.length}
{#each d.online_players as p (p.uuid)}
{p.name}{timeAgo(p.joined_at).replace(' ago', '')}
{/each}
{:else}

Nobody's online.

{/if}

Activity

{#if d.events.length}
{#each d.events as e (e.id)} {@const Icon = eventIcon[e.kind] ?? CircleDot}
{#if showName(e)}{e.name}{' '}{/if}{eventText(e)} {timeAgo(e.created_at)}
{/each}
{:else}

Joins, deaths and advancements show up here.

{/if}
{:else}
{/if}
{#snippet footer()} {/snippet}

The current token stops working immediately — the server disconnects from the panel until you update its config.

{#snippet footer()} {/snippet}
{#if token}{/if} {#snippet footer()} {/snippet}

Its token stops working and all stats and events collected for it are deleted.

{#snippet footer()} {/snippet}