PlaceholderAPI 2.10.4

A resource that allows information from your favorite plugins be shown practically anywhere!

  1. clip
    Tested Minecraft Versions:
    • 1.7
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12
    • 1.13
    • 1.14
    • 1.15
    Source Code:
    https://github.com/PlaceholderAPI/PlaceholderAPI
    Contributors:
    Andre_601, funnycube, Glare, NathanG, LemmoTresto, PiggyPiglet, vk2gpz, and many more
    [​IMG]

    Logo2.png
    [​IMG][​IMG][​IMG]
    [​IMG]
    PlaceholderAPI is a plugin/library that allows servers the use of placeholders from a wide range of your favorite plugins collectively. Essentials, Factions, LuckPerms, Vault, AutoSell, GriefPrevention, etc.... You can display information from your favorite plugins in any plugin that supports PlaceholderAPI. See a full list of placeholders and supported plugins below. Through the use of the Expansion cloud, PAPI effectively and efficiently allows you to pick and choose which placeholders you want to install. The Expansion cloud allows you to receive new placeholders, updates to existing placeholder expansions, and much more directly from your server without updating the actual plugin. With over 100,000 downloads, PlaceholderAPI is a must have for a server of any type or scale.

    Placeholders2.png
    Click the link below to view placeholders
    Placeholders


    PluginsUsing2.png
    Click the link below to view plugins that hook into PlaceholderAPI
    Plugins


    configs2.png
    config.yml
    The config.yml contains the core plugin customization settings as well as a section specifically for expansions that wish to add configurable options too.

    Any settings an expansion may allow you to change will be added to the config.yml when that specific expansion is loaded.

    Code (YAML):

    # PlaceholderAPI version 2.8.1
    # Created by extended_clip

    check_updates
    : true
    cloud_enabled
    : true
    auto_install_expansions
    : true
    boolean
    :
      'true'
    : 'yes'
      'false'
    : 'no'
    date_format
    : MM/dd/yy HH:mm:ss
    expansions
    :
      pinger
    :
        offline
    : offline
        check_interval
    : 10
        online
    : online
      vault
    :
        formatting
    :
          thousands
    : k
          trillions
    : T
          quadrillions
    : Q
          billions
    : B
          millions
    : M
      bungee
    :
        check_interval
    : 30
      javascript
    :
        engine
    : javascript
     
    javascript_placeholders.yml
    If you have the javascript expansion enabled, the plugin will generate a javascript_placeholders.yml file where you can create your own placeholders.
    There are 2 ways you can create these javascript based placeholders. Either specify the javascript directly in the expression: section for each placeholder, or specify a file that the javascript will be loaded from by setting the expression to the following format -
    expression: 'file: <filename with extension>'


    When an expression starts with the "file: " keyword, a file will be created in the /plugins/PlaceholderAPI/javascripts folder with the name and file format specified if it does not exist.

    These placeholders are reloaded on /placeholderapi reload so no need to restart your server to make changes.
    Code (YAML):
    # javascript_placeholders.yml
    # You can create custom placeholders which utilize javascript to determine the result of the custom placeholder you create.
    # You can specify if the result is based on a boolean or the actual javascript.
    #
    # If you do not specify a type: the placeholder will default to a boolean type
    # A boolean type must contain a true_result: and false_result:
    #
    # A string type only requires the expression: entry
    #
    # Javascript placeholders can contain normal placeholders in the expression, true_result, or false_result
    # These placeholders will be parsed to the correct values before the expression is evaluated.
    #
    # Your javascript placeholders will be identified by: %javascript_<identifier>%
    #
    # Javascript placeholder format:
    #
    #     BOOLEAN TYPE
    # <identifier>:
    #   expression: <expression>
    #   type: 'boolean'
    #   true_result: <result if expression is true>
    #   false_result: <result if expression is false>
    #
    #     STRING TYPE
    # <identifier>:
    #   expression: <expression>
    #   type: 'string'
    #
    #
    #  ==== ADVANCED VARIABLES ====
    # DO NOT USE THESE VARIABLES UNLESS YOU KNOW WHAT YOU ARE DOING!
    #
    # You can access a few Bukkit API classes and methods using certain keywords:
    #
    # Using "BukkitServer" in your javascript will return Bukkit.getServer()
    # You can use any methods inside of the Server class:
    #
    # Example: BukkitServer.getBannedPlayers().size().toFixed()
    # Will return how many players are banned
    #
    # This variable is handy if you want to iterate through all online players.'
    #
    # Using "BukkitPlayer" in your javascript will return the Player object you are setting placeholders for.
    # You can use any methods inside of the Player class:
    #
    # Example: BukkitPlayer.hasPermission("some.permission")
    # Will return if the player has a specific permission
    # This variable is handy if you want to check a players permission node, or access other methods inside of
    # the player class for the specified player.
    #
    # More advanced variables are coming soon! Only use these variables if you know what you are doing!
    #
    #  ==================
    #
    #
    # Javascript placeholder examples:
    #
    # millionaire:
    #   expression: '%vaulteco_balance% >= 1000000'
    #   type: 'boolean'
    #   true_result: '&aMillionaire'
    #   false_result: '&cbroke'
    # is_staff:
    #   expression: '"%vault_group%" == "Moderator" || "%vault_group%" == "Admin" || "%vault_group%" == "Owner"'
    #   type: 'boolean'
    #   true_result: '&bStaff'
    #   false_result: '&ePlayer'
    # health_rounded:
    #   expression: 'Math.round(%player_health%)'
    #   type: 'string'
    # staff_online:
    #   expression: 'var i = 0; for (var p in BukkitServer.getOnlinePlayers()) { if (BukkitServer.getOnlinePlayers()[p].hasPermission("staff.online")) {i = i+1;};} i.toFixed();'
    #   type: 'string'
    #
    #
    # You can optionally specify a file that the javascript expression will be loaded from if your expression
    # is bigger than 1 line. To specify javascript be loaded from a file, follow this format:
    #
    # is_op:
    #   expression: 'file: is_op.js'
    #   type: 'string'
    #
    # The following placeholder will attempt to load javascript from the /plugins/PlaceholderAPI/javascripts/is_op.js file
    # if the folder/file exists. If the folder/file does not exist it will be created.
    # You must specify the file extension with the file name. Any file extension is accepted.

    millionaire
    :
      expression
    : '%vaulteco_balance% >= 1000000'
      type
    : boolean
      true_result
    : '&aMillionaire'
      false_result
    : '&cbroke'
    is_staff
    :
      expression
    : '"%vault_group%" == "Moderator" || "%vault_group%" == "Admin" || "%vault_group%"
        == "Owner"'
      type
    : boolean
      true_result
    : '&bStaff'
      false_result
    : '&ePlayer'
    staff_online
    :
      type
    : string

     


    Permissions2.png
    Code (YAML):
    permissions:
        placeholderapi.admin
    :
            description
    : ability to use admin commands
            default
    : op

    Commands2.png
    [​IMG]


    API_Usage2.png
    click the link below to view how to use this API
    API USAGE



    If you enjoy this completely free and powerful resource,
    please be kind enough to leave a like and review!
    :)

    This plugin utilizes bStats to collect anonymous statistics
    [​IMG]
    https://bstats.org/plugin/bukkit/PlaceholderAPI

    Images

    1. icon2.png

Recent Reviews

  1. fishy_ydrib
    fishy_ydrib
    5/5,
    Version: 2.10.4
    One of the best plugins out there. I have used this plugin many times on my server, as well as on servers I have helped developed. I have found no bugs, and have been very pleased with everything about it. Keep up the good work!
  2. Legueshhh
    Legueshhh
    5/5,
    Version: 2.10.4
    Really good plugin, but please, i'm really looking for Holograms which can be used with PlaceHoldersAPI. On Spigot 1.8.8, if u have any idea, love u so much.
  3. MineByte
    MineByte
    2/5,
    Version: 2.10.4
    hello I have a problem using the luckperms extension the plugin stopped working and the variables appeared wrong when reloading

    [22:26:16 INFO]: maximo_2101 issued server command: /papi reload
    [22:26:16 ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing command 'papi' in plugin PlaceholderAPI v2.10.4
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot.jar:git-Spigot-7d15d07-c194444]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot.jar:git-Spigot-7d15d07-c194444]
    at org.bukkit.craftbukkit.v1_9_R1.CraftServer.dispatchCommand(CraftServer.java:645) ~[spigot.jar:git-Spigot-7d15d07-c194444]
    at net.minecraft.server.v1_9_R1.PlayerConnection.handleCommand(PlayerConnection.java:1302) [spigot.jar:git-Spigot-7d15d07-c194444]
    at net.minecraft.server.v1_9_R1.PlayerConnection.a(PlayerConnection.java:1137) [spigot.jar:git-Spigot-7d15d07-c194444]
    at net.minecraft.server.v1_9_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) [spigot.jar:git-Spigot-7d15d07-c194444]
    at net.minecraft.server.v1_9_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) [spigot.jar:git-Spigot-7d15d07-c194444]
    at net.minecraft.server.v1_9_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot.jar:git-Spigot-7d15d07-c194444]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_231]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_231]
    at net.minecraft.server.v1_9_R1.SystemUtils.a(SourceFile:45) [spigot.jar:git-Spigot-7d15d07-c194444]
    at net.minecraft.server.v1_9_R1.MinecraftServer.D(MinecraftServer.java:716) [spigot.jar:git-Spigot-7d15d07-c194444]
    at net.minecraft.server.v1_9_R1.DedicatedServer.D(DedicatedServer.java:400) [spigot.jar:git-Spigot-7d15d07-c194444]
    at net.minecraft.server.v1_9_R1.MinecraftServer.C(MinecraftServer.java:655) [spigot.jar:git-Spigot-7d15d07-c194444]
    at net.minecraft.server.v1_9_R1.MinecraftServer.run(MinecraftServer.java:554) [spigot.jar:git-Spigot-7d15d07-c194444]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_231]
    Caused by: java.lang.NoClassDefFoundError: net/luckperms/api/LuckPerms
    at me.lucko.luckperms.placeholders.LuckPermsExpansion.canRegister(LuckPermsExpansion.java:48) ~[?:?]
    at me.clip.placeholderapi.expansion.ExpansionManager.registerExpansion(ExpansionManager.java:102) ~[?:?]
    at me.clip.placeholderapi.expansion.ExpansionManager.registerAllExpansions(ExpansionManager.java:154) ~[?:?]
    at me.clip.placeholderapi.PlaceholderAPIPlugin.reloadConf(PlaceholderAPIPlugin.java:176) ~[?:?]
    at me.clip.placeholderapi.commands.PlaceholderAPICommands.onCommand(PlaceholderAPICommands.java:226) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot.jar:git-Spigot-7d15d07-c194444]
    ... 15 more
    Caused by: java.lang.ClassNotFoundException: net.luckperms.api.LuckPerms
    at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_231]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_231]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_231]
    at me.lucko.luckperms.placeholders.LuckPermsExpansion.canRegister(LuckPermsExpansion.java:48) ~[?:?]
    at me.clip.placeholderapi.expansion.ExpansionManager.registerExpansion(ExpansionManager.java:102) ~[?:?]
    at me.clip.placeholderapi.expansion.ExpansionManager.registerAllExpansions(ExpansionManager.java:154) ~[?:?]
    at me.clip.placeholderapi.PlaceholderAPIPlugin.reloadConf(PlaceholderAPIPlugin.java:176) ~[?:?]
    at me.clip.placeholderapi.commands.PlaceholderAPICommands.onCommand(PlaceholderAPICommands.java:226) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot.jar:git-Spigot-7d15d07-c194444]
    ... 15 more
  4. oliver1009921
    oliver1009921
    4/5,
    Version: 2.10.4
    [07:56:38 WARN]: [PlaceholderAPI] Plugin PlaceholderAPI v2.10.4 generated an exception while executing task 27
    java.lang.NullPointerException: null
    at me.clip.placeholderapi.expansion.cloud.ExpansionCloudManager.lambda$null$3(ExpansionCloudManager.java:181) ~[?:?]
    at java.util.Map.forEach(Map.java:630) ~[?:1.8.0_212]
    at me.clip.placeholderapi.expansion.cloud.ExpansionCloudManager.lambda$fetch$4(ExpansionCloudManager.java:172) ~[?:?]
    at org.bukkit.craftbukkit.v1_14_R1.scheduler.CraftTask.run(CraftTask.java:84) ~[patched_1.14.4.jar:git-Paper-238]
    at org.bukkit.craftbukkit.v1_14_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:54) ~[patched_1.14.4.jar:git-Paper-238]
    at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[patched_1.14.4.jar:git-Paper-238]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_212]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_212]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_212]

    When i load my server that pops up
  5. Tanguygab
    Tanguygab
    5/5,
    Version: 2.10.4
    I think it's by far, one of the best plugins.

    I love this plugin because you can have your stats from one plugin almost everywhere (in your Tab, chat, scoreboard, holograms, GUIs...)
    But the only thing I'm sad about is because of a thing that will maybe never see the day, it's a way of taking placeholder from one server to another like %remoteserver_<server>_<placeholder>% and that works with BungeeCord, so I can have placeholders on my Tab plugin that is on my BungeeCord, I know there have already been a plugin that could do that https://www.spigotmc.org/resources/free-remoteplaceholders-get-your-placeholders-from-other-servers.56288/ but it's no longer maintained =,(

    Please clip and every other developpers on this plugin, make this PAPI cross-servers compatible, it would be really cool =)
  6. MrTorta
    MrTorta
    5/5,
    Version: 2.10.4
    The plugin works perfectly and the support is immediate and very efficient, they solved my "problem" in about 10 minutes!
  7. herobine117
    herobine117
    5/5,
    Version: 2.10.4
    Awesome plugin, awesome support too, using it on my plugins, for me, it's a must have plugin :D
  8. aguadelamiseria
    aguadelamiseria
    5/5,
    Version: 2.10.4
    Amazing plugin, a must in almost any kind of server! Compatible with many plugins
  9. Turbotailz
    Turbotailz
    5/5,
    Version: 2.10.4
    Thanks for the super easy extension API! Was able to add my own placeholder in minutes :)
  10. HerobrineProazo
    HerobrineProazo
    5/5,
    Version: 2.10.4
    08.12 02:31:03 [Server] INFO at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:56)
    08.12 02:31:03 [Server] INFO at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    08.12 02:31:03 [Server] INFO at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    08.12 02:31:03 [Server] INFO at java.lang.Thread.run(Thread.java:748)
    08.12 02:31:03 [Server] INFO Caused by: java.lang.NullPointerException
    08.12 02:31:03 [Server] INFO at me.clip.placeholderapi.expansion.cloud.ExpansionCloudManager.lambda$fetch$4(ExpansionCloudManager.java:172)
    08.12 02:31:03 [Server] INFO at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:71)
    08.12 02:31:03 [Server] INFO at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:53)
    08.12 02:31:03 [Server] INFO ... 3 more





    It only gives me that error and the PAPI and the / daddy ecloud ... stop working, but the integrated expansions don't stop working. Some help? because without daddy I can't finish my server ...