
PerPlayerProfiles is a Minecraft plugin for Spigot, Paper, and Bukkit 1.20+ servers that allows one Minecraft account to have multiple independent server profiles.

PerPlayerProfiles is a Minecraft plugin for Spigot, Paper, and Bukkit 1.20+ servers that allows one Minecraft account to have multiple independent server profiles.
Each profile can have its own inventory, experience, location, statistics, play-time limits, PIN, visual icon, respawn point, and configuration. It is designed for servers where one account may be shared by different people, used for different characters, or controlled with time-limited access.

Supported Versions
The plugin declares a soft dependency for:
If ServerPassword is installed and enabled, PerPlayerProfiles waits until the player has completed the server password authentication before opening the profile selector.
The plugin also waits if another GUI is already open when the player joins. This prevents PerPlayerProfiles from overriding login, authentication, or security menus.
Build or download the plugin .jar.
Copy the .jar into your server plugins folder:
plugins/
Restart the server.
Edit the generated config file:
plugins/PerPlayerProfiles/config.yml
Restart again after changing configuration values.
Main Command
/profiles
Opens the main profile GUI.
Aliases
/ppp
/pprofile
/perfil
/perfiles
The plugin is primarily designed around GUI management, but basic command support is also available:
/profiles list
/profiles create <name> [pin]
/profiles use <name> [pin]
/profiles delete <name> [masterPin]
/profiles lock <name> <pin>
/profiles unlock <name> <currentPin>
/profiles setmasterpassword <pin>
/profiles setlimit <profile> <maxMinutes> <renewEveryHours> [masterPin]

Each player account can have multiple profiles.
The maximum number of profiles is configured with:
profiles:
max-per-account: 3
The first profile created for an account is the master profile.
The master profile:
A normal profile:

Each profile stores its own player state:
A new profile starts with:
The selector can automatically open when the player joins:
profiles:
open-selector-on-join: true
Rules:
If the account only has one profile, the selector does not open.
If the account has more than one profile, the selector opens on join.
If the player presses ESC without selecting a profile, the GUI opens again.
The player must select a profile.
If a login/security GUI is open, the selector waits.
profiles:
selector-auth-wait-seconds: 60
compatibility:
server-password:
wait-for-auth: true
This prevents PerPlayerProfiles from opening its menu before the player finishes server authentication.

Profiles can be protected with numeric PINs.
PIN length is configured with:
security:
pin:
min-length: 4
max-length: 9
Rules:
Profile PIN
Master PIN
The master PIN is managed from the master profile menu.
profiles:
require-master-pin-to-create: false
If set to true, creating profiles requires the master PIN when one exists.
PINs are entered through a visual numeric GUI.
The PIN GUI includes:
Each profile can have a visual icon.
Profile icons are configured with:
gui:
profile-icons:
default: baby_turtle
icons:
baby_turtle:
name: 'Baby Turtle'
texture: '...'
Default profile icons:
Custom Heads
They can be edited in:
gui:
heads:
create: '...'
minus: '...'
renew: '...'
confirm: '...'

The master profile can configure play-time limits for other profiles.
Each profile can have:
Example
A profile can be configured with:
60 minutes of play time.
Renewal every 24 hours.
When the player uses all 60 minutes:

Time Warnings
When a limited profile is close to running out of time, a visual countdown appears:
Time Expiration Kick
When the remaining time reaches 0:
The player is kicked from the server.
The plugin does not switch the player back to the master profile.

Included languages:
English: en
Spanish: es
German: de
French: fr
Language is configured with:
language: en
Language files are stored separately:
plugins/PerPlayerProfiles/lang/en.yml
plugins/PerPlayerProfiles/lang/es.yml
plugins/PerPlayerProfiles/lang/de.yml
plugins/PerPlayerProfiles/lang/fr.yml