#placeholder-api
150650 messages · Page 104 of 151
you can probably have a cache at the level of the expansion, which is used for display purpose only
And on join it queries the database?
yeah but you can't get an instant replay without blocking the thread (or at all), so you would still need some sort of cache
I'm not a bungeecord expert, but you can probably have a channel (server > proxy) where you request the data to be update and a channel where the data is broadcasted (proxy > each server)
E.g. on player join, you request the data to be updated, the proxy plugin will broadcast a message containing player's balance to all the servers in the nextwork and the expansion will cache that data
Okay
I assume that all you have is a bungeecord plugin?
Currently
I knew I'd have to make a Spigot plugin
When the player joins the network, it'll cache to the Bungeecord plugin, and the server they connect to.
When they switch servers the Spigot plugin will send the message to the Bungeecord plugin which essentially relays it to the Spigot plugin on that server and that server will cache it?
Then when the Proxy is closed the Spigot plugin will send a message with updated information?
I am unsure why I am overthinking something like this
I mean I did have HikariCP setup for the purpose of multiple servers connecting to it
I don't believe that is necessary if I do this method
But I think that method is the right way to do it?
i have 2 servers a hub and prison server and i want to display the uptime on my prison server from the hub how would i do this
there's no expansion that can do that afaik
so you probably need a custom coded one, #1070594800950194237 #1070594802103636008
how do i use math expansion for adding to placeholders
%bedwars_1_players% %bedwars_2_players%
i dont think it was working at all. It wasnt me to be on java runtime 55.0 aka java 11
when i done /papi list it didnt show it in there either
use an older math expansion version (formatting might be different) or upgrade java (if you can)
doesnt show witch one for java 8 though
Try them 1 by 1
Yes
oml
there is only 19 right 🙄
yeah i see that
still doesnt work ingame
[PlaceholderAPI] Failed to load expansion class MathExpansion (Is a dependency missing?)
?startuplog
?paste
try 1.2.5
seems to have it in there
i got it fixed
when i tried to run java 11
i forgot to turn off something in my config
so it just crashed
icic
whhich the api to show kills and death counts on my scoreboard
which*
statistic expansion
%statistic_player_kills% will show kills count
%statistic_deaths% will show deaths count
whats about the placeholder for top kills on server for holos
you'll need a plugin like ajleaderboards to track that
Is there a papi placeholder that can hash text?
Also how slow is random number generator generating from 1000001 to 9999999
Every tick counts
H, I made a new Placeholder in my plugin, but it doesn't work in the game.
PSPlaceholderExpansion.class
public class PSPlaceholderExpansion extends PlaceholderExpansion {
@Override
public boolean persist() {
return true;
}
@Override
public boolean canRegister(){
return true;
}
@Override
public String getIdentifier() {
return "edencore";
}
@Override
public String getAuthor() {
return "ProrokRM";
}
@Override
public String getVersion() {
return "1.0";
}
@Override
public String onPlaceholderRequest(Player p, String identifier) {
if (p == null) return "test";
if (identifier.equalsIgnoreCase("emerald_player")) {
return EconomyAPI.getFullBalanceString(p);
}
return "test";
}
}
in onEnable()
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
EdenAPI.getCustomLogger().info("PlaceholderAPI support enabled!");
placeholderAPISupportEnabled = true;
new PSPlaceholderExpansion().register();
} else {
EdenAPI.getCustomLogger().info("PlaceholderAPI not found! There will be no PlaceholderAPI support.");
}
When using the command /papi parse me %emerald_player%
Displays this in chat - %emerald_player%, not a number
What am I doing wrong?
did you add PlaceholderAPI as a softdepend in your plugin.yml?
yes - softdepend: [Vault, PlaceholderAPI]
do you get your "PlaceholderAPI not found!..." msg in the console when the plugin loads?
no( - [09:32:36] [Server thread/INFO]: [EdenCore/INFO] PlaceholderAPI support enabled!
I doubt that it'll change anything, but can you try using onRequest instead of onPlayerRequest?
not work(
I'm not sure what's wrong then =/ hopefully someone else will answer you

Did you try onRequest(OfflinePlayer, String)?
yes
Hi I am having a problem with embedding placeholders I want to get the value of {afk::%player's uuid%} from a placeholder so i have the Skript and Player expansions installed and when i do /papi parse me %skript_afk::*% it sends the list of people that are afk and when i do /papi parse me %player_uuid% it sends my uuid but when i do /papi parse me %skript_afk::{player_uuid}% it just returns N/A any idea why this is?
does skript parse bracket placeholders?
oh it might be trying to parse that as a skript variable
oh wait
actually!
the skript expansion supports {uuid}
specifically for you 👍 ||not really||
good to know
yep!
if you did need to pass somethinge other than {player} or {uuid} you might be able to use the nested expansion to parse the bracket placeholder %nested_skript_afk::{player_uuid}%
not really needing the actual nesting part, moreso just to parse the bracket placeholder
since skript expansion doesn't do that
yes, i have that installed
so you just need use it
.
hash as in encrypt?
.
Hey guys, this is a dev build that will potentially fix the java.lang.IllegalStateException: zip file closed problem that started to happen recently. Please give it a try and let us know if something has changed.
Anyone is more than welcome to test it, I'm just going to ping some people that have reported the issue recently @solid helm @zealous vault @slate socket @toxic kernel
It sadly didn't fix it
you have to download it manually from the ecloud
Is there a reason to why it no longer is downloadable automatically?
I've seen a github issue about it causing memory leaks. Is the expansion unsafe to use?
Hey, does anyone know whether it's possible to use custom fonts like ᴛʜᴇꜱᴇ for placeholders?
%math_[decimals]:[rounding]_<expression>% will it be like %math_0_<expression>%
%math_0_{bungee_mHub-1}+{bungee_mHub-2}%
like this cause now it show .000 and idk how to fix currently using %math_{bungee_mHub-1}+{bungee_mHub-2}%
nvm, found out how to do so 👍
please tell me
maybe i need for in the feature xD
I used the javascript addon to replace all characters with characters from a custom font
but than you cant use normal font at all?
It only replaces the text from a placeholder, so it won't conflict with anything else
ah okay nice nice i cant do that xD
wow
thanks staff XD 5 days and 5 days without answer with asking 3 times
amazing ignore
@tardy fiber Nobody is purposefully ignoring you.
What are you expecting %bungee_online% to show?
the only 2 bungee placeholders are
%bungee_total%
%bungee_<servername>%
Hello could I please get some help with updating plugin hooks on my server? Like how do I update them?
Plugin hooks? Not sure what those are
Probably expansions
is there a block break placeholderapi for formatted?
?startuplog
@sharp raft
send that over
I don't understand
is there a placeholder for block breaks?
%statistic_mine_block%
okay thanks,
?paste
i forgot which one i downloaded can you send me your employee
this one should work https://api.extendedclip.com/expansions/skippi/
Can anyone help with this
use 0: because the syntax is [decimals]:[rounding] not just [decimals]
hi, i'm getting this error when using this placeholder %mcmmo_power_level_cap%:
https://paste.helpch.at/ofaduhihad.rb
but not if I use %mcmmo_power_level%
manually? or is it ok to do it from the PAPI ecloud feature?
Hello. On server start, none of placeholders works, but after i reload the papi, then it's good. Any idea why?
is this even known as an issue?
forgot to mention, I'm running paperspigot 1.19.3
Do the placeholders not work on all plugins or just some?
Could you upload your latest.log to a paste site?
Hello, I would like to know how I can use placeholderAPI on my proxy server
I'm pretty sure you can't.
But there is no way to make a PlaceholderApi understand that my plugin is in the proxy (example Luckperms)
PlaceholderAPI is a spigot plugin, it will never be available of proxy, so no
unless you code a spigot addon of your plugin, well idk
never say never
||(it was so they wouldn't suspect)||
Hey everyone! For the past few hours I've been looking for a papi placeholder that returns the selected hand slot (integer).
Can't find any placeholder that does this though, could anyone point me into the right direction?
morning guys
so, i'm havi many Spam of this message and i don't know how fix it, i tried to reinstall Papi and Vault, but this message keep... any idea how to fix it?
this is my latest.log
oh ok
here https://imgur.com/a/3XHtXEF
can you do /papi reload?
yeah, say
3 placeholder hook(s) registered!
and then /papi parse me %vault_prefix%
https://hastebin.com/share/onokohudex.ruby
here, i get this message

if you who are the staff are confused
what about me who are just a silly person trying to make something cool 😐 🥲
if you found any info about that... tell-me 🥲
hello, i want to know how can i use nbtstrings modifier with getinfo modifier
i have tried %checkitem_getinfo:mainhand_nbtstrings\:% but it returns null
and i checked placeholder list, the wiki said that u can do it
you have a \ in your placeholder
if without \, thenhttps://pastebin.com/7BpuqMi5
any info about this issue?
straight up no idea what's going on
i thought purpur was proxy lmao
might have something to do with purpur, though I really do not know.
is there any other possibility? so that i will try them together
I'd test it on spigot and see
Do you have the latest version of checkitem? only other thing I can think of
I was checking the nbtapi to see if a newer version came out, but there is not one
Also no issues mentioning this issue on their github either
thats it..im using 2.6.4 which doesnt support 1.19.3, ty, but how can i use this placeholder to get the specific nbt's value?
alr, ty
Is there a way for me to get the placeholders from a plugin in game ?
for testing?
/papi parse me <string> will parse any placeholders in <string> for yourself
(/papi parse me %player_name%)
I don't know what placeholders they have set within the plugin, its a paid plugin without a spigot page and no help file. its a small fix that I want to do rather then wait for the dev to reply to a message to help me out
ahh
might show up in /papi info <expansion> i think is the command if they set it @orchid charm
otherwise, decompiling/waiting for dev will be the only way really
Yeah that command only gave me the status, author and version of the plugin
check all commands ik there is one
but again, only if the author defined them will they show up
Yeah ok, Ill try it with another plugin and see if anything comes up
hmm, maybe it's only for ecloud? weird
/papi ecloud placeholders <expansion>
try it see if it works for local 🤷♂️
lol
Says there is no expansion with that name
ah just gonna have to wait for your dev
or use a decompiler like jd-gui to open it up and see
Yeah ok, thanks for the support
Hello,
is there a placeholderapi placeholder/expansion that will ouput the current epoch unix timestamp?
%unix_timestamp%, output will be: 1677344561
should i go with javascript papi expansion?
[18:33:15 WARN]: [PlaceholderAPI] [math] Placeholder: %math_1:_{ecoskills_wisdom}*2%
[18:33:15 WARN]: [PlaceholderAPI] [math] Cause: '*2' is not a valid Math Expression.
[18:33:15 WARN]: [PlaceholderAPI] [math] Invalid Placeholder detected!
[18:33:15 WARN]: [PlaceholderAPI] [math] Placeholder: %math_0:_min(0.0000024 * {vault_eco_balance_fixed}, 120)%
[18:33:15 WARN]: [PlaceholderAPI] [math] Cause: 'min(0.0000024 * , 120)' is not a valid Math Expression.
[18:33:15 WARN]: [PlaceholderAPI] [math] Invalid Placeholder detected!
[18:33:15 WARN]: [PlaceholderAPI] [math] Placeholder: %math_0:_({checkitem_amount_mat:emerald}+({checkitem_amount_mat:emerald_block}*9))/100%
[18:33:15 WARN]: [PlaceholderAPI] [math] Cause: '(%checkitem_amount_mat:emerald%+(%checkitem_amount_mat:emerald_block%*9))/100' is not a valid Math Expression.``` Not sure why I'm getting these on console, but papi parses them fine.
https://pastebin.com/iiff74vL what hapenned?
[INFO] Successfully downloaded expansion Vault [1.8.0] to file: Expansion-vault.jar
[INFO] Make sure to type /papi reload to enable your new expansion!
[INFO] [PlaceholderAPI] Fetching available expansion information...
papi reload
[INFO] [PlaceholderAPI] Placeholder expansion registration initializing...
[INFO] [PlaceholderAPI] Fetching available expansion information...
[WARNING] [PlaceholderAPI] Cannot load expansion vault due to an unknown issue.``` help
[WARNING] [PlaceholderAPI] Cannot load expansion vault due to an unknown issue.```
--
```[WARNING] [PlaceholderAPI] Loaded class com.viaversion.viaversion.api.type.Type from ViaVersion v4.5.1 which is not a depend or softdepend of this plugin.```
Warnings like the last one can be fully ignored
Do you have a stacktrance for vault?
Hey, I wanted to download script expansion manually, because it is not in /papi ecloud download , but I still get the error "expansion/SkriptExpansion has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0"
Are there any older versions? Or can I somehow increase the class file version?
i just need some help
Im using the TAB plugin to add scoreboards, and placeholderAPI is saying my death count is 4, this is based off of the %statistic_deaths%. Is there a way to manually set that data to 0?
You can edit that only via world data
do you know of a tutorial I can use or are you able to explain it?
No
is there any placeholder for plugin amount :d
no, I fixed it by changing the version of the expansion to vault 1.7.1, the version vault 1.8.0 gave me an error
Hello, I keep getting this from PAPI no matter how hard I try to fix it: NullPointerException because this.permission is null
I tried a custom code that I made to reach Vault's API and it worked yet PAPI can not reach it for some reason
My Vault version is: 1.7.3-b131 , my PAPI version is: 2.11.2
Server version is: 1.19.3
UPDATE: I fixed the problem by downgrading my PlaceholderAPI version, nothing else
And also the Vault expansion version
CC: @vivid sparrow I think you recently updated the Vault expansion sir.
Yeah ive tried to look into it but I can't figure out why it throws an error @trim mist
I will see what I can do
@sinful urchin @tall monolith @terse grove @candid rivet
I knew it that something with vault expansion, I downloaded the 1.6.0 version then the error gone, will try this version, thanks Gaby 😊
Have a good day, take a rest now :).
bump
My placeholder %vault_eco_balance% or %vault_eco_balance_formatted% don't work in my scoreboard i have excecuted the commands /papi ecloud download vault and /papi reload but the placeholder still does not work
Do you have vault and an economy plugin installed?
/vault-info and send the output
[18:33:13 INFO]: [Vault] Vault v1.7.3-b131 Information
[18:33:13 INFO]: [Vault] Economy: EssentialsX Economy [EssentialsX Economy, Essentials Economy]
[18:33:13 INFO]: [Vault] Permission: LuckPerms [LuckPerms, SuperPerms]
[18:33:13 INFO]: [Vault] Chat: LuckPerms [LuckPerms]
Do /papi parse username %vault_eco_balance%
It returns 35.97
Okay then is because of your scoreboard plugin
so thanks
sorry
Np
Hey, I am using this skript in order to change the font of the %player_name% placeholder, but whenever there's 2 or more of the same character in a row, only one appears. Does anyone know how I might be able to fix this?
var font = "%player_name%"
.replace(/[a|A]+/g, "ᴀ")
.replace(/[b|B]+/g, "ʙ")
.replace(/[c|C]+/g, "ᴄ")
.replace(/[d|D]+/g, "ᴅ")
.replace(/[e|E]+/g, "ᴇ")
.replace(/[f|F]+/g, "ғ")
.replace(/[g|G]+/g, "ɢ")
.replace(/[h|H]+/g, "ʜ")
.replace(/[i|I]+/g, "ɪ")
.replace(/[j|J]+/g, "ᴊ")
.replace(/[k|K]+/g, "ᴋ")
.replace(/[l|L]+/g, "ʟ")
.replace(/[m|M]+/g, "ᴍ")
.replace(/[n|N]+/g, "ɴ")
.replace(/[o|O]+/g, "ᴏ")
.replace(/[p|P]+/g, "ᴘ")
.replace(/[q|Q]+/g, "ǫ")
.replace(/[r|R]+/g, "ʀ")
.replace(/[s|S]+/g, "s")
.replace(/[t|T]+/g, "ᴛ")
.replace(/[u|U]+/g, "ᴜ")
.replace(/[v|V]+/g, "ᴠ")
.replace(/[w|W]+/g, "ᴡ")
.replace(/[x|X]+/g, "x")
.replace(/[y|Y]+/g, "ʏ")
.replace(/[z|Z]+/g, "ᴢ")
.replace(/[1]+/g, "ꀺ")
.replace(/[2]+/g, "ꀻ")
.replace(/[3]+/g, "ꀻ")
.replace(/[4]+/g, "ꀽ")
.replace(/[5]+/g, "ꀾ")
.replace(/[6]+/g, "ꀿ")
.replace(/[7]+/g, "ꁀ")
.replace(/[8]+/g, "ꁁ")
.replace(/[9]+/g, "ꁂ")
.replace(/[0]+/g, "ꀹ")
return font;
}
displayname();```
Nevermind, removing the +'s seems to have done the job 👍
um, hello, i need a little bit of help, but i actually don't know anything about the plugin. I tried reading the documentation but I actually didn't understand anything, the plugin is already on the server but I don't know how to use it (the rest of the staff uses it, but now i need to do something and none of them are online). What I need to do 1st is to know if I can retrieve a value from a scoreboard made with vanilla commands, and then get that variable to use it with another plugin (I think that I know how to apply it to the other plugin, I just don't know how to do the PAPI part)
nvm im so smort, i managed to do it B)
@chrome sentinel look into the string expansion, it has what you are looking for and is better than using javascript
Hey, someone knows that if parsing these smalls javascripts would lag (it's for a prison gamemode)? Something like
var tokens = parseInt("%tokens_Tokenator_level%");
var booster = parseInt("%javascript_booster%");
return ((tokens * 18)*12.5) * booster.toFixed(0);
}
tokenator();```
thanks 🙂
parsing each 10 seconds or so for each player for giving rewards
considering that you're just doing multiplications, I'd recommend using the Math expansion instead
it'd be better performance wise than JS
%math_0_{tokens_Tokenator_level}*225*{javascript_booster}%
oh you can use multiple arguments in math expansion?
multiple placeholders? yeah of course
nice thanks!
I’ll give it a try, thanks 👍
Hey, someone knows if data javascript (community script) it's enough optimized to save here player data?
wouldn't recommend it, what are you trying to do with data
saving here player's multipliers, as autosell data works a bit weird
I wouldn't use javascript, community script or not
cause of the optimization or?
O.o interesting
Would you be able to store it in meta placeholders?
if you have dm installed
Oh never heard about meta placeholders 😮
you mean that? %deluxemenus_meta_<key>_<dataType>_<default_value>%
it's a better way to save data here?
and if you need to run actions from another plugin there is /dm execute <player> <action>
a lot better than javascript
every time you parse a javascript it starts an engine or somethin
not optimized in general
hard to do I've been told
yeah I had issues last season with javascript memory leaks, but since Gaby fixed it I thought it was a good way to go
memory leaks != optimization
As I was saying to Tran yesterday, there's currently no "data" expansion that lets you save/edit/retrieve data. If somebody made one, I'd want to make sure it's optimized in how it stores/accesses data.
I don't really know how to optimize so I haven't made it yet 😂
so that deluxemenus meta where is stored?
oh damn
so each placeholder is per player
so multiple keys can be stored in a same player?
yes
'color"s block':
priority: 2
update: true
material: '%variables_{deluxemenus_meta_changeBlock_INTEGER_0}%'
display_name: '&a&lMua&7:&f Khối màu'
slot: 20
view_requirement:
requirements:
change:
type: javascript
expression: '%deluxemenus_meta_changeBlock_INTEGER_0% == 14'
success_commands:
- '[meta] set changeBlock INTEGER 15<delay=20>'
- '[meta] set changeBlock INTEGER 16<delay=40>'
- '[meta] set changeBlock INTEGER 17<delay=60>'
- '[meta] set changeBlock INTEGER 14<delay=80>'
- '[refresh]<delay=90>'
it work 👏
❤️
I never want to suggest the delayed refresh just because I have no idea how well it will work, so I always let people do that part on their own
How does it look? good, ya?
material: '%variables_{deluxemenus_meta_changeBlock_INTEGER_0}%' is better than material: 'placeholder-%variables_{deluxemenus_meta_changeBlock_INTEGER_0}%'

me too
Does INTEGER maximum limit is 32767? 🙄
did i make animated part 
to use LONG, as it could be values of more than 1 milion
ah yes I think blitz missed it in his update log @coarse lily
2147483647
2147483647
or well
- More placeholder support. Most item options actually support PlaceholderAPI and DM Arguments now. The only 2 that do not are slot/slots and priority (hopefully this will change in the future).
could mean that 😂
haha okay
65535 values
thanks to both
but the range is as you said
perff
Ya, except you ruined it all by putting type: javascript I see 😂
just jokin, but prob should use type: '=='
I just wonder how the "animation" affects the server
if, say, 5 people had the menu open
how is it? ykno?
you can't add data just parsing the placeholder %deluxemenus_meta_<key>_<dataType>_<default_value>% right? only with deluxemenus actions I suppose? That placeholder should be only to show data
correct
perff
and why does that placeholder has a default_value?
it it's only for showing data
of a key
oh nvm, it's the value if nothing returned
you should moreso ask why remove needs a default value 😉
that ones the confusing one lol
looks right
because when parsing %deluxemenus_meta_multiplier_INTEGER_0% it doesn't return anything
yeppppp ig so
finee i'll try with javascript
btw sorry to bother you again
but you do know a way with checkitem expansion to only parse that boost number?
I tried with formatter/string expansion but couldn't do anything
you can retrieve the lore via checkitem and then use string expansion to further extract it @deep hollow
or javascript
actually not string expansion prob
no because string expansion works with indexes (numbers)
well, unless you specifically took out the amount of characters or something if it's the same for every item
ye
yeah but item can have different lore that's why I can't do that with index
but I was looking the other day I don't think there is any regex expansions
each line is separates by |
is it always on the same line?
yepp
but boost can be 1x or 10x you know
get the indexof Boost:
then the index of the next | after boost:
or the x
and go from there
you can use nested expansion to stack placeholders inside one other
hmm nested expansion?
%nested_3_string_{string_{string_{player_name}}}%
obviously just example not a real placeholder
oh never heard about nested
it allows to you stack palceholders like this, so you can kind of end up coding within placeholders
instead of using... javascript
😂
ya, I didn't really know how it worked till recently
yeah I think I have to avoid javascript 😂
sure thanks for the help!
cc: @leaden python

I can't get info on checkitem of a specific line right? because it'll be easier to do then
with formatter replace
nop
%nested_3_formatter_text_replace_x__{formatter_text_replace_\Boost: __{checkitem_getinfo:39_lorecontains:}}%
fuck because it was working haha
but as it has multiple line doesn't remove other ones :/
maybe after shower
sure won't bother you anymore sorry haha
try it, uses index for lines
loreequals:0
Does nested work with math expansion? It returns internal error
%math_0_{beaconsremove_tokenator}*{nested_3_formatter_text_replace_x__{formatter_text_replace_\Boost:__{checkitem_getinfo:39_loreequals:1}}}%
Caused by: java.lang.NoSuchMethodError: 'boolean ch.andre601.mathexpansion.MathExpansion.getBoolean(java.lang.String, boolean)'
you have to use nested before the math placeholder
%nested_math_0_{beaconsremove_tokenator}*{formatter_text_replace_x__{formatter_text_replace_\Boost:__{checkitem_getinfo:39_loreequals:1}}}%
not sure if that's correct but tr it
yeah my bad, and also checkitem getinfo was having color format so it wasn't valid
ty!
🤔
@deep hollow can you /papi parse me %checkitem_getinfo:mainhand_loreequals:s%
Could pull enchantment levels like this
ye yee watching watching
I'll first try with the #1044277970317086740 and then go from there
if that wont work
Ya, I would stick with that since you have so much already
I'll change it up to nested
yep
works fine
Javascript data expansion autosave data when it's updated right? To avoid losing data on crashes, etc
lol
Something is wrong with the placeholder, I have a balance of $800 and it's telling me it's $600
%essentials_baltop_balance_formatted_1%
uses index, 0 is 1st place, 1 is 2nd
hey
im having a problem with %bungee_total%
its always at 0
and no its not updating
please ping me
oh and im using velocity
mc 1.19.3
I think your issue lies within "Velocity"
It's not bungeecord so it's not the same placeholder as far as I'm aware
im using legacy forwarding tho
which means it uses bungee player forwarding
meaning i have to enable bungee in spigot.yml
Mmm
so it should work
Did you install the Bungee expansion?
/papi ecloud download Bungee
/papi reload
yea
0
I wouldn't know then, try checking your startup logs
lol
tho i thought i did
oh bruh wait
i think i didnt
😂
no wait
i fixed it in one server
yea the other server is still broken
only works in hub
im using %bungee_total%
and i def didnt forget interval
Do all the servers have placeholderAPI?
yea
Do all of them have the Bungee expansion
yea
still not working
What isn't working? The tab. The placeholder?
scoreboard
i have a Players: %bungee_total% but it is showing Players: 0
bruh
it just fixed itself
java.util.concurrent.CompletionException: java.util.ConcurrentModificationException
at me.clip.placeholderapi.expansion.manager.LocalExpansionManager.lambda$findExpansionInFile$7(LocalExpansionManager.java:428) ~[PlaceholderAPI-2.11.2.jar:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760) ~[?:?]
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?]
at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?]
at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?]
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?]
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?]
Caused by: java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextNode(HashMap.java:1597) ~[?:?]
at java.util.HashMap$EntryIterator.next(HashMap.java:1630) ~[?:?]
at java.util.HashMap$EntryIterator.next(HashMap.java:1628) ~[?:?]
at com.google.common.graph.DirectedGraphConnections$3$1.computeNext(DirectedGraphConnections.java:335) ~[guava-31.1-jre.jar:?]
at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:146) ~[guava-31.1-jre.jar:?]
at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:141) ~[guava-31.1-jre.jar:?]
at com.google.common.graph.Traverser$Traversal$1.visitNext(Traverser.java:391) ~[guava-31.1-jre.jar:?]
at com.google.common.graph.Traverser$Traversal$3.computeNext(Traverser.java:449) ~[guava-31.1-jre.jar:?]
at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:146) ~[guava-31.1-jre.jar:?]
at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:141) ~[guava-31.1-jre.jar:?]
at com.google.common.collect.ImmutableCollection$Builder.addAll(ImmutableCollection.java:482) ~[guava-31.1-jre.jar:?]
at com.google.common.collect.ImmutableSet$Builder.addAll(ImmutableSet.java:548) ~[guava-31.1-jre.jar:?]
at com.google.common.collect.ImmutableSet.copyOf(ImmutableSet.java:280) ~[guava-31.1-jre.jar:?]
at com.google.common.collect.ImmutableSet.copyOf(ImmutableSet.java:262) ~[guava-31.1-jre.jar:?]
at com.google.common.graph.Graphs.reachableNodes(Graphs.java:199) ~[guava-31.1-jre.jar:?]
at org.bukkit.plugin.SimplePluginManager.isTransitiveDepend(SimplePluginManager.java:948) ~[pufferfish-api-1.19.3-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.java.JavaPluginLoader.getClassByName(JavaPluginLoader.java:236) ~[pufferfish-api-1.19.3-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:149) ~[pufferfish-api-1.19.3-R0.1-SNAPSHOT.jar:?]
at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:126) ~[pufferfish-api-1.19.3-R0.1-SNAPSHOT.jar:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:574) ~[?:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
at me.clip.placeholderapi.util.FileUtil.findClass(FileUtil.java:62) ~[PlaceholderAPI-2.11.2.jar:?]
at me.clip.placeholderapi.expansion.manager.LocalExpansionManager.lambda$findExpansionInFile$7(LocalExpansionManager.java:405) ~[PlaceholderAPI-2.11.2.jar:?]
... 7 more```
what do i do about this
Hi i have problem. For some servers on my hub server on tab list and scoreboard its not showing number of players with placeholder "%bungee_server%", for some of them is showing. Its like this:
What could be a problem?
There is currently a bug with placeholderapi on some server it isn`t loading the placeholders
Hey for placeholders, I want to make a change outputs equal on a math placeholder on a normal placeholder. Would I have to use an external plugin that can disguise my math placeholder on a normal placeholder as a new placeholder since you cant change output equals 3 a math placeholder with a normal placeholder inside or can I use 3 placeholders in one.
Everywhere?
you can use the nested expansion
example: %nested_changeoutput_...{math_{other_placeholder}+1}%
ok
%vault_eco_balance% = 1000,5 | %vault_eco_balance_commas% = 1.000
%nf_#.##0,#_vault_eco_balance% = 10.005

Some placeholders doesn't work when updated to Paper #430
Is there a fix for that?
For me, it's 2 plugins right now... "HeadBlocks" and "AuriliumSkills"
Considering #430 came out 2 hours ago, I doubt we have any information on why they might just break.
It would definitely help if you could provide more information as to how they are broken, as well as a /papi dump output.
Probably will end up asking for a latest copy of your startup log as well.
Thanks. So how are they broken? Visually, etc?
It's after Paper's plugin update...
https://pastebin.com/01xigTTj
It shows nothing, like it doesn't even change the placeholders... but for some it works...
But nvm, I needed to downgrade because after their latest update it breaks everything
Yeah I know they've been doing some Paper plugin stuff lately. Thanks for bringing this to my attention. I'll wait to see if anyone else brings this up before I go over to talk to the Paper team.
I throught you already knew about this, that's crazy when I know others also got this problem
They just started releasing Paper plugins stuff a couple days ago.
I also can't reproduce that locally.
Just grabbed 430 myself with headblocks and I'm seeing [PlaceholderAPI] Successfully registered expansion: headblocks [1.0.0].
there's no "fix" because it works as intended, contact the jobs rebord developers @visual yacht
how to parse this grass_block to this grass block ?
Jobsr gives me the name correctly
user placeholders only work for online players 🙂 it is not a bug
So I am using this placeholder:
%checkitem_inslot:39,inslot:38,inslot37,inslot36,lorecontains:Bug%
To see if a player has the word bug in all 4 armor slot lores, and it is only working when they have a chestplate on, is there a fix to this?
I am having an issue regarding PlaceholderAPI in combination with the Statistic placeholder. I am using Paper 1.19.3 and the placeholder %statistic_mine_block% counts twice for every block broken. This means the statistic shows and incorrect value (Double of normal value).
This sounds like a trivial issue, but I am using a leaderboards plugin that relies on this placeholder's incremental value to function.
I also saw other people reported the issue on the GitHub page of the extension: https://github.com/PlaceholderAPI/Statistics-Expansion/issues/13
A temp fix could be to use the math expansion and divide the number by 2 to show the proper number 🙂
hi, i'm having this problem in my logs and i don't know how to resolve https://pastebin.com/hDnznyyD
Can you see if this jar fixes it?
is it possible to use something like %objective_scoreposhigh_{<obj-name>}_{<#>}% grab that then put it in for the user in ParseOther
so basically take a output from one placeholder and parse it into another placeholder
Yes, by default parseother should parse a placeholder if it's inside the {}. The only issue I can see is that objective also uses {} for formatting, but hopefully it shouldn't be an issue
????
%parseother_{objective_scoreposhigh_{<obj-name>}_{<#>}}_{player_name}%
yeah not using brackets for the scoreboard still works, let me try it right now and I'll get back to you
send entire log
I used this and it just shows it as text meaning either it does not work or I did it wrong
%parseother_{objective_entryposhigh_placement_1}_{team_color}%
/papi parse me %objective_entryposhigh_placement_1%
what does that return
oh wait, does the entire placeholder return?
yeah the entire since
make sure you have the expansion
I do have it
Okay what does this return exactly
also running that returned the entire placeholder but adding the brackets returned my name which is the highest so thats right
okay put that inside of parseother and try it then
it returns this: %parseother_{objective_entryposhigh_{placement}_{1}}_{team_color}%
same as in the config
and when I parse it as me with a command it says internal error occured attempting to perform the command
and if you type %parseother_{<your_name>}_{team_color}% it works? (replacing <your_name> with your username)
yep it work
Can you explain this a little more?
What were you doing before?
Also send your log over
?startuplog
doing before as in when I parsed that? %parseother_{objective_entryposhigh_{placement}_{1}}_{team_color}%?
also im getting the log
Yes, you said it returns this here, but then you said and when I parse it as me with a command
oh sorry
What were you doing in the first part, and what were you doing in the second part to get different results?
I meant when I put it in the config, it shows raw text in the scoreboard, when I run it with /papi parse ... it says internal error occured
Okay, for future note always use /papi parse to test placeholders
alright
It seems like your scoreboard isn't parsing it at all, do you have other placeholders in your scoreboard that work?
Actually, nevermind it just wouldn't say error in chat
the error will be in console though
might be an issue that objective uses { after all
but as you said earlier, I thought it had {} and also not {} so imma check it out while you get the log
fuck
hm?
it's a problem of my own fault
lol what happened?
I brought the same exact formatting _{}_ that I used for Parseother and introduced it to l3thalbunny who makes scoreboardobjective
and now
here we are, having it bite me in the ass
idea is to use nested
nope
hmm
lol ok get this super long placeholder
sorry? I dont follow, as I understood it you used the formatting of _{}_ and then brought it over to scoreboardobjective which makes it so they dont work together?
essentially, yes
alright
alright
/papi parse me %nested_parseother_{{objective_entryposhigh_{placement}_{1}}}_{ascii_123}team_color{ascii_125}%
O.o
O.o
LMAO this is the best work around 👍 using the ascii code to get past that
also what is nested? I thought it was a module but I dont see it
alright maybe it is
ecloud has a bunch, a lot of unverified ones too
yeah it just returns ascii_123}team_color{ascii_123
/papi parse me %nested_parseother_{{objective_entryposhigh_{placement}_{1}}}_{{ascii_123}team_color{ascii_125}}%
dammit I got distracred by nested
ah then try this again
the og
what if
/papi parse me %nested_3_parseother_{{objective_entryposhigh_{placement}_{1}}}_{ascii_123}team_color{ascii_125}%
might need more {}
same thing :']
I meannn we can try it if you'd like, its also isnt much of a big deal so its alright if its not possible
@dawn dew imma try adding escaping
wdym
/papi parse me %parseother_{objective_entryposhigh_{placement\}_{1}}_{team_color}%
Try this with this build
could you give me like 10 minutes? I cant try it rightnow
alright I am back, sorry that was longer than I thought, so replace this with the parse other module?
oh yeah sorry for the ping ;-;
yes replace the expansion in your plugins/placeholderapi/expansions/ folder
alright
's ok
server is starting back up and im opening mc on pc
stilll nothing :'(
btw does captilization matter for the file name?
What does it return?
same as before, internal error occured, lemme see if I see any diffrence in error from before
can you make sure team_color works? /papi parse me %team_color%
Because I just tested on my server and got team_color as the response
then I thought
what is that placeholder
I don't have it
let me find it
because earlier you got team_color to output
with nested
so maybe we can do that again
if this escaping characters doesn't work
I get a blank response, which I think makes sense because its just supposed to change color for the text following that right?
put something after it
sorry what is escaping character?
Look at this placeholder
yep the text comes out red which is the color of my current team
\}_
ohh alright
i'm getting an error now 👍
tried with another color, works
ah damn, same one or something else?
alright
also yeah, its the exact same error on the console side as before word for word
ok this might be weird and maybe this is rpoof it can work, I got a weird output when I added some back slashes
I ran: /papi parse me %parseother_{objective_entryposhigh_\{placement}_{1\}}_{team_color}%
output: 1\}}_{team_color
alright let me upload it to the server
alright it works :D
also 😬 it seems placeholdeer does not seem parsing as a player that isn't online is that true?
the team color? probably not
alright
yerppp
I'll find a work around for it, I just currently have it set to where a teams scores get counted to a fake "player" and put in a scoreboard. anyways! thank you for the help :D
really appreciate it
👍 no problem
do you know if there is a plugin that does make the plugin think NPC's are players?
do ping me when you respond, thanks :D
Can someone help explain why this isn't parsing correctly
please dont judge, I am trying to cope with a plugin's limitation
%changeoutput_contains_input:{checkitem_inslot:39,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:38,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:37,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:36,lorecontains:lying}_matcher:yes_ifmatch:STOP_ATTACK_else:INCREASE_DAMAGE:0}_else:INCREASE_DAMAGE:0}_else:INCREASE_DAMAGE:0}_else:INCREASE_DAMAGE:0%
you can't naturally nest placeholders as such
but have no fear, nested is here
@wise siren
run those commands
we love nested
and add nested_#_ to the front of your placeholder
ex: %nested_3_changeoutput...
ok ok
You might need like... 4 nesteds
it seems you go pretty in depth
maybe not actually? idk
so prolly 4
ok bet
well hol up
it might be in the actual thing
what does /papi parse me %nested_changeoutput... return
papi parse <player> <string>
yep
what does /papi parse me %checkitem_inslot:39,lorecontains:lying% return
including %nested_?
still yes
no
so what about
can you send the response
since you're in consoel you can copy it
:L
surround it with ``
umm
umm
lol i already said umm
im high
eitherway
you used "
double quotes
I said `
grave
oh word
tilde button
lol
ran command: %nested_5_changeoutput_contains_input:{checkitem_inslot:39,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:38,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:37,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:36,lorecontains:lying}_matcher:yes_ifmatch:STOP_ATTACK_else:WAIT:0}_else:WAIT:0}_else:WAIT:0}_else:WAIT:0%
why does it say ran command
thats
did you type papi parse <player>
here is
what I inputted
papi parse Alphatoxic813 %nested_5_changeoutput_contains_input:{checkitem_inslot:39,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:38,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:37,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:36,lorecontains:lying}_matcher:yes_ifmatch:STOP_ATTACK_else:WAIT:0}_else:WAIT:0}_else:WAIT:0}_else:WAIT:0%
that into console
ested_5_changeoutput_contains_input:{checkitem_inslot:39,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:38,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:37,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:36,lorecontains:lying}_matcher:yes_ifmatch:STOP_ATTACK_else:WAIT:0}_else:WAIT:0}_else:WAIT:0}_else:WAIT:0%
came back with that
weirdly enough
funky
?startuplog
can you send yoour log over
sure
hmm
i don't get why this happens lol
no no
that part is the ran command part
it just says the placeholder
not even papi parse
that's from your server thing or w/e
its a pebble host thing
ye
it is returning what the output from the actual command I ran in console
ok
to test
%nested_5_changeoutput_contains_input:{checkitem_inslot:39,lorecontains:lying}_matcher:yes_ifmatch:STOP_ATTACK_else:WAIT:0%
trying this
ok slowly add
just gonna
papi parse Alphatoxic813 %nested_5_changeoutput_contains_input:{checkitem_inslot:39,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:38,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:37,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:36,lorecontains:lying}_matcher:yes_ifmatch:STOP_ATTACK_else:WAIT:0}_else:WAIT:0}_else:WAIT:0}_else:WAIT:0%
papi parse AlphaToxic813 %nested_5_changeoutput_contains_input:{checkitem_inslot:39,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:38,lorecontains:lying}_matcher:yes_ifmatch:STOP_ATTACK_else:WAIT:0%
ffs
came back with
missing a } somewhere
ya you're missing a bit
uhh
hard to figure out where
yeah
but i think you add }_else:WAIT:0
yeah didnt work
%nested_changeoutput_contains_input:{checkitem_inslot:39,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:38,lorecontains:lying}_matcher:yes_ifmatch:STOP_ATTACK_else:WAIT:0}_else:WAIT:0%
%nested_3_changeoutput_contains_input:{checkitem_inslot:39,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:38,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:37,lorecontains:lying}_matcher:yes_ifmatch:STOP_ATTACK_else:WAIT:0}_else:WAIT:0}_else:WAIT:0%
to the console we go
it has to be a console issue
returned the entire thing without %n
command block maybe ?
do you have a raw console
uhh
not sure if I can get to that
yep
if we know it's parsing correctly, we can use it to test
I cant wait to tell you that we need to add %victim% to it so it checks the person youre attacking and not your own
this is server properties right
yes
%nested_4_changeoutput_contains_input:{checkitem_inslot:39,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:38,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:37,lorecontains:lying}_matcher:yes_ifmatch:{changeoutput_contains_input:{checkitem_inslot:36,lorecontains:lying}_matcher:yes_ifmatch:STOP_ATTACK_else:WAIT:0}_else:WAIT:0}_else:WAIT:0}_else:WAIT:0%
this should be the max one
also you said you want to check a different person's inventory?
what is it
...
;-;
let me check
can you try putting the placeholder in a plugin instead of cmd block?
at this point
You know this works, you can at least test that
then this
doesnt seem 2 be working, not sure
let me change the
stopattack
and wait
oh my gosh it works
soooo about the victim part
try it
ye
bet
getting a test dummy on to punch rn
one moment
ok adding it on
didnt work
ok maybe it does work
i think the placeholder issue
is done
not its a matter of getting it to work on my armor set
so
thank you
👍
Why i dont see vault baltop placeholders? Theres so many tuts on youtube and its working for them
Baltop placeholders were moved to the essentials expansion since it is not a function provided by vault, but essentials
i have problem with papi and deluxemenus cause when i want to execute a command with %player_name% it dont works, this placeholder is even in example menu config, and the command dont work, because it says 'cannot find player named %player_name%' what can i do with it
?
make sure you have the player placeholder pack installed
can you try to update the server expansion to the latest version (2.6.2)?
Hi there, rather confused as to what is happening. This may seem very straight forward to some but after taking a massive break from the spigot library and java, i am so lost. This has only started happening recently.
Every time i use placeholderApi.setPlaceholders I get a NullPointerException. Here is an example code snippet:
@EventHandler // Listens for an event
public void onPlayerJoin(PlayerJoinEvent event) { // Runs when player joins the server
Player player = event.getPlayer();
String newChatMessage = PlaceholderAPI.setPlaceholders(player, "%luckperms_prefix%%player_name%" + ChatColor.GOLD + " has joined the server.");
ChatColor.translateAlternateColorCodes('&', newChatMessage);
event.setJoinMessage(newChatMessage); // Line 17
}```
It gives me this in my console:
```Caused by: java.lang.NullPointerException
at me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:72) ~[?:?]
at me.clip.placeholderapi.PlaceholderAPI.setPlaceholders(PlaceholderAPI.java:99) ~[?:?]
at com.fluxx.welcomemessages.Event.onPlayerJoin(Event.java:17) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_361]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_361]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_361]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_361]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.16.5.jar:3096a-Spigot-9fb885e-af1a232]
... 14 more
I have all my dependencies setup and the events hooked into the main class. However unsure as to what the cause is directly. Many thanks.
do you use implementation() by any chance?
Not that im aware of. I havent put that anywhere in the plugin.
no I mean in your build.gradle
or if you use maven, make sure the scope of the dependency is set to provided
Sorry but im unsure what you mean, I use Intellij "Build Fragments" to do my building. Sorry for my lack of understanding but could you help me locate that?
ah, good luck with the built-in tool
Oh is it not ideal to use that? I just dont understand as it was working fine earlier, and from what i can tell, i havent touched any other file other than the relevant classes
It's a very very outdated way. You should look into Maven / Gradle. If you also want to add this IntelliJ plugin, https://plugins.jetbrains.com/plugin/8327-minecraft-development, it makes it very easy to startup a new project.
ok great ill look further, many thanks
btw
newChatMessage = ChatColor.translateAlternateColorCodes('&', newChatMessage);
Hello There,
i need help i use a Plugin that Dev told me i need the PAPI that the Plugin can work but idk what PAPI is and how it works i am new in Coding so i haven't much experience and with the Wiki of Papi i can't realy find out what to do can anyone help?
Do you just need the plugin on the server?
If so, just download it from here https://www.spigotmc.org/resources/placeholderapi.6245/ and add it like any other plugin 🙂
am i not needet to config it? is it config from self?
What do you even need?
i got a code from another Plugin and the Dev told me i need to use PAPI but the Dev won't help me there because he say it's not his Plugin so he just gave me the link of the Plugin i would show you the code i got but i can't post Pictures here can i Post a link here?

and the command with %player% is not working
is placeholderAPI have a permission to use command ? I want my staff can using /papi parse to check some placeholder
dependency 'me.clip.placeholderapi:2.11.2' not found
how to change this iron_ingot to this iron ingot ?
