Sueta
TI

TitleShop

1.0.1

Purchase and customize your player titles in-game!

·Plugin

Dependencies:

  • Vault (required)
  • LuckPerms (required)
  • PlaceholderAPI (soft depend)



TitleShop is a plugin that adds a comprehensive system for purchasing, managing, and customizing player suffixes. With an intuitive shop interface and easy-to-use commands, players can buy titles, view their collection, and even create their own custom titles.

Support for hex color formats using &#RRGGBB or #RRGGBB.

Commands:

  • /title reload (titles.reload) – Reloads/restarts the plugin.
  • /titlesshop or /ts (titles.shop - default) – Opens the title shop.
  • /titles (titles.titles - default) – Displays all user titles.
  • /title user (titles.manage) – Gives or removes a title from a specific player.
  • /title add (titles.create) – Adds a title to the shop (can also be configured via the config file).
  • /title create (titles.createOwn - default) – Allows players to create their own title.
config.yml
# Titles

# Localization to be used. Default: EN / RU. You can create your own locale file.
locale: "EN"

# Menu settings
menu:
  items:
    frame: "LIGHT_BLUE_STAINED_GLASS_PANE"
    separator: "GRAY_STAINED_GLASS_PANE"
    title: "NAME_TAG"
    prevPage: "ARROW"
    nextPage: "ARROW"
    close: "BARRIER"
    clear: "SHEARS"
  slots: # These are for the bottom menu. 0 - 9
    prevPage: 3
    nextPage: 5
    close: 4
    clear: 4 # This will be on top row
  # You can set your own command on close (without /). Default: close menu. It will override the default. Write None to use the default command.
  customCloseCommand: "None"

customTitle:
  enabled: true
  cost: 100000 # Price to create own title
  maxPerPlayer: 5 # Max custom titles per player.
  maxTitleLength: 20 # Maximum characters for title to avoid long titles

# Any custom titles. You can use HEX color (&#RRGGBB)
titles:
  sampleTitle: # Title ID
    name: "Cool" # Displayed title name
    cost: 10000 # Money to buy the title
    purchasable: true # False if the title won't be in the shop
Locale_EN.yml
# En Locale

prefix: "&eTitles &7| "

menus:
  titlesShop:
    header: "&7Title Shop" # Menu header
    purchasedTitle: # Menu for purchased titles
      titleName: "&cTitle %title%" # Title name
      titleDescription: # Description
        - ""
        - "&cThis title has already been purchased!"
        - ""
      onClickMessage: "&cThis title has already been purchased!" # Message when clicking on a purchased title
    unPurchasedTitle: # Menu for un purchased titles
      titleName: "&fTitle %title%"
      titleDescription:
        - ""
        - "&fPreview: %player% %title%"
        - ""
        - "&fCost: &e%cost%"
        - "&aClick to purchase the title"
        - ""
      onPurchasedMessage: "&aCongratulations! You have purchased the title: %title%" # Message on successful purchase
  ownedTitle: # Menu for owned titles
    header: "&7Titles" # Menu header
    titleName: "&eTitle %title%" # Name
    titleDescription:
      - ""
      - "&fPreview: %player% %title%"
      - ""
      - "&aClick to apply title"
      - ""
    onClickMessage: "&eApplied %title%!" # Message on title apply
  buttons:
    nextPage: "&eNext Page"
    prevPage: "&ePrevious Page"
    close: "&eClose Menu"
    clear: "&eClear title"

messages:
  onError:
    noPermission: "&cYou do not have permission to use this." # Message when the player lacks permission to perform an action
    notEnoughMoney: "&cYou do not have enough money to make the purchase." # Message when the player tries to buy something without enough money
    commandNotFound: "&cCommand not found." # Message when command/subcommand not found
    incorrectArgs: "&cIncorrect arguments given. Please check the provided arguments." # Message when the command arguments are incorrect
    alReadyHasTittle: "&cPlayer %player% already has this title!" # Message when trying to give a title that the player already has
    titleNotFound: "&cTitle with ID &n%title%&r &cnot found." # Message when the specified title ID does not exist
    titleExist: "&cTitle with name &n%title%&r &calready exist." # Message when trying to create a title that already exists
    playerDoesntHaveTitle: "&cPlayer %player% doesn't have this title!" # Message when trying to remove a title the player does not have
    permittedSymbols: "&cTitle ID contains permitted symbols!" # Message when the title ID contains only allowed symbols
    maxCustomTitles: "&cLimit reached! You cannot create more than %count% titles!" # Сообщение, когда пользователь превысил лимит создания титулов
    titleMaxSymbols: "&cThis title is too long! You can't use more than %count% characters!" # Message when a player enters a title that is too long
    notNumber: "&cError: Title cost is not number." # Message when inputted title cost is not number
  commands:
    reload: "&aPlugin has been reloaded!" # Message when the plugin is reloaded
    give: "&aTitle %title% successfully given!" # Message when a title is successfully given to a player
    giveToPlayer: "&cYou have been given the title %title%!" # Message when a player receives a title
    remove: "&aTitle %title% successfully removed from the player!" # Message when a title is successfully removed
    removeToPlayer: "&aYour title %title% has been removed!" # Message when a player's title is removed
    createOwn: "&aYou successful create own title: %title%!" # Message, when player created own title
    add: "&aYou successful added new title %title% with price %cost%!" # Message, when player added new title in config with command
Locale_RU.yml
# Ru Locale

prefix: "&eТитулы &7| "

menus:
  titlesShop:
    header: "&8Магазин титулов" # Название меню
    purchasedTitle: # Меню для купленных титулов в магазине
      titleName: "&cТитул %title%" # Название
      titleDescription: # Описание
        - ""
        - "&cДанный титул уже был куплен ранее!"
        - ""
      onClickMessage: "&cДанный титул уже был куплен ранее!" # Сообщение при клике на купленный титул
    unPurchasedTitle: # Меню для не купленных титулов в магазине
      titleName: "&fТитул %title%"
      titleDescription:
        - ""
        - "&fПредпросмотр: %player% %title%"
        - ""
        - "&fСтоимость: &e%cost%"
        - "&aНажмите для покупки титула"
        - ""
      onPurchasedMessage: "&aПоздравляем! Вы купили титул: %title%" # Сообщение при успешной покупке
  ownedTitle: # Меню для купленных титулов
    header: "&eТитулы" # Menu header
    titleName: "&eТитул %title%" # Название
    titleDescription:
      - ""
      - "&fПредпросмотр: %player% %title%"
      - ""
      - "&aНажмите для установить титул"
      - ""
    onClickMessage: "&eУстановлен титул %title%!" # Сообщение при установке титула
  buttons:
    nextPage: "&eСледующая страница"
    prevPage: "&eПредыдущая страница"
    close: "&eЗакрыть меню"
    clear: "&eОчистить титул"

messages:
  onError:
    noPermission: "&cУ вас нет прав для использования этой команды." # Сообщение, когда у игрока нет прав на выполнение действия
    notEnoughMoney: "&cУ вас недостаточно денег для покупки." # Сообщение, когда игрок пытается купить что-то без нужного количества денег
    commandNotFound: "&cКоманда не найдена." # Сообщение, когда введённая команда/подкоманда не найдена.
    incorrectArgs: "&cНекорректные аргументы. Пожалуйста, проверьте введённые данные." # Сообщение при неверных аргументах команды
    alReadyHasTittle: "&cИгрок %player% уже имеет этот титул!" # Сообщение при попытке выдать титул, который уже есть у игрока
    titleNotFound: "&cТитул с ID &n%title%&r &cне найден." # Сообщение, если указанный ID титула не существует
    titleExist: "&cТитул с именем &n%title%&r &cуже существует." # Сообщение при попытке создать уже существующий титул
    playerDoesntHaveTitle: "&cИгрок %player% не имеет этого титула!" # Сообщение при попытке удалить титул, которого нет у игрока
    permittedSymbols: "&cID титула содержит только разрешённые символы!" # Сообщение, если ID титула содержит только разрешённые символы
    maxCustomTitles: "&cДостигнут лимит! Вы не можете создать более чем %count% титулов!" # Сообщение, когда пользователь превысил лимит создания титулов
    titleMaxSymbols: "&cДанный титул слишком длинный! Вы не можете использовать более %count% символов!" # Сообщение, когда игрок ввёл слишком длинное название
    notNumber: "&cОшибка: Указанная стоимость титула не число!" # Сообщение, когда введённая стоимость титула не число
  commands:
    reload: "&aПлагин был перезагружен!" # Сообщение при перезагрузке плагина
    give: "&aТитул %title% успешно выдан!" # Сообщение при успешной выдаче титула
    giveToPlayer: "&cВам был выдан титул %title%!" # Сообщение, когда игрок получает титул
    remove: "&aТитул %title% успешно удалён у игрока!" # Сообщение при успешном удалении титула
    removeToPlayer: "&aВаш титул %title% был удалён!" # Сообщение, когда титул игрока был удалён
    createOwn: "&aВы успешно создали титул: %title%!" # Сообщение, когда игрок успешно создал свой титул
    add: "&aВы успешно добавили новый титул %title% с ценой %cost%!" # Сообщение, когда игрок добавил новый титул в конфиг командой

Similar projects

Plugin →