-
Всем привет!
Интересует такая вещь. Можно ли изменить слово, которое выводится плейхолдером? Допустим, есть плейсхолдер %player_gamemode% и он выводит «SURVIVAL». Можно ли это слово заменить на «Выживание»?
При этом, без какого-либо программирование или самописов. Можно ли так сделать? Видел плейсхолдер %javascript ..% может через него это как-то осуществляется?
-
HauserGrim
Активный участник
Пользователь- Баллы:
- 96
- Имя в Minecraft:
- Artarious
В плагине TAB видел нечто похожее, но это распространяется только на него. Самопис (расширение), либо попробовать через расширение JavaScript, но во втором я не уверен, но гайдики почитать стоит.
-
Понятно. Сижу гуглю, пока особо ничего не нашёл
-
Saharo4ek
Активный участник
Пользователь- Баллы:
- 96
- Имя в Minecraft:
- tin
А зачем париться с его заменой, вот смысл? Ставишь на вьюв рекьюмент этот плейс и выводишь в лор это свое «Выживание» при соблюдении условия.
-
Ну это само собой, один из самых простых способов, однако, если нужно выводить плейсхолдер не только в меню, а ещё, допустим, на голограмме или ещё где-то, то не подойдёт
-
Хорошо погуглив, решил проблему. Может кому-то пригодится, что нужно сделать:• Устанавливаем расширение «Javascript» для PlaceholderAPI: /papi ecloud download Javascript, /papi reload
• В папке PlaceholderAPI появляется файл javascript_placeholders.yml. В нём подключаем файл с нашим будущим скриптом изменения плейсхолдера:
check_item: file: check_item.js
• Переходим в папку javascripts (Находится в PlaceholderAPI/javascripts) и теперь создаём файл check_item.js (Название должно отвечать тому, что в javascript_placeholders.yml)• Теперь нужен скрипт. Для примера я решил изменить плейсхолдер %checkitem_mat:EMERALD% который проверяет, есть ли в инвентаре игрока изумруд. Если да, он выводит «
yes«, если нет «no«. Я хочу эти два значения изменить на «Есть» и «Нет«. Для этого используем этот скрипт:
var ItemData = args[0]; var placeholder = "checkitem_mat:" + ItemData; var hasItem = PlaceholderAPI.static.setPlaceholders(BukkitPlayer, "%" + placeholder + "%"); function itemCheck(){ if(hasItem == "yes"){ return "&eЕсть"; } else { return "&cНет"; } } itemCheck();
• Сохраняем файл, перезагружаем PAPI: /papi reload
• Готово. Теперь где нам нужно устанавливаем плейсхолдер %javascript_check_item_ВЕЩЬ% (Например, %javascript_check_item_EMERALD%) и получаем на выходе либо «Есть«, либо «Нет«P.s. Если нужно изменить, к примеру тот же плейсхолдер %player_gamemode%, то тут скрипт проще:
var placeholder = "%player_gamemode%"; function gamemodeCheck(){ if(placeholder == "CREATIVE"){ return "Креатив"; } else if (placeholder == "SURVIVAL"){ return "Выживание"; } else { return "Наблюдатель"; } } gamemodeCheck();
Инфу брал отсюда: https://github.com/PlaceholderAPI/Javascript-Expansion/wiki/Advanced-Scripts
Последнее редактирование: 27 ноя 2020 -
PlaceholderAPI юзать не? Зачем тебе эти костыли с js?
-
Saharo4ek
Активный участник
Пользователь- Баллы:
- 96
- Имя в Minecraft:
- tin
Это один из модулей PlaceholderAPI…
-
Их легко писать, и без костылей с js.
-
Saharo4ek
Активный участник
Пользователь- Баллы:
- 96
- Имя в Minecraft:
- tin
Какие костыли? Данная возможность предусмотрена как раз для таких случаев.
-
Arizonafraps
Ньюби
Пользователь- Баллы:
- 1
- Имя в Minecraft:
- Johirok
А можешь сказать более подробней про TAB, там возможно сделать?
Последнее редактирование: 4 ноя 2022 -
Nextler
Активный участник
Пользователь- Баллы:
- 76
- Имя в Minecraft:
- NEXXTLER
При помощи Rocket Placeholder можно такое сделать
Поделиться этой страницей
Как установить:
- Скачайте файл(кнопка внизу страницы)
- Перенесите файл в папку
- Откройте и запустите установку
- Все нужные файлы и зависимости появятся в папке
- После установки запускайте ещё раз и готово
- Может потребоваться отключить антивирус, чтобы запустить!
- В комменты пишите если что помогу
Смотреть видео обзор:
Описание:
? Приватное ванильное выживание → onenilla.joinserver.xyz (1.16.5)
? Группа проекта OneNilla →
————————————————————————————————————————
⚡ Салют! Сегодня вас ожидает достаточно необычный туториал, но как показывает практика, с теми вещами, о которых мы сегодня будем говорить сталкиваются многие при создании своей сборки. Сегодня мы научимся изменять вывод значения плейсхолдера. В каких случаях это полезно — вы узнаете в видео! Приятного просмотра ?
➖ Скрипт из видео →
➖ Плагин PlaceholderAPI →
➖ Список плейсхолдеров →
? IP сервера Джейкоба (1.16.5) → jc-world.ru
❗ Сайт сервера Джейкоба →
? Понравилось видео? Подпишись на канал →
? Группа канала ВК →
? Поддержать канал →
? По поводу рекламы →
✅ Приветствую, меня зовут Джейкоб и я снимаю видеоролики по Майнкрафту и не только. У меня есть ряд рубрик, которые я стараюсь периодически выкладывать. Советую посетить канал, уверен, что ты найдёшь для себя что-то интересное. Спасибо ?
#placeholderapi #javascript #майнкрафт #minecraft #плейсхолдер #созданиесборки #сборка #маинкрафт #майн #настройка #как #изменить #плейсхолдер #placholder #туториал #обучение #джейкоб
Если произошла ошибка:
- Попробуйте запустить файл от администратора
- Так же антивирус может блокировать запуск
- Напишите комментарий и вам могут помочь
Читайте также:
- Майнкрафт скачать Плагин Vault для Сервера
- Скачать плагин TrapLeave — лив из трапки в кт
- Майнкрафт плагин WCSafe Защита спавна от донатеров
- Скачать приватный чит Celestial Client для Майнкрафт 1.12.2
- Что делать если не запускается сборка сервера? Файл .bat закрывается
- Готовый сервер майнкрафт BungeeCord 1.8-1.14 Донат кейсы, Гаджеты, Питомцы
- Скачать Готовую сборку BungeeCord сервера Minecraft / Слив DexLand
- Другие видео обзоры майнкрафт
Обновлено: 09.02.2023
PlaceholderAPI — плагин/библиотека для Майнкрафт , которая позволяет серверам использовать переменные из широкого спектра ваших любимых плагинов в совокупности. Essentials, Factions, LuckPerms, Vault, AutoSell, GriefPrevention и т. д. Вы можете отображать информацию из ваших любимых плагинов в любом плагине, который поддерживает PlaceholderAPI. Полный список поддерживаемых плагинов смотрите ниже. Благодаря использованию облака расширения, PAPI эффективно позволяет выбрать, какие переменные вы хотите установить. Облако расширения позволяет получать новые переменные, обновления существующих расширений переменных и многое другое непосредственно с вашего сервера без обновления фактического плагина. С более чем 100 000 скачиваний PlaceholderAPI является обязательным для сервера любого типа или масштаба.
Основные команды плагина PlaceholderAPI:
/papi — Полный список команд.
/papi info «Название переменной» — Посмотреть информацию о переменной.
/papi parse — Синтаксический анализ строки переменной.
/papi reload- Перезагрузить плагин.
Основные права плагина PlaceholderAPI:
— placeholderapi.admin — возможность использования команд администратора.
— placeholderapi.list — возможность использования команды list.
— placeholderapi.reload — Использовать команду перезагрузки конфигурации плагина.
— placeholderapi.parse — возможность использования команды parse.
— placeholderapi.register — возможность регистрации или отмены регистрации переменных.
— placeholderapi.ecloud — позволяет использовать ecloud команды.
— placeholderapi.updatenotify — уведомляет о наличии обновления плагина.
— placeholderapi.*- Все возможности плагина.
nekaboy
Я скачал плагин PlaceHolderAPI и titlemanager.
Я хочу чтобы показывался режим игры, сделал.
Пишет: Режим: CREATIVE мне интересно как можно изменить название CRATIVE на КРЕОТИВ ? Я смог только изменить true и false в настройках и сделал ВКЛ и ВЫКЛ.
Заранее спасибо за помощь.
Переменные для плагина PlaceholderAPI:
Переменные сервера:
Команда загрузки расширений — /papi ecloud
Внимание: %server_ram_total% и %server_ram_max% сделайте одинаковыми
Звуки для игрока:
Воспроизведение звука игроку.
Команда для загрузки /papi ecloud download Sound
Глобальные переменные звуков:
Переменные пингования серверов:
Переменные для серверов BungeeCord:
Команда для загрузки /papi ecloud download RedisBungee
Переменные обращения к игроку:
Переменные к списку игроков:
Команда загрузки расширений: /papi ecloud download ListPlayers
Команда загрузки расширений: /papi ecloud download Player
Переменные к обращению к другому игроку:
Переменные статистики:
Команда загрузки расширений: /papi ecloud download Statistic
TrueFalse переменные:
Команда загрузки расширений: /papi ecloud download TrueFalse
Переменные плагинов:
Команда загрузки расширений: /papi ecloud download Plugin
Переменных очень много, поэтому я их спрятал под спойлер. Откройте спойлер чтобы посмотреть весь список переменных.
Нажмите клавиши Ctrl+F и введите в поиск название для Вашего плагина, так вам будет проще найти переменные если они есть
Список переменных плагинов:
AcidIsland
Команда загрузки расширений: /papi ecloud download AcidIsland
AdvancedCustomMenu+
AdvancedFly
AnimatedMenu
ASkyBlock
Команда загрузки расширений: /papi ecloud download ASkyBlock
AutoRank
Команда загрузки расширений: /papi ecloud download AutoRank
AutoSell
Команда загрузки расширений: /papi ecloud download AutoSell
BlockQuest
ChatColor+
ChatReaction
Команда загрузки расширений: /papi ecloud download ChatReaction
CheckNameHistory
Команда загрузки расширений: /papi ecloud download CheckNameHistory
CombatLogX
Compassance
CraftConomy
Команда загрузки расширений:/papi ecloud download CraftConomy
%craftconomy_% will return a double of the player’s balance in the specified currency
%craftconomy_@10% will return 10 times the players balance in the specified currency
%craftconomy_@int% will return an integer of the player’s balance in the specified currency (use this for DeluxeMenus)
DeluxeTags
Команда загрузки расширений: /papi ecloud download DeluxeTags
DonateParty
EnjinMinecraftPlugin
Команда загрузки расширений: /papi ecloud download Enjin
Envoys
Essentials
Команда загрузки расширений: /papi ecloud download Essentials
EZBlocks
Команда загрузки расширений:/papi ecloud download EZBlocks
EZPrestige
Команда загрузки расширений:/papi ecloud download EZPrestige
EZRanksPro
Команда загрузки расширений: /papi ecloud download EZRanksPro
Factions MCore
Команда загрузки расширений: /papi ecloud download Factions
FactionsUUID 1.6.9.5
Factions relation placeholders
ПРИМЕЧАНИЕ. Эти переменные работают с FUUID и MCore, все, что вам нужно, это загрузить расширение плагина, который вы используете. если вы используете эти заполнители в DeluxeChat, вам нужно включить эту опцию «relationship_placeholders_enabled: true», вы можете найти это в конфиге.
GAListener
Команда загрузки расширений: /papi ecloud download GAListener
GangsPlus
Команда загрузки расширений: /papi ecloud download GangsPlus
GemsEconomy
Команда загрузки расширений: /papi ecloud download GemsEconomy
Guilds
Команда загрузки расширений: /papi ecloud download Guilds
Heroes
Команда загрузки расширений: /papi ecloud download Heroes
IslandWorld
Jobs Reborn
Команда загрузки расширений: /papi ecloud download Jobs
killStats
Команда загрузки расширений: /papi ecloud download KillStats
LeaderHeads
Команда загрузки расширений: /papi ecloud download LeaderHeads
LegendQuest
(эти переменные были добавлены LegendQuest и могут измениться, поскольку LegendQuest обрабатывает добавление собственных заполнителей через API DeluxeChat)
Marriage (reloaded)
Команда загрузки расширений: /papi ecloud download Marriage
MarriageMaster
Команда загрузки расширений: /papi ecloud download MarriageMaster
McInfected
McInfected-Ranks
McMMO
Команда загрузки расширений: /papi ecloud download McMMO
MineCrates
Команда загрузки расширений: /papi ecloud download MineCrates
MobHunting
%mobhunting_rank% (Only updated when leaderboards is updated)
%mobhunting_total_kills% (No. of killed mobs (for the player))
%mobhunting_total_cash% (The amount of money dropped on ground)
%mobhunting_dropped_rewards% (No. of rewards left on ground)
%mobhunting_dropped_money% (Amount of money left on the ground)
%mobhunting_balance% (The amount of money in BagOfGold, in the player inventory)
MySQLTokens
Nicky
Команда загрузки расширений: /papi ecloud download Nicky
Nicknamer
Команда загрузки расширений: /papi ecloud download NickNamer
OnTime
Команда загрузки расширений: /papi ecloud download OnTime
PlayTime
Команда загрузки расширений: /papi ecloud download PlayTime
PlayerPoints
Команда загрузки расширений: /papi ecloud download PlayerPoints
PlotSquared
Команда загрузки расширений: /papi ecloud download PlotSquared
PointsAPI
PremiumVanish
PrisonMines
Команда загрузки расширений: /papi ecloud download PrisonMines
ProQuests
Команда загрузки расширений: /papi ecloud download ProQuests
pvpstats
QuickSell
Команда загрузки расширений: /papi ecloud download QuickSell
RedProtect
RoyalCommands
ReferralSystem
SellAll
SimpleClans
Команда загрузки расширений: /papi ecloud download SimpleClans
SimpleKillTracker
SkywarsReloaded
SimpleCoinsAPI
SimplePrefix
Команда загрузки расширений: /papi ecloud download SimplePrefix
Simple Suffix
Команда загрузки расширений:
SkillAPI
Команда загрузки расширений: /papi ecloud download SkillAPI
SQLPerms
SQLTokens
SuperbVote
Команда загрузки расширений: /papi ecloud download SuperbVote
SuperCredits
TokenEnchant
Команда загрузки расширений: /papi ecloud download TokenEnchant
TokenManager
Команда загрузки расширений: /papi ecloud download TokenManager
Towny
Команда загрузки расширений: /papi ecloud download Towny
USkyblock
Команда загрузки расширений: /papi ecloud download uSkyBlock
UltimateChat
UltimateVotes
Команда загрузки расширений: /papi ecloud download UltimateVotes
UnityGen
Команда загрузки расширений: /papi ecloud download UnityGen
Vault Economy
Команда загрузки расширений: /papi ecloud download Vault
Vault Permissions
Команда загрузки расширений: /papi ecloud download Vault
VoteParty
Команда загрузки расширений: /papi ecloud download VoteParty
VoteRoulette
Команда загрузки расширений: /papi ecloud download VoteRoulette
AdvancedAbilities
ASkyBlock/AcidIsland Island Border
BattleLevels
BeautyQuests
★★★ CARL THE CREEPER ★★★ THE BEST DELIVERY MAN PLUGIN
ChatColor+ Premium
Clans | Clan System | Full GUI + Commands
DeliveryMan
%deliveryman_prizes_all%
%deliveryman_prizes_from:[menu id]%
%deliveryman_has_prize:[menu id]:[prize id]%
DeluxePM
Команда загрузки расширений: /papi ecloud download DeluxePM
Denizen
%denizen_% (EG, %denizen_% )
DiscordSRV
DreamFish
%dreamfish_player_fishing : level%
%dreamfish_player_fishing : exp%
%dreamfish_player_fishing : exp_to_up%
%dreamfish_player_fishing : total_unlocked_bait%
%dreamfish_player_fishing : total_unlocked_fish%
%dreamfish_player_fishing_mode : fish%
%dreamfish_player_fishing_mode : fish_power%
%dreamfish_player_fishing_mode : tension%
%dreamfish_player_bait : mark_bait%
%dreamfish_player_bait : hook_bait%
%dreamfish_fish : : as_bait%
%dreamfish_fish : : type%
%dreamfish_fish : : price%
%dreamfish_fish : : resistance%
%dreamfish_fish : : power%
%dreamfish_fish : : max_power%
%dreamfish_fish : : max_speed%
%dreamfish_fish : : max_dive%
%dreamfish_fish : : average_length%
%dreamfish_fish : : average_weight%
%dreamfish_fish : : requirement : level%
%dreamfish_fish : : requirement : permission%
%dreamfish_fish : : in_region : %
%dreamfish_fish : : in_biome : %
%dreamfish_bait : : buyable%
%dreamfish_bait : : price%
%dreamfish_bait : : requirement : level%
%dreamfish_bait : : requirement : permission%
%dreamfish_bait : : fishing : total_possibility%
%dreamfish_bait : : fishing : chance : %
%dreamfish_bait : : fishing : possiblity : %
EpicFriends
EssCore
FunnyGuilds
HoloBlock
IslandRate | ASkyBlock Addon
IslandRate | AcidIsland Addon
Kingdoms+
LuckPerms
Команда загрузки расширений: /papi ecloud download LuckPerms
%luckperms_group_name%
%luckperms_context_%
%luckperms_groups%
%luckperms_has_permission_%
%luckperms_in_group_%
%luckperms_inherits_group_%
%luckperms_gon_track_ %
%luckperms_has_groups_on_track_ %
%luckperms_highest_group_by_weight%
%luckperms_lowest_group_by_weight%
%luckperms_first_group_on_tracks_%
%luckperms_last_group_on_tracks_%
%luckperms_expiry_time_%
%luckperms_group_expiry_time_%
%luckperms_prefix%
%luckperms_suffix%
%luckperms_meta_%
Minecord
Multiverse-Core
Команда загрузки расширений: /papi ecloud download Multiverse
MyCommand
MyPet & MyPet-Premium
MyPrefixSystem
NickReloaded
Outpost
PvPLevels
Parkour
Команда загрузки расширений: /papi ecloud download parkour
Parties
PixelVip
Skript
Команда загрузки расширений: /papi ecloud download Skript
SkyWars
SkyWars X
stTitles
Statz
Команда загрузки расширений: /papi ecloud download Statz
SuperVanish
TheTime
Thirst
Команда загрузки расширений: /papi ecloud download Thirst
%treasuresrecentfind_find_number_% (number 1 for most recent, 2 for second most recent etc..)
%treasuresrecentfind_from_first_% (number 1 for first reward, 2 for second reward etc..)
Treasures
%treasures_keys_%
%treasures_canbuy_treasure_-% (Example: %treasures_canbuy_treasure1-defaultopener.yml%)
%treasures_treasure_price_-%
Trey’s Double Jump
VotingPlugin
WickedSkyWars
WorldGuard
Команда загрузки расширений: /papi ecloud download WorldGuard
BedWars1058
%bw1058_stats_firstplay% — get first play date using the player’s language date-format
%bw1058_stats_lastplay% — get last play date using the player’s language date-format
%bw1058_stats_kills% — get a player’s total kills count
%bw1058_stats_wins% — get a player’s total wins count
%bw1058_stats_finalkills% — get a player’s total final kills count
%bw1058_stats_deaths% — get a player’s total deaths count
%bw1058_stats_looses% — get a player’s total looses count
%bw1058_stats_finaldeaths% — get a player’s total final deaths count
%bw1058_stats_bedsdestroyed% — get a player’s total beds destroyed count
%bw1058_stats_gamesplayed% — get a player’s total games played count
%bw1058_current_playing% — get current players (playing) count
%bw1058_current_arenas% — get total arenas count
TNTRun_reloaded
Команда загрузки расширений: /papi ecloud download TNTRun
Решено Не работает placeholder из плагина Coins
jouse
kan3yda
Я писал /papi ecloud download coins еще
Raidark
Попробуй скачать другую версию PlaceHolderAPI
Прочитайте перед использованием форума:
Правила
FAQ
YNAZA
Заходи в конфиг PlaceholderAPI и включай плейсхолдеры. Могу ошибаться так как не особо понял вопрос.
Raidark
В кратце плэйсхолдер просто не работает
Как установить?
1. Скачайте плагин.
2. Из архива возьмите скачанный файл и перенесите в папку plugins вашего сервера.
3. Перезапустите сервер.
4. Готово.
Основные команды плагина PlaceholderAPI:
/papi — Полный список команд.
/papi info «Название переменной» — Посмотреть информацию о переменной.
/papi parse — Синтаксический анализ строки переменной.
/papi reload- Перезагрузить плагин.
Читайте также:
- Кто такой нюкер в доте 2
- Достигнут недельный лимит сокровищ genshin impact что делать
- Как делать перфокарту на 12 игл для вязальной машины silver reed sk155
- Планшет без сим карты как подключить интернет
- Где взять значок интерпола hitman
Content
- About
-
Internal placeholders
- Universal
- Bukkit only
- BungeeCord only
- PlaceholderAPI
-
Relational placeholders
- About
- Usage
-
Refreshing
- Refresh intervals
- Sync refreshing
-
Placeholder is not working
- Internal placeholder is not working
- PlaceholderAPI placeholder is not working
-
API
- Server placeholders
- Player placeholders
- Relational placeholders
About
TAB offers various placeholders to display the most common information. It also supports PlaceholderAPI placeholders.
Internal placeholders
Basic placeholders provided by the plugin. Most of these placeholders were added because they were requested by people who don’t want to install another plugin just to show username. Some of them have configurable output in config.yml in Placeholders
section. Unused placeholders do not affect performance in any way.
Placeholders must be refreshed. All internal placeholders have manually defined refresh interval, which I found the most optimal and cannot be changed. Time is in milliseconds. -1
is used for placeholders which are in fact constants (such as %player%), or fire an event each time they change, which can be listened to (such as %world%) and value updated. Refresh interval for conditions is set to be equal to fastest refreshing placeholder used inside each condition.
Warning: Trying to use a bukkit-only placeholder on bungeecord because you decided to copypaste config to bungee installation will result in those placeholders to not work! Use their PlaceholderAPI alternatives with PlaceholderAPI support on bungeecord.
Universal
Identifier | Refresh interval | Description |
---|---|---|
%online% | 1000 | total online player count (excluding vanished players) |
%world% | -1 | name of world where player is |
%worldonline% | 1000 | amount of players in the same world (excluding vanished players) |
%ping% | 500 | Player’s ping to the server where TAB is installed. Note: This value is measured by the server and TAB is only retrieving that value. If it’s wrong, it’s not a TAB issue. |
%player% | -1 | player’s real name, result of .getName(), cannot be fooled by plugins that change player name |
%time% | 500 | current real time, output configurable in config.yml |
%date% | 60000 | current date, output configurable in config.yml |
%staffonline% | 2000 | amount of online players with tab.staff permission |
%nonstaffonline% | 2000 | amount of online players without tab.staff permission ( online — staffonline ) |
%memory-used% | 200 | used RAM of server in MB |
%memory-max% | -1 | total RAM of server in MB |
%memory-used-gb% | 200 | used RAM of server in GB |
%memory-max-gb% | -1 | total RAM of server in GB |
%player-version% | -1 | version of player, such as «1.14.4» |
%player-version-id% | -1 | network ID of player’s version |
%luckperms-prefix% | 1000 | prefix from LuckPerms from the same instance when TAB is installed |
%luckperms-suffix% | 1000 | suffix from LuckPerms from the same instance when TAB is installed |
%displayname% | 500 | display name set by permission plugin, typically prefix + name + suffix |
%group% | 1000 | Returns player’s primary group name. Used for internal functionality, but can be used as a display placeholder as well. |
%vanished% | 1000 | Returns true/false based on player’s vanish status. Used for internal functionality, but can be used as a display placeholder as well. |
%% | -1 | Returns the % symbol. Useful to display % symbol without breaking all placeholders after it |
Bukkit only
Identifier | Refresh interval | Description |
---|---|---|
%health% | 100 | Player’s health, rounded up to match Minecraft’s heart display. |
%tps% | 1000 | TPS of server from the last minute (measured by server) |
%vault-prefix% | 1000 | prefix of player detected by Vault |
%vault-suffix% | 1000 | suffix of player detected by Vault |
%afk% | 500 | afk status of player, detected by Essentials / Purpur |
%mspt% | 1000 | server’s current milliseconds per tick (requires paper core) |
%essentialsnick% | -1 | Nickname from Essentials, otherwise player’s name |
BungeeCord only
Identifier | Refresh interval | Description |
---|---|---|
%server% | -1 | name of server where player is |
%serveronline% | 1000 | amount of online players on server where the player is (excluding vanished players) |
%online_<servername>% | 1000 | amount of online players on specified server (excluding vanished players) |
PlaceholderAPI
PlaceholderAPI is supported and relational placeholders are supported too. When parsing relational placeholders, TAB puts viewer as the first player argument and target player as second argument.
You can find most of placeholders that PlaceholderAPI offers on PlaceholderAPI wiki. Some plugins are not listed there, for those you’ll need to check their own wiki for placeholders.
TAB also offers its own placeholders into PlaceholderAPI. To enable the expansion, set
placeholders:
register-tab-expansion: true
in config.yml.
Full list of placeholders:
Identifier | Description |
---|---|
%tab_tabprefix% | Current tabprefix with replaced placeholders |
%tab_tabsuffix% | Current tabsuffix with replaced placeholders |
%tab_tagprefix% | Current tagprefix with replaced placeholders |
%tab_tagsuffix% | Current tagsuffix with replaced placeholders |
%tab_customtabname% | Current customtabname with replaced placeholders |
%tab_customtagname% | Current customtagname with replaced placeholders |
%tab_belowname% | Current belowname with replaced placeholders |
%tab_abovename% | Current abovename with replaced placeholders |
%tab_tabprefix_raw% | Raw tabprefix containing unparsed placeholders |
%tab_tabsuffix_raw% | Raw tabsuffix containing unparsed placeholders |
%tab_tagprefix_raw% | Raw tagprefix containing unparsed placeholders |
%tab_tagsuffix_raw% | Raw tagsuffix containing unparsed placeholders |
%tab_customtabname_raw% | Raw customtabname containing unparsed placeholders |
%tab_customtagname_raw% | Raw customtagname containing unparsed placeholders |
%tab_belowname_raw% | Raw belowname containing unparsed placeholders |
%tab_abovename_raw% | Raw abovename containing unparsed placeholders |
%tab_scoreboard_name% | Returns name of player’s currently displayed scoreboard or empty string if none is displayed due to no display condition being met |
%tab_scoreboard_visible% | «Enabled» if visible, «Disabled» if not |
%tab_bossbar_visible% | «Enabled» if visible, «Disabled» if not |
%tab_nametag_preview% | «Enabled» if previewing armor stands using /tab nametag preview, «Disabled» if not |
%tab_nametag_visibility% | «Enabled» if player can see nametags, «Disabled» if disabled using /tab nametag toggle |
%tab_replace_<placeholder>% | Applies Placeholder output replacements to a PlaceholderAPI placeholder (for example %tab_replace_essentials_vanished%) |
%tab_placeholder_<placeholder>% | returns value of tab’s internal placeholder (such as %tab_placeholder_animation:name% for %animation:name%) |
Relational placeholders
About
Unlike classic placeholders which take either 0 (placeholders with same output for all players) or 1 (per-player placeholders) players, relational placeholders take in 2 players. The first usage was to display relation between two players, specifically enemies / allies (red / green) for factions, allowing players to see faction names of other players colored based on relation.
Usage
TAB does not offer any internal relational placeholders. However, it has full support for PlaceholderAPI placeholders. You can also register your own relational placeholders using the API. In PlaceholderAPI, all relational placeholder identifiers must start with %rel_
. Same rule is used for placeholders registered with the API as well.
When passing players into the function, first player is the player viewing the text, second player is the one text is being displayed on.
When trying to use placeholders from other plugins, you will need to check their documentation and search for relational placeholders. If your plugin does not appear to offer any, you ran out of luck and TAB cannot do anything about it.
Refreshing
Refresh intervals
TAB is refreshing placeholders in intervals. For internal placeholders it’s using values I found the most optimal and set directly in the plugin. Refresh intervals for PlaceholderAPI placeholders can be configured.
Sync refreshing
By default, all placeholders are refreshed asynchronously so they don’t slow down the server, since reading should be a thread-safe operation. Some placeholders, however, require to be refreshed in the main thread, causing problems or throwing errors when refreshed asynchronously. For these, replace them with %sync:<original placeholder>%
and they will be refreshed in the main thread, for example %sync:server_total_entities%
.
Keep in mind that now you should configure reasonable refresh interval for these placeholders to not cause TPS drops (with async placeholders it doesn’t really matter). Configured refresh intervals and CPU usage of placeholders can be checked using /tab cpu
.
Placeholder is not working
When using a placeholder, you should know if it’s a TAB’s internal placeholder or a PlaceholderAPI placeholder. If you don’t, that’s the problem.
Note: Don’t forget that using %
symbol will mess up placeholder starts and ends, breaking all placeholders after it. To make the symbol display correctly without messing up placeholders, use %%
to display the symbol.
Example: Sale 100% OFF!
-> Sale 100%% OFF!
.
Internal placeholder is not working
All TAB’s internal placeholders are listed above. Some of them are bukkit only (meaning they won’t work on bungeecord) and some are bungee only. Trying to use a bukkit-only placeholder on bungeecord as a result of copypasting the config from bukkit version thinking it’s identical will not work for you and those placeholders will not work.
If you want to use those, set up PlaceholderAPI support on bungeecord and find their PlaceholderAPI equivalent. Large portion of those are included on PlaceholderAPI’s wiki.
For example you can use %vault_prefix% instead of %vault-prefix%, %essentials_afk% instead of %afk% and so on.
PlaceholderAPI placeholder is not working
If you have TAB installed on bungeecord, make sure you set up PlaceholderAPI support on bungeecord as there is no other way to retrieve data from technically a different server.
If you have TAB on bukkit or the previous step did not work, make sure it works when using /papi parse me <placeholder>
. If it does not work, the issue is not on TAB’s end. Most of the time it’s just a missing expansion (/papi ecloud download <name>
and /papi reload
).
API
To get started with the API, see Developer API page.
For working with placeholders, you will need the PlaceholderManager
. Get it using TabAPI.getInstance().getPlaceholderManager()
.
Placeholders have two attributes:
- An identifier, which is used to uniquely identify the placeholder. This is also what’s usually used for replacement. For example, in
%uptime%
, the identifier is%uptime%
. - A refresh rate in milliseconds, which is how often the placeholder’s refresh function will be called, to get a new value to display.
Server placeholders
Server placeholders are global to the entire plugin. Their values are not dependent on player.
Examples of server placeholders would be uptime and TPS placeholders.
To register a new server placeholder, use PlaceholderManager#registerServerPlaceholder(String, int, Supplier<Object>)
. The first two parameters are explained above, and the last parameter is a function that will be called to refresh the value of the placeholder. Example:
TabAPI.getInstance().getPlaceholderManager().registerServerPlaceholder("%system-time%", 50, () -> System.currentTimeMillis());
This placeholder will show current system time and update every 50 milliseconds.
Player placeholders
Player placeholders are calculated on a per-player basis. These depend on the player that we want to get the value for.
Examples of player placeholders would be nickname and prefix.
To register a new player placeholder, use PlaceholderManager#registerPlayerPlaceholder(String, int, Function<TabPlayer, Object>)
. The first two parameters are explained above, and the last parameter is a function that will be called to refresh the value of the placeholder. Example:
TabAPI.getInstance().getPlaceholderManager().registerPlayerPlaceholder("%player-uuid%", -1, player -> player.getUniqueId());
This placeholder will show player’s UUID and never refreshes, since UUID doesn’t change at runtime.
Relational placeholders
Relational placeholders are calculated using a pair of players, instead of a single one. These depend on the player pair that we want to get the value for. Their identifier must start with rel_
.
To register a new relational placeholder, use PlaceholderManager#registerRelationalPlaceholder(String, int, BiFunction<TabPlayer, TabPlayer, Object>)
. The first two parameters are explained above, and the last parameter is a function that will be called to refresh the value of the placeholder. Example:
TabAPI.getInstance().getPlaceholderManager().registerRelationalPlaceholder("%rel_staff_version%", 1000, (viewer, target) -> {
if (viewer.hasPermission("tab.staff")) {
return target.getVersion().getFriendlyName();
} else {
return "";
}
});
This placeholder will show version of players, but only to those, who have tab.staff
permission. First player in the method is viewer, second player is target. Same order is applied when hooking into PlaceholderAPI as well.
-
#1
Сегодня мы создадим собственный Placeholder по средствам PlaceholderAPI. Наш заполнитель будет работать так: если есть определенное право, то он выведет «Есть доступ», если нет — «Нет доступа». Проверять работу будем в DeluxeMenus.
Больше примеров можно посмотреть в документации, но думаю пару статей я ещё посвящу этой теме.
Начнем с того, что нам нужно скачать для papi расширение, вводим /papi ecloud download javascript. После перезагрузки у нас появится папка javascripts в PlaceholderAPI, в ней есть example.js (он будет пустым). Если ниже спуститься по документации, то можно увидеть пример для has permission, возьмем его за основу. По комментариям автора попытаюсь рассказать, где и за что отвечают различные функции:
var haspermission = «%player_has_permission_permission.test%»; — собственно сам заполнитель от которого он отталкивается
function permission() { — создать функцию с именем, которое вы хотите
if (haspermission === «yes») { — если переменная haspermission, которую мы создали перед возвратом выведет yes (значение true)
return «&aYou have the Test permission!»; — выведет то, что мы установили в return
else { return «&cYou don’t have the Test permission!»; — если переменная haspermission неверна, она вернет то, что мы установили
permission(); — этим мы вызываем функцию для запуска
Вот мой пример:
Что дальше? Нам нужно проверить работает ли наш placeholder — выдаем право, которое указали после player_has_permission_<ваше_право>.
В папке PlaceholderAPI есть файл javascript_placeholders.yml в нем можно изменить ключ-название для вашего скрипта. Помимо этого всего не всегда работает правильно кодировка в js-файле, поэтому я сделал сообщения в формате UTF-16, это сделать можно на специальном сайте. (Может быть у вас будет все в порядке, проверьте перед данной процедурой)
Теперь строчки выглядят так
Перейдем в любое меню из DeluxeMenus, я хочу указать данный заполнитель в название иконки, вводим «%javascript_ключ из placeholderapi%» у меня получилось вот так:
Вот что в игре:
Если нет прав:
-
#2
Не плохо, но эти команды не покажут весь потенциал всех возможностей
-
#3
Я делаю топ 5 игроков по деньгам, прыжкам и т д. Первое место, естественно показываюсь я, а остальные 4 места — пустые. Как сделать так, чтобы за место пустого места показывалось например «Место еще никто не занял»
Плейсхолдеры
Материал из ML WIKI
Плейсхолдеры — часть названия динамической переменной или текстового значения, которая содержит имя выбранного игрока. Плейсхолдер используется для изменения типа динамической переменной, а также для указания никнеймов в текстовом значении на месте плейсхолдера.
Присутствует 2 типа использования плейсхолдеров:
- Интегрированный — буквально вшитый в блоки-функции. Чтобы выбрать игрока для действий или проверки условий, необходимо нажать по табличке блока-функции ШИФТ + ПКМ.
- Внешний — используется в названии динамических переменных или в текстовых значениях, вставляя значения подобные %player% или %selected%
Список внешних плейсхолдеров
%player% — игрок по умолчанию
Плейсхолдер %player% выбирает в событии игрока по умолчанию. Поддерживает только имена игроков.
%damager% — атакующая сущность
Плейсхолдер %damager% выбирает в событиях нанесения урона сущность, которая нанёсла урон. Поддерживает имена всех типов сущностей.
Примечание №1 — Не работает в событии получения урона
Плейсхолдер %damager% не выбирает атакующую сущность в событиях получения урона.
Примечание №2 — Событие получения урона снарядом
Плейсхолдер %damager% выбирает имя снаряда в событиях получения урона снарядом.
%victim% — сущность-жертва
Плейсхолдер %victim% выбирает в событиях нанесения и получения урона сущность, которая получила урон. Поддерживает имена всех типов сущностей.
%killer% — сущность-убийца
Плейсхолдер %killer% выбирает в событиях убийства сущность, которая убила другую. Поддерживает имена игроков и мобов.
%selected% — сущность, выбранный выборкой
Плейсхолдер %selected% выбирает сущности, которые были выбраны блоком-функцией «Выбрать объект» или интегрированной выборкой. Поддерживает имена всех типов сущостей.
%selection% — все сущности одновременно, выбранные выборкой
Плейсхолдер %selection% выбирает все сущности одновременно, которые были выбраны блоком-функцией «Выбрать объект» или интегрированной выборкой. Поддерживает имена всех типов сущостей и может использоваться только в названии динамической переменной.
%shooter% — сущность-стрелок
Плейсхолдер %shooter% выбирает сущность, которая в событиях нанесения и получения урона снарядом или запускает его. Поддерживает имена игроков и мобов.
%default% — сущность по умолчанию
Плейсхолдер %default% выбирает в событии сущность по умолчанию. Поддерживает имена всех типов сущностей.
Примечание №1 — Отличие от %player%
В событиях игрока %player% и %damager% одинаковы, но в событиях сущностей, плейсхолдер %default% может выбирать имена сущностей.
%entity% — энтити по умолчанию
Плейсхолдер %entity% выбирает в событии энтити по умолчанию. Поддерживает только имена энтити.
%random% — случайный игрок
Плейсхолдер %random% выбирает случайного игрока в мире. Поддерживает только имена игроков.
Примеры использования
Поскольку плейсхолдеры содержат в себе никнеймы выбранных игроков, они широко используются в названии динамических переменных, обновлении средств коммуникации через цикл, а также разного рода сообщениях.
Динамическая переменная
У динамической переменной есть два типа:
- Глобальная — содержит в названии плейсхолдер.
- Локальная — не содержит в названии плейсхолдер.
Глобальная переменная существует одна на весь мир, с одним значением. Локальная же хранит в своём названии плейсхолдер, то есть, никнейм выбранного игрока, что означает уникальность каждой созданной
динамической переменной.
Локальная динамическая переменная может хранить личные данные игрока, типа баланса или статистики, а глобальная некие игровые данные, типа времени в таймере, количество сделанных действий всеми игроками или количество игроков.
Если в локальной переменной установить плейсхолдер %victim% и изменять его при нанесении урона, то будет изменяться локальная переменная сущности-жертвы.
Скорборд
У скорборда есть два типа распространения:
- Локальный скорборд — скорборд, который создаётся для одного игрока, поскольку плейсхолдер в названии создаваемого скорборда делает его уникальным.
- Глобальный скорборд — скорборд, в названии которого отсутствует какой-либо плейсхолдер, что делает его одним на всю игру и одинаковым для отображения всем игрокам.
И два типа обновления:
- Обновление циклом — цикл регулярно обновляет скорборд. В цикле по умолчанию выбраны все игроки, поэтому, стоит использовать плейсхолдер %selected% в названии скорборда, если обновляются локальные скорборды.
- Обновление функцией — после изменения каких-либо данных, содержащихся в скорборде, вызывается функция, которая обновляет скорборд. Поскольку вызываемая функция не содержит в себе выборку всех игроков, рекомендуется использовать в обновлении плейсхолдер %selected, поскольку таким образом, перед вызовом функции можно установить «Выбрать объект«, чтобы указать игрока, скорборд которого следует обновить.