đ ŋī¸ PlaceholderAPI
%image_%â
The image placeholder is used to return the original Unicode characters and their associated font for the image corresponding to a given ID.
Both row and column are optional, but when you use one of them, they must be used in pairs.
%image_mm_namespace:id:[row]:[column]%â
Return an image in minimessage format.

%image_md_namespace:id:[row]:[column]%â
Return an image in minedown format.

%image_raw_namespace:id:[row]:[column]%â
Return an the raw image character.

%shift_%â
The shift placeholder is used to obtain the character for offset, typically employed for aligning menu titles and similar operations.
%shift_mm_value%â
Return shift characters in minimessage format.
%shift_md_value%â
Return shift characters in minedown format.
%shift_raw_value%â
Return raw shift characters
If you need to display images using PlaceholderAPI in other plugins, ensure they support MiniMessage or Minedown formatting and properly send text components. (I emphasize this because some poorly designed plugins forcibly convert rich text into legacy color codes.)
Alternatively, you can display custom images through CraftEngine's packet interception. Please refer to this page for details.
%checkceitem_%â
The checkceitem palceholder helps you detect CraftEngine items in certain menu plugins.
%checkceitem_count_namespace:id%â
Returns the quantity of the specified item in the player's inventory.
%checkceitem_has_namespace:id:[amount]%â
Returns whether the player's inventory contains the specified quantity of the item.
%checkceitem_id_[slot]%â
The slot can be a non-negative number (>= 0), or main_hand and off_hand to specify the main hand and off-hand slots, respectively.
Returns the resource location of the item in the specified slot.
%checkceitem_iscustom_[slot]%â
The slot can be a non-negative number (>= 0), or main_hand and off_hand to specify the main hand and off-hand slots, respectively.
Returns whether the item in the specified slot is a custom item.
Items slot number
%ce_pack-state_<pack-id>%â
Returns the player's setting for a pack ID from resource-pack.packs. For example: %ce_pack-state_default%.
| Value | Meaning |
|---|---|
enabled | The player explicitly enabled this pack. |
disabled | The player explicitly disabled this pack. |
unset | No override is set; the pack follows its configured default value. |
/ce pack reset default restores the unset state. Use /ce debug pack-states <player> to view the player's states for all configured packs; permission: ce.command.debug.pack_states. This placeholder reads cached settings and does not query the database. It requires an online player whose settings have loaded; unknown pack IDs remain unresolved.
%ceexpr_%â
ceexpr evaluates CraftEngine expressions and can replace PlaceholderAPI's Math expansion (1000Ã faster). Its syntax is:
%ceexpr_<format>_<expression>%â
The first argument is the output format, and the second is the expression. CraftEngine splits the arguments only at the first underscore after the format, so the expression itself may contain more underscores.
%ceexpr_#.#_1+2*3%
This returns 7. The number format is the same as the MiniMessage <expr> tag and supports patterns made from #, 0, ., and ,:
%ceexpr_#,##0.00_1234.5%
This returns 1,234.50. Use bool as the format to evaluate the expression as a boolean and return true or false:
%ceexpr_bool_1+2*3==7%
Because PlaceholderAPI treats % as the end of a placeholder, use {mod} instead of % for the modulo operator:
%ceexpr_#_10{mod}3%
This is equivalent to the expression 10 % 3 and returns 1.
To read another PlaceholderAPI variable inside the expression, use <papi:placeholder> instead of nesting a %placeholder% inside the outer placeholder:
%ceexpr_#.#_<papi:player_level>*1.5%
%ceattr_%â
The ceattr placeholders read a player's custom attributes. The attribute ID must include its full namespace, such as demo:might.
%ceattr_base_<namespace>:<path>%â
Returns the attribute's base value resolved for the current player. Attribute modifiers and the final constraint have not yet been applied.
%ceattr_base_demo:might%
%ceattr_value_<namespace>:<path>%â
Returns the player's current effective attribute value. This includes equipment modifiers with scope: entity, but does not additionally calculate weapon modifiers from the main-hand item.
%ceattr_value_demo:might%
%ceattr_weapon_<namespace>:<path>%â
Returns only the weapon contribution provided by the player's main-hand item, without the player's existing attribute value.
%ceattr_weapon_demo:might%
%ceattr_value+weapon_<namespace>:<path>%â
Adds the main-hand item's weapon contribution to the player's current effective value. This is useful for previewing the value that a held weapon contributes to a damage formula in weapon lore, stat panels, or scoreboards.
%ceattr_value+weapon_demo:might%
+weapon is supported only with value, not base. These placeholders require player context. They do not return a number if the player is unavailable, the attribute ID is invalid, or the attribute has not been registered.
%cejs_%
Placeholders registered by JavaScript scripts via the //@Placeholder annotation. See đ Scripting for the full guide.
//@Placeholder("random_number")
function randomNumber(player) {
return Math.floor(Math.random() * 100)
}
%cejs_<id>%â
Evaluates the script function registered under <id>. The function receives the player as a Bukkit Player/OfflinePlayer (may be null for offline contexts) and must return a string.
%cejs_<id>_<args>%â
If <id> is a registered prefix, the remaining part is passed to the function as the args binding.
// %cejs_top_1_extra% -> args = "1_extra"
//@Placeholder("top")
function topN(player, args) {
return `#${args}`
}
%rel_cejs_%â
Relational placeholders registered via //@RelationalPlaceholder. The function receives two Bukkit players (one, two) and the raw args string:
//@RelationalPlaceholder("relation")
function relation(one, two, args) {
return one.getName() + " -> " + two.getName()
}