Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
InfinityPhone
Immersive Smartphones for RolePlay Servers
A premium interactive communication system designed specifically for Minecraft RolePlay servers. Replace outdated chat commands with a sleek, modern graphical user interface that simulates a real smartphone directly in the game.

Developed with performance and immersion in mind by infunv studio.
📱 Key Features
- Beautiful GUI — Clean and intuitive inventory-based phone interface. Navigate contacts, make calls, and send messages with simple clicks.
- Real-Time Calls — Full call system with ringing, busy tone, accept/reject, and proper disconnection handling. Players receive real-time notifications.
- SMS Messaging — Send and receive text messages with clear sender/receiver formatting.
- Smart Phonebook — Add, edit, and delete contacts. Built-in Blacklist system with anti-duplicate protection.
- Economy Integration — Full support for Vault. Set custom prices for calls and SMS — run your own in-game mobile carrier.
- Premium Customization — Powered by Adventure API for gradients, RGB colors, and full visual branding to match your server style.
⚙️ Technical Highlights
- Embedded SQLite Database — No MySQL required. Fast, reliable, and handles thousands of numbers and contacts with ease.
- High Performance — Optimized for large RP servers with efficient event handling and safety checks.
- Hot Reload — Reload configuration without restarting the server.
💻 Commands & Permissions
General Commands
/phone <give|version|reload>— Core management command (issue physical device, review build version, or hot-reload configurations)./contact— View and edit the visual contact book./call [number|player]— Initiate an outgoing voice call line./quit— Terminate your active call connection./msg [message]— Send an SMS message to your target contact./accept— Pick up an incoming call./cancel— Reject or dismiss an incoming call./block [player]— Ban an account/number from reaching your phone./unblock [player]— Unban an account/number from your phonebook.
Access Node Configuration
- User Node: Standard permission access allowing basic interactions, phonebook lookups, messaging, and dialing rules.
- Admin Node: Advanced control suite allowing manual configuration adjustments, global prefix updates, and administrative inventory overrides.
- Permission Node:
infinityphones.admin
Prefix Token formatting
To output your assigned global plugin prefix anywhere within your custom configuration files, use the localized string placeholder format:
{prefix}
Example: {prefix} &7The plugin configuration files have been successfully hot-reloaded.
🚀 Installation
- Download the latest
.jarand place it in yourplugins/folder. - Restart the server to generate configuration files.
- Customize
config.ymlto fit your server's economy and style.
📄 Configuration Example
The plugin includes a well-commented config.yml with support for:
- Custom gradient prefixes
- Fully translatable messages
- Economy settings (
callCost,messageCost) - Custom menu titles and button lore
📄 Configuration File Example (config.yml)
prefix: <gradient:#8B0CFB:#908DC2>InfinityPhones</gradient> &7>>
messages:
version:
- '&7'
- '&7Information about <gradient:#8B0CFB:#908DC2>{pluginname}</gradient>:'
- '&7'
- '&7Version: <gradient:#8B0CFB:#908DC2>{pluginversion}</gradient>'
- '&7Authors: <gradient:#8B0CFB:#908DC2>{pluginauthors}</gradient>'
- '&7'
config-reloaded: '{prefix} &7Plugin reloaded successfully.'
already-in-call: '{prefix} &cYou are already in a call. Please hang up first.'
block-use: '{prefix} &7Usage: &e/block <number or nickname>'
unblock-use: '{prefix} &7Usage: &e/unblock <number or nickname>'
call-accepted: '{prefix} &e{playernick} &7accepted your call.'
call-canceled: '{prefix} &7Call canceled.'
click-to-copy: '{prefix} &d&oClick to copy'
call-ended: '{prefix} &aCall ended.'
call-not-answered: '{prefix} &cCall ended. The player did not answer.'
call-you-not-answered: '{prefix} &cCall ended. You did not answer.'
call-started: '{prefix} &aCall started with &e{number}&7.'
call-start: '{prefix} &aCall started with &e{number}&7.'
call-usage: '{prefix} &7Usage: &e/call <number>&7 or &e/call <contact name>'
calling: '{prefix} &7Dialing &e{playernick}...'
contact-added: '{prefix} &aContact ''{name}'' ({number}) added successfully!'
contact-already-exists: '{prefix} &cA contact with number {number} already exists!'
contact-myself: '{prefix} &cYou cannot add your own number to your contacts.'
contact-deleted: '{prefix} &aContact deleted successfully!'
contact-use: '{prefix} &7Usage: &e/contact <phone number>'
contact-storage-full: '{prefix} &cYour phonebook is full. Cannot add more contacts.'
debited-money: '{prefix} &a{money} &7has been charged from your account.' # Uses 1 placeholder: {money}
incoming-call: " {prefix} &7Incoming call from &e{playernick}&7. \n{prefix} &7Use &e/accept&7 to answer or &e/cancel&7 to decline."
line-busy: '{prefix} &cThe line is busy. Please try again later.'
no-permission: '{prefix} &cYou do not have permission to execute this command.'
no-phone: '{prefix} &cNo phone found in your inventory!'
no-calling: '{prefix} &cYou do not have an active call.'
no-money: '{prefix} &cInsufficient funds on your account!' # Does not require placeholders.
not-in-call: '{prefix} &cYou are not in a call.'
number-not-found: '{prefix} &cPhone number or contact not found.'
only-players: '{prefix} &cThis command can only be executed by players.'
messages-use: '{prefix} &7Usage: &e/msg <number> <message> &7or &e/msg <contact name> <message>'
messages-format-target: '{prefix} &8[&e{number}&8] &b{playernick}&7: &e{message}'
messages-format-sender: '{prefix} &bYou&7: &e{message}'
messages-failed: '{prefix} &cFailed to deliver message to {number}.'
messages-delivered: '{prefix} &7Message delivered to {number}.'
phone-usage:
- '&7'
- '&7Usage:'
- '&7'
- '&e/phone give [player] &7- Give a phone to a specific player'
- '&e/phone give &7- Give a phone to yourself'
- '&e/phone version &7- View plugin version info'
- '&e/phone reload &7- Reload plugin configuration'
- '&7'
phone-given: '{prefix} &7You received a phone.'
phone-given-to-player: '{prefix} &aPhone successfully given to &e{playernick}&7.'
phone-required: '{prefix} &cYou need a phone to perform this action.'
player-already-blocked: '{prefix} &cPlayer with number &e{playernumber}&c is already blocked.'
player-already-in-call: '{prefix} &cPlayer with number &e{number}&c is already in another call.'
player-already-unblocked: '{prefix} &7Player with number &e{playernumber}&7 is already unblocked.'
player-blocked: '{prefix} &7You have successfully blocked &e{playernick}&7.'
player-not-found: '{prefix} &cPlayer with number &e{number}&7 was not found or is offline.'
player-not-in-contacts: '{prefix} &7Player &e{playernick}&7 is not in your contacts.'
player-number: '{prefix} &7Player number: '
player-offline: '{prefix} &cPlayer went offline. Call disconnected.'
player-unblocked: '{prefix} &7You have successfully unblocked &e{playernick}&7.'
menu:
phone-title: Phone
contact-title: Contacts
detail-contact-title: '&bContact: &a{playernick}'
button:
call:
title: '&aCall'
lore:
- '&7Click to open menu &e&o(LMB/RMB)'
back:
title: '&aBack'
lore:
- '&7Click to open menu &e&o(LMB/RMB)'
block:
title: '&cBlock'
lore:
- '&7Click to open menu &e&o(LMB/RMB)'
unblock:
title: '&eUnblock'
lore:
- '&7Click to open menu &e&o(LMB/RMB)'
delete-contact:
title: '&bDelete'
lore:
- '&7Click to open menu &e&o(LMB/RMB)'
contact:
title: '&eContacts'
lore:
- '&7Click to open menu &e&o(LMB/RMB)'
lore:
online: <green>Online</green>
offline: '&cOffline'
blocked: <red>Blocked</red>
unblocked: '&aUnblocked'
contacts:
title: <yellow>{playernick}</yellow>
lore:
- '&7Number: &e{number}'
- '&7Status: {playerstatus}'
- '&7Blacklist: {numberblacklist}'
detail-contact:
title: '&bInformation'
lore:
- '&7Name: &e{playernick}'
- '&7Number: &e{number}'
- '&7Status: {playerstatus}'
- '&7Blacklist: {numberblacklist}'
profile:
title: '&6{playernick}'
lore:
- '&7Number: &e{number}'
phone:
title: '&bPhone'
lore:
- '&7Click to open menu &e&o(LMB/RMB)'
settings:
economy:
enabled: true # Enable or disable economy features (true/false)
messageCost: 0.5 # Cost per 1 SMS message (use decimal points)
callCost: 1.0 # Cost per 1 voice call (use decimal points)
📋 Requirements
- Minecraft: 1.20.X
- Server: Paper / Purpur (recommended), Spigot
- Java: 17+
- Dependencies: Vault (for economy)
👥 Credits & License
Developer: whitecristafer
Studio: infunv studio
© infunv studio — All Rights Reserved (ARR)
You are free to use the plugin on your servers.
Modification and redistribution of the source code is prohibited without explicit permission from the owner.


