#placeholder-api

1 messages · Page 198 of 1

marsh mirage
#

Hi there, quick question, I am using AutoRank, Is there a way to have a progressbar for progress on ranking up?

#

I see there is a AutoRank expandion, and I did plan on using the Progress expansion, but it looks like there isn't a current/to value to use to create it.

austere hawk
#

thanks

crystal prawn
#

failed to load class files of expansions

#

any help

#

when i do

#

/papi reload

plush dove
#

is there a placeholder for damage blocked by a shield?

mint fable
round birch
#

Hello. Who can help me with the placeholder? If it's easy enough to replace a simple placeholder, then I couldn't try as much as I tried. LuckPerms has a placeholder showing how long before the permission expires. I need to replace h/m/s with translation.

javascripts/time.js

var placeholder = "%luckperms_inherited_expiry_time_1rewardtaken%";

UPD: i used that https://github.com/ZeromaniacMc/LuckPerms-Time-Placeholder-Script

tight rapids
#

Hello I am trying to add two placeholder integers together in a hologram, I have the math extension for papi but I dont know what to do next

warm topaz
tight rapids
#

is it a limit if two placeholders? this just returns a zero

%math_{server_online_IridiumSkyblock}+{server_online_IridiumSkyblock_nether}+{server_online_IridiumSkyblock_the_end}+{server_online_skyblockhub}%

#

I dont even know what to say other than im really dumb, I was making file changes to the wrong server 🤦‍♂️

#

it works

wheat shore
#

is there a way for me to center a placeholder?

lyric bone
#

hello, how to put a placeholder inside a placeholder pls?

#

how can I make my expansion compatible for this

#

up

warm topaz
#

%placeholder_{inner_placeholder} would be the format
to make ur expansion allow inner placeholders, call PlaceholderAPI.setPlaceholders(Player, String)

lyric bone
warm topaz
#

sorry, setPlaceholders should be called from ur plugin, and setBracketPlaceholders should be called from within ur expansion

lyric bone
#

so it's from the expansion within %%

#

and not the expansion inside {}

#

bruh it's an itemadders issue

magic rock
smoky ridge
#

srvr time player

#

dnt mind lp and gadgets menu

magic rock
#

papi placeholders %server-time% & %player% doesn't exist

smoky ridge
#

got it

#

playename

#

tq

#

and what is the place holder for showing day only day?

loud grotto
#

hi! is there a way to view all the added placeholders?

limber ice
loud grotto
limber ice
#

pick the plugin and it will give you list of placeholders

simple nova
#

hey

#

i got problem

cyan bone
#

i got an error with papi " Failed to load class files of expansions" i have to reload papi manually everytime the server starts

simple nova
#

i have placeholder permission count

#

for my one of my alt is working

#

is parsing

#

for second alt is not parsing

#

why ?

#

looks like this

mint fable
#

is it your expansion @simple nova ?

simple nova
#

hmmm

#

this was weird

mint fable
#

I found it on the ecloud

simple nova
#

i saw my alt on second server online

#

so basically it was on 2 servers same time

#

duno how

#

the dev of my bungee fork

#

said i have to update my modules

#

duno what it means

#

after restart

#

its working now

#

but it was weird

mint fable
#

v weird

simple nova
mint fable
#

no

crystal prawn
#

[16:21:36 ERROR]: [PlaceholderAPI] failed to load class files of expansions
java.util.concurrent.CompletionException: java.lang.NoClassDefFoundError: com/massivecraft/factions/RelationParticipator
at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315) ~[?:?]
at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320) ~[?:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1770) ~[?:?]
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.lang.NoClassDefFoundError: com/massivecraft/factions/RelationParticipator
at java.lang.Class.getDeclaredMethods0(Native Method) ~[?:?]
at java.lang.Class.privateGetDeclaredMethods(Class.java:3402) ~[?:?]
at java.lang.Class.getDeclaredMethods(Class.java:2504) ~[?:?]
at me.clip.placeholderapi.expansion.manager.LocalExpansionManager.lambda$findExpansionInFile$7(LocalExpansionManager.java:396) ~[PlaceholderAPI-2.11.1.jar:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
... 6 more

#

any help

stone edge
#

you using saberfactions or factionsuuid (just wondering)

crystal prawn
#

factionsuuid

stone edge
#

just wondering, you downloaded the expansion manually?

junior musk
#

go in your PlaceholderAPI's Expansions folder and delete the massivecraft faction expansion file

crystal prawn
#

ok

#

thats not there

junior musk
#

what files do you have in there?

crystal prawn
stone edge
#

i believe you downloaded the wrong expansion

junior musk
#

delete this file

crystal prawn
#

ok

crystal prawn
#

still not workin

stone edge
#

i dont think you get the same error

crystal prawn
#

lemme check

#

there

plush dove
#

how do I make a number a whole number and not have decimal points?

vivid sparrow
#

?

plush dove
#

hmm

#

%math_3:down_57-(1.5/4)%

#

trying to make it a whole number

#

but if its like a 1 digit number, and I put precision at 2, then it would give me a decimal still

crystal prawn
mint fable
#

?paste

tender vaporBOT
#
FAQ Answer:

Paste Services
When asking for help with a config/menu/code issue please use our paste bin:
(we prefer it over pastebin.com)
HelpChat Paste - How To Use

mint fable
#

put it on our paste please, can't see it

crystal prawn
mint fable
#

what factions do you use

crystal prawn
#

factionsuuid

mint fable
#

delete the faction expansion, should be included

crystal prawn
#

ok

plush dove
#

tried setting the decimals config for math placeholder to 0, that just defaults it to 3

#

ok well putting it to 0 just disables it

#

putting it to 1 is like having precision set to 1

#

which isnt what I want

mint fable
#

I don't really understand what you want exactly, can you give an example?

#

If the number is 3082.932387, what do you want to see?

plush dove
#

3083

#

no decimals

#

is what I wnat

#

so if its 1.1, I want it to be just 1. If its 27.4, I would like to see 27.

mint fable
#

%math_0:_3082.932% should do that

#

you want precision to be 0 for no decimals

plush dove
#

3082.932

mint fable
#

and default rounding is half-up, which is what you want

plush dove
#

is what it gives me

plush dove
#

makes it unlimited

mint fable
#

did you make any changes in the config

plush dove
#

lemme change it back to default

#

gives me 3082.932

#

I set the Rounding option in config, which is precision, to 0, and it basically made it unlimited, or however many you put it

mint fable
#

no idea what's up, try a restart and reinstall the math expansion?

#

precision 0 should be no decimals

plush dove
#

kk

#

works now!

#

haha I tried the 0 thing earlier and was quite confused why it didnt work

#

thanks!

crystal prawn
#

killstats placeholder aint working

mint fable
#

do you have the plugin

crystal prawn
#

placeholderapi

#

yes

#

and i papi ecloud download killstats

#

works on my other server

#

just not this one

mint fable
#

where are you testing it @crystal prawn

mortal coral
#

i am having some problems with pinger and i am not sure what it is

#

it works for all of my other servers except one of them

#

and when i use parse it displaces as offline but the server is online

woeful quest
#

say I wanted to use a placeholder %vault_prefix% if the player had no prefix, would this be null?

thorny yoke
#

btw for Essentials plugin okay?

thorny yoke
#

um something like "Jail time finished" or maybe a zero

topaz dust
#

hi guys, does anyone know any placeholder that can display top playtime?

crystal prawn
tender vaporBOT
crystal prawn
#

i have 2 servers

#

it works on one

#

and the other it doesent

#

it says

#

but it doesent show on the tab

vivid sparrow
#

Killstats requre a plugin

#

That was updated in 2016 or smth

austere hawk
#

What's the placeholder for playtime

turbid tide
mint fable
mint fable
#

what if you did /papi parse me %placeholder%

mint fable
#

depends if the expansion/placeholder supports it or not

#

I can still see your original message fyi

#

player expansion should support it with {} (no $$) %player_ping_{player_name}% but that will get the ping between the user and the user

#

so otherwise pointless

random hornet
#

Checked the newest placeholder-api lately?

mint fable
#

Hmm?

trim mist
#

PlaceholderAPI 2.11.2 RC
Hey everyone,

We are planning on releasing 2.11.2 soon! This will include the following changes (this is a brief overview, and a more detailed changelog will be provided at release)

Enhancements

  • Add --null argument to parse command
  • Log missing plugin for an expansion

Bug Fixes

  • Fix PAPI lowercasing invalid placeholders
    -Fix PAPI possibly not unregistering expansions

Breaking

  • Removed color parsing for placeholder parsing

We are shooting to release this to SpigotMC this weekend or early next week. Feedback is greatly appreciated.

vivid sparrow
#

@everyone @here

arctic loom
#

Nice try :^)

#

Maybe a dev-build role for people that are interested could be useful...

stone edge
#

RC = Release Candidate

#

right? xd

#

Breaking

  • Removed color parsing for placeholder parsing
    Hype
turbid tide
stone edge
sinful quartz
#

What is the right way to put arguments inside placeholders? I just can't figure it out, tried almost everything I've found here
Here's script, argument range 1-6

var gender = "%pixelmon_party_" + args[0] + "_gender%";

function genders() {
  if (gender === "Male") {
    return "0";
  }
  if (gender === "Female") {
    return "1";
  }
  else {
    return "2";
  }
}
genders();```
spark ridge
#

Is it possible to get a placeholder, like:
%plotsquared_currentplot_can_build%
from a specific location.
To see if the player can build on the plot that's placed at eg. X Y Z

stone edge
#

i doubt that

#

i mean, you can probably make it based on player location

#

but with x y z, doubt unless you make your own placeholder or placeholders allow you to specify x y and z

indigo pebble
#

Hello, I'm entirely new to placeholderapi and I'm unsure how exactly to make use of it in a config, I'm looking to setup a greeting for claimed land that displays of the current owner, and then displays their pvp status by using a placeholder.

Alerts:
defaultGreeting: '&7Now entering claimed land of %owner%'
defaultFarewell: '&7Leaving claimed land of %owner%'

I'd like for that default greeting to be like "Welcome to <owner>'s Land! Their pvp status is: <placeholder pointed at the owner to display said status>"

Is that something I can actually do? I'm pretty lost.

#

If I'm in the wrong channel let me know too.

stone edge
#

i dont undertand whats your question tbh

#

are you configurating or developing

indigo pebble
#

I'm configuring a claim plugin and trying to make use of a couple placeholders to show some information on the owner of claimed land when a player enters it.

stone edge
#

first of all

#

the claim plugin supports PlaceholderAPI

#

in titles on join/leave?

#

you should first, make sure about that

#

PlaceholderAPI and devs are not in charge of adding support if it isnt supported

#

its up to the claim plugin dev, make sure it supports it

#

if it is, i wonder they will work for disconnected claim owners

#

i mean, most placeholders are not parsed when player is offline

#

so, i dont think its supported ttbh

indigo pebble
#

Ahh, okay. the config file here doesn't really state weather or not it supports titles on join/leave. The plugin page itself just mentions some placeholder support and has a few of its own.

#

Thanks for the speedy response though. ^^

stone edge
#

sure np

#

just wondering, whats the claim plugin?

#

is join/leave title an addon or its built-in

tender vaporBOT
#
Hey!

Please respect the rules, be patient and don't ping staff members!

mint fable
#

Hmm, I’ll take a look at it later and see if there’s a reason

stone edge
#

that's because player_ping_ is for names only

#

you can't use placeholders there

#

if you want other player's ping

#

you'll have to use something like

#

%parseother_{combatlogx_enemy_name}_{player_ping}%

#

Reminder: Yes, you need that expansion.

/papi ecloud download ParseOther
/papi reload

mint fable
#

That’s not the ping between the players though

mint fable
stone edge
stone edge
mint fable
#

can’t use {} at all I don’t see

#

Even for has perm or something, yikes

#

I could recompile a version that accepts them… surprised it doesn’t

#

But I’m on mobile and could be missing something

stone edge
mint fable
#

ye ig you can do it

#

I just added identifier = PlaceholderAPI.setBracketPlaceholders(player, identifier); for ya

stone edge
#

that's weird

#

¯_(ツ)_/¯

mint fable
#

well it measures different values

#

one measures the ping between players

#

and one measures the ping of another player (to the server)

stone edge
#

mmm no

#

parseother simply parses the placeholder using the player provided

#

afaik

#

let me check the code

mint fable
#

Alonso it's different

stone edge
#

wait, its yours

trim mist
#

I don't think players can ping each other in game. Can they?

mint fable
#

what you are saying is correct

mint fable
trim mist
#

That would make more sense.

stone edge
#

lets see

#

well

trim mist
#

Cause the other way around it would mean I could send a network packet directly to another player on the server.

#

If I'm speaking bs, ignore me. It's late 😛

stone edge
#

well, i dont understand thhe code

mint fable
#

okay so I understood the placeholder wrong, both should return the same value then

#

which is weird

stone edge
#

why is not on github

#

just wondering

stone edge
#

couldnt find it

#

no, i mean the parseother

#

player_ping is the same

mint fable
#

yes

#

now I am curious why it returns differently

stone edge
#

shouldn't affect at all

#

so its prob due to spikes

#

or something

#

i mean, same method, not difference

trim mist
#

Magic.

fresh bone
#

Hi, suddenly my papi won't work

balmy marten
#

Did you install any new expansions?

runic frost
#

How do I make it so that if %deluxetags_tag% is not nothing, there will be a space infront of it?

#

I'm now using Conditional Text Placeholders

runic frost
#

With the Javascript expansion, can I check if a placeholder returns nothing and if so, return "Nothing!"

#

I did it.

upper anchor
#

Does the papi javascript add-on support regex?

vivid sparrow
#

Yes

austere hawk
#

How can I reset a placeholder? I've tried clearing the stats folder to no avail.

upper anchor
vivid sparrow
#

Try to move the test one line below

upper anchor
#

It doesn't work, the problem is different, the usual replace(/((?<=Value:").*(?="))/g, "$1") doesn't work either, the error is in the same place

royal wyvern
#

How can I add placeholder support to my plugin?

vivid sparrow
royal wyvern
#

Thx

sinful quartz
#

Could someone help me with this? If I do this, like normal text, it works just fine

var test = "part1-"+args[0]+"-part2";
var out = "";

if (args[0] != null) {
  out = test;
}
out;```
But changing to placeholder doesn't work and gives "'ARGS' is not defined" error 
```js
var test = "%statistic_mine_block:"+args[0]+"%";
var out = "";

if (args[0] != null) {
  out = test;
}
out;```
stone edge
#

just wondering

#

what are you trynna do

#

@sinful quartz

vivid sparrow
#

Good question

sinful quartz
stone edge
#

have you read the wiki?

#

what you plan to do exactly, i mean the final goal

#

@sinful quartz

vivid sparrow
stone edge
#

probably using %javascript_scriptname% instead of %javascript_scriptname_DIAMOND%

sinful quartz
#

No, ok another example, I want basickly this, you do %javascript_partygedner_1%
And it will retur gender in number for that slot (1-6), file name is partygedner.js

var gender = "%pixelmon_party_" + args[0] + "_gender%";

if (gender == "Male") {
  out = "0";
}
if (gender == "Female
  out = "1;
}
if (gender == "Genderless
  out = "2;
}
out;```
stone edge
#

just wondering

#

%pixelmon_party_1_gender%

#

returns the gender of the pokemon

#

in slot 1

#

right?

sinful quartz
#

Yes

stone edge
#

ahhhhh

#

damn thats nice

#

those things didnt exist when i was a kid

vivid sparrow
#

PlaceholderAPI.static.setPlaceholders(BukkitPlayer, "%" + "pixelmon_party_" + args[0] + "_gender%")

stone edge
#

isnt it parsed

#

automatically?

#

when assigned?

#
var gender = "%pixelmon_party_" + args[0] + "_gender%";
function out() {
   return gender == "Male"? "0" : (gender == "Female ? "1": "2"));
}
out();
vivid sparrow
stone edge
#

i would actually try

var gender = args ? "" : "%pixelmon_party_" + args[0] + "_gender%";
function out() {
   return gender == "" ? "No pokemon in slot!" : (gender == "Male"? "0" : (gender == "Female ? "1": "2")));
}
out();
vivid sparrow
#

Cant remember the use case of that method

stone edge
#

mmmm, i'm pretty sure it is

#

i mean, it should, at least

#

otherwise, i'm blind

mint fable
#

most likely want to parse it

stone edge
#

or it magically is parsed in javascript examples

mint fable
#

var t = %placeholder% will be parsed

stone edge
#

but?

vivid sparrow
#

Ah ah

stone edge
#

there is always a "but"

mint fable
#

hold up

sinful quartz
#

PlaceholderAPI.static.setPlaceholders(BukkitPlayer, "%" + "pixelmon_party_" + args[0] + "_gender%")

Caused by: com.koushikdutta.quack.QuackException: SyntaxError: unexpected end of string
And that second have missing(, where should that be?

mint fable
#

var t = "%placeholder%" will be parsed

vivid sparrow
#

Placeholders are parsed first and when the script is evaluated, variables are set (BukkitPlayer, args and the others)

stone edge
#

🥁

mint fable
#

var t = "%place"+"holder%" will not be

stone edge
#

mmmm

#

so, it bascially use regex

#

whats what you telling me

#

:mike:

vivid sparrow
#

No

vivid sparrow
mint fable
#

maybe...

#

but args throws it all off

stone edge
#

mmm

vivid sparrow
#

Papi takes everything between the _ after the identifier and the first % as 'params'

stone edge
#

yeah

mint fable
#

ye

stone edge
#

question is

mint fable
#

so the args doesn't exist yet

stone edge
#

why one is parsed

#

and when you use + it doesnt

mint fable
#

that's why it says it doesn't exist

mint fable
stone edge
#

@sinful quartz can you try this?

var gender = args ? "" : "%pixelmon_party_" + args[0] + "_gender%";
function out() {
   return gender == "" ? "No pokemon in slot!" : (gender == "Male"? "0" : (gender == "Female ? "1": "2")));
}
out();
#

just to make sure

vivid sparrow
#

It does get parsed, but it takes it literally as it is, not as two strings concatenated

stone edge
#

or i wont be able to sleep today

#

wait

#

i got what you mean

#

but

mint fable
#

it's finnicky

sinful quartz
mint fable
#

when in doubt, setplaceholders

vivid sparrow
#

Dont nest ternary operators, Alonso

stone edge
#
var gender = args ? "" : PlaceholderAPI.static.setPlaceholders(BukkitPlayer,"%pixelmon_party_" + args[0] + "_gender%");
function out() {
   return gender == "" ? "No pokemon in slot!" : (gender == "Male"? "0" : (gender == "Female" ? "1": "2")));
}
out();
#

xD

mint fable
#

welp

#

im off to work

vivid sparrow
#

args ? "" ?

mint fable
#

after that

stone edge
#

i mean, since args is not definedd, shouldn't throw error xd

#

wait

vivid sparrow
#

No..

stone edge
#

my js is a bit

vivid sparrow
#

Args it is defined

stone edge
#

rusty

sinful quartz
#

Still SyntaxError: expecting ')'

mint fable
stone edge
#

i edited

#

okok

mint fable
#

👋 ❤️

vivid sparrow
#

Cya cj

sinful quartz
#

Now its SyntaxError: expecting ';'

stone edge
#

ignore me, i'll take a cup of coffee

#

but, im seriously interested in learning how it parses everything

#

👀

vivid sparrow
#
function pokemonGender() {
  if (args.length === 0) return "Index not provided";
  var gender = PlaceholderAPI.static.setPlaceholders(BukkitPlayer, "%" + "pixelmon_party_" + args[0] + "_gender%")

 if (gender === "Male") return "0";
 if (gender === "Female") return "1";
 return "2";
}

pokemonGender();```
vivid sparrow
stone edge
#

i see i see

#

what if %javascript_partygender% is used

#

would it say args is not defined?

#

or it would simply be empty array

vivid sparrow
#

args is defined regardless you provide any or not

stone edge
#

what about syntax

sinful quartz
#

Well, still nothing SyntaxError: expecting ';'

stone edge
#

all javascript syntax is supported

#

right?

vivid sparrow
#

Uh, kind of

stone edge
#

damn

warm topaz
#

pokemonGender(): pepeLaugh

stone edge
#

its like coding

vivid sparrow
#

Ahh

warm topaz
#

change the : to ;

stone edge
#

without coding

vivid sparrow
#

It is coding, but I believe that previously the engine wasnt up to date with the js ECMA

#

Edited @sinful quartz

stone edge
#

knowing this

#

imagine the possibilities

vivid sparrow
#

Ehh..

#

You should use js for small stuff

stone edge
#

yeah i know

#

i've heard that

#

a thousend times

#

in spanish servers

vivid sparrow
#

Lol

stone edge
#

yeah, most of them

#

try to make complex things with this

#

as they dont klnow how to code

#

so script is big and ends up taking time to be parsed xd

sinful quartz
#

This one is new 😄

Caused by: com.koushikdutta.quack.QuackException: TypeError: cannot read property 'setPlaceholders' of null
at <javascript>.pokemonGender(?:3) ~[?:?]
at <javascript>.<eval>(?:10) ~[?:?]
at com.koushikdutta.quack.QuackContext.evaluate(Native Method) ~[?:?]
at com.koushikdutta.quack.QuackContext.evaluate(QuackContext.java:600) ~[?:?]
at com.koushikdutta.quack.QuackContext.evaluate(QuackContext.java:615) ~[?:?]
at com.koushikdutta.quack.QuackContext.evaluate(QuackContext.java:653) ~[?:?]
at com.extendedclip.papi.expansion.javascript.evaluator.QuickJsScriptEvaluator.execute(QuickJsScriptEvaluator.java:23) ~[?:?]
... 28 more

vivid sparrow
stone edge
#

people usually be like "dont use javascript there, its shit"

vivid sparrow
#

Uh uh

stone edge
#

what i mean, is easier to make a small plugin

#

(i mean using javascript for that, not the expansion xd)

#

its pretty cool you can even use BukkitPlayer.getInventory().get etc etc

#

damn

vivid sparrow
#

try to set engine: nashorn where you define the js placeholder @sinful quartz

turbid tide
#

🤷

sinful quartz
#

Still the same

#

Well right now I have 36 javascript, each is for 1 slot, I just thought it would be nicer to have it in one file (6 total), but if there is no solution then I'll leave it as it is

stone edge
#

can you link me to pokemon plugin or whatever it is

#

i'm curious

sinful quartz
vivid sparrow
#

Can you send the new error Steedr?

sinful quartz
#
    at <javascript>.pokemonGender(?:3) ~[?:?]
    at <javascript>.<eval>(?:10) ~[?:?]
    at com.koushikdutta.quack.QuackContext.evaluate(Native Method) ~[?:?]
    at com.koushikdutta.quack.QuackContext.evaluate(QuackContext.java:600) ~[?:?]
    at com.koushikdutta.quack.QuackContext.evaluate(QuackContext.java:615) ~[?:?]
    at com.koushikdutta.quack.QuackContext.evaluate(QuackContext.java:653) ~[?:?]
    at com.extendedclip.papi.expansion.javascript.evaluator.QuickJsScriptEvaluator.execute(QuickJsScriptEvaluator.java:23) ~[?:?]
    ... 28 more```
vivid sparrow
#

Have you did what I said?

#

Ah, I believe the engine is global

sinful quartz
#

So should i try global instead of nashorn?

partygender:
file: partygender.js
engine: nashorn

vivid sparrow
#

See at the top of the file, there should be an engine option

stone edge
#

which software you are using btw? mohist?

sinful quartz
#

Arclight, better stability

stone edge
#

allows 1.12.2 and 1.16.5 users? or only 1.12.2? (im not used to modded servers)

sinful quartz
#

only 1.16.5

stone edge
vivid sparrow
trim mist
#

That's a great question. The QuickJS engine has been causing a lot of issues lately.

#

What MC version?

sinful quartz
#

1.16.5

trim mist
#

What Java version?

sinful quartz
#

11.0.13

trim mist
#

You shouldn't be using QuickJS then.

#

Just use Nashorn.

#

In the config.yml, make sure use_quick_js is set to false.

sinful quartz
trim mist
#

What's the script?

sinful quartz
trim mist
#

It could be that the BukkitPlayer or args[0] is null. As to why, I am not sure. I don't think anything else has changed.

#

If it doesn't work on either engine then my guess is it's one of those 2 things.

vivid sparrow
#

It might be the same error as before

trim mist
#

Quite possibly. Either the static there broke, which I don't think anything has changed for that to break? Or the args[0] / BukkitPlayer is null for some reason.

vivid sparrow
#

Even if they were null, it shouldnt be a problem

trim mist
#

I'd like to remove QuickJS if they don't fix their native memory leak sooner or later.

#

Still holding out hope they'll fix it.

vivid sparrow
#

Js expansion starts to be a pain 😦

#

What id like is an expansion where things are cached, like a class and a main method

trim mist
#

Wdym?

vivid sparrow
#

So each script acts like a class, fields are initialized when the script is loaded, and when it is executed, a certain method is called, like String onRequest()

trim mist
#

Oh you mean in the JS expansion?

vivid sparrow
#

Yeah or another language, like groovy or kts

trim mist
#

Ahh

vivid sparrow
#

But probably another language

trim mist
#

Skript

vivid sparrow
#

Go back to your stuff @trim mist

austere hawk
#

How can I reset a placeholder?

vivid sparrow
#

Papi doesnt store any data on its own

#

Statistics are located on world folder

austere hawk
#

any clues as to whats wrong with it?

pure wind
#

hello im looking for placeholders that show current player attributes. those are number that shows when you command for example: /attribute @p minecraft:generic.attack_damage get . If anyone knows ping me

vivid sparrow
#

Try this @pure wind

#

d;fields spigot Attribute

ionic fractalBOT
#
Fields:
org.bukkit.attribute.Attribute%GENERIC_ATTACK_KNOCKBACK
org.bukkit.attribute.Attribute%GENERIC_MOVEMENT_SPEED
org.bukkit.attribute.Attribute%GENERIC_ATTACK_DAMAGE
org.bukkit.attribute.Attribute%GENERIC_ARMOR
org.bukkit.attribute.Attribute%HORSE_JUMP_STRENGTH
org.bukkit.attribute.Attribute%GENERIC_FOLLOW_RANGE
org.bukkit.attribute.Attribute%GENERIC_LUCK
org.bukkit.attribute.Attribute%GENERIC_MAX_HEALTH
org.bukkit.attribute.Attribute%GENERIC_KNOCKBACK_RESISTANCE
org.bukkit.attribute.Attribute%GENERIC_ATTACK_SPEED
org.bukkit.attribute.Attribute%GENERIC_FLYING_SPEED
org.bukkit.attribute.Attribute%GENERIC_ARMOR_TOUGHNESS
org.bukkit.attribute.Attribute%ZOMBIE_SPAWN_REINFORCEMENTS```
vivid sparrow
#

GENERIC_ATTACK_DAMAGE

austere hawk
#
    at java.util.Objects.requireNonNull(Objects.java:233) ~[?:?]
    at me.clip.placeholderapi.expansion.manager.LocalExpansionManager.register(LocalExpansionManager.java:170) ~[PlaceholderAPI-2.11.1.jar:?]
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[?:?]
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[?:?]
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) ~[?:?]
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?]
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[?:?]
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
    at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[?:?]
    at me.clip.placeholderapi.expansion.manager.LocalExpansionManager.lambda$registerAll$4(LocalExpansionManager.java:333) ~[PlaceholderAPI-2.11.1.jar:?]
    at me.clip.placeholderapi.util.Futures.lambda$onMainThread$0(Futures.java:46) ~[PlaceholderAPI-2.11.1.jar:?]
    at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftTask.run(CraftTask.java:101) ~[paper-1.18.2.jar:git-Paper-386]
    at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:483) ~[paper-1.18.2.jar:git-Paper-386]
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1173) ~[paper-1.18.2.jar:git-Paper-386]
    at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:316) ~[paper-1.18.2.jar:git-Paper-386]
    at java.lang.Thread.run(Thread.java:833) ~[?:?]```
#

any clues whats wrong with it

austere hawk
tender vaporBOT
upper anchor
lofty valve
#

Hey, how do i use ConfigExpansion? can't find any documentation.

tender vaporBOT
#
Uploading Images

You won't be able to upload images here directly to avoid spam, so please use https://imgur.com/upload or similar service to upload images/screenshots.

keen spear
#

how do I make the healthbar made in javascript examples shorter?
my players should always get more health either from leveling or items, but I want the healthbar to always have the same lenght no matter if they got 100 hp or 2k

plush dove
#

I asked ExecutableItems, they said "Its related to your javascript placeholders "used" in EI but not EI"

turbid tide
#

I mean the javascript expansion is pretty inoptimized.

turbid tide
#

bcz if so, that seems wrong?

#

or are you just trying to show 100 ❤️

keen spear
turbid tide
#

I haven't tested it btw. So it might only show 5 hearts or something like that

austere hawk
#

any clues whats wrong with it

#
    at java.util.Objects.requireNonNull(Objects.java:233) ~[?:?]
    at me.clip.placeholderapi.expansion.manager.LocalExpansionManager.register(LocalExpansionManager.java:170) ~[PlaceholderAPI-2.11.1.jar:?]
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[?:?]
    at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[?:?]
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) ~[?:?]
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[?:?]
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[?:?]
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[?:?]
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:?]
    at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[?:?]
    at me.clip.placeholderapi.expansion.manager.LocalExpansionManager.lambda$registerAll$4(LocalExpansionManager.java:333) ~[PlaceholderAPI-2.11.1.jar:?]
    at me.clip.placeholderapi.util.Futures.lambda$onMainThread$0(Futures.java:46) ~[PlaceholderAPI-2.11.1.jar:?]
    at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftTask.run(CraftTask.java:101) ~[paper-1.18.2.jar:git-Paper-386]
    at org.bukkit.craftbukkit.v1_18_R2.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:483) ~[paper-1.18.2.jar:git-Paper-386]
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1173) ~[paper-1.18.2.jar:git-Paper-386]
    at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:316) ~[paper-1.18.2.jar:git-Paper-386]
    at java.lang.Thread.run(Thread.java:833) ~[?:?]```
vivid sparrow
#

redownload the expansion @austere hawk

austere hawk
keen spear
#

this is the current formula that im using for healthbars, the problem is that it only works with vanilla health (static 20 hp). But in my case players have dynamic max hp values, they gain hp per level or items. so I dont know how keep the health bar the same length, no matter if the player has 100 or 2k HP, the bar damage update should also scale (the more health you have the less your hp bar will update because it has to scale all the health inside the the predefined 10 digits.

var full = "&4\u2764";
var half = "&c\u2764";
var empty = "&7\u2764";

function healthBar() {
  var bar = "";
  var health = parseInt("%player_health_rounded%");
  var maxhealth = parseInt("%player_max_health_rounded%");
  var fullHearts = Math.floor(health / 2);
  
  for (i = 0; i < fullHearts; i++) {
    bar += full;
  }
  if (health % 2 !== 0) {
    bar += half;
  }
  var emptyHearts = Math.floor((maxhealth - health) / 2);
  for (i = 0; i < emptyHearts; i++) {
    bar += empty;
  }
  return bar;
}
healthBar();
```fix
austere hawk
#

yo, can u use hex colors on animations extension?

#

its not working for me

turbid tide
#

Nope. you can't

wanton burrow
#

Hello, I am having a problem with PAPI now. I can't reload the ecloud expansions.

pure wind
#

%player_item_in_hand_level __<enchantment>% whats the correct method to input enchantment name into this one?

#

id want sharpness for example

vivid sparrow
#

d;fields spigot enchantment

ionic fractalBOT
#
Fields:
org.bukkit.enchantments.Enchantment%DAMAGE_ALL
org.bukkit.enchantments.Enchantment%LOOT_BONUS_BLOCKS
org.bukkit.enchantments.Enchantment%PROTECTION_ENVIRONMENTAL
org.bukkit.enchantments.Enchantment%ARROW_KNOCKBACK
org.bukkit.enchantments.Enchantment%WATER_WORKER
org.bukkit.enchantments.Enchantment%LURE
org.bukkit.enchantments.Enchantment%SILK_TOUCH
org.bukkit.enchantments.Enchantment%DAMAGE_ARTHROPODS```
vivid sparrow
#

DAMAGE_ALL

wanton burrow
worn ruin
#

Hello,
I have a problem with the Luckperms extension (%luckperms_prefix%), it outputs the prefix but with untransformed color codes.

cunning charm
stone edge
#

but yeah, ask in LP discord

red laurel
#

Hi I have updated to 2.11.2, how do I solve these problems ? What are ?

[21:46:22 WARN]: [PlaceholderAPI] Cannot load expansion playerpoints due to a missing plugin: PlayerPoints >....
[21:46:22 WARN]: [PlaceholderAPI] Cannot load expansion playertime due to a missing plugin: PlayerTime >....
[21:46:22 INFO]: 2 placeholder hook(s) registered! 1 placeholder hook(s) have an update available.

stone edge
#

afaik its not an error

#

its a warning that tells you that you downloaded PlayerPoints expansion but since plugin is not enabled

#

it warns you that a dependency is missing (i think)

cunning charm
#

The message tells you the issue.

red laurel
#

How do I fix it?

cunning charm
#

The plugin PlayerPoints is "missing".

red laurel
#

How do I deactivate them? I don't care about these plugins, in the config file I don't see anything that can disable this warning

cunning charm
#

plugins/placeholderapi/expansions - delete them

#

Hey, I'm using the %server_countdown_<SimpleDateFormat>_<time>% placeholder. Does it only work with dates, or times too?
%server_countdown_HH:mm_03:00% outputs 0.

turbid tide
cunning charm
#

Correct, that's what I'm looking for

turbid tide
#

so for example if you say count until 03:00 and its 04:00 it will say 0

#

it won't say 23h

cunning charm
#

Ah

turbid tide
#

I've never managed to do a repeating count down using the server countdown placeholder.

cunning charm
#

Still doesn't really work tho

turbid tide
#

1 that never says 0 I mean.

turbid tide
cunning charm
#

You can see the server time on right side of screen

turbid tide
#

can you do /papi parse me %server_countdown_HH:mm_23:00% %server_time_HH:mm% please

#

and send a screenshot of that output

cunning charm
turbid tide
#

hmm. that's a strange one. wonder if it actually really needs the date. in which case you can try something like this`

#

%server_countdown_dd/MM/yyyy HH:mm:ss_{server_time_dd/MM/yyyy} 23:00%

cunning charm
#

"invalid date"

#

Even this

opaque geyser
turbid tide
cunning charm
turbid tide
cunning charm
#

Oh wait

turbid tide
cunning charm
#

It does need a date

turbid tide
#

hmm?

cunning charm
#

%server_countdown_dd/MM/yyyy HH:mm:ss_{server_time_dd/MM/yyyy} 23:00%

#

HH:mm:ss

#

23:00

turbid tide
#

omg

#

%server_countdown_dd/MM/yyyy HH:mm:ss_{server_time_dd/MM/yyyy} 23:00:00% xD

cunning charm
#

Yeah lol

#

Thank you

turbid tide
cunning charm
turbid tide
#

You'll probably want to make a custom javascript for this instead.

cunning charm
#

Blegh, not that bothered. No worries, thanks

turbid tide
#

in theory not that hard. but I can't be bothered either xD

#

you're welcome

cunning charm
#

@me when placeholder in a placeholder in a placeholder is a thing

turbid tide
#

don't even think PAPI3 will add that and that will only be launched next year

#

or so

#

but anyways

#

turns out I can be bothered lmao

cunning charm
#

Any reason update_interval: 5 seems to not work?

turbid tide
#

that you want to update

#

they don't automatically update.

cunning charm
#

Got it

vivid sparrow
#

ver sound = Java.type("org.bukkit.Sound.BLOCK_NOTE_BLOCK_BIT");
Try this @bold mesa

#

And that for loop isnt not valid, is it?

#

for (var i = 0; i < onlinePlayers.length; i++)
var player = onlinePlayers[i]

#

Hmm, try var sound = Java.type("org.bukkit.Sound").BLOCK_NOTE_BLOCK_BIT; and define it above the loop

#

and if that doesn't work, try this instead var sound = Java.type("org.bukkit.Sound").valueOf("BLOCK_NOTE_BLOCK_BIT");

#

remove that player definition at the top

#

and that's the only way to play the sound to everyone, loop trough all players and call Player#playerSound

keen spear
#

im trying to create a health bar with progress placeholders

/papi parse me %progress_bar_{player_health_rounded}_c:&a■_p:&e■_r:&7■_l:5_m:100%

it used to work fine a few hours ago, but suddenly it will only parse "completed" rather than the bar itself

cloud mortar
#

Hey what placeholder should I use so it shows if my server is online or offline

vivid sparrow
#

%pinger_isonline_<server/ip>:<port>%

wheat cape
#

I can't seem to find PlaceholderAPI_ver_DEV.jar anymore, is it now RC as shown in pins here?

cloud salmon
vivid sparrow
#

Can you use /papi parse? @cloud salmon

cloud salmon
#

Well

vivid sparrow
#

Hm?

cloud salmon
#

cuz it works fine

#

it only doesn't work when a player disconnects

#

i'm guessing cuz i use the prefix in nametags as well as scoreboard

#

so i have to somehow find offline player

#

idk how to do that with javascript tho tbh

vivid sparrow
#

hmm, if they leave, the placeholder shouldnt be parsed at all I guess

cloud salmon
#

not sure

#

but i get that error everytime someone leaves

#

only sometimes, not everytime

plush ivy
#

after updated to new papi my chat placeholders brokes
colors code are showing :/

keen spear
#

how do I disable the fullbar option in papi progress?

gleaming saffron
#

How can I use this placeholder "%sound_ all_ <sound>-<volume>-<pitch>%"?
I already download "/papi ecloud download Sound" and reload my server. How can I use or check this placeholder with command /papi parse ? What is the format of this placeholder? What the format have sound in this placeholder?

warm plover
#

So I have downloaded the "Data" community script along with a data example script and it doesn't seem to let me check data with %javascript_data_get,{player_name}.viewed%

#

%javascript_essentials_menu_glass% This however shows the number correctly

#

function viewCount() {
    var views = Data.exists(dataLoc) ? Data.get(dataLoc) : 0;

    views++;

    Data.set(dataLoc, views);
    Placeholder.saveData();

    return views;
}

viewCount();```
This is the file
mint fable
#

each script has it's own data

#

sounds like you're trying to use the data cross-script @warm plover

warm plover
#

I just want to set a variable in game for it to be used in game

mint fable
#

Yes so it all has to be done inside one script

warm plover
#

I see

mint fable
#

if you use the data community script then you have to use javascript_data_get,... javascript_data_set,...

warm plover
#

And my script for the variable has to be in data.js too?

mint fable
warm plover
#

this is in a different file

mint fable
#

I don't understand the purpose of writing a script, I thought you just wanted a varaible

#

you test it with get and set

warm plover
#

/papi parse me %javascript_data_get,{player_name}.viewed% shows nothing

mint fable
#

probably because it wasn't set yet

#

did you ever set it?

warm plover
#

I thought I did, let me try again in case

mint fable
#

/papi parse me %javascript_data_set,{player_name}.viewed,0%

warm plover
#

Ah okay setting it did make it show up

#

So I don't even need a script for variables, data.js literally just does this for me

#

That's what it seems like anyway

mint fable
#

correct

#

the Community Script Data just makes javascript data easier to use

#

and a bit more user friendly

warm plover
#

Thank you very much

#

This is perfect!

warm plover
#

Is there a way I can set a data placeholder to the default empty string?
Like this, but this doesn't do it /papi parse me %javascript_data_set,glassColor,%

mint fable
#
function set(path, data) {
    if(data === "")
        Data.remove(path);
    else
        Data.set(path, data);
    return "";
}
``` maybe
#

could've just added a remove

#

but

#

that felt easier

barren token
mint fable
#

ah, don't really have time to add remove to that script rn

warm plover
#

Alright no worries

barren token
warm plover
#

Is there a way to assign a default value to a JS data?

stone edge
#

what you mean with "js data"

vivid sparrow
#

var something = Data.get("key") || "default"; try this

turbid tide
#

I believe he's referring to the javascript expansion which has a data feature. And the answer is yes. By changing the code itself.

warm plover
#

Ah apologies, I mean this the data community script

vivid sparrow
#
function get(path, def)  {
    return Data.exists(path) ? Data.get(path) : def;
}```
turbid tide
#

and you could even make the default value just be an argument as well. Similar to how deluxemenu's meta works

warm plover
vivid sparrow
#

if data exists ? return Data.get() : otherwise, return def

#

is a shorter if-else statement

warm plover
#

Oh I see, and def is the default value?

turbid tide
#

its called an elvis operator or a ternary operator.

turbid tide
vivid sparrow
#

elvis is different

turbid tide
#

you can set it to any string

turbid tide
warm plover
#

So would I change def to "String"

vivid sparrow
#

yes, it only works for null values

#

null ?: "def"

turbid tide
#

I see

vivid sparrow
#

yes

warm plover
#
    return Data.exists(backgroundGlass) ? Data.get(backgroundGlass) : "GRAY_STAINED_GLASS_PANE";
}```
#

Would this be correct?

turbid tide
#

yeah. but you don't need the def parameter then

#

but careful

#

this will set the default value to GRAY_STAINED_GLASS_PANE For all your data placeholders

warm plover
turbid tide
#

oh.

#

no.

warm plover
#

Hmm, guess that's not a huge deal really

#

But for anyone who downloads this (which I was planning on making it public) it could be

tender vaporBOT
cloud salmon
#

oop sorry

turbid tide
#

I recommend you use OfflinePlayer instead of BukkitPlayer

cloud salmon
#

what if they're not offline then?

#

is there a way to check with javascript if a player is null or not online?

#

i dont know exactly tbh

plush fiber
#

Where should the variable expansion problem go?

stone edge
#

Elaborate a bit more

bitter timber
#

when updating papi, do I need to replace both the Jar file and the papi folder???

stone edge
#

afaik only the .jar file

errant iron
#

Only the jar file, yes

bitter timber
#

thought so, thanks

gleaming saffron
#

How can I use this placeholder "%sound_all <sound>-<volume>-<pitch>%"?
I already download "/papi ecloud download Sound" and reload my server. How can I use or check this placeholder with command /papi parse ? What is the format of this placeholder? What the format have sound in this placeholder?

empty beacon
vivid sparrow
#

Ask your plugin developer for an update

#

The relied on a part of the code that got removed, they should handle the coloring on their own

rustic carbon
#

is it just me or

#
[15:32:51 ERROR]: [PlaceholderAPI] Failed to load class files of expansion.
java.util.concurrent.CompletionException: java.lang.NullPointerException: Cannot invoke "java.lang.Class.getClassLoader()" because "result" is null
        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.lang.NullPointerException: Cannot invoke "java.lang.Class.getClassLoader()" because "result" is null
        at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:113) ~[purpur-api-1.19-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.plugin.java.JavaPluginLoader.getClassByName(JavaPluginLoader.java:235) ~[purpur-api-1.19-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:128) ~[purpur-api-1.19-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:105) ~[purpur-api-1.19-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
#

everytime i restart my server

#

the papi ecloud download just goes poof

wanton burrow
#
java.util.concurrent.CompletionException: java.lang.NoClassDefFoundError: net/ess3/api/IEssentials
        at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320) ~[?:?]
        at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1770) ~[?:?]
        at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.lang.NoClassDefFoundError: net/ess3/api/IEssentials
        at java.lang.Class.getDeclaredMethods0(Native Method) ~[?:?]
        at java.lang.Class.privateGetDeclaredMethods(Class.java:3402) ~[?:?]
        at java.lang.Class.getDeclaredMethods(Class.java:2504) ~[?:?]
        at me.clip.placeholderapi.expansion.manager.LocalExpansionManager.lambda$findExpansionInFile$7(LocalExpansionManager.java:413) ~[PlaceholderAPI-2.11.2.jar:?]
        at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
        ... 1 more
Caused by: java.lang.ClassNotFoundException: net.ess3.api.IEssentials
        at java.net.URLClassLoader.findClass(URLClassLoader.java:445) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:587) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
        at java.lang.Class.getDeclaredMethods0(Native Method) ~[?:?]
        at java.lang.Class.privateGetDeclaredMethods(Class.java:3402) ~[?:?]
        at java.lang.Class.getDeclaredMethods(Class.java:2504) ~[?:?]
        at me.clip.placeholderapi.expansion.manager.LocalExpansionManager.lambda$findExpansionInFile$7(LocalExpansionManager.java:413) ~[PlaceholderAPI-2.11.2.jar:?]
        at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
        ... 1 more```
#

Actually I have something similar, every time I reload PAPI, this happens.

flat echo
#

Mine stopped working completely. Worked after I downgraded back to 2.11.1

wanton burrow
#

Could it be an issue regarding compatibility with other plugins?

balmy marten
balmy marten
wanton burrow
#

I will try updating Essentials, because the expansion was recently downloaded.

balmy marten
#

Awesome

balmy marten
flat echo
#

05.07 12:01:54 [Server] INFO Placeholder expansion registration initializing...
05.07 12:01:54 [Server] INFO Fetching available expansion information...
05.07 12:01:58 [Server] ERROR Failed to load class files of expansion.
05.07 12:01:58 [Server] INFO java.util.concurrent.CompletionException: java.lang.NoClassDefFoundError: net/ess3/api/IEssentials
05.07 12:01:58 [Server] INFO at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315) ~[?:?]
05.07 12:01:58 [Server] INFO at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320) ~[?:?]
05.07 12:01:58 [Server] INFO at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1770) ~[?:?]
05.07 12:01:58 [Server] INFO at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1760) ~[?:?]
05.07 12:01:58 [Server] INFO at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?]
05.07 12:01:58 [Server] INFO at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?]
05.07 12:01:58 [Server] INFO at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?]
05.07 12:01:58 [Server] INFO at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?]
05.07 12:01:58 [Server] INFO at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?]
05.07 12:01:58 [Server] INFO Caused by: java.lang.NoClassDefFoundError: net/ess3/api/IEssentials
05.07 12:01:58 [Server] INFO at java.lang.Class.getDeclaredMethods0(Native Method) ~[?:?]
05.07 12:01:58 [Server] INFO at java.lang.Class.privateGetDeclaredMethods(Class.java:3402) ~[?:?]
05.07 12:01:58 [Server] INFO at java.lang.Class.getDeclaredMethods(Class.java:2504) ~[?:?]
05.07 12:01:58 [Server] INFO at me.clip.placeholderapi.expansion.manager.LocalExpansionManager.lambda$findExpansionInFile$7(LocalExpansionManager.java:413) ~[PlaceholderAPI-2.11.2.jar:?]
05.07 12:01:58 [Server] INFO at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
05.07 12:01:58 [Server] INFO ... 6 more
05.07 12:01:58 [Server] INFO Caused by: java.lang.ClassNotFoundException: net.ess3.api.IEssentials
05.07 12:01:58 [Server] INFO at java.net.URLClassLoader.findClass(URLClassLoader.java:445) ~[?:?]
05.07 12:01:58 [Server] INFO at java.lang.ClassLoader.loadClass(ClassLoader.java:587) ~[?:?]
05.07 12:01:58 [Server] INFO at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
05.07 12:01:58 [Server] INFO at java.lang.Class.getDeclaredMethods0(Native Method) ~[?:?]
05.07 12:01:58 [Server] INFO at java.lang.Class.privateGetDeclaredMethods(Class.java:3402) ~[?:?]
05.07 12:01:58 [Server] INFO at java.lang.Class.getDeclaredMethods(Class.java:2504) ~[?:?]
05.07 12:01:58 [Server] INFO at me.clip.placeholderapi.expansion.manager.LocalExpansionManager.lambda$findExpansionInFile$7(LocalExpansionManager.java:413) ~[PlaceholderAPI-2.11.2.jar:?]
05.07 12:01:58 [Server] INFO at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
05.07 12:01:58 [Server] INFO ... 6 more

wanton burrow
balmy marten
flat echo
#

Don't even have essentials installed tbh

balmy marten
#

ah then remove the essentials expansion

#

delete it from /plugins/placeholderapi/expansions/

turbid tide
balmy marten
#

think the class is different

#

idk

turbid tide
#

hmm. no its not.

wanton burrow
#

When I use a Scoreboard, the PAPI placeholder extension for LuckPerms does not detect color codes being used on the ranks. This is not a problem from the Scoreboard plugin itself, since there are other color codes put in other places that work perfectly.

#

LuckPerms is updated, the expansion is updated. In the other subserver it works as intented. I dunno what's happening. .-.

turbid tide
#

so if your rank prefix is &cRed for example it will be returned as exactly that.

#

actually that might only happen for hex colors.

wanton burrow
wanton burrow
wanton burrow
#

Because if I enter /papi parse EverCR %luckperms_prefix% on both sub servers, one does retrieve the right color values, but in the other just returns the codes... And both servers have the same version of PAPI and LuckPerms .-.

wanton burrow
#

Nvm, I just saw what was the problem. Recent update 2.11.2 has the color coding format removed. So I just downgraded to 2.11.1 and it works as intented.

turbid tide
#

they intentionally don't parse it themselves. To let other plugins where placeholders are used parse it. Like scoreboards.

wanton burrow
#

Regardless, it works now. So I don't have complains.

edgy sapphire
#

Hey, is there any placeholder to display how many blocks all the members in the server have mined?

midnight egret
#

%statistic_player_kills% & %statistic_deaths% doesnt work

mint fable
#

/papi parse me %statistic_player_kills% says unknown statistic as well?

#

@midnight egret

civic ridge
#

Please help me Which placeholder shows Worlds?

trim solar
#

%math_0_{bungee_BwHUB-1}+{bungee_BwHUB-2}+{bungee_Bw1v1-1}+{bungee_Bw1v1-2}+{bungee_Armed-1}+{bungee_Armed-2}+{bungee_BwDoubles-1}+{bungee_BwDoubles-2}+{bungee_BwPractice-1}+{bungee_BwPractice-2}+{bungee_BwRank3v3-Champ-1}+{bungee_BwRank3v3-Champ-2}+{bungee_BwRank3v3-Cont-1}+{bungee_BwRank3v3-Cont-2}+{bungee_BwRank3v3-Open-1}+{bungee_BwRank3v3-Open-2}+{bungee_BwRank4v4-Champ-1}+{bungee_BwRank4v4-Champ-2}+{bungee_BwRank4v4-Cont-1}+{bungee_BwRank4v4-Cont-2}+{bungee_BwRank4v4-Open-1}+{bungee_BwRank4v4-Open-2}+{bungee_BwSolo-1}+{bungee_BwSolo-2}+{bungee_BwSquad-1}+{bungee_BwSquad-2}+{bungee_BwTrio-1}+{bungee_BwTrio-2}%

Hey, why this don't work?

barren token
mint fable
#

that's a lot of servers

trim solar
mint fable
#

well, in one placeholder

trim solar
#

i think is a limit of hd

trim solar
mint fable
#

ah

#

use javascript?

trim solar
#

thanks

mint fable
#

👍

mint fable
barren token
mint fable
#

plugins/placeholderapi/expansions/

#

then you can redownload after if needed

#

also, I recommend stopping the server, deleting, then starting the server

stoic garnet
#

I need some help with the changeoutput and scoreboard api

#

for some reason this isnt working
%changeoutput_equals_{objective_entryposhigh_coins_1}_green_&\uE002 Green Guardians_%

warm topaz
#

what does /papi parse me %objective_entryposhigh_coins_1% return

#

and what isnt working exactly

turbid tide
#

maybe they're using the updated version with the new format? xD idk just saying

stoic garnet
wet basinBOT
#

@mint fable Unknown expansion.

stoic garnet
wet basinBOT
#

@mint fable Unknown expansion.

mint fable
#

smh

turbid tide
#

its scoreboardobjective or whatever

mint fable
#

with an s||mh||

warm topaz
#

oh why does the name and identifier not match up

#

isnt that not allowed

mint fable
#

l3thalbunny

stoic garnet
#

ive already downloaded it

mint fable
#

they made it so long ago

#

😂

#

it was officially released on spigot @warm topaz

warm topaz
#

🥴

stoic garnet
#

still isnt working sad_fingerguns

warm topaz
#

does the coins objective exist

mint fable
#

case sensitive

stoic garnet
#

yea it does

mint fable
#

wait

mint fable
stoic garnet
#

yea

mint fable
stoic garnet
#

ye

mint fable
#

not the commands?

stoic garnet
#

i did both

mint fable
#

where did you put the one from spigot

stoic garnet
#

the plugins folder

mint fable
#

you can delete that

#

I was just showing Kaliber the page

#

the commands downloaded what you needed

stoic garnet
#

oh okay

mint fable
#

and it works, but entryposhigh seems to not be

#

I belive you need {}

#

around the coins and the #

#

and I believe that's my doing, to support underscores :L

#

so you're gonna have to use javascript instead of changeoutput

#

since you can't nest the {} like that

warm topaz
#

🥴

#

how come u used {}

stoic garnet
#

%changeoutput_equals_{objective_entryposhigh_{coins}_{1}}_green_&\uE002 Green Guardians_%

warm topaz
#

yeah that wont work

turbid tide
#

yeah that won't work

mint fable
#

what do u want me to use

#

I just did it for a guy that wanted it basically

warm topaz
#

shouldve added support for escaping the underscores instead probably

#

\_

mint fable
#

maybe

#

I hate using underscores in placeholders

#

pita

#

in checkitem I use , to separate instead and just allow people to \,

#

_ is so common

stoic garnet
mint fable
#

before I do

warm topaz
#

do u know how to use the javascript expansion

mint fable
#

/papi parse me %objective_entryposhigh_{coins}_{1}% works right?

#
var placeholder = "%objective_entryposhigh_{coins}_{1}%"
var out = ""

if( placeholder === "green" )
  out = "&\uE002 Green Guardians"

out
stoic garnet
mint fable
stoic garnet
tender vaporBOT
#
Javascript
Useful Links & Information:

An expansion that allows you to use javascript for processing
Wiki
Community Scripts
GitHub
eCloud

stoic garnet
#

now what

mint fable
#

use it in-game

#

/papi parse me %javascript_<your-script-name>%

stoic garnet
#

it replied with

#

%/uE002 Green Guardians%

mint fable
#

did you put extra %% around it?

stoic garnet
#

oh

#

yea

#

1se c

mint fable
#

ok

#

well it works

#

so now you use that

stoic garnet
#

color codes dont work for some reason

mint fable
#

idk what the \uE002 is

#

should it just be &2

#

or &a

turbid tide
#

nah.

sterile heart
#

hello wanted to ask if %vault_rank% would work on Deluxehub 3 Scoreboard

stoic garnet
turbid tide
mint fable
#

§2

turbid tide
#

nah. just google E002. its a symbol. not ampersand and not section symbol

#

no idea what its called

turbid tide
#

as long as DHub 3 supports PlaceholderAPI

#

its up to each plugin to add support for PlaceholderAPI

sterile heart
#

ok ty

mint fable
turbid tide
mint fable
#

is that just a symbol he's wanting to use?

turbid tide
#

I assume so

mint fable
#

ah

turbid tide
#

probably replaced by a custom font or something

#

with an image

mint fable
#

cause it came out E002

turbid tide
#

or like an icon

turbid tide
#

since papi doesn't translate those

#

its up to the plugin to translate those I think

#

or maybe the file encoding. idk

mint fable
#

it's a square i thought, where did you see that symbol?

turbid tide
#

google

mint fable
#

ya, I just figured his resource pack would replace it ig

#

what did you google for it

#

I'm on unicodelookup and put E002 as the hex and just got a square

turbid tide
#

\uE002

mint fable
#

okay I see

#

it is a square

sterile heart
#

and what is the placeholder for ping?

mint fable
#

but replaced by certain fonts, or in this case, resource packs/translations

mint fable
mint fable
#

§2 dark green?

stoic garnet
#

dw i got it

mint fable
#

what did you end up doing

stoic garnet
#
var out = ""

if( placeholder === "red" )
  out = "§r §cRed Rabbits"

if( placeholder === "orange" )
  out = "§r §6Orange Ocelots"

if( placeholder === "yellow" )
  out = "§r §eYellow Yaks"

if( placeholder === "lime" )
  out = "§r §aLime Llamas"

if( placeholder === "green" )
  out = "§r §2Green Guardians"

if( placeholder === "cyan" )
  out = "§r §3Cyan Creepers"

if( placeholder === "aqua" )
  out = "§r §bAqua Axolotls"

if( placeholder === "blue" )
  out = "§r §9Blue Bats"```
mint fable
#

nice

#

tbh

#
var placeholder = "%objective_entryposhigh_{coins}_{1}%"

function changePlaceholder(){
  if( placeholder === "red" )
    return  "§r §cRed Rabbits"
  if( placeholder === "orange" )
    return  "§r §6Orange Ocelots"
  if( placeholder === "yellow" )
    return  "§r §eYellow Yaks"
  if( placeholder === "lime" )
    return  "§r §aLime Llamas"
  if( placeholder === "green" )
    return  "§r §2Green Guardians"
  if( placeholder === "cyan" )
    return  "§r §3Cyan Creepers"
  if( placeholder === "aqua" )
    return  "§r §bAqua Axolotls"
  if( placeholder === "blue" )
    return "§r §9Blue Bats"
}
changePlaceholder()
#

that should make it ever so slightly more efficient since it doesn't have to go through every if statement

#

not that it really matters

stoic garnet
#

okay i ran into another problem

#

so basically what im using this for is a cool sidebar and for some reason instead of only making 1 part the color thing it makes it all the color

#

i wish i could send a ss

#

but it doesnt let me

#

@mint fable do you know how to fix that

mint fable
#

?imgur

tender vaporBOT
#
FAQ Answer:

You won't be able to upload images here directly to avoid spam, so please use https://imgur.com/upload to upload images/screenshots.
You can also use a screenshot service like gyazo or jinx and post those links here.

stoic garnet
vivid sparrow
#

use white

mint fable
#

f

stoic garnet
#

there we go

mint fable
#

noice

stoic garnet
#

now

#

its time for the hard part i think

#

uh basically

mint fable
#

idk the red rabbit looked pretty cool

#

like a boss

stoic garnet
#

lmao

mint fable
#

😂

#

killer bunny

stoic garnet
#

heres what it looks like now

#

so thats good

mint fable
#

ohh it was already red

#

nice

stoic garnet
#

but what i want now is

#

i want it to show what team is infront of you in coins and the one behind

#

let me get a ss

mint fable
#

so #1, and +1, self, and -1?

stoic garnet
#

yes

mint fable
#
var pos = parseInt(args[0])
var placeholder = PlaceholderAPI.static.setPlaceholders(BukkitPlayer, "%"+"objective_entryposhigh_{coins}_{"+pos+"}%")

function changePlaceholder(){
  if( placeholder === "red" )
    return "§f §cRed Rabbits"
  if( placeholder === "orange" )
    return "§f §6Orange Ocelots"
  if( placeholder === "yellow" )
    return "§f §eYellow Yaks"
  if( placeholder === "lime" )
    return "§f §aLime Llamas"
  if( placeholder === "green" )
    return "§f §2Green Guardians"
  if( placeholder === "cyan" )
    return "§f §3Cyan Creepers"
  if( placeholder === "aqua" )
    return "§f §bAqua Axolotls"
  if( placeholder === "blue" )
    return "§f §9Blue Bats"
}
changePlaceholder()
#

we are going to adapt this

stoic garnet
#

is that the java script

mint fable
#

so now it will take an argument

stoic garnet
#

should i put that in the script

mint fable
#

wait

stoic garnet
#

also if u can

mint fable
#

now do it

stoic garnet
#

change the §r to §f

mint fable
#

oh

#

okay take it now

#

what did you name the script?

#

just so I know

stoic garnet
#

example

mint fable
#

%javascript_example_<position>%

#

that's how we use it now

#

now... doing +-1 is gonna be tricky

#

sounds like a lot of placeholders that are going to be nested

#

so prob gotta use js

#

I can try working on a script for you in a little bit if you want, might be a little complicated

stoic garnet
#

alright

#

sure

#

in the meantime

stoic garnet
#

wait

#

@mint fable but the positions change depending on what place you are

#

so if youre 6th itll show 5th

mint fable
#

that's why I'm saying plus and minus 1 will be tricky

#

to show 5th and 7th if you're in 6th

stoic garnet
#

oh

#

alright

willow pewter
mint fable
#

?paste

tender vaporBOT
#
FAQ Answer:

Paste Services
When asking for help with a config/menu/code issue please use our paste bin:
(we prefer it over pastebin.com)
HelpChat Paste - How To Use

mint fable
mint fable
#

not sure which one it is or if there is more to the error or not

mint fable
#

%statistic_PLAYER_KILLS%

midnight egret
#

ok i will try

magic rock
mint fable
mint fable
#

didn't want to redo it all, they wrote the if statements

#

i'll probably edit the same script and send it back later

#

for the +-1

#

unless you wanna do it 😉 @magic rock

stoic garnet
#

sorry im kinda in a rush so

mint fable
#

prob an hour or so

#

been here quite a bit today so far

stoic garnet
#

alright

mint fable
stoic garnet
#

ill wait

#

idm

mint fable
#

you can also try making the javascript but I think you said you don't know it

stoic garnet
#

i dont lmao im stupid as hell

mint fable
#

aight lmao

#

i'll fs be able to get you something though

stoic garnet
#

alright

#

@mint fable in the meantime I wanna know how to use team prefixes/team suffixes

#

with placeholders

#

since last time i did they just didnt work

mint fable
#

there are 2 it seems

#

team and teams

wet basinBOT
#

@mint fable Unknown expansion.

mint fable
#

oh, only one on the ecloud

#

that's more updated