Releases: PlaceholderAPI/PlaceholderAPI
2.11.6: 1.20.6 Support
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
- Add Hangar and BuiltByBit pages to readme by @Andre601 in #1006
- Update config.yml with papi domain for wiki and ecloud by @Funny-cube in #1038
- Use the OfflinePlayer$getPlayer method instead of casting to Player class by @DevCyntrix in #1040
- Add Plugin Authors to /papi dump by @Andre601 in #1046
New Contributors
- @Funny-cube made their first contribution in #1038
- @DevCyntrix made their first contribution in #1040
Full Changelog: 2.11.5...2.11.6
Security Update
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
2.11.4 | 1.20 support, environment variables and more!
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
2.11.3 | 1.19.4 Support + Bug Fixes
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
- Bump to 2.11.3-dev by @darbyjack in #863
- Updated Adventure by @darbyjack in #862
- Add space to message by @BlockyTheDev in #901
- Update Kyori Adventure to 4.3.0 by @Andre601 in #933
- Feature/gradle kts by @LichtHund in #934
- Kotlin DSL Hotfix by @darbyjack in #935
- Update the NMS options up to the latest 1.19 R3 by @darbyjack in #938
New Contributors
- @BlockyTheDev made their first contribution in #901
- @LichtHund made their first contribution in #934
Full Changelog: 2.11.2...2.11.3
2.11.2 | --null parse argument, color formatting removal and fixes
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 color 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 colors will you need to parse them yourself now. This is fairly easy to do with normal chat colors using Spigot's ChatColor#translateAlternateColorCodes(char, String)
method.
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 plugin for a placeholder expansion in the console.
Example Log message:
[00:00:00 WARN]: [PlaceholderAPI] Cannot load expansion example due to a missing Plugin: RequiredPlugin
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: 2.11.1...2.11.2
2.11.1 | Bug Hotfix
Hey everyone,
This release brings a fix to a bug that some users were facing when they had plugins that formatted chat via PlaceholderAPI.
Fixes
- Fixed an issue with
%s
being edited to%
(#772) - Bumped deprecated method remove to 2.13.0
1.18 support, new expansion features, dependencies updates and more
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 send 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
2.10.10 | Quality of life changes and more
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.
Breaking Changes
- Dropped 1.7 support, it may still work, but we do not guarantee it.
Additions
- 1.17 Support (#658)
- Added
getBoolean(boolean, String)
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, #657)
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)
2.10.9
2.10.9
Fixed issues with maven repo regarding Jetbrains annotations when using shit 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 setting placeholders as both methods pre 2.10.7 are functional. 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 and really don't want people using the dev repo as a way to release updates. Based on the feedback I felt this was the thing to do as we don't want to break things until PAPI3 drops.