InfinityPhone
PluginLicenseRef-All-Rights-Reserved

InfinityPhone

Virtual Smartphones

31
Downloads
1
Followers
1 months ago
Updated
📦
1
Versions

📖About InfinityPhone

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.

BANNER

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

  1. Download the latest .jar and place it in your plugins/ folder.
  2. Restart the server to generate configuration files.
  3. Customize config.yml to 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
Issues: GitHub Repo for Issue

© 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.