LegacyShell WikiLegacyShell Wiki
Back to LegacyShell
Home
Wiki
Plugins
Docs
Back to LegacyShell
Home
Wiki
Plugins
Docs
  • Documentation

    • Getting Started

      • What is LegacyShell?
      • Speed Setup
      • Requirements
      • Installation
      • First Run
      • Config Files
      • Making an Account
      • Troubleshooting (Getting Started)
    • Running a Server

      • Architecture Overview
      • The Database
      • Users and Ranks
      • Adding Game Servers
      • Client Mirrors
      • Perpetual
      • Backups
      • Rate Limiting
      • Moderation
      • Closed Mode
      • Deployment
      • Troubleshooting (Running a Server)
      • Hosting for Someone Else's Instance
    • Content Creation

      • Maps
      • Dealing with Babylon Models
      • Map Blocks
      • Items and Skins
      • Hats and Stamps
      • Sounds
      • Gamemodes
      • Seasonal Events
    • Plugin Development

      • Quickstart
      • I Want To...
      • Anatomy of a Plugin
      • Lifecycle
      • Dependencies
      • Events (Concept)
      • Event Reference

        • services: events
        • game: events — shared logic (src/shell/)
        • game: events — main-thread server process
        • game: events — per-connection client object
        • game: events — room lifecycle & tick loop
        • game: events — in-browser gameplay
        • client: events — client server & build pipeline
      • Commands
      • Client-Side Code
      • Static Assets
      • Content Packs
      • Networking
      • Workers and State
      • Prediction and Authority
      • Recipes

        • Recipe: Killstreaks
        • Recipe: New Pickup Item
        • Recipe: New Gamemode
        • Recipe: Custom Weapon
        • Recipe: UI Modification
        • Recipe: Discord Integration
        • Recipe: Replacing Core Behaviour
        • Recipe: Persistent Plugin Storage
        • Recipe: Rewarding Players with Currency
        • Recipe: Custom Per-Player Data
        • Recipe: Custom Theme
      • Publishing
      • Pitfalls
      • Modifiers
      • Sound and Apollo
    • Codebase Reference

      • Repo Layout
      • Shared Shell Layer
      • Server-Only Markers
      • The ss Object
      • Build Pipeline
      • Stamps and Babylons
      • Game Loop
      • Rooms and Workers
      • Wire Protocol
      • Generated

        • Wire Protocol Opcodes
        • Enums & Lookup Tables
        • Database Schema
        • Config Reference
        • Slash Command Reference
      • Services Internals
      • Catalog and Items
      • Permissions Internals
      • Physics and Collision
      • Known Quirks
      • Codebase Anecdotes
      • Development Timeline
    • Contributing

      • Documentation Style Guide
      • Generators
      • For AI Agents

Making an Account

Audience: Total newbies · Prereqs: First Run

Canonical source: server-services/src/data_management/accountManagement.js

Playing as a guest works fine, but an account is what gets you persistent stats, an inventory, and the ability to be granted admin.

Registering

  1. Open the game at http://localhost:13370 and click Login in the corner.
  2. In the box that opens, fill in:
    • Username - 3 to 20 characters, letters/numbers/underscores/hyphens only.
    • Password - at least 8 characters.
  3. Click Register (not Login - that's for existing accounts).

Behind the scenes, your password is hashed client-side and then re-hashed server-side with bcrypt before it's ever written to disk (the cost factor is tunable in store/config/services.yaml's password_cost_factor - see npm run bcrypt if you ever want to retune it). Your plaintext password is never stored anywhere.

A new account starts with a default loadout and a starting egg balance, defined by the users table's schema - see The Database if you're curious about the exact defaults.

Granting yourself admin

New accounts start as a Guest-level user with no special permissions - registering doesn't make you an admin. To get admin (or moderator, or any other rank) on your own local server, you edit the database directly:

UPDATE users SET adminRoles = 255 WHERE username = 'your_username';

255 is the Superuser rank - the highest level. This is a deliberately manual, DB-level step (there's no in-game "make me admin" button, for obvious reasons) - full details on opening the database, the rank levels, and what each one can do are in Users and Ranks, the next logical page once you're past pure setup.

Common Issues

Registration silently does nothing. Check the services server's terminal for a validateRegisterFail log line - it'll say why (username taken, doesn't meet the length/character rules above, etc).

Can't log back in after registering. Password fields are case-sensitive; there's no "forgot password" flow in the base game - if you've truly lost it, an admin has to reset it directly in the database (accountManagement.js exposes the hashing logic if you're doing this via a plugin or script; doing it by hand means generating a new bcrypt hash and writing it into the password column - don't just paste a plaintext password into that column).


This page was drafted with AI assistance and reviewed for accuracy. If something looks wrong, please open a PR or flag it.

Edit this page on GitHub
Prev
Config Files
Next
Troubleshooting (Getting Started)