diff --git a/app/docs/page.tsx b/app/docs/page.tsx index a68563c..259fb1a 100644 --- a/app/docs/page.tsx +++ b/app/docs/page.tsx @@ -183,13 +183,13 @@ const flow = [ "Restrictions are cleared on Disconnect, Transfer, StartGame, or by sending an empty restriction set.", ]; -const safetyRules = [ - "Only trust packets with the exact message id.", - "Keep payloads small; the client currently caps this path at 64 KiB.", - "Malformed JSON should log and return, never crash the client.", - "Resolve modules through aliases instead of depending on exact UI labels.", - "Do not call onEnable or onDisable directly from packet callbacks.", - "Clear restrictions when sessions change so stale server state cannot leak.", +const serverImplementationNotes = [ + "Send the packet with the exact message id: flarial_client_event:restrict_features.", + "Keep payloads small; avoid resending the same policy every tick.", + "Send valid JSON only. If you generate payloads dynamically, validate them before sending.", + "Use documented module keys/aliases instead of copying UI labels from the client.", + "Re-send or clear restrictions when players switch servers, worlds, or sessions.", + "To clear all restrictions, send an empty module list/object for the same header.", ]; function CodeBlock({ children }: { children: string }) { @@ -253,7 +253,7 @@ export default function DocsPage() { Examples Blockable modules Client behavior - Safety rules + Server implementation notes @@ -347,17 +347,17 @@ export default function DocsPage() { -
+

- Some older restrictions still live as direct server-IP checks in a few modules. Prefer packet-based restrictions for future server policy because they are centrally managed and do not require a client update for every policy change. + Packet-based restrictions are the preferred way to define server policy. They let server owners update restrictions without waiting for hardcoded client-side server checks or a new client release.