Skip to content

Commands and permissions

Commands

/lock, and it also answers to /2fa, /elock and /emberlock.

Command What it does
/lock setup Enrol: pick an authenticator app or a PIN
/lock code <code> Answer a prompt with a code from your app
/lock recovery Show your single-use recovery codes
/lock status [player] Whether an account is enrolled, and with what
/lock trust Remember this device
/lock forget Forget every remembered device
/lock remove [player] Remove a second factor. Always audited
/lock now Lock yourself. The button before you walk away
/lock all [player] Challenge everyone online, or one person
/lock unlock <player> Lift a lockout early
/lock editor The settings editor
/lock reload Reload the config

Permissions

Twenty-three nodes: twenty individual ones and three bundles. Every one is declared in plugin.yml with a description, so they appear properly in whatever permissions plugin you run.

Policy: who has to do what

Node Default Grants
emberlock.use everyone May set up a second factor voluntarily
emberlock.force no Must have a second factor. Give this to staff
emberlock.force.totp no Must use an authenticator app; a PIN will not satisfy it
emberlock.bypass no Never challenged at all. Dangerous, grant to nobody by default
emberlock.stepup.exempt no Never re-challenged before a guarded command
emberlock.notify operators Receives lockout and recovery alerts in game

What a player can do

Node Default Grants
emberlock.command.setup everyone /lock setup
emberlock.command.setup.pin everyone Choose a PIN rather than an authenticator app
emberlock.command.code everyone Answer a prompt with /lock code
emberlock.command.recovery everyone View and use recovery codes
emberlock.command.remove everyone Remove their own second factor
emberlock.command.status everyone See their own status
emberlock.command.trust everyone Remember this device
emberlock.command.forget everyone Forget every remembered device

What staff can do

Node Default Grants
emberlock.command.remove.other operators Remove another player's second factor. Always audited
emberlock.command.status.other operators See another player's status
emberlock.command.all operators Lock every online account at once
emberlock.command.editor operators Edit the settings in game
emberlock.command.unlock operators Lift a lockout
emberlock.command.reload operators Reload the config

Bundles

Node Default Contains
emberlock.player everyone The eight player commands, plus emberlock.use
emberlock.admin operators The six staff commands, plus emberlock.notify
emberlock.* no emberlock.admin, emberlock.player and emberlock.force

emberlock.* is every command, for staff and players alike. It deliberately does not grant emberlock.bypass, emberlock.force.totp or emberlock.stepup.exempt. A wildcard that handed out bypass would quietly exempt every admin group from the plugin you installed to protect them, which is the one way a second factor fails without anybody noticing. It does grant emberlock.force, so a wildcard makes an account more locked down, not less.

# Staff must have a factor, and it has to be a real one
lp group mod permission set emberlock.force true
lp group admin permission set emberlock.force.totp true

Requirements

Server Paper, Purpur or Folia, 1.21 to current
Java 21 or newer
Needs Nothing
Optional Floodgate for native Bedrock forms, MySQL for a network, Ember Forge or ItemsAdder for custom keypad art

One jar covers the whole version range: it is compiled against the oldest API in it, so it uses nothing that was added later.