PlaceholderAPI icon

PlaceholderAPI -----

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




2.11.6

This update brings 1.20.6 support but also some important changes to developers to keep in mind. Most notably a deprecation.

Deprecated Version class [#1035]
The Version class in PlaceholderAPI has been deprecated.
The reasons were many with the primary one being that there are various other ways to find out what server version is used to ensure your expansion is compatible with it.

While the class still works, can there be minor changes in how the version is being displayed, due to changes on how PlaceholderAPI fetches the server version.
It is recommended to switch to alternative methods as soon as possible, as we won't guarantee this class to remain working for the forseeable future.

Parse Command Improvement
Fixed the parse command showing the wrong command in the "You must provide a target and message" response for the "cmdparse" type. Also added the ability to use "me" in both the first and second player for parserel.

New Wiki
In case you haven't seen it yet, the PlaceholderAPI wiki has been moved.
While the old wiki at GitHub served us well was it lacking ways of customizing it. The new location allows us higher customization and organization of the wiki alongside other beneficial changes.

You can find the new Wiki at https://wiki.placeholderapi.com

Just like the old one can you contribute to it by PRing changes to the wiki branch!

What's Changed
Other changes
New Contributors
Full Changelog: 2.11.5...2.11.6
----------, May 21, 2024

Hi all,

Yesterday we were notified of some malicious actors using third-party plugins and software to allow them to do harmful actions on a server. By gaining access to PAPI commands via a force op in a third-party plugin/software, the malicious actors were able to utilize a vulnerable expansion ( Minepacks) to allow unverified expansions to be downloaded. We took immediate backend actions to protect all versions of PlaceholderAPI by removing unverified expansions from the API.


This update specifically removes the ‘ cloud_allow_unverified_expansions’ from the default configuration. After our backend actions, this config option was rendered useless, so do not worry if you still have it listed in your configuration file.

To access unverified expansions, users can still manually download them from https://api.extendedclip.com/all/


If you have any questions or need further assistance, please feel free to reach out to us in our Support Discord.


Thank you,
PlaceholderAPI Team
----------, Oct 28, 2023

2.11.4

A new PlaceholderAPI release is now available.

Below is the full changelog of what has been changed and/or added to PlaceholderAPI. Enjoy.

Fetch all expansions, including unverified ones [#952]
Thanks to @iGabyTM PlaceholderAPI will now fetch all available expansions from the eCloud, no matter their verification state.
Should you try to download an expansion from the eCloud that isn't verified will PlaceholderAPI inform you about the expansion not being verified, while also telling you that you need to download it manually.

/papi register <jar> fix [#946]
It was possible for the /papi register <jar> command to register Expansion jar files outside the expansions folder, giving a potential security risk to server owners.
@JulianVennen provided a Pull request that fixes this issue and limits the command to only work within the expansions folder. Thank you!

Properly distinguish internal and external Expansions [#953]
Another Pull request by @iGabyTM allows PlaceholderAPI to properly distinguish internal and external Expansions from each other.
PlaceholderExpansions loaded from the expansions folder are now considered external while those registered by a Plugin are considered internal.

This also brings smaller changes to how expansions will be loaded:

  • External expansions will not be loaded if another expansion with the same identifier is already used. Internal expansions are given priority.
  • PlaceholderAPI only checks the eCloud for updates of an expansion, if it is an external one.
New environment variables [#947 and #978]
You can now use two environment variables to block downloads of specific expansions and to allow download of unverified expansions.

To block specific expansions from being downloaded add an environment variable called PAPI_BLOCKED_EXPANSIONS containing a case-insensitive, comma separated list of expansion identifiers to block.
If no such environment variable is present, all expansions be downloadable as normal.

The other environment variable is PAPI_ALLOW_UNVERIFIED_EXPANSIONS which contains either true or false to allow or deny downloads of unverified expansions respectively.

Both variables have been added by @JulianVennen

1.20 support [#969]
PlaceholderAPI receives NMS 1.20 support. This means that NMSVersion now supports checking for SPIGOT_1_20_R1 (v1_20_R1).
This also includes updates to dependencies used, namely Spigot.

This was added by @Andre601

Full Changelog: 2.11.3...2.11.4
----------, Sep 24, 2023

2.11.3

Hello!

Please find the change log for the 2.11.3 minor update below, it includes support for 1.19.4 and some general bug fixes. Note that this update also removes the ability to toggle the eCloud from in game, instead requiring it to be done from the config.

What's Changed:
Changes
Fixes
  • Fix inconsistent parsing command behaviour by @Andre601 in #873
  • Fix duplicate expansion loading by @Andre601 in #866
  • Fix NoClassDefFoundError in order for the other expansions to be loaded by @iGabyTM in #936
Other changes
New Contributors
Full Changelog: 2.11.2...2.11.3
----------, Mar 18, 2023

2.11.2

Hey everyone,

Time for the annual PlaceholderAPI update, whilst the last version should work fine with 1.19 this update has been built against the latest version to ensure expansions have access to the latest features. This version also changes how placeholders are parsed in terms of colour, read more below on how this may affect your plugin/expansion.


Changes

  • Removed colour parsing for placeholder parsing (#800)

PlaceholderAPI parsing colours was unintentionally causing issues in the case where unparsed strings with legacy formatting need to be returned. In some cases it also interfered with HEX colours. To ensure consistent results PlaceholderAPI no longer parses colours and instead passes this task onto the plugin/expansion to handle.

What does that mean for my expansion/plugin?
If your expansion/plugin relied on PlaceholderAPI parsing colours you will need to parse them yourself now. This is fairly easy to do with normal chat colours using the method ChatColor#translateAlternateColorCodes(char, String).

Additions
  • Add --null argument to parse command (#800)
The parse commands now provide a --null argument in addition to the current options of a player name or me.
The purpose of this option is to intentionally use a null player for parsing placeholders. This is very useful when an expansion doesn't require an online player to be present to work properly.

Example syntax:
/papi parse --null Text with a %placeholder_value% to parse
  • Log missing plugin for an expansion (#832)

PAPI will now log any missing plugins for a placeholder expansion in the console.

Code (Text):

[00:00:00 WARN]: [PlaceholderAPI] Cannot load expansion example-expansion due to a missing plugin: Example
 
Fixes
  • Fix PAPI lowercasing invalid placeholders (#814)
If an invalid placeholder was used, PlaceholderAPI returned it lowercased. This has been fixed now.

  • Fix PAPI possibly not unregistering expansions (#793)
It could happen that an expansion may not unregister properly if its identifier contains uppercase letters. This has been fixed by @Rothes

----

Full Changelog: https://github.com/PlaceholderAPI/PlaceholderAPI/compare/2.11.1...2.11.2
----------, Jul 3, 2022

2.11.1

Hey everyone,

This release brings a quick fix to a bug that was introduced in v2.11.0 that a limited number of users were facing when they had plugins that were using String#format in conjunction with PlaceholderAPI.

Also a note for developers, the deprecated methods that were scheduled for removal last release have been pushed back to v2.13.0. Please take this as a final reminder to update to the new methods. For the list of deprecated methods please click here.

Fixes
  • Fixed an issue with %s being edited to % (#772)

----------, Dec 27, 2021

2.11.0

Hey everyone!

Another day, another release of PlaceholderAPI. This one brings quite a few new features and bug fixes to the plugin.

Changes
1.18 support (#752)
By far the most important change. PlaceholderAPI now supports Spigot/PaperMC 1.18.
Remember that as of writing this, PaperMC 1.18 is not considered to be stable yet, so use it at your own risk.

Logging methods for PlaceholderExpansion (#677)
The PlaceholderExpansion class now has methods which allow you to log messages in the console.
Available methods are:

  • log(Level, String)
  • log(Level, String, Throwable)
  • info(String)
  • warning(String)
  • severe(String)
  • severe(String, Throwable)
You can use those to print log messages in the console, which can be useful for debug purposes or to warn about things such as wrong placeholders.
All messages sent through any of these methods will have your Expansion's name at the start.

Changes to some messages (#717)
Some messages in PlaceholderAPI have been updated and improved.
As an example, when expansions have updates available will an x placeholder hook(s) have an update available. message be added to the x placeholder hook(s) registered! message, which itself has been updated too.

ExpansionsLoadedEvent#getExpansions() (#717)
The ExpansionsLoadedEvent now has a getExpansions() method which returns an unmodifiable List of all registered PlaceholderExpansions.

onRequest and onPlaceholderRequest are now properly annotated (#749)
The onRequest(OfflinePlayer, String) and onPlaceholderRequest(Player, String) have been properly annotated as @Nullable since you can return null as a valid return value.

Updated Dependencies and Gradle 7.3.1 (#747, #752)
Dependencies used by PlaceholderAPI have been updated. Additionally has Gradle been updated to 7.3.1

Full Changelog
Please click the following link for a full comparison between the previous version and this one: 2.10.10...2.11.0

Thanks to everyone who contributed to this update, if you'd like to contribute to the project please check out our GitHub Repo.
----------, Dec 20, 2021

2.10.10

Hey everyone!

This release brings a lot of neat changes to PlaceholderAPI, most of which being quality of life changes for you as developer or server owner.

Additions
  • 1.17 Support (#658)
  • Added getBoolean(String, boolean) method to PlaceholderExpansion (#454)
  • Added ExpansionsLoadedEvent for when all PlaceholderExpansions have been loaded (#460)
  • PlaceholderAPI now generates with Javadoc jars when build on the Jenkins Server (#429, #512, #513)
  • Added Javadoc comments to a lot of fields, methods and similar (#443)
Fixes
  • Fixed and improved TimeUtil class (#423)
  • Fix /papi info <expansion> suggesting wrong expansion names (#473)
  • Fix issue with getting Player for /papi parse command (#529)
  • Fix PlaceholderAPI breaking when loading corrupted/invalid Expansions (#517, #530)
Other changes
  • Switched from JSONMessage to Kyori Adventure Library (#661)
  • This Repository now uses Discussions! If you have feedback, ideas or questions can you ask them there
  • We use GitHub's new Issue forms, an enhanced version of Issue templates which are currently in public beta. (#580)
  • Dropped support for 1.7, may still work, but we do not guarantee it.

Thanks to everyone who contributed to this update:
svenar-nl, andre601, xknat, darbyjack, stijnb1234, thienbao860, gianscode, steve4744, notmyfault, piggypiglet, lauriichan, rbluer, blitzoffline, weihao, harieo, granny, leonmangler, cj89898, elijahrus250, eggsy, srbedrock, roinujnosde, happyrogelio7, hempfest, kqliber, matahombres, loohp, hsgamer, lucko, vshnv, starmism, funny-cube

Please report issues via the GitHub page on via our Discord.
----------, Jul 10, 2021

2.10.9

  • Fixed issues with maven repo regarding Jetbrains annotations when using other IDE's
Like this update to pay respects
  • Updated deprecation methods in PlaceholderAPI class. Now normal methods of setPlaceholders will not nag you regardless if you use Player or OfflinePlayer.. This also resolves issues with plugins providing placeholders as both methods pre 2.10.7 are functional from PlaceholderHook. Use onRequest or onPlaceholderRequest.... Doesn't matter until we hit 3.0.0.
  • Fixed a few bugs that probably wont be noticed but if you really care about them you can follow the trail if you are on the hunt
https://github.com/PlaceholderAPI/PlaceholderAPI/commits/master

This update was mainly focused on people who actually hook into PlaceholderAPI so I hope this resolves any issues you may have with deprecated methods or stuff not working. I really don't want people using the dev repo as a way to release updates however they are a good way for everyone to test. Based on the feedback I felt this was the thing to do as we don't want to break things until PAPI3 drops.



----------, Aug 4, 2020

2.10.8

  • All deprecated methods that may have been removed in 2.10.7 and broke a ton of hooks to other plugins are restored with a set time of removal at 2.13.0. This should provide enough time for these hooks to update.
  • PlaceholderExpansion#register() is no longer deprecated
  • Registering placeholders must be done through PlaceholderExpansion#register(). Any plugins or expansions that register through PlaceholderAPI#registerPlaceholderHook() will fail gracefully, encouraging the end user to nag the developer to update.
  • maven repository artifactid is restored to lowercase as it has always been.
  • Command text has been reformatted a bit and also include missing help commands.
  • ChatColor is now parsed when placeholders are parsed again.
  • /papi dump will now provide some good debugging information to provide to HelpChat if you have issues.
There are quite a few other small changes that might not affect anyone but if you are interested you can check them out in the commit history.
----------, Aug 1, 2020

2.10.7

Developers : This update has the potential to break your hooks / current placeholder providers if you are using outdated methods that are no longer supported. All placeholders being registered must now be registered in the form of a PlaceholderExpansion whether provided as a standalone jar or included with your plugin. The PlaceholderHook class should no longer be used and is scheduled to be removed next update. You must now register / unregister placeholders through PlaceholderExpansion#register() / unregister() .

Our wiki will provide you with an example of updated API usage.


Community: This update could possibly break some things for you depending on the expansions you use for placeholders or the plugins you use that parse PlaceholderAPI placeholders. So far with the expansions and hooks we have tested, the issue should be minimal but there is no guarantee... If you find a bug with a certain expansion or plugin that sets placeholders, please reach out to the developer and ask them to update.

This update brings many improvements and new features to the plugin including, but not limited to:


  • API access simplifications
  • Placeholder parser performance improvements
  • Command system rewritten, some commands have changed, use /papi
  • Tab completions on everything
  • Support for 1.16

Updates to the permissions:

Code (Text):
  placeholderapi.*:
    description: "Ability to use all PAPI commands"
  placeholderapi.admin:
    description: "Ability to use all PAPI commands"
  placeholderapi.ecloud.*:
    description: "Ability to use all PAPI ecloud commands"
  placeholderapi.help:
    default: "op"
    description: "Allows you to view the list of PAPI commands"
  placeholderapi.info:
    default: "op"
    description: "Allows you to view expansion information"
  placeholderapi.list:
    default: "op"
    description: "Allows you to list active expansions"
  placeholderapi.ecloud:
    default: "op"
    description: "Allows you to access PAPI eCloud"
  placeholderapi.parse:
    default: "op"
    description: "Allows you to parse placeholders"
  placeholderapi.reload:
    default: "op"
    description: "Allows you to reload PAPI and its configuration"
  placeholderapi.version:
    default: "op"
    description: "Allows you to view the version of PAPI installed"
  placeholderapi.register:
    default: "op"
    description: "Allows you to register expansions"
  placeholderapi.unregister:
    default: "op"
    description: "Allows you to unregister expansions"
  placeholderapi.updatenotify:
    default: "op"
    description: "Notifies you when there is a PAPI update"
  placeholderapi.ecloud.info:
    default: "op"
    description: "Allows you to view cloud expansion information"
  placeholderapi.ecloud.list:
    default: "op"
    description: "Allows you to list eCloud expansions"
  placeholderapi.ecloud.clear:
    default: "op"
    description: "Allows you to clear the local eCloud expansion cache"
  placeholderapi.ecloud.toggle:
    default: "op"
    description: "Allows you to toggle/enable/disable the eCloud manager"
  placeholderapi.ecloud.status:
    default: "op"
    description: "Allows you to view the status of eCloud expansions"
  placeholderapi.ecloud.update:
    default: "op"
    description: "Allows you to update registered eCloud expansions"
  placeholderapi.ecloud.refresh:
    default: "op"
    description: "Allows you to refresh the local eCloud expansion cache"
  placeholderapi.ecloud.download:
    default: "op"
    description: "Allows you to download an expansion from the eCloud"
  placeholderapi.ecloud.placeholders:
    default: "op"
    description: "Allows you to view the placeholders of a eCloud expansion"

Updates to the API include:
Code (Text):
PlaceholderHook
  => PlaceholderExpansion

PlaceholderExpansion#onPlaceholderRequest(Player, String)
  => PlaceholderExpansion#onRequest(OfflinePlayer, String)

PlaceholderExpansion#getPlugin
  => PlaceholderExpansion#getRequiredPlugin

PlaceholderExpansion#getDescription
  => N/A (use the expansion cloud for this)

PlaceholderExpansion#getLink
  => N/A (use the expansion cloud for this)

PlaceholderAPI.setPlaceholders {Any version of this method}
  => PlaceholderAPI.setPlaceholders(OfflinePlayer, String)
  => PlaceholderAPI.setPlaceholders(OfflinePlayer, List<String>)

PlaceholderAPI.register {Any version of this method}
  => PlaceholderExpansion#register

PlaceholderAPI.unregister {Any version of this method}
  => PlaceholderExpansion#unregister

PlaceholderAPI.getPlaceholders
  => PlaceholderAPIPlugin.getInstance().getLocalExpansionManager().getIdentifiers() // identifiers
  => PlaceholderAPIPlugin.getInstance().getLocalExpansionManager().getExpansions()  // expansions
  => PlaceholderAPIPlugin.getInstance().getLocalExpansionManager().findExpansionByName(String)       // lookup by name
  => PlaceholderAPIPlugin.getInstance().getLocalExpansionManager().findExpansionByIdentifier(String) // lookup by identifier

You can view all of the changes we made for this update directly on GitHub


You can request help for issues either on GitHub or our Discord server

Have a good day! :)
----------, Jul 28, 2020

2.10.6
  • Added missing setPlaceholder methods
  • Fixed a bug where the player couldn't be parsed via placeholders on first join
  • Fixed the plugin throwing errors when an expansion couldn't be loaded. It will now just debug to the console that X expansion couldn't be loaded.
  • Fixed parsing placeholders on eCloud commands
You can check out all of the changes since 2.10.5 here:
https://github.com/PlaceholderAPI/PlaceholderAPI/commits/master
----------, May 3, 2020

2.10.5

It is strongly recommended PAPI users update to this version.

Forward all issues to @PiggyPiglet (jk)

This update provides a fix regarding eCloud connectivity which caused errors on startup for many lately.

Currently, only the latest version of expansions are available in game but this change was made to the eCloud backend. Rolling out version history will not affect you plugin side and we plan to do so here within the next day or so. If you want to download an older version of an expansion for the time being, you can directly from:
https://api.extendedclip.com/all/


Changes
#86 (Mar 26, 2020 12:05:31 AM)




#85 (Feb 3, 2020 1:19:33 PM)



#84 (Jan 6, 2020 2:37:58 PM)



#83 (Dec 21, 2019 2:56:18 PM)



#82 (Dec 10, 2019 6:52:39 PM)



#81 (Dec 10, 2019 6:19:27 PM)



----------, Mar 26, 2020

2.10.4

This update allows cancelling expansion registration via Bukkit events if for some reason you do not want to allow an expansion to be registered via code. A few other small things are included but its not a huge update. This event cancellation is necessary in some cases so a huge update for those cases....

Enjoy

#79 (Sep 19, 2019 2:26:58 PM)
  1. Bump version to 2.10.4 for release (commit: a1a1b1a) — Ryan McCarthy / githubweb
#78 (Sep 19, 2019 2:22:42 PM)
  1. Allow cancelling expansion registration (commit: 9871efb) — Ryan McCarthy / githubweb
  2. Allow cancelling expansion registration (commit: 51599c4) — Ryan McCarthy / githubweb
#77 (Aug 4, 2019 6:13:12 PM)
  1. Update plugin.yml (#142) (commit: 6c5cd0e) — Ryan McCarthy / githubweb
  2. Fixing broken link (commit: 024d9b2) — noreply / githubweb
  3. Fix case check in PlaceholderExpansion.isRegistered (#161) (commit: 6b9f22c) — Ryan McCarthy / githubweb
#76 (Jun 28, 2019 1:15:34 PM)
  1. Push to 1.14.3-SNAPSHOT. (commit: 6286451) — admin / githubweb
  2. Update README.md (commit: 454b1f1) — noreply / githubweb
  3. Updated to dev, fixed spigot version. (commit: 1672621) — admin / githubweb
  4. Added message saying to reload papi to enable downloaded expansion. (commit: d0d0c99) — admin / githubweb
  5. Changed some logic to suggest the right command. (commit: 763bb52) — admin / githubweb
----------, Sep 19, 2019

2.10.3

Fixed ordering with /papi ecloud list. Pages no longer start at 2 and every page after 1 should not start at 1.

Updated license headers to 2019 so we don't live in 2018 anymore.

Be sure to leave a review if your server has benefited from this resource. It would mean a lot!

Below are the latest changes:

#75 (Jun 21, 2019 12:53:48 PM)



----------, Jun 21, 2019

2.10.2

Hello everyone,

Welcome to Phase Two of removing EzPlaceholderHook from the plugin.

If you are a little confused, please refer to the update notes on the last update.

Phase Two consists of a few different things. First off, plugins using EzPlaceholderHook will no longer be able to register their placeholders (they've been aware that this change was coming for over a year now). Second, you will still continue to get a message in your console urging you to reach out to the developer of the plugin in order to have them update it. This is SUPER important because we don't want their plugin to stop working when we launch into phase three of the plan.

Regards,

The PlaceholderAPI Team

In other news, let's covers the other changes in this update
- Fixed an issue where players would sometimes be able to get on the server before the placeholders registered
- Placeholders now register one tick after the server has finished loading
- Cleaned up small parts of the code to increase some efficiency
- Prevented EzPlaceholderHook from having working placeholders

#72 (May 10, 2019 10:48:53 AM)
  1. We don't even need an api version. It breaks stuff.. (commit: 9377129) — Ryan McCarthy / githubweb
#71 (May 10, 2019 10:47:13 AM)
  1. Initial attempt at preventing EzPlaceholderHook from working. (commit: 62e282c) — admin / githubweb
  2. Cleaned up excess code in TimeUtils (commit: 111f546) — admin / githubweb
  3. Added documentation / explanation for the ServerLoadEvent (commit: 68fa793) — admin / githubweb
  4. Added myself as an author to the plugin. (commit: 5472be6) — admin / githubweb
  5. Changed to use authors instead of hardcoded. (commit: 00333f9) — admin / githubweb
  6. Bump version to 2.10.2 for release (commit: 9b667fe) — Ryan McCarthy / githubweb
  7. Set API version to 1.14 even though it doesnt matter to us (commit: 09db82a) — Ryan McCarthy / githubweb
  8. Remove clipsplaceholderapi since its no longer just clips placeholder (commit: c902485) — Ryan McCarthy / githubweb
  9. Fix numerical order of expansions in papi ecloud list (commit: f4409a6) — Ryan McCarthy / githubweb
#70 (May 8, 2019 4:08:09 PM)
  1. Changed placeholders to register 1 tick after server startup. (commit: 9a2fb89) — admin / githubweb
  2. Changed to use easier way. (commit: 5aaa972) — admin / githubweb
----------, May 10, 2019

Over the past few weeks, the PlaceholderAPI team has been discussing how we want to shape this plugin going down the road. Our long term goal is stability and accessibility. This means that we want the plugin to work as efficiently as we can while also letting developers work with it in whichever way we want.

That being said, we need to discuss some changes. Sixteen months ago, we deprecated one of the methods developers could be used to add placeholders, developers will know this method as EzPlaceholderHook.

We feel we have given them enough time now to update to our new system (also released 16 months ago) and we are in the works of fully removing that system. This update is step one of phasing out that system.

If a plugin is still using that old method, you will get a debug message in the console saying to contact the author. Please pay attention to this and do it so that your plugins will still support PlaceholderAPI.

In the next few weeks, we will release the next update which is phase two. Phase two consists of blocking those old methods from working in the plugin. You will still be able to use PlaceholderAPI like normal, but any placeholders using that old method to connect will no longer work.

Finally, we're happy to announce an awesome change in this update. We've been able to come up with a solution to an issue with some expansions not loading properly and people having issues. This update will now change how and when placeholders are registered in order to ensure you have no issues using them.

Keep your eyes on the lookout for some more exciting news coming soon.

Special thanks to @ItsMeGlare for all the help he's put in over the past week to work with me on this awesome.

If you have any questions, make sure to join the Discord! https://helpch.at/discord

#69 (May 7, 2019 2:20:07 PM)
  1. Someone forgot how to use lambdas properly (#111) (commit: 9b317c2) — Ryan McCarthy / githubweb
  2. set version for 2.10.1 release (commit: 82e92ce) — Ryan McCarthy / githubweb
#68 (May 6, 2019 10:06:20 AM)
  1. Print out console warnings for the plugins still using EzPlaceholderHook (commit: 927f942) — admin / githubweb
#67 (May 5, 2019 1:59:56 PM)
  1. This will not be around for much longer. Plugin authors need to update (commit: 75c3027) — Ryan McCarthy / githubweb
#66 (May 5, 2019 1:25:03 PM)
  1. Possible solution for placeholders that register externally before (commit: a2d408a) — Ryan McCarthy / githubweb
#65 (May 5, 2019 10:40:16 AM)
  1. Remove EZPlaceholderHook which has been deprecated for over a year. (commit: 6495a38) — Ryan McCarthy / githubweb
  2. Move ServerLoadEvent listener to its own class (commit: 3042e49) — Ryan McCarthy / githubweb
  3. Remove ServerLoadEvent listener (commit: 1e25f35) — Ryan McCarthy / githubweb
  4. Check if server supports ServerLoadEvent and if so register the (commit: a741f35) — Ryan McCarthy / githubweb
  5. Remove load option (commit: 5386b7c) — Ryan McCarthy / githubweb
#64 (May 4, 2019 8:19:01 PM)
  1. Remove useless "expansion cache" that I don't even know ever worked. (commit: c0f6cf2) — Ryan McCarthy / githubweb
  2. Remove clean method calls (commit: 41390d8) — Ryan McCarthy / githubweb
  3. Remove PluginEnableEvent listener. Not needed anymore. (commit: cee214c) — Ryan McCarthy / githubweb
#63 (May 4, 2019 7:57:48 PM)
  1. Update to 2.10.0-DEV builds (commit: 8f600ae) — Ryan McCarthy / githubweb
  2. Register expansions in the ServerLoadEvent which is called after the (commit: 16d0a4f) — Ryan McCarthy / githubweb
----------, May 7, 2019

2.10.0

Changes

#62 (May 4, 2019 12:20:45 AM)
  1. As per request, daddy has been removed. (commit: 8447395) — noreply / githubweb
  2. Sort expansions alphabetically without errors Fixes #102 (commit: b2a488c) — Ryan McCarthy / githubweb
  3. Remove unused imports (commit: 15b142e) — Ryan McCarthy / githubweb
  4. Added support for 1.14 NMS for expansions to hook into (commit: b943c6f) — admin / githubweb
  5. Update to 2.10.0 (commit: 2c15b4d) — Ryan McCarthy / githubweb
#61 (Apr 27, 2019 11:09:53 PM)
  1. Push to 1.14-R0.1-SNAPSHOT (commit: 0ad11cd) — admin / githubweb
#60 (Apr 13, 2019 4:37:50 PM)
  1. Create feature_request.md (commit: 0df9eeb) — noreply / githubweb
  2. Create change_request.md (commit: dd6d90d) — noreply / githubweb
  3. Create bug_report.md (commit: 84a8029) — noreply / githubweb
  4. Update change_request.md (commit: 1129f3d) — noreply / githubweb
  5. Update bug_report.md (commit: 71f5e11) — noreply / githubweb
  6. Update feature_request.md (commit: 4c127f3) — noreply / githubweb
  7. Update bug_report.md (commit: 4d570aa) — noreply / githubweb
  8. Updating links (commit: 8f1ba89) — noreply / githubweb
  9. Links can be made like that (commit: cef0a20) — noreply / githubweb
  10. "changes being made" sounds better imo (commit: 540a095) — noreply / githubweb
  11. Changed "being made" to "to be made" (commit: e53cad2) — noreply / githubweb
  12. Implementing #93 (#94) (commit: 29c6137) — Ryan McCarthy / githubweb
#59 (Dec 27, 2018 9:15:05 AM)
  1. Load at startup (commit: cb7fbb7) — noreply / githubweb
#57 (Oct 22, 2018 11:03:21 PM)
  1. Push to 1.13.2 (commit: ce5bb28) — admin / githubweb
#56 (Oct 20, 2018 5:27:34 PM)
  1. Changed the Discord Link (commit: 556faf4) — admin / githubweb
  2. Fixed a bug in /papi installed (commit: 90bc3c8) — admin / githubweb
  3. Refresh on download to fix the gold bug (commit: 639b796) — admin / githubweb
#55 (Oct 17, 2018 3:55:03 AM)
  1. This class was trash (commit: 80c6a6d) — ranald.taylor / githubweb
  2. Update to 2.9.2-DEV and add in more info when typing /papi (commit: 4af2a1c) — admin / githubweb
----------, May 4, 2019

2.9.2

This update adds support for any relevant minecraft version... At least any supported on Spigot.
Added ability to register or unregister individual expansions without reloading everything.
Added 1.13 NMS support
Added daddy
Changed /papi parse to require a player to target: /papi parse <player> <text>
Fixed quite a few small bugs...

You can see the entire changelog below:

Enjoy

Changes
#54 (Aug 27, 2018 12:08:30 AM)



#53 (Aug 27, 2018 12:05:59 AM)



#52 (Aug 26, 2018 11:59:16 PM)



#49 (Aug 10, 2018 11:34:14 PM)



#47 (Aug 6, 2018 10:46:39 AM)



#46 (Jul 16, 2018 4:06:55 AM)



#32 (Jun 29, 2018 5:29:13 PM)



#31 (Jun 16, 2018 8:05:44 PM)



#30 (Jun 14, 2018 3:21:39 PM)



Also: Happy birthday @ItsMeGlare

This update is dedicated to @Sxtanna
----------, Aug 27, 2018

2.9.1

Fixes issue where plugins requesting placeholders fail to hook with PlaceholderAPI due to missing methods.


https://www.spigotmc.org/resources/placeholderapi.6245/update?update=229457
----------, Jun 13, 2018

2.9.1
Fixes issue where plugins requesting placeholders fail to hook with PlacrholderAPI due to missing methods.

2.9.0


We now support parsing placeholders for OfflinePlayer

What does this mean for you?

For servers:
Once placeholder expansions/hooks/plugins start updating to support the new methods introduced in this update, you will essentially be able to show placeholder values for players that aren't online if the placeholder supports it!

For developers:
While this change does not break compatibility with existing placeholder expansions, hooks, or any plugin that already add placeholders (or uses the API to parse placeholders)...

It is recommended that you update your expansions / hooks to use the new method introduced if you want to provide/parse placeholders for players that aren't online.

I know that this feature might not be necessary for some hooks.... In that case, you can continue to use the current:
Code (Java):
@Override
public String onPlaceholderRequest (Player p, String params )
method to provide values for your placeholders.

If you would like to support OfflinePlayer with your placeholders, you simply change the method above to:
Code (Java):
@Override
public String onRequest (OfflinePlayer p, String params )
If you choose to support offlineplayer in your placeholders, it is your responsibility to ensure the player is online if you have placeholders that require the player be online.

Oh. by the way.....

If your plugin handles messages where placeholders are parsed through PlaceholderAPI, the:
Code (Java):
PlaceholderAPI. setPlaceholders (player, params ) ;
method now supports passing an OfflinePlayer to it.



If you find any bugs or have any issues, please submit them on github:
https://github.com/PlaceholderAPI/PlaceholderAPI/issues

Have a good day!




----------, Jun 13, 2018

2.8.7

Fixed: issue with PlaceholderAPI expansion cloud becoming inaccessible after /papi reload is executed.

Improved: Java 8 contributions and suggestions by @Sxtanna
Improved: Spigot update checker


Added: Actually check if unverified expansions should be included/excluded when fetching ecloud expansions

You can see the details here:
https://github.com/PlaceholderAPI/PlaceholderAPI/commits/master
----------, May 10, 2018

2.8.6

PlaceholderAPI is now using the Expansion cloud v2 web API which allows quite a bit more functionality such as viewing placeholders in game as well as expansion version history and ability to download a specific version of an expansion.

The command system has been refactored to not depend on a specific server implementation (bukkit or spigot) as we now use a nice JSON message API instead of Spigot TextComponent.

A bug has been patched related to placeholders that use the bracket pattern - "{placeholder}". If a plugin you use is parsing placeholders matched to the bracket placeholder pattern, it is highly recommended you update as you have most likely already noticed this issue when you updated to 2.8.5.

Ecloud commands now work with permission instead of checking if the CommandSender is OP. The permission to use ecloud commands is:
placeholderapi.ecloud


Ecloud commands have been updated:
[​IMG]
[​IMG]
[​IMG]
[​IMG]

Here is a full list of the changes since last version:

#13 (Apr 8, 2018 4:07:56 AM)

  1. Do not pass spigot boolean to command constructor (commit: 59539d5) — Ryan McCarthy / githubweb
  2. Add color utility method (commit: 134d18c) — Ryan McCarthy / githubweb
  3. Added jsonmessage dependency (commit: 906bf0a) — Ryan McCarthy / githubweb
  4. Format (commit: 92d30ea) — Ryan McCarthy / githubweb
  5. Supports ECloud API v2, added Gson parsing, expansion version history (commit: 7011a8d) — Ryan McCarthy / githubweb
  6. Commands no longer Bukkit / Spigot dependent. (commit: 06b1599) — Ryan McCarthy / githubweb
#12 (Mar 27, 2018 10:46:51 AM)
  1. Check for permissions instead of isOp() (#6) (commit: a5200fd) — Ryan McCarthy / githubweb
#11 (Mar 26, 2018 5:33:08 PM)
  1. Escape placeholder pattern. fixes #4 (commit: 2856889) — Ryan McCarthy / githubweb
----------, Apr 8, 2018

2.8.5

This update has quite a few changes and improvements. Nothing that anyone will notice in terms of functionality.

The configuration system has been reworked internally.

There have been a few additions to the API that will solve issues with PlaceholderExpansions being registered from the dependency plugin and not provided by the ecloud. Currently when the /papi reload command is executed, these expansions are unloaded and not registered again. These expansions can now add a new method to the PlaceholderExpansion:
[​IMG]


This is the first release since I have pushed the project to GitHub. Quite a few people have contributed. Thanks to all who have.

You can see the full list of changes below:
http://ci.extendedclip.com/job/PlaceholderAPI/changes
----------, Mar 25, 2018

2.8.4

This is a fix for the sudden spam of IllegalArgumentException errors being reported on my Discord, in reviews, and in the discussion thread when using /papi ecloud list commands.....
----------, Mar 3, 2018

2.8.3

  • Fixed update checker
  • Updated to bStats 1.2
  • Removed auto download expansions function. Use /papi ecloud download <expansion> for expansions you want to install.
  • Fixed expansion cloud being refreshed every time the plugin is reloaded. Use /papi ecloud refresh to fetch the latest expansion list when you need to.
  • Minor text fixes
So close to 100k downloads! This may be the update that hits the milestone! Thank you to everyone who uses PlaceholderAPI!
----------, Feb 15, 2018

2.8.2

Internal changes related to Configurable expansions:
Changed the order in which expansions that implement Configurable have configuration options loaded. Previously the configuration section was only populated if the expansion registered successfully. Now the configuration section will be populated before the expansion canRegister method is called. This way if an expansion needs to verify something like checking if a mysql connection was successful based on the configuration criteria and not register the expansion if the connection was not made, it can be done.

These changes will not break current expansions


------------------------------------------------------------------------------------------------
This update also contains minor internal changes in preparation for the expansion cloud API v2 update that is expected to be released publicly soon.
[​IMG]

What will be included in the expansion cloud update when it is released?

Here are a few things I can share so far:

  • Expansion version history - Older versions of expansions will be available and can be selected + downloaded from my site/in game. This will solve issues for servers that want to stay on outdated plugins/server versions but still want to use placeholders even when an expansion has updated to no longer support that older plugin/server version. In the current version of the API, older versions of expansions are forgotten when an update occurs.
  • Placeholders will now be shown in game - If you ever forget what a placeholder is, you can view all placeholders for an expansion or all placeholders that you have enabled with a simple command.
  • Ability for anyone to register for an account to the expansion cloud - Anyone will be able to register and upload expansions to the expansion cloud when API v2 is released. By default, cloud users will be in an "unverified" group so any expansions they upload will be considered "untrusted". A server must enable viewing/downloading unverified expansions in the placeholderapi config. There will be a warning prompted that the expansion you are attempting to view/download is not verified and to be used at your own risk. Myself and a small team of people will be reviewing and moderating unverified expansions periodically. Expansion developers will be able to apply for "verified" status after upload of at least 2 expansions.
----------, Jul 16, 2017

2.8.1

If you missed update 2.8.0 be sure to read the update notes in the updates tab!

Fixed issue where expansion would attempt to be downloaded multiple times if a download is currently in progress and an unregistered placeholder is used.
(would attempt to download as many times as the placeholder was used)

Removed debug messages from console for relational placeholders.
----------, Jun 12, 2017

2.8.0
[​IMG]

Added the ability for expansions to provide relational placeholders. These types of placeholders can show information specific to the relation between 2 players. A good example would be the relation between 2 factions:
[​IMG]
PlaceholderAPI does not automatically parse relational placeholders on its own when normal placeholders are parsed!. Plugins which would want to utilize these placeholders will need to update and call the new method to parse relational placeholders:
Code (Java):
PlaceholderAPI. setRelationalPlaceholders (Player one, Player two, String message ) ;
End users will need to specify the relational placeholders with a specific format:
Code (Text):
%rel_<placeholder>%
Note, only placeholders created specifically for relation based values will work. %rel_player_name% wouldn't work as that is a normal placeholder but %rel_factions_relation_color% would work as it is a valid relational placeholder.

For developers to add this functionality in expansions. Here is a brief example of an expansion suited for relational placeholders:
Code (Java):
public class RelationalExpansion extends PlaceholderExpansion implements Relational {

    @Override
    public boolean canRegister ( ) {
        return true ;
    }

    @Override
    public String getAuthor ( ) {
        return "clip" ;
    }

    @Override
    public String getIdentifier ( ) {
        return "player" ;
    }

    @Override
    public String getPlugin ( ) {
        return null ;
    }

    @Override
    public String getVersion ( ) {
        return "1.0.0" ;
    }

    @Override
    public String onPlaceholderRequest (Player p, String s ) {
        // %player_name%
        if (s. equals ( "name" ) ) {
            return p. getName ( ) ;
        }
        return null ;
    }

    @Override
    public String onPlaceholderRequest (Player one, Player two, String identifier ) {
        // %rel_player_distance%
        if (identifier. equals ( "distance" ) ) {
            return String. valueOf (one. getLocation ( ). distance (two. getLocation ( ) ) ) ;
        }
        return null ;
    }
}
Placeholder expansions will now be automatically loaded when /papi ecloud download <expansion> is executed. No more need to use /papi reload afterwards.

Added a config option to automatically download and register missing expansions when a placeholder is used that is not currently registered. if the expansion exists on the cloud.
[​IMG]
This will be set to true by default.

Added 1.12 to the NMSVersion enum.
----------, Jun 11, 2017

2.7.1

fixes issue with future potential plugin incompatibility from changes made in 2.7.0.

Removes injector system completely.

There are a ton of plugins available which handle showing placeholder values where you want to have them shown. Practically anywhere text related. I feel at this point, the injectors are hardly used and shouldn't be needed due to how many plugins offer support for PlaceholderAPI.

Adds function which gives expansions the ability to implement Listener. This will allow expansion developers ability to create placeholders or gather data for placeholders by listening to events
----------, Mar 21, 2017

2.7.0

This version has tons of refactoring to NMS related functions in PlaceholderAPI for expansions.
With this update PlaceholderAPI no longer needs to be updated every NMS version update to allow expansions the ability to add compatibility with the latest and greatest version of Minecraft.

PlaceholderAPI will now pass expansions which are VersionSpecific the version string of the server and let the expansion tell PlaceholderAPI if the expansion is compatible. Here is an example:

Code (Java):
public class ExampleExpansion extends PlaceholderExpansion implements VersionSpecific {

    @Override
    public boolean isCompatibleWith (Version version ) {
        /*
         * Will return that this expansion is compatible with the server
         * if the server is NMS version v1_11_R1 and the server is running Spigot.
         */

        return version. getVersion ( ). equals ( "v1_11_R1" ) && version. isSpigot ( ) ;
    }

    @Override
    public String getAuthor ( ) {
        return "author" ;
    }

    @Override
    public String getIdentifier ( ) {
        return "identifier" ;
    }

    @Override
    public String getPlugin ( ) {
        return null ;
    }


    @Override
    public String getVersion ( ) {
        return "1.0.0" ;
    }

    @Override
    public String onPlaceholderRequest (Player player, String identifier ) {
        return "value" ;
    }
}
Thelse changes to the version checking system will break any expansions that are currently using it. 99% of expansions are not affected. The only 2 expansions which required an update that I maintain myself are the Player and Statistics expansions. Those updates are already available through the expansion cloud.

Added some error catching when loading expansions and injectors.
If an expansion or injector throws an exceptjon while being loaded/enabled, PlaceholderAPI should still function correctly and the expansion/injector that has errors should not be loaded from now on.

Added bStats to replace MCStats.
https://bstats.org/plugin/bukkit/PlaceholderAPI
----------, Mar 20, 2017

2.6.0

Added NMSVersion support for Minecraft 1.11
----------, Nov 17, 2016

2.5.1

Updated the NMSVersion enum (utilized by expansions that handle NMS) to support Minecraft 1.10 (v1.10R1)
----------, Jun 9, 2016

2.5.0

This update contains some refactoring to the reflection and class loading methods which are used to load expansions and injectors from independent jar files.

I also cleaned up / refactored a few other things and while you won't notice any of these internal changes in this update, it makes things easier and cleaner for me in the future :)

This version has also been deployed to the maven repo for anyone who depends on PlaceholderAPI. No API changes have been made so you can update if you choose to. It isn't necessary though :)
----------, May 25, 2016

2.4.1

Updated NMSVersion enum to support Spigot 1.9.4 and future NMS versions.

This update is required if you plan on downloading any expansions via the expansion cloud which might have version specific placeholder classes.

Affected expansions which will require you to update PlaceholderAPI for them to work on 1.9.4:
Ping
Statistics

These expansion updates for 1.9.4 have already been pushed to the expansion cloud. Make sure you update PlaceholderAPI before downloading as they will not register on PlaceholderAPI 2.4.0 or lower due to the NMS version for 1.9.4 being unknown in those earlier versions!
----------, May 11, 2016

2.4.0

Fixed issues with bracket placeholders - {<placeholder>} not parsing correctly.

Removed "Player" and "Server" placeholders from the PlaceholderAPI.jar
internally.

These expansions are available via the expansion cloud in game.
[​IMG]

Internal expansions such as player and server were removed so there are no longer any expansions or "placeholders" being managed by the PlaceholderAPI plugin internally.

This was done so if there is ever an issue with any placeholders, a complete PlaceholderAPI update is not required. I can simply update the specific expansion to fix / change placeholders as needed.
----------, Apr 9, 2016

2.3.9

This update contains a few "micro optimizations" that probably aren't too necessary but any improvement helps right?


Added %server_uptime% placeholder:
[​IMG]
----------, Apr 8, 2016

2.3.8

This update should add support for servers running Java 7.
----------, Mar 28, 2016

2.3.7

[​IMG]
Expansions will always be sorted by when it was last updated. Most recent updated expansions would be on page 1, older expansions on page 2, etc, etc.
----------, Mar 25, 2016

2.3.6
"Injector update"

Enabled injector cloud and injector module system:

[​IMG]
You now have the ability to obtain placeholder injectors for PlaceholderAPI right in game.
[​IMG]

What is an injector?
Injectors allow you to use placeholders in certain plugins / vanilla functions that usually wouldnt support PlaceholderAPI directly.

Example: If you download/enable the chat injector, you can use PlaceholderAPI placeholders in any message a player can see in the chat window. This means a specific plugin does not need to add direct support to PlaceholderAPI in order for you to use placeholders in any plugin language file, any chat formatting plugin, or any other chat based message that a player can see.
Here I use some placeholders in the spigot.yml messages:
[​IMG]
[​IMG]

Some injectors might add config options, they will be available in the PlaceholderAPI config.yml file under "injectors"
[​IMG]

Most injectors usually handle allowing these placeholders by intercepting and modifying packets sent to the player. Most will require you have ProtocolLib installed to use!

Update to the cloud backend to allow more information:
[​IMG]

Refactored commands:
[​IMG]
You must be op to use any of the cloud functions!
----------, Mar 24, 2016

2.3.5

Finished the injector API. This system is similar to the expansion API in terms of how you use it. A server owner would simply drop the injector he / she wants to use in the PlaceholderAPI/injectors/ folder.

These injector modules may have configuration options that are added to the PlaceholderAPI.config.yml file.like so:
[​IMG]
After first load of an injector with config options, simply edit the options to the values you want, then use /papi reload to update your injector settings.

Here is an example of how the API works:

Chat Injector source code
----------, Mar 20, 2016

2.3.4
[​IMG] Added new modular "injector" sytem which will allow myself and others to create injector add ons which will allow you to use placeholders in various plugins. To use this system, you will just drag and drop the injectors you want enabled inside of the PlaceholderAPI/injectors/ folder.

This system is completely optional and if you do not want to even allow the plugin to initialize the Injector sytem at all, you just need to set injector_enabled: false in the config file.

Injector settings will refresh when /papi reload is used. You can enable / disable the entire system on the fly.

Injectors will be available soon.

For developers:
This injector API is not finalized yet and there may be changes to the current implementation. I will release documentation on how this API works when the implementation is set. For right now I am still playing around with it.​
----------, Mar 19, 2016

2.3.3
  • Update the cloud when /papi reload is executed (if the cloud is enabled) to sync expansion update checking with your current installed expansions.
[​IMG]
  • Small adjustments with formatting of messages.
  • Added a few internal methods in preparation for the ability to disable and delete specific expansions. (coming in a future version)
----------, Mar 19, 2016

2.3.2


  • Added update checking system to check if an expansion has an update on the cloud, or if you have an expansion installed. It is kind of nice :)
[​IMG]
  • Added check to ensure you don't download expansions you already have which are up to date.
  • Fixed a few small bugs where debug messages would spam the console if something went wrong.
  • Refactored ssme commands a bit more to try to find something that looks pleasing.
----------, Mar 17, 2016

2.3.1

This update contains many bugfixes and it is recommended to update if you updated to 2.3.0 already.
  • Fixed permission check failing for /papi cloud commands. Only ops have access to interact with the cloud.
  • Added cloud command compatibility for bukkit as cloud commands utilized the Spigot chat API in 2.3.0. If your server is running Bukkit, your commands won't be as sexy but they will work. :)
  • Made sure to clean up the cloud cache on shutdown.
  • Added config option to completely disable the cloud system.
  • Added 2 new commands to enable or disable the cloud system completely at any time. This will also persist through restarts.
  • Minor formatting fixes with command output.
  • Moved some internal classes around for organization purposes. This should not affect any plugins that utilize the expansion or placeholder API.
Not even 24 hours and the cloud is already growing :)
[​IMG]
[​IMG]
[​IMG]
----------, Mar 16, 2016

2.3.0
The "cloud" update.

Official PlaceholderAPI expansions are now available for download in game. This system is only available for op players. Expansions are never downloaded unless the download command is ran. These expansions are added to your /PlaceholderAPI/expansions folder automatically. You will need to use /papi reload to enable them!

Only a select few people currently have accounts to upload expansions to the cloud. @Gianluca , @vk2gpz, @clip. More people who have a good reputation and are interested in contributing will be added in the future by request. The web side of this system features a custom management ui which allows authors to only manage expansions they have uploaded. I of course have access to remove any at any given time. This system will allow contributors who are trustworthy to provide you new placeholders or updates for placeholders in real time.

Here are the commands:
[​IMG]
/papi cloud list all
[​IMG]
/papi cloud info vault
[​IMG]
/papi download sound
[​IMG]


I also fixed quite a few small issues and also converted the project to maven.
The project was not originally a maven project because of how many dependencies it had, the pom would have been huge and a mess to manage.

I know some expansions aren't working correctly for some people and they will be updated tomorrow after work.

More expansions will be released to the cloud soon :)

Be sure to leave a like and review if you enjoy this update!
----------, Mar 15, 2016

2.2.0

This is yet another HUGE update for my placeholder registration system. The plugin is now 100+ classes smaller and has 0 extra dependencies.

This new system is still a work in progress but all testing that has been done seems to work perfectly.


So what is the new system? It is called "PlaceholderExpansions".
[​IMG]
This new "expansion" system allows you to choose what placeholders you want to use by simply dropping the jar file associated with a specific placeholder inside of your /plugins/placeholderapi/expansions/ folder.

This system is very easy to use for developers and also allows me the ability to update a single hook if a hook ever breaks from it's dependency updating and/or changing its API. This expansion system is also very powerful as far as what you can do with it. Only expansions that you want to use are added so this means less disk space used from a huge plugin filled with tons and tons of classes that are never used / initialized.

This update does not break any plugins that add or obtain placeholders through the api. This new system only replaces the internal plugin placeholder hook system.

A guide will be up soon on how to use this new API to create your own expansions, this update will not break any existing hooks from external plugins.

This version also temporarily removes the "injector" function as I am currently writing an update which will make that completely optional / modular as well :)

Do not update to your live server and expect all placeholders to be available right away! I am working hard on converting all of the old hooks to "expansions" but this does take time as I have to do quite a bit of testing with each expansion to ensure everything works as intended. Hundreds of expansions are expected to be released over the next few weeks.

This version will require a config.yml reset

If you are interested in checking out what is new, I have released the javadocs for this update here

A guide and example expansion will be posted on the wiki soon.

Almost forgot.... Much thanks to @vk2gpz as he helped with the expansion concept and also helped me with a few internals that are extremely important to expansions.
----------, Mar 12, 2016

2.1.0

Added 1.9 placeholders to registration list and tested to ensure the 1.9 nms based placeholders work correctly. This fixes issues with statistic placeholders and ping placeholder not working when ran on 1.9.

Added additional check for injector to determine what nms version the server is running. Disabled HolographicDisplays injector on 1.9 until ProtocolLib and HolographicDisplays have a stable 1.9 release as the latest HolographicDisplays version has ProtocolLib support temporarily disabled
[​IMG]
----------, Mar 3, 2016

2.0.9

Enabled 1.9 support for NMS based placeholders.

Allow Injector to enable on 1.9,
(make sure to use ProtocolLib that supports 1.9)

Updated EnjinMinecraftPlugin dependency to latest available version.available here on Spigot.

Added easy configuration section management system in case an internal placeholder hook requires configurable options in the config.yml

Quite a few new placeholders

Updated / improved Pinger placeholders.

Tons of other minor adjustments.

Added new command - /papi parse <message>

Updated permissions:
Code (YAML):

permissions
:
    placeholderapi.*
:
        description
: ability to use all commands
        children
:
            placeholderapi.admin
: true
    placeholderapi.admin
:
        description
: ability to use all commands
        children
:
            placeholderapi.list
: true
            placeholderapi.reload
: true
            placeholderapi.parse
: true
            placeholderapi.injector.chat.bypass
: true
            placeholderapi.injector.signs.bypass
: true
            placeholderapi.injector.anvil.bypass
: true
    placeholderapi.list
:
        description
: ability to use the list command
        default
: op
    placeholderapi.reload
:
        description
: ability to use the reload command
        default
: op
    placeholderapi.parse
:
        description
: ability to use parse command
        default
: op
    placeholderapi.injector.chat.bypass
:
        description
: ability to use placeholders in chat messages
        default
: op
    placeholderapi.injector.signs.bypass
:
        description
: ability to use placeholders in signs
        default
: op
    placeholderapi.injector.anvil.bypass
:
        description
: ability to use placeholders in anvils
        default
: op
----------, Mar 2, 2016

2.0.8

I was doing some cleaning up in the main class of PlaceholderAPI and forgot to call the method which loads the settings from the config file such as the default customizable date format, boolean true/false Strings. This caused a NPE to be thrown for any placeholders which depend on those customizable options. This has been fixed and I have also added a fail safe to prevent this from ever happening again. Sorry for any errors this may have caused you.
----------, Feb 27, 2016

2.0.7

Improved regex pattern for placeholder matching. This new regex pattern should be much more efficient and it also has no limit to what characters can be used in placeholder names and identifiers.

Improved internal placeholder hook registration to remove the need for any dependencies to be listed in the plugin.yml. Any hooks that are enabled in the config file and not registered when PlaceholderAPI performs its internal placeholder hook registration method will be registered when the target plugin is enabled on the server. This should improve compatibility with plugins that hook into PlaceholderAPI.

Code (Text):
[19:21:17] [Server thread/INFO]: [PlaceholderAPI] Enabling PlaceholderAPI v2.0.7
[19:21:17] [Server thread/INFO]: [PlaceholderAPI] This server is running Spigot :)
[19:21:17] [Server thread/INFO]: [PlaceholderAPI] Your server is running Spigot NMS version: v1_8_R3
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Internal placeholder registration initializing...
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered bungeecord placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Started task for bungeecord placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered invcheck placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Javascript string placeholder %javascript_myname% has been loaded!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered javascript placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered player placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered nmsplayer placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered server placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered statistic placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered pinger placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Started task for pinger placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered date placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered globalsound placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered playersound placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered memory placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered ChatReaction placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered DeluxeTags placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered Essentials placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered EZBlocks placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered EZRanksPro placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered GAListener placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered MVdWPlaceholderAPI placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered Vault placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered Vault placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Successfully registered VoteParty placeholders!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Any remaining hooks that are enabled in the config and have not been registered will load when the dependency is enabled on your server.!
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Intercepting chat packets for placeholders
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Intercepting inventory packets for placeholders
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Intercepting title packets for placeholders
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Intercepting tab header and footer packets for placeholders
[19:21:18] [Server thread/INFO]: [PlaceholderAPI] Intercepting sign packets for placeholders
[19:21:18] [Server thread/INFO]: [Autorank] Enabling Autorank v3.7.2
[19:21:18] [Server thread/INFO]: [Autorank] Autorank 3.7.2 has been enabled!
[19:21:18] [Server thread/INFO]: [MineCrates] Enabling MineCrates v2.4
[19:21:18] [Server thread/INFO]: [MineCrates] area_handler hook successfully set to: 'PrisonMines'
[19:21:19] [Server thread/INFO]: [MineCrates] Loaded reward list: vip with 1 rewards.
[19:21:19] [Server thread/INFO]: [MineCrates] 1 MineCrate areas loaded...
[19:21:19] [Server thread/INFO]: [PlaceholderAPI] Successfully registered MineCrates placeholders!
[19:21:19] [Server thread/INFO]: [DeluxeJoin] Succesfully hooked into PlaceholderAPI for placeholders!
[19:21:19] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it
[19:21:19] [Server thread/INFO]: Done (7.221s)! For help, type "help" or "?"
----------, Feb 27, 2016

2.0.6

Added a new abstract class which makes adding placeholders from external plugins super EZ. A guide on how to add placeholders can be found here:

https://www.spigotmc.org/wiki/hooking-into-placeholderapi/

Added PointsAPI placeholder to obtain a players points:
Code (Text):
%pointsapi_points%
----------, Feb 25, 2016

2.0.5
Be sure to leave a rating and like!

Internal hook improvements. You will not notice any changes but quite a few things are different with the internal hook registration methods which should make my life even more easier when adding new placeholder hooks in the future.

Added Spigot update checking system. This can be disabled but it is recommended to keep enabled. Update checking is only done on startup and is also ran async. This should not affect performance or have any issues with causing your server to hang if there is ever a problem when checking for an update. If an update is found, a join listener is registered and Ops are notified of the new version on join.

I have also pushed this update to the repo for my maven friends who depend on P-API
[​IMG]
Code (XML):
<repository>
  <id>placeholderapi </id>
  <url>http://repo.extendedclip.com/content/repositories/placeholderapi/ </url>
</repository>
<dependency>
  <groupId>me.clip </groupId>
  <artifactId>placeholderapi </artifactId>
  <version>2.0.5 </version>
</dependency>
I would also like to take the time to say thank you to everyone who uses this resource!
[​IMG]
PlaceholderAPI has been enabled on server startup over 1 million times!!!
----------, Feb 23, 2016

2.0.4

Improved: internals which determine if a placeholder hook was registered by PlaceholderAPI or an external plugin. This caused a few methods to be deprecated as they are no longer needed.
Code (Java):
deprecated methods :

PlaceholderAPI. registerPlaceholderHook ( String, PlaceholderHook, boolean ) ;

PlaceholderAPI. registerPlaceholderHook (Plugin, PlaceholderHook, boolean ) ;
Fixed: nmsplayer placeholders for specific versions as those hooks had incorrect imports.
----------, Feb 21, 2016

2.0.3

Improved placeholder hooks that contain a cache for placeholder values. Now players who log out are automatically cleared from the cache

Fixed
McMMO & PlayerPoints placeholderHooks throwing exceptions when initialized, other miscellaneous bugfixes.

Added the following placeholders:

Memory

Code (Text):
Memory placeholders
%memory_used%
%memory_free%
%memory_total%
%memory_max%

Sound

Code (Text):
Player sound placeholders
Play a sound to the player the placeholder values are being parsed for
%playersound_<sound>-<volume>-<pitch>%
%playersound_ORB_PICKUP-1-2%

Global sound placeholders
Play a sound to all players on the server when this placeholder is parsed
%globalsound_<sound>-<volume>-<pitch>%
%globalsound_ORB_PICKUP-1-2%

Sound names can be found here:
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Sound.html

SellAll

Code (Text):
%sellall_multiplier%
%sellall_multitime%

MySQLTokens

Code (Text):
%mysqltokens_tokens%
TokenManager
This plugin does not cache results and performs mysql lookups to obtain the player token balance every time the getTokens method is called. Because this could affect performance I have implemented a cache which obtains balance for every player who has requested a value for this placeholder every 30 seconds. This fetch task is async and should make obtaining the token balance pretty efficient although the balance could not be accurate up to 30 seconds.
Code (Text):
%tokenmanager_tokens%
----------, Feb 20, 2016

2.0.2
Leave a rating and like if you <3 PlaceholderAPI :)

Improved: Tons of internal refactoring to keep things clean when a plugin hook requires a repeating task, or a cache, and a few other things.

Fixed: pinger placeholders will no longer spam console on every ping, also fixed the "online"/"offline" bug.

Added: %date_<date format>% placeholders
[​IMG]
These placeholders allow you to specify the format you want to use to get the current time / date / etc. These require you use valid date and time patterns. Once a valid pattern is used in a placeholder, it is cached for faster use later. Valid patterns can be found here:
http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

Added: Placeholder injector system directly inside of PlaceholderAPI.
This function does require ProtocolLib and optionally HolographicDisplays if you want to use placeholders in holograms. This system is completely optional and is only enabled / disabled on server startup. Any changes made to the "injector" section of the config will not refresh using the plugin reload command.

If you are currently using PlaceholderInjector, you can delete it from your plugins folder.

New config:
Code (YAML):
# PlaceholderAPI version 2.0.2
# Created by extended_clip
#
# Placeholder hooks:
#
# To enable placeholders of a specific type, you MUST have the hook set to true
# in the placeholder_hooks section of this config.
# Hooks are refreshed with /placeholderapi reload
#
# In order to use a placeholder from a specific plugin, you must use the hook identifier
# specified in this config followed by the placeholder value identifier:
# %<hook identifier>_<value identifier>%
#
#
# Injector information:
#
# REQUIREMENT: (ProtocolLib)
#
# The injector function allows you to use placeholders in many plugins / functions
# without the need for the plugin you want to use placeholders in to support / hook into
# PlaceholderAPI.
# All injectors are optional and can be enabled / disabled as you wish.
# NOTE: injector only loads on startup and a full restart is required to enable / disable specific
# injector functions.
#
# Allow placeholders in any chat window message from any plugin
# If you want to use placeholders in your essentials chat formatting
# you must use {<placeholder>} instead of %<placeholder>%
# injector:
#   chat:
#     enabled: true/false
#
# Allow placeholders in any ItemStack name, lore, or inventory title
# injector:
#   inventory:
#     enabled: true/false
#
# Allow placeholders in any title or subtitle from any plugin
# injector:
#   title:
#     enabled: true/false
#
# Allow placeholders in the tab list header and footer
# injector:
#   tab:
#     enabled: true/false
#
# Allow placeholders in signs:
# injector:
#   signs:
#     enabled: true/false
#     update_interval: <time in seconds to update sign placeholders, 0 to disable>
#
# Allow placeholders in HolographicDisplays holograms
# injector:
#   holographicdisplays:
#     enabled: true/false
#     update_interval: <time in seconds to update holo placeholders>
#
#
# To add placeholders in chat messages, you need the permission node:
# placeholderapi.injector.chat.bypass
#
# To add placeholders in sign lines, you need the permission node:
# placeholderapi.injector.signs.bypass
#
# To add placeholders to items in anvils, you need the permission node:
# placeholderapi.injector.anvil.bypass

boolean
:
  'true'
: ' yes'
  'false'
: ' no'
date_format
: MM/dd/yy HH:mm:ss
placeholder_hooks
:
  bungeecord
: false
  redisbungee
: false
  invcheck
: false
  javascript
: true
  player
: true
  nmsplayer
: false
  server
: true
  statistic
: true
  pinger
: true
  date
: true
  acidisland
: false
  askyblock
: false
  autorank
: true
  autosell
: false
  chatcolor
: false
  chatreaction
: false
  checknamehistory
: false
  deluxetags
: false
  enjin
: false
  essentials
: false
  ezblocks
: false
  ezprestige
: false
  ezrankslite
: false
  ezrankspro
: false
  factions
: false
  factionsuuid
: false
  galistener
: false
  gangsplus
: false
  heroes
: false
  islandworld
: false
  jobs
: false
  killstats
: false
  leaderheads
: false
  lwc
: false
  marriagemaster
: false
  mcinfected
: false
  mcinfected-ranks
: false
  mcmmo
: false
  minecrates
: false
  mvdw
: false
  nicknamer
: false
  nicky
: false
  ontime
: false
  playerpoints
: false
  plotsquared
: false
  prisongangs
: false
  pvpstats
: false
  quicksell
: false
  royalcommands
: false
  simpleclans
: false
  simplecoinsapi
: false
  simpleprefix
: false
  simplesuffix
: false
  skillapi
: false
  skywarsreloaded
: false
  sqlperms
: false
  sqltokens
: false
  sttitles
: false
  superbvote
: false
  tokenenchant
: false
  towny
: false
  ultimatevotes
: false
  uskyblock
: false
  vaulteco
: true
  vault
: true
  voteparty
: false
  voteroulette
: false
  wickedskywars
: false
bungeecord
:
  check_interval
: 60
pinger
:
  check_interval
: 10
  online
: '&aOnline'
  offline
: '&cOffline'
injector
:
  enabled
: true
  chat
:
    enabled
: true
  inventory
:
    enabled
: true
  title
:
    enabled
: true
  tab
:
    enabled
: true
  signs
:
    enabled
: true
    update_interval
: 30
  holographicdisplays
:
    enabled
: true
    update_interval
: 30
 
----------, Feb 19, 2016

2.0.1
Be sure to leave a nice review if you <3 PlaceholderAPI :)


Fixed: EnjinMinecraftPlugin placeholders throwing errors on load due to null plugin.

Improved: NMS version specific hooks in preparation for 1.9

Improved: internal placeholder hook system so placeholders are always loaded if enabled and the hook plugin is running on the server, regardless if the hooked plugin is loaded before or after PlaceholderAPI. This removed the need for me to add "softdepend: <plugin>" in the plugin.yml and I am also able to hook into every plugin for placeholders that may depend on PlaceholderAPI.

Added: some placeholders that everyone has been asking for...

Code (Text):
Pinger placeholders
%pinger_isonline_testplugins.com:25565%
%pinger_players_<address:port>%
%pinger_max_<address:port>%
%pinger_motd_<address:port>%
New configuration options for the above placeholders:
Code (YAML):
pinger:
  check_interval
: 60 # seconds between ping updates
  online
: '&aOnline' # what to display if server is successful
  offline
: '&cOffline' # what to display if ping is unsuccessful
Code (Text):
NMS Player placeholders
%nmsplayer_ping%
Code (Text):
stTitles
%sttitles_name%
%sttitles_id%
%sttitles_display%
%sttitles_content%
Code (Text):
SuperbVote
%superbvote_votes%
----------, Feb 18, 2016

2.0.0 - BETA

This is considered a "beta" build. Use at your own risk!
I don't think anything bad should happen as I have tested this update myself quite a bit and haven't found any issues.

Major internal changes to the way internal placeholder hooks are handled. This new system will allow me more flexibility and ease when it comes to adding new placeholder hooks to external plugins from within PlaceholderAPI.

There should be no changes / breakages to any plugins that utilize the PlaceholderAPI "api" lol.

Improved performance within the setPlaceholders API methods.

Refactored tons of code internally to make PlaceholderAPI run more efficient than before!

The configuration file has now changed a bit. There is no longer a "hooks" section as it has been renamed to "placeholder_hooks".

Every key in this section is the identifier for the placeholder hook you enable:
Code (YAML):
# PlaceholderAPI version 2.0.0
# Created by extended_clip

boolean
:
  'true'
: ' yes'
  'false'
: ' no'
date_format
: MM/dd/yy HH:mm:ss
placeholder_hooks
:
  bungeecord
: false
  redisbungee
: false
  invcheck
: false
  javascript
: true
  player
: true
  server
: true
  statistic
: true
  acidisland
: false
  askyblock
: false
  autorank
: false
  autosell
: false
  chatcolor
: false
  chatreaction
: false
  checknamehistory
: false
  deluxetags
: false
  enjin
: false
  essentials
: false
  ezblocks
: false
  ezprestige
: false
  ezrankslite
: false
  ezrankspro
: false
  factions
: false
  factionsuuid
: false
  galistener
: false
  gangsplus
: false
  heroes
: false
  islandworld
: false
  jobs
: false
  killstats
: false
  leaderheads
: false
  lwc
: false
  marriagemaster
: false
  mcinfected
: false
  mcinfected-ranks
: false
  mcmmo
: false
  minecrates
: false
  mvdw
: false
  nicknamer
: false
  nicky
: false
  ontime
: false
  playerpoints
: false
  plotsquared
: false
  prisongangs
: false
  pvpstats
: false
  quicksell
: false
  royalcommands
: false
  simpleclans
: false
  simplecoinsapi
: false
  simpleprefix
: false
  simplesuffix
: false
  skillapi
: false
  skywarsreloaded
: false
  sqlperms
: false
  sqltokens
: false
  tokenenchant
: false
  towny
: false
  ultimatevotes
: false
  uskyblock
: false
  vaulteco
: true
  vault
: true
  voteparty
: false
  voteroulette
: false
  wickedskywars
: false
bungeecord
:
  check_interval
: 60
You will have to re enable all of your hooks that you currently have set to "true"

Enjoy :)
----------, Feb 17, 2016

1.9.0.1

Be sure to check out the 1.9 update changelog that was released a bit ago
by clicking here

Added VoteRoulette placeholders:
Code (Text):
%voteroulette_votes_lifetime%
%voteroulette_votes_day%
%voteroulette_current_vote_cycle%
%voteroulette_current_vote_streak%
%voteroulette_hours_since_last_vote%
%voteroulette_longest_vote_streak%
%voteroulette_unclaimed_milestone_count%
%voteroulette_unclaimed_reward_count%
%voteroulette_last_vote_timestamp%
----------, Dec 2, 2015

1.9

Added new Essentials placeholders:

Code (Text):
%essentials_kit_last_use_<kitname>%
%essentials_has_kit_<kitname>%
%essentials_kit_is_available_<kitname>%
%essentials_kit_time_until_available_<kitname>%
%essentials_pm_recipient%
Added Leaderheads placeholders:
Code (Text):

%leaderheads_player_<leaderboard type>_#%
%leaderheads_score_<leaderboard type>_#%

available leaderboard types:
sg-kills, sg-deaths, sg-wins, sg-coins, sg-played, tr-wins, tr-looses,
tr-played, tp-kills, tp-elo, tp-deaths, treasure, traded, swim, played, pig, mobkills,
minecart, fish, horse, fly, joined, mine, kills, enchanted, drop, dive, deaths, damage-give,
damage-receive, cake, climb, boat, bred, walk, refer, vr-total, vr-monthly, vr-streak, vr-previous,
swcc-wins, swcc-kills, swcc-deaths, swcc-played, buycraft, ptr-time, bwr-deaths, bwr-beds, bwr-score, bwr-loses,
bwr-wins, bwr-kd, bwr-games, bwr-kills, ps-kills, ps-elo, ps-deaths, ps-streak, battlestreak, battlekills,
battledeaths, town-land, town-residents, nation-land, nation-residents, mcmmo-power, sc-deaths, sc-members, sc-ratio,
quests-points, ez-blocks, sql-swr-blocks, flat-swr-blocks, sql-swr-score, sql-swr-wins, sql-swr-played, sql-swr-deaths,
sql-swr-kills, flat-swr-wins, flat-swr-played, flat-swr-deaths, flat-swr-kills, flat-swr-score, sbs-deaths, uf-chunks,
uf-members, uf-balance, uf-power, cr-wins, f-balance, asb-level, f-chunks, f-members, f-power, ai-level, sql-ws-score,
sql-ws-wins, sql-ws-played, sql-ws-deaths, sql-ws-kills, flat-ws-wins, flat-ws-played, flat-ws-deaths, flat-ws-kills,
flat-ws-score, sql-sw-score, sql-sw-wins, sql-sw-played, sql-sw-deaths, sql-sw-kills, rv-votes, flat-sw-wins, flat-sw-played,
flat-sw-deaths, flat-sw-kills, sbs-kills, flat-sw-score, usb-level, sbs-killstreak, sbs-mobkills, balance, gal-votes,
iwlevel, battlelevel, battlescore, playerpoints, ks-kills, ks-deaths, ks-streak, ks-ratio, uv-total, uv-monthly
Added NickNamer placeholders:
Code (Text):
%nicknamer_has_nickname%
%nicknamer_has_skin%
%nicknamer_nickname%
Added inventory check placeholders:
Code (Text):

%invcheck_m:<Material name or ID>_a:<amount>_d:<data value>_n:<displayname>_l:<lore-line-1,lore-line-2>%

example:
%invcheck_m:DIAMOND_a:64% - checks if player has 64 diamonds in inventory
%invcheck_m:STONE_a:1_n:&aAwesome-Stone% - checks if player has 1 stone with display name "&aAwesome Stone"
 
Potential fix for BungeeCord placeholders

Fix for Vault prefix color placeholder

Updated GangsPlus hook to the latest
version of GangsPlus :)

This version also contains a few other fixes that I may have forgot to mention.
----------, Dec 2, 2015

1.8.6

As I have been away for a while now because of moving to a new house, I am back.....

Today I went through and updated every dependency to the latest available version to ensure all my hooks are updated.

Removed PlotMe hook and placeholders as the plugin is no longer being updated by the developer. (I suggest you use PlotSquared if you haven't switched already)

Removed Teams hook and placeholders as the plugin is no longer available.

Added support for @, :, and other characters in the regex for the placeholder pattern used in this plugin to identify placeholders. This should make Maxims pinger placeholders work for anyone who has had issues with them (I have tested and can confirm them working)

Removed method which stripped color in jobs placeholders. Jobs placeholders will now use the String specified in your jobs config without modifying or removing any color codes.

Updated PlotSquared hook to the latest version, this changes / removes / adds placeholders for it which will be added to the wiki soon.

Updated tons of other placeholder hook methods internally (you should not see any difference as an end user)

----------, Oct 14, 2015

1.8.5

Hotfix for McMMO placeholders when they throw errors when attempting to get McMMO data for a player. If an error is thrown, placeholders will return an empty value instead of causing errors in PlaceholderAPI.

Added missing characters in placeholder regex matcher so all of maxims placeholders can be used which may include @ or :

Useful for his pinger placeholders.

I will be pushing another update tomorrow to fix OnTime placeholders. I am currently testing them.

Added ChatColor placeholders:
https://www.spigotmc.org/resources/chatcolor.1546/
Code (Text):
%chatcolor_chatcolor%
%chatcolor_namecolor%
----------, Sep 9, 2015

1.8.4

Improved BungeeCord placeholder system:

You no longer need to define what servers are tracked in the config.

Total player count will no longer be based on the servers tracked from the config and all bungee servers will be counted.

Added support for RedisBungee. Just set hooks.redisbungee: true instead of hooks.bungeecord.

Code (Text):
RedisBungee placeholders

%redisbungee_total%
%redisbungee_<servername>%
Added placeholders for SkillAPI:

Code (Text):
SkillAPI placeholders:
%skillapi_attribute_points%
%skillapi_mana%
%skillapi_max_mana%
%skillapi_skill_level_<skillName>%
%skillapi_skill_points_<skillName>%
%skillapi_skill_cost_<skillName>%
%skillapi_skill_levelreq_<skillName>%
%skillapi_skill_is_maxed_<skillName>%
%skillapi_skill_message_<skillName>%
%skillapi_skill_type_<skillName>%
%skillapi_skill_req_<skillName>%

The following placeholders are the same as above but instead of specifying the
skillName, you can specify a number from 1- <amount of skills a player has> which
will show the information related to the players 1st, 2nd, 3rd skill and so on...

%skillapi_player_skill_points_<#>%
%skillapi_player_skill_level_<#>%
%skillapi_player_skill_levelreq_<#>%
%skillapi_player_skill_name_<#>%
%skillapi_player_skill_message_<#>%
%skillapi_player_skill_req_<#>%
%skillapi_player_skill_type_<#>%
%skillapi_player_skill_can_autolevel_<#>%
%skillapi_player_skill_can_cast_<#>%
----------, Aug 29, 2015

1.8.3

Added optional hook into MVdWPlaceholderAPI to allow any of Maxims placeholders to be used in PlaceholderAPI.

In order to use Maxims placeholders,
you must have MVdWPlaceholderAPI
and any of his resources listed below:
[​IMG]

After you have everything installed, simple enable his placeholders in the PlaceholderAPI config:
[​IMG]

To begin using any of maxims placeholders, you will need to follow the PlaceholderAPI placeholder format and start the placeholder with "mvdw_":

Code (Text):
%mvdw_<placeholder without brackets>%
You do not need to add the {<brackets>} he uses in his placeholders.

Example:

Code (Text):
%mvdw_player%
%mvdw_pluginscount%
%mvdw_usedram%
%mvdw_freeram%

A list of his placeholders can be found here:

MVdW placeholders list


Tweaks to bungeecord placeholders to hopefully fix any issues people have had with them.
----------, Aug 23, 2015

1.8.2

Added support for bungeecord player count placeholders:

Code (Text):
BungeeCord:

%bungeecord_total%
%bungeecord_<servername>%
To enable bungeecord placeholders, you must specify what servers are tracked by adding the names of the servers in the PlaceholderAPI config:

[​IMG]
The check_interval is the amount of time (seconds) between obtaining the player count for each server + the total online player amount. It is recommended you keep this set to 1 minute or higher.

You need to specify the exact name of the server you want to check (case sensitive) in the placeholder and in the tracked_servers list.

----------, Aug 18, 2015

1.8.1

Added placeholders for EZRanksPro

Code (Text):
EZRanksPro
%ezrankspro_player%
%ezrankspro_displayname%
%ezrankspro_world%
%ezrankspro_rank%
%ezrankspro_rankup%
%ezrankspro_cost%
%ezrankspro_cost_formatted%
%ezrankspro_balance%
%ezrankspro_balance_formatted%
%ezrankspro_difference%
%ezrankspro_difference_formatted%
%ezrankspro_progress%
%ezrankspro_progressexact%
%ezrankspro_progressbar%
%ezrankspro_rankprefix%
%ezrankspro_rankupprefix%
%ezrankspro_lastrank%
%ezrankspro_lastrankprefix%

Added system to prevent unwanted plugins from obtaining placeholders and using this PlaceholderAPI

Updated license agreement:

Code (Text):
PlaceholderAPI license information

Copyright (c) 2015 Ryan McCarthy

I retain all rights to this software in binary and its included source code

You are not allowed to redistribute this software in binary or its included source code

You are free to use this software and its API without direct modification to the source code

I have the right to block specific plugins from using this API
----------, Aug 18, 2015

1.8

Added new system to allow javascript to be loaded from files for javascript placeholders.

This system is pretty simple to use. When javascript placeholders are enabled, you can choose to load the javascript from a specific file for a certain placeholder by adding the following format to your "expression":

Code (Text):
placeholder:
  expression: 'file: <filename with extension>'
  type: string

After you specify a file: <filename> the first time in an expression value, a javascripts folder will appear in your PlaceholderAPI config folder.
[​IMG]
From there you can create as many files you like.
[​IMG]
Linking a file is as simple as specifying the "file: " keyword and file name in expression. If a file is specified and does not exist it will be created. Placeholders with empty files will not be loaded if a file is specified.

example:
Code (Text):
is_op:
  expression: 'file: is_op.js'
  type: string
is_op.js file:
[​IMG]

You can still specify 1 line javascript in the javascript_placeholders.yml as long as the expression value does not start with "file: ".
----------, Aug 4, 2015

Resource Information
Author:
----------
Total Downloads: 1,625,463
First Release: Apr 20, 2015
Last Update: May 21, 2024
Category: ---------------
All-Time Rating:
496 ratings
Find more info at api.extendedclip.com...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings