{ if (isDialogBackdrop(event, dialog) && !busy && !saving) open = false; }} oncancel={event => { if (busy || saving) event.preventDefault(); }} onclose={() => open = false}>

{preview ? 'Review server launch' : 'Create server'}

  1. 01 Choose a starting point
  2. 02 Review & launch
{#if error}{/if} {#if !loaded}

{error ? 'Your launch choices could not be loaded.' : 'Loading your maps and collections…'}

{#if error}{/if} {:else if preview} {#if keyNotice}

{keyNotice}

{/if} {#if expired}

This preview expired. Refresh it to recheck capacity. Keys stay entered when the server ID is unchanged.

{/if}
{#if preview.blueprintName}

From collection: {preview.blueprintName}

{/if}

Before you launch

    {#each preview.checks as check}
  • {check.state === 'pass' ? '✓' : check.state === 'blocked' ? '!' : 'i'}
    {check.label}

    {check.detail}

  • {/each}
{ event.preventDefault(); void launch(); }}>
Your new server{preview.name ?? 'Waiting for an available lobby'}

{preview.port ? `Port ${preview.port} · ` : ''}Fresh identity, with its own server key.

{#if preview.hasSavedKey}

Saved key ready

{:else}{/if}

{preview.hasSavedKey ? 'The saved key for this server ID will be reused automatically. Its validity is checked when the game starts. Update it in Keys.' : 'Add the key here. It is saved for this exact server ID when you launch, including if provisioning fails.'} Manage saved keys in a new tab; your launch stays open here.

{#if !sourceDeploymentId}{/if}
{#if !preview.hasSavedKey && !plutoKey.trim()}

Enter this server’s key to enable launch.

{/if}

Preview valid until {$timeFormat.minuteTime(preview.expiresAt)}. Lobby and port availability are checked again at launch.

Make this a reusable collection

Save this game and map with a target of one lobby. Future launches use the latest promoted setup and create only missing lobbies.

{#if savedName}

“{savedName}” is ready in your collection library.

{:else}
{ event.preventDefault(); void save(); }}>
{/if}
{:else if sourceDeploymentId}

{busy ? 'Preparing the current promoted setup…' : 'Review the latest promoted setup for this map with a fresh lobby and port.'}

{:else}
{ event.preventDefault(); void review(); }}> {#if selectedBlueprint}

{selectedBlueprint.totalServers} target server{selectedBlueprint.totalServers === 1 ? '' : 's'}

{#each selectedBlueprint.entries as entry}

{entry.count}× {entry.mapName} · {entry.game.toUpperCase()}

{/each}

Review missing servers and their keys together. Every new server uses the latest promoted scripts, plugins, and configuration.

{#if selectedBlueprint.description}

{selectedBlueprint.description}

{/if}
{:else}

Pick a map to review its current promoted scripts, plugins, and configuration. You can save the map as a collection for future launches.

{/if}
Know what you’re launching.

Review the current promoted setup, available lobby, and launch prerequisites before creating your server.

{/if}