AddHeads is a Paper/Purpur plugin that adds player heads to chat, automatically prepends them to the in-game player list name, and exposes a reusable API for other plugins.
AddHeads does not take over chat formatting. It waits until another plugin finishes building the final chat component, then prepends the player's head while preserving colors, links, hover events, click events, and existing formatting.
For the in-game player list, AddHeads prepends the head automatically through Paper's playerListName(Component) API. No manual placeholder insertion is required for the default player-list path.
AddHeads also exposes a public API and PlaceholderAPI outputs so other plugins can request heads, textures, separators, and export formats directly.
- chat head rendering using Adventure components
- automatic player-list head insertion
- public Bukkit service API for other plugins
- PlaceholderAPI integration with multiple export formats
- shared skin cache with automatic refresh
- SkinsRestorer-aware texture resolution
- Mojang and Paper profile fallbacks
- localized settings GUI
- live config and language reload
- automatic config and language key backfill
- per-player toggles for chat and player-list heads
- update checks from GitHub and Modrinth
- Paper / Purpur
1.21.11+ - Java
21
Optional:
- PlaceholderAPI
- SkinsRestorer
- Build or download
AddHeads-1.1.0.jar. - Place it into your server
plugins/folder. - Start or restart the server.
- Edit
config.ymlandlanguages/*.ymlif needed. - Use
/hd settingsor/hd reloadafter making changes.
/hd togglechat
/hd toggletab
/hd settings
/hd info
/hd reload
/hd update <latest|github|modrinth>addhead.togglechat
addhead.toggletab
addhead.settings
addhead.reload
addhead.premiumaddhead.togglechatallows toggling your own chat heads.addhead.toggletaballows toggling your own player-list heads.addhead.settingsallows opening the settings GUI.addhead.reloadallows reloading the plugin.addhead.premiumis used whenpremium.mode=permissionorpremium.mode=auto_permission.
Main config: src/main/resources/config.yml
Key options:
chatplaceholdertab.enabledcache-refresh-interval-secondsformatting.chat-head-spacingformatting.chat-head-shadowformatting.tab-head-spacingformatting.tab-head-shadowlanguage.filemessages.prefixupdate-check.enabledupdate-check.interval-hourspremium.*
Update sources for GitHub and Modrinth are built into the plugin and are not configured in config.yml.
When AddHeads starts or reloads, missing config keys are filled from the bundled template without overwriting your existing values.
AddHeads registers a Bukkit service for direct integration:
import goshkow.addhead.api.AddHeadsAPI;
import goshkow.addhead.api.AddHeadsProvider;
import goshkow.addhead.api.HeadFormat;
import goshkow.addhead.api.HeadRenderTarget;
AddHeadsProvider api = AddHeadsAPI.provider();
if (api != null) {
String signedTag = api.getFormattedHead(player, HeadFormat.SIGNED_TAG, api.getDefaultOptions(HeadRenderTarget.TAB));
}Available API models:
AddHeadsProviderAddHeadsAPIHeadFormatHeadRenderOptionsHeadRenderTargetSkinTexture
Built-in API events:
AddHeadsReloadEventAddHeadsSkinResolvedEvent
Core placeholders:
%addhead_head%%addhead_tab%%addhead_texture_value%%addhead_texture_signature%%addhead_texture_hash%%addhead_skin_ready%%addhead_tab_visible%
Format-aware placeholders:
%addhead_format_json%%addhead_format_signed_tag%%addhead_format_texture_tag%%addhead_format_id_tag%%addhead_format_name_tag%%addhead_format_texture_value%%addhead_format_texture_signature%%addhead_format_texture_hash%%addhead_format_signed_texture%%addhead_format_separator%%addhead_format_skin_ready%
Target-aware placeholders:
%addhead_chat_json%%addhead_chat_separator%%addhead_tab_signed_tag%%addhead_tab_separator%%addhead_tab_json%
The chat_* and tab_* forms use the plugin's default spacing and shadow settings for those targets.
AddHeads resolves textures in this order:
- SkinsRestorer
- live Paper player profile
- Paper profile update lookup
- Mojang profile/session lookup by player name
- cached value already resolved by AddHeads
- AddHeads does not require a resource pack.
- No additional client mods are needed.
- Everything works on a vanilla client.
- The default player-list head path does not require manual placeholder setup.
- AddHeads is designed to work with any plugin that rewrites chat or player-list names later.
%addhead_tab%remains available as an optional export format for custom layouts, but it is not required for the default player-list path./hd updatequeues a download and asks for a chat confirmation (update) before the file is copied intoplugins/update.
This project is distributed under the custom source-available license included in LICENSE. See NOTICE for attribution lines.
AddHeads — это плагин для Paper/Purpur, который добавляет головы игроков в чат, автоматически подставляет их в список игроков и отдаёт полноценный API для других плагинов.
AddHeads не перехватывает форматирование чата целиком. Он ждёт, пока другой плагин соберёт финальный компонент сообщения, а затем добавляет голову игрока в начало, не ломая цвета, ссылки, hover-события, click-события и остальное оформление.
Для списка игроков AddHeads автоматически добавляет голову через Paper API playerListName(Component). Для стандартного пути никаких ручных placeholder-настроек не требуется.
Кроме этого, плагин отдаёт публичный API и PlaceholderAPI-форматы, чтобы другие плагины могли получать головы, текстуры, разделители и разные экспортные представления напрямую.
- головы игроков в чате через Adventure components
- автоматическая подстановка головы в список игроков
- публичный Bukkit service API
- PlaceholderAPI с несколькими форматами вывода
- общий кэш скинов с автообновлением
- поддержка SkinsRestorer
- fallback через Paper profile и Mojang profile/session lookup
- локализованное меню настроек
- reload конфига и языков на лету
- автоматическое добавление недостающих ключей в конфиг и языковые файлы
- персональные переключатели для чата и списка игроков
- проверка обновлений через GitHub и Modrinth
- Paper / Purpur
1.21.11+ - Java
21
Опционально:
- PlaceholderAPI
- SkinsRestorer
- Соберите или скачайте
AddHeads-1.1.0.jar. - Положите его в папку
plugins/. - Запустите или перезапустите сервер.
- При необходимости отредактируйте
config.ymlиlanguages/*.yml. - После изменений используйте
/hd settingsили/hd reload.
/hd togglechat
/hd toggletab
/hd settings
/hd info
/hd reload
/hd update <latest|github|modrinth>addhead.togglechat
addhead.toggletab
addhead.settings
addhead.reload
addhead.premiumaddhead.togglechat— переключение голов в чате для себя.addhead.toggletab— переключение голов в списке игроков для себя.addhead.settings— доступ к GUI настроек.addhead.reload— доступ к reload.addhead.premium— используется, когдаpremium.mode=permissionилиpremium.mode=auto_permission.
Главный конфиг: src/main/resources/config.yml
Основные настройки:
chatplaceholdertab.enabledcache-refresh-interval-secondsformatting.chat-head-spacingformatting.chat-head-shadowformatting.tab-head-spacingformatting.tab-head-shadowlanguage.filemessages.prefixupdate-check.enabledupdate-check.interval-hourspremium.*
Update sources for GitHub and Modrinth are built into the plugin and are not configured in config.yml.
При старте и reload плагин автоматически добавляет недостающие ключи из встроенного шаблона, не перезаписывая уже заданные значения.
AddHeads регистрирует Bukkit service для прямой интеграции:
import goshkow.addhead.api.AddHeadsAPI;
import goshkow.addhead.api.AddHeadsProvider;
import goshkow.addhead.api.HeadFormat;
import goshkow.addhead.api.HeadRenderTarget;
AddHeadsProvider api = AddHeadsAPI.provider();
if (api != null) {
String signedTag = api.getFormattedHead(player, HeadFormat.SIGNED_TAG, api.getDefaultOptions(HeadRenderTarget.TAB));
}Доступные модели API:
AddHeadsProviderAddHeadsAPIHeadFormatHeadRenderOptionsHeadRenderTargetSkinTexture
События API:
AddHeadsReloadEventAddHeadsSkinResolvedEvent
Базовые placeholders:
%addhead_head%%addhead_tab%%addhead_texture_value%%addhead_texture_signature%%addhead_texture_hash%%addhead_skin_ready%%addhead_tab_visible%
Форматные placeholders:
%addhead_format_json%%addhead_format_signed_tag%%addhead_format_texture_tag%%addhead_format_id_tag%%addhead_format_name_tag%%addhead_format_texture_value%%addhead_format_texture_signature%%addhead_format_texture_hash%%addhead_format_signed_texture%%addhead_format_separator%%addhead_format_skin_ready%
Контекстные placeholders:
%addhead_chat_json%%addhead_chat_separator%%addhead_tab_signed_tag%%addhead_tab_separator%%addhead_tab_json%
Формы chat_* и tab_* используют дефолтные настройки spacing и shadow для соответствующей цели.
AddHeads берёт текстуры в таком порядке:
- SkinsRestorer
- live Paper player profile
- Paper profile update lookup
- Mojang profile/session lookup по имени игрока
- уже закэшированное значение AddHeads
- AddHeads не требует resource pack.
- Дополнительные клиентские моды не нужны.
- Всё работает на vanilla client.
- Для стандартной подстановки головы в список игроков ничего вручную настраивать не нужно.
- Плагин рассчитан на работу с любыми другими плагинами, которые форматируют чат или позже переписывают имя игрока в списке.
%addhead_tab%остаётся как опциональный формат для кастомных раскладок, но для стандартного пути он не обязателен.
Проект распространяется под кастомной source-available лицензией из LICENSE. Строки атрибуции находятся в NOTICE.