Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
mProfile
Private-by-design player profiles, statistics, privacy controls, and social integrations for Paper, Purpur, and Folia.
Features
- Native 26.3 profile dialogs for online players and everyone previously seen by the server, with an inventory fallback.
- Biography, configurable color theme and cover, plus
PUBLIC,LIMITED, orPRIVATEvisibility. - Optional full-width illustrated dialog covers supplied by the bundled Minecraft 26.3 resource pack, with automatic text fallback.
- Personal controls for statistics, activity, integrations, and incoming message actions.
- Playtime, player kills, deaths, first-seen, last-seen, and online status.
- Shift-right-click access with a short configurable anti-spam cooldown.
- Fully configurable GUI size, item slots, materials, and theme accent colors.
- Optional message, report, and ignore buttons. Suggest mode lets the player confirm or complete a command before it runs.
- Optional summaries from mBadges, mReputation, and mColor, without hard dependencies.
- Opt-in mReputation endorsements with evidence and abuse protections; negative votes remain separately disabled by default.
- English by default and a complete Russian translation selected in
config.yml. - Asynchronous local H2 storage and a public Bukkit Services API.
- Native Paper and Folia schedulers; player and inventory work stays on the owning entity thread.
Requirements and installation
- Java 25
- Paper, Purpur, or Folia 26.3
- Put
mProfile-1.3.0.jarin the server'spluginsdirectory. - Start the server once.
- Edit
plugins/mProfile/config.ymlif desired. - Run
/profile reload.
The generated defaults work without another plugin. Set language.default: ru_RU and reload to switch messages and the GUI to Russian. Missing translation keys fall back to bundled English automatically.
Commands
| Command | Permission | Description |
|---|---|---|
/profile |
mprofile.use |
Open your profile |
/profile <player> |
mprofile.use |
Open an online or stored profile |
/profile bio <text> |
mprofile.edit |
Set a biography; omit text to clear it |
/profile visibility <PUBLIC|LIMITED|PRIVATE> |
mprofile.edit |
Set profile privacy |
/profile theme <name> |
mprofile.edit |
Select a configured theme |
/profile settings |
mprofile.edit |
Open personal profile settings |
/profile inventory [player] |
mprofile.use |
Force the classic inventory view |
/profile vote <player> <positive|negative> |
mprofile.vote |
Open the evidence form for an enabled mReputation vote |
/profile reload |
mprofile.reload |
Reload configuration and language files |
mprofile.view.private lets trusted staff inspect private profiles. mprofile.cooldown.bypass bypasses the viewing cooldown. mprofile.admin grants the staff permissions.
Privacy model
PUBLICallows other players to view the profile and its statistics.LIMITEDallows the profile to open but hides detailed statistics.PRIVATEblocks other players entirely unless they have the explicit bypass permission.
The owner can always view their own profile. Per-section switches can hide statistics, activity, integrations, or the message action without weakening the main visibility mode. mProfile stores only the Minecraft UUID, last name, biography, privacy/theme/cover preferences, and displayed gameplay statistics. It does not store IP addresses, chat, inventory contents, or location history.
GUI and interactions
gui.mode: DIALOG uses Paper's native 26.3 dialog API. Set it to INVENTORY, use /profile inventory, or keep gui.fallback-to-inventory: true for the classic view. Inventory slots in config.yml use human-friendly numbering from 1 through the configured size. Invalid materials and slots fall back or are skipped safely; duplicate slots never create multiple actions.
language:
default: en_US
access:
view-cooldown-millis: 750
right-click:
enabled: true
require-sneaking: true
interactions:
enabled: true
actions:
message:
enabled: true
slot: 47
material: PAPER
mode: SUGGEST
command: "msg {player} "
required-plugin: ""
SUGGEST sends a clickable prompt that prepares the command. RUN executes it immediately and should only be used for commands that already perform their own permission and confirmation checks. Actions with required-plugin are hidden while that plugin is unavailable.
Illustrated profile covers
Version 1.3.0 includes five original panoramic covers: Forest, Nether, Ocean, End, and Space. They are implemented as bitmap font glyphs in an optional Minecraft 26.3 resource pack, so the native dialog can display a real image instead of only the cover name.
On first start, mProfile extracts plugins/mProfile/mProfile-resource-pack-1.3.0.zip. Choose one setup:
- Distribute that ZIP with
resource-packinserver.propertiesor an existing pack manager. Then setprofile.cover-images.enabled: trueandassume-loaded: true. - Host the unchanged ZIP at a direct HTTP(S) URL, set
enabled: true,auto-send: true,url, and its lowercase SHA-1 fromsha1sum mProfile-resource-pack-1.3.0.zip.
With automatic delivery, mProfile displays an image only after the client reports that this exact pack loaded successfully. Declined, failed, missing, custom, and NONE covers retain the configured text presentation. The pack is optional and never changes stored profile data.
Storage and safety
Profile data is kept in plugins/mProfile/profiles.mv.db. Database access is serialized on a dedicated virtual thread and never blocks a server tick. Failed writes cannot roll back a newer cached update, corrupted privacy values fail closed, and shutdown waits at most five seconds before cancelling remaining storage tasks.
Configuration input is bounded: biographies fit the database schema, control characters are removed, player names and locale paths are validated, cooldowns are clamped, and custom action commands reject control characters. Dynamic player text is inserted without MiniMessage tag interpretation.
Back up the plugin directory before moving data between servers. Do not edit the database while the server is running.
API
Other plugins can load MProfileApi from Bukkit's Services Manager. Profile reads return CompletableFuture<Optional<ProfileSnapshot>>; GUI opens return CompletableFuture<Boolean> and are automatically handed to the correct player scheduler. Compile against the lightweight API JAR produced in api/build/libs.
Telemetry and updates
bStats is disabled by default until a public project ID is assigned. If enabled later, it contains no UUIDs, names, biographies, or profile statistics. The asynchronous Modrinth update check is separate and can be disabled with updates.enabled: false.
Build
./gradlew clean build
The plugin JAR is written to build/libs, the standalone cover pack to build/distributions, and API artifacts to api/build/libs.
Licensed under the MIT License.


