MyLogin
PluginMIT

MyLogin

MyLogin is a lightweight authentication plugin for Minecraft servers. It provides secure password-based login, strong pre-login protection, IP-based auto login.

75
Downloads
1
Followers
2 weeks ago
Updated
📦
2
Versions

📖About MyLogin

🔐 MyLogin

MyLogin is a lightweight authentication and account-protection plugin for Minecraft Paper servers.

It provides password-based authentication, migration from Passky, offline-mode account protection, duplicate session protection, and administrative account management tools.


📖 Project Background

MyLogin was created as a modern alternative to Passky, allowing server owners to continue using existing player login data while maintaining compatibility with current Paper releases.

The plugin supports migration of existing Passky SHA-256 password data, allowing players to keep their existing passwords after migration.


✨ Features

  • Password-based player authentication
  • Passky SHA-256 migration support
  • Configurable login timeout
  • Maximum login attempt protection
  • Optional IP-based auto-login
  • Logout support
  • Admin password management
  • Blindness protection before login
  • Firework effect after successful login
  • Username case protection for offline-mode servers
  • Duplicate session protection
  • Username collision detection and reporting
  • YAML-based storage
  • Configuration migration support

📦 Requirements

  • Server: Paper
  • Supported Versions: 1.21.x
  • Java: 21+

Compatibility Notes

MyLogin uses only the standard Bukkit/Paper API and does not use NMS or CraftBukkit internals.

Because of this, the plugin is expected to work on newer Paper builds, including current 26.1.x releases, but only Paper 1.21.x is officially supported.


📜 Player Commands

Command Description
/register <password> <password> Register a new account
/login <password> Log into your account
/changepassword <old> <new> Change your password
/logout Log out of your current session

🛠 Admin Commands

Command Permission Description
/migrate mylogin.admin Migrate Passky user data
/resetpassword <player> <newpassword> mylogin.admin Reset a player's password
/deleteplayer <player> mylogin.admin Delete a player's account
/mylogin reload mylogin.admin Reload configuration
/mylogin scannamecollisions mylogin.admin Scan users.yml for username case collisions
/mylogin checkplayer <player> mylogin.admin View player login information
/mylogin stats mylogin.admin View MyLogin statistics

⚙️ Configuration

Example:

login-timeout-seconds: 300

max-login-attempts: 5

min-password-length: 4
max-password-length: 32

ip-remember: true
ip-remember-timeout: 86400

effects:
  blind: true
  firework: true

security:
  enforce-name-case: false
  scan-name-collisions-on-startup: true
  block-duplicate-sessions: true

migration:
  skip-existing-users: true

🔒 Username Case Protection

Offline-mode servers treat usernames with different capitalization as different accounts.

Examples:

SkyBuilder
SKYBUILDER
sKyBuIlDeR

When enabled:

security:
  enforce-name-case: true

Players must reconnect using the exact username capitalization originally registered.

Example:

Registered:
SkyBuilder

Joining:
SKYBUILDER

Result:

This name is already registered as 'SkyBuilder'.
Please reconnect using that exact name.

This helps prevent:

  • Duplicate inventories
  • Duplicate economy accounts
  • Duplicate claims
  • Duplicate permissions
  • Duplicate backup records

🛡 Duplicate Session Protection

When enabled:

security:
  block-duplicate-sessions: true

If a player is already online:

SkyBuilder

and another client attempts to connect using:

SkyBuilder

the new connection is denied and the original player remains online.


🔍 Username Collision Scanner

When enabled:

security:
  scan-name-collisions-on-startup: true

MyLogin scans users.yml for username case collisions.

Example:

SkyBuilder
SKYBUILDER
sKyBuIlDeR

Results are written to:

plugins/MyLogin/data/name-collision-log.yml

🔄 Migration From Passky

Requirements:

  • Passky encoder must be SHA-256
  • Player identifier must use player names

MyLogin can import existing Passky accounts without requiring players to register again.

Migration files:

plugins/MyLogin/Migration/old-users.yml
plugins/MyLogin/Migration/migration-log.yml

Migration protection:

migration:
  skip-existing-users: true

Existing MyLogin accounts are not overwritten by default.


💾 Data Storage

Main data files:

plugins/MyLogin/data/users.yml
plugins/MyLogin/data/name-collision-log.yml
plugins/MyLogin/Migration/old-users.yml
plugins/MyLogin/Migration/migration-log.yml

📄 License

MIT License