HyTari Studios · Offisiell konfigurasjonsguide

Server Router

Konfigurer nettverket ved å forstå hver modul.

En praktisk referanse for Server Router - Network Sync. Følg modulene fra serveridentitet og routes til delte systemer, native scoreboard og valgfri inventory sync. Hver del kombinerer kopierbar JSON med en forklaring av faktisk funksjon.

FØR DU BEGYNNER

Kom i gang

TRINN 01

Installer på alle servere

Bruk samme ServerRouter-build på hver node i nettverket.

TRINN 02

Konfigurer én node om gangen

Gi hver server unik serverId, eget host/port og riktig rolle.

TRINN 03

Test før offentlig tilgang

Kontroller routes og backend-beskyttelse med staff-kontoer før offentlig trafikk.

ServerRouter er nettverksinfrastruktur: konfigurer credentials, hosts, tillatelser og direct-access-regler bevisst. Ta backup av produksjonskonfigurasjonen før flere moduler endres.

KAPITTEL 01 · 1 EKSEMPLER

Installasjon og rolle

Identifiser serveren i nettverket og velg router, backend eller begge.

01KONFIGURASJON

Serveridentitet og rolle

Hver node trenger unik serverId og en adresse de andre serverne kan nå.

KONFIGURASJON
{
  "enabled": true,
  "role": "both",
  "serverId": "hub",
  "host": "hub.example.com",
  "port": 5520,
  "maxPlayers": 100,
  "acceptingPlayers": true
}

mods/ServerRouter/config.json

HVA DET GJØR

Hver node trenger unik serverId og en adresse de andre serverne kan nå.

VIKTIG ATFERD

  • role: main aktiverer routing, backend mottar transfers og both kombinerer rollene.
  • serverId må være stabil og samsvare med verdien i routes og nettverksmoduler.
  • acceptingPlayers kan midlertidig fjerne en server fra destinasjoner uten å slå den av.

KAPITTEL 02 · 1 EKSEMPLER

Database og heartbeat

Konfigurer MariaDB og hvor ofte hver server publiserer status.

01KONFIGURASJON

MariaDB, heartbeat og online-status

ServerRouter bruker MariaDB til å dele status, presence, transfers og nettverksmoduler.

KONFIGURASJON
{
  "databaseHost": "127.0.0.1",
  "databasePort": 3306,
  "databaseName": "hytale_network",
  "databaseUser": "serverrouter",
  "databasePassword": "CHANGE_ME",
  "tablePrefix": "server_router_",
  "heartbeatIntervalSeconds": 5,
  "offlineTimeoutSeconds": 15
}

mods/ServerRouter/config.json

HVA DET GJØR

ServerRouter bruker MariaDB til å dele status, presence, transfers og nettverksmoduler.

VIKTIG ATFERD

  • Alle servere i samme nettverk må bruke samme database.
  • heartbeatIntervalSeconds styrer hvor ofte noden oppdaterer status.
  • offlineTimeoutSeconds bestemmer når en node uten heartbeat regnes som utilgjengelig.

KAPITTEL 03 · 1 EKSEMPLER

Routes og kommandoer

Definer destinasjoner, kommandoer, aliases, tillatelser og route-meldinger.

01KONFIGURASJON

Routes, kommandoer, aliases og tillatelser

Hver route kobler en kommando til en destinasjonsserver og kontrolleres før transfer.

KONFIGURASJON
{
  "routes": [
    {
      "name": "Survival",
      "command": "survival",
      "aliases": [
        "sopravvivenza"
      ],
      "serverId": "survival",
      "host": "survival.example.com",
      "port": 5522,
      "permission": "serverrouter.command.survival"
    }
  ]
}

mods/ServerRouter/config.json → routes[]

HVA DET GJØR

Hver route kobler en kommando til en destinasjonsserver og kontrolleres før transfer.

VIKTIG ATFERD

  • Kommandoen lagres uten slash i JSON og brukes som /survival i spillet.
  • aliases legger til alternative navn for samme transfer.
  • Før referral kontrollerer ServerRouter status, kapasitet og tilgjengelighet.

KAPITTEL 04 · 1 EKSEMPLER

Transfersikkerhet

Beskytt backends og styr midlertidige autorisasjoner, rejoin og cooldowns.

01KONFIGURASJON

Backend-beskyttelse og transfer-tokens

Backends kan nekte direkte tilgang og bare godta spillere fra autoriserte transfers.

KONFIGURASJON
{
  "allowDirectAccess": false,
  "allowSameServerRejoin": true,
  "sameServerRejoinSeconds": 300,
  "accessTokenTtlSeconds": 60,
  "accessTokenSecret": "",
  "portalArrivalCooldownEnabled": true,
  "portalArrivalCooldownSeconds": 20,
  "loginPortalSafetySeconds": 20
}

mods/ServerRouter/config.json

HVA DET GJØR

Backends kan nekte direkte tilgang og bare godta spillere fra autoriserte transfers.

VIKTIG ATFERD

  • Med allowDirectAccess=false brukes midlertidig autorisasjon fra kildeserveren.
  • Hytales native whitelist er fortsatt siste autoritet for tilgang.
  • Arrival-cooldowns hindrer utilsiktet portal-bounce rett etter login eller transfer.

KAPITTEL 05 · 1 EKSEMPLER

Portaler

Bruk samme routes til reiseportaler med samme nettverkskontroller.

01KONFIGURASJON

Portaler knyttet til routes

Portaler bruker routerens destinasjoner og samme tilgjengelighets- og sikkerhetssjekker.

KONFIGURASJON
{
  "routes": [
    {
      "name": "Dungeon",
      "command": "dungeon",
      "aliases": [],
      "serverId": "dungeon",
      "host": "dungeon.example.com",
      "port": 5521,
      "permission": "serverrouter.command.dungeon"
    }
  ],
  "portalArrivalCooldownEnabled": true,
  "portalArrivalCooldownSeconds": 20
}

mods/ServerRouter/config.json → routes[]

HVA DET GJØR

Portaler bruker routerens destinasjoner og samme tilgjengelighets- og sikkerhetssjekker.

VIKTIG ATFERD

  • Ingen ekstra destinasjon trengs: routen er felles kilde.
  • Portal-assets genereres av pluginen og lastes som runtime asset pack.
  • Hvis destinasjonen er offline, full eller utilgjengelig, blokkeres transfer.

KAPITTEL 06 · 1 EKSEMPLER

Delte systemer

Chat, events, player list og Presence API deler informasjon mellom alle servere.

01KONFIGURASJON

Global chat og events

Serverne kan dele chat og viktige events slik at Hub, Survival, Dungeon, Creative og andre noder oppleves som ett nettverk.

KONFIGURASJON
{
  "networkChat": {
    "enabled": true,
    "pollSeconds": 1,
    "messageTtlSeconds": 300,
    "maxMessageLength": 300,
    "captureMode": "eliteessentials",
    "serverDisplayNames": {
      "hub": "Hub",
      "survival": "Survival",
      "creative": "Creative"
    },
    "remoteFormat": "&8[&b%server%&8] &r%chat_format%",
    "fallbackFormat": "&8[&b%server%&8] &7%player%&r: &f%message%"
  },
  "networkEvents": {
    "enabled": true,
    "pollSeconds": 1,
    "eventTtlSeconds": 300,
    "joinEnabled": true,
    "quitEnabled": true,
    "switchEnabled": true,
    "suppressServerSwitchJoinQuit": true,
    "quitDelaySeconds": 3,
    "respectVanish": true
  }
}

mods/ServerRouter/config.json

HVA DET GJØR

Serverne kan dele chat og viktige events slik at Hub, Survival, Dungeon, Creative og andre noder oppleves som ett nettverk.

VIKTIG ATFERD

  • Network Chat videresender meldinger mellom deltakende servere med navn på kildeserver og et felles konfigurerbart format.
  • captureMode velger kilde for lokal chat; remoteFormat bruker eksisterende formatering og fallbackFormat gir et trygt alternativ.
  • serverDisplayNames gir lesbare navn som Hub, Survival eller Creative i stedet for teknisk serverId.
  • Network Events kan kunngjøre join, quit og serverbytte i hele nettverket; hver type styres separat.
  • suppressServerSwitchJoinQuit hindrer serverbytte i å se ut som falsk quit + join.
  • quitDelaySeconds skiller ekte disconnect fra pågående transfer; respectVanish beskytter skjulte spillere når integrasjonen støtter det.
  • Network Player List og Presence API deler presence uten at hver integrasjon må spørre databasen separat.

KAPITTEL 07 · 2 EKSEMPLER

Native scoreboard

Konfigurer innhold, plassering, farger, logo og overrides for worlds eller dynamiske instances.

01KONFIGURASJON

Global scoreboard

Native scoreboard er uavhengig og kan plasseres i et av fire hjørner med pixel-offsets.

KONFIGURASJON
{
  "refreshSeconds": 10,
  "horizontal": "right:0",
  "vertical": "top:0",
  "boardWidth": 180,
  "backgroundColor": "default",
  "backgroundAlpha": 0.2,
  "logo": "hytari_logo.png",
  "logoWidth": 256,
  "logoHeight": 64,
  "maxLines": 12,
  "lines": [
    "&fOnline: &b{serverrouter_total_online} &7| &fTPS: &b{tps}",
    "&fPlayer: &b{player}",
    "&fWorld: &b{world}"
  ]
}

mods/ServerRouter/scoreboard.json

HVA DET GJØR

Native scoreboard er uavhengig og kan plasseres i et av fire hjørner med pixel-offsets.

VIKTIG ATFERD

  • Native scoreboard er valgfri og kan slås av uten å deaktivere ServerRouter eller nettverksfunksjonene.
  • horizontal godtar left:<px> eller right:<px>; vertical top:<px> eller bottom:<px>.
  • backgroundColor godtar default, none eller HEX #RRGGBB.
  • logo: none skjuler logoen. Linjer støtter formatering og dynamiske placeholders.
  • Eksterne scoreboards kan bruke ServerRouter-placeholders uten å vise den native.
02KONFIGURASJON

Overrides per world og dynamiske instances

Et world kan arve global konfigurasjon og bare endre nødvendige felt.

KONFIGURASJON
{
  "worlds": {
    "instance-Forgotten_Temple-*": {
      "enabled": true,
      "horizontal": "left:18",
      "vertical": "bottom:120",
      "backgroundColor": "#0E4E0D",
      "backgroundAlpha": 0.25
    },
    "creative_world": {
      "enabled": false
    }
  }
}

mods/ServerRouter/scoreboard.json → worlds

HVA DET GJØR

Et world kan arve global konfigurasjon og bare endre nødvendige felt.

VIKTIG ATFERD

  • Matching er case-insensitive og støtter * for instances med dynamisk suffix.
  • Prioritet: eksakt world-navn > mest spesifikk wildcard > global konfigurasjon.
  • Et override kan endre plassering, linjer, bredde, bakgrunn eller logo uten å duplisere hele blokken.

KAPITTEL 08 · 2 EKSEMPLER

Inventory Sync og ItemQuality

Synkroniser inventories sikkert og bevar ItemQuality mellom ulike registries.

01KONFIGURASJON

Inventory Sync

Inventory sync er valgfri og bruker midlertidige locks for load, save og samtidige transfers.

KONFIGURASJON
{
  "inventorySync": {
    "enabled": false,
    "lockTtlSeconds": 120,
    "lockRefreshSeconds": 30,
    "autoSaveEnabled": true,
    "autoSaveIntervalSeconds": 600,
    "profileSaveDelayMillis": 1500,
    "loadingInventoryMessageEnabled": true,
    "loadingInventoryMessage": "server.serverrouter.inventory.loading",
    "lockedInventoryMessage": "server.serverrouter.inventory.locked",
    "debugQualityMapping": false,
    "qualityMappingLogRetentionDays": 3
  }
}

mods/ServerRouter/config.json → inventorySync

HVA DET GJØR

Inventory sync er valgfri og bruker midlertidige locks for load, save og samtidige transfers.

VIKTIG ATFERD

  • Aktiver bare på servere som skal dele samme inventory-profil.
  • Locks hindrer samtidige tilganger som kan gi duplisering eller overskriving.
  • La debugQualityMapping være av ved normal drift.
02KONFIGURASJON

ItemQuality mellom ulike registries

ServerRouter bevarer kvaliteters semantiske identitet i stedet for bare runtime-indekser.

KONFIGURASJON
{
  "itemQualityMapping": {
    "enabled": false,
    "log-to-file": true,
    "log-to-console": false
  }
}

mods/ServerRouter/config.json

HVA DET GJØR

ServerRouter bevarer kvaliteters semantiske identitet i stedet for bare runtime-indekser.

VIKTIG ATFERD

  • ItemQuality-diagnostikk er mest nyttig ved ulike registries eller mods.
  • Hvis en kvalitet mangler på destinasjonen, brukes sikker fallback og original identitet bevares når mulig.
  • Mappinglogger er diagnostikk og ikke nødvendig for et stabilt nettverk.

KAPITTEL 09 · 1 EKSEMPLER

Placeholders, API og diagnostikk

Integrer companion mods, last scoreboard på nytt og bruk diagnostikk ved behov.

01KONFIGURASJON

Placeholders og API for companion mods

Scoreboard har interne placeholders, og en offentlig API lar andre mods registrere nye uten patching.

KONFIGURASJON
{
  "integrations": {
    "api": {
      "enabled": true,
      "cacheSeconds": 10
    },
    "betterScoreBoard": {
      "enabled": false,
      "registerPlaceholders": true
    }
  },
  "scoreboardExample": [
    "{player}",
    "{world}",
    "{tps}",
    "{serverrouter_total_online}",
    "{myplugin_rank}"
  ]
}

Java API + scoreboard.json

HVA DET GJØR

Scoreboard har interne placeholders, og en offentlig API lar andre mods registrere nye uten patching.

VIKTIG ATFERD

  • Custom placeholders er case-insensitive og kan ikke overta allerede løste interne placeholders.
  • Native scoreboard kan være av; ServerRouter-placeholders kan brukes i kompatible eksterne scoreboards eller mods.
  • BetterScoreBoard støttes via dedikert integrasjon. For andre scoreboards kan spesifikk kompatibilitet vurderes.
  • Read-only Presence/Network API hindrer separate databasekall fra hver mod.
  • Bruk /scoreboard reload etter endringer i konfigurasjon, logo eller layout.

Før du bruker et eksempel

Eksemplene fokuserer bevisst på én modul om gangen. Flett egenskapene inn i riktig fil i stedet for å erstatte full produksjonskonfigurasjon med et delvis eksempel.

Databaseopplysninger og hosts er eksempler. Publiser aldri ekte passord eller secrets, og del bare samme database mellom servere i samme betrodde nettverk.

Den offentlige releasen bruker horizontal/vertical for scoreboard-posisjonering. Gamle offsetRight/offsetTop-felt fra utviklingsbuilds er ikke del av dokumentert konfigurasjon.

TIL TOPPEN