Changelog (5.x)

[Note: Dev builds are available from a link on the main page - these are not stable or fully tested and are not approved by BukkitDev, be sure to read the attached warning before using.]


[5.3.x rewrites have been tabled at this time in order to focus on providing smaller consistent updates, those features may eventually be readded individually]



  • bugfix: Spawning a player head with #player while dropvanillaheads is set to false will no longer result in a head named "%1%'s Head".
  • bugfix: Heads for player names ending in "s" now use a new lang entry "HEAD_PLAYER_S" which does not add another s for possessive correctness.
  • bugfix: Spawn message for heads now shows the proper item-name for the head instead of "___'s Head" (eg: #cat's head)
  • added: new configuration option "fixbrokenheads" (default: true) which allows you to disable PH handling for when a head-block is broken.
  • added: new configuration option "restoreprofile" (default: true) which attempts to re-apply the old profile information (name,id,texture) of an old head when it is updated or fixed.  If this is false, new information is generated or resolved. NOTE: this feature should do absolutely nothing on platforms that do not support block profile information (ie: GlowstoneMC).
  • added: Plugin can now also use bukkit-package versioning to determine the server support version as a last resort


5.2.11 snapshots

  • changed: Compatibility libraries have been isolated into their own API and Library jar to allow other plugin developers to reuse the backend without PlayerHeads logic. (from 5.2.11 snapshots)


  • added: Provisional Piglin Brute head. This head is subject to change in name and texture and can only be spawned (in 1.8-1.16.1) with the command /ph spawn #piglinbrute
    The mob in future Spigot 1.16.2 will only drop this head if Spigot-API decides to use the current name (PIGLIN_BRUTE). If it changes upon release, the mob will drop no head and an updated plugin version must be released to fix the issue.


  • note: Bukkit/Spigot API has decided to change the type name of PIG_ZOMBIE to ZOMBIFIED_PIGLIN.  To maintain consistency with bukkit, this version will also update references to match the change.
  • bugfix: internal Zombie Pigman heads are translated to the correct version version-specific entitytype in 1.16 (corrects API identifications)
  • bugfix: detection for Zombified Piglins correctly as internal Zombie Pigman. (corrects Zombified Piglins heads not dropping in 5.2.8)
  • changed: Zombified Piglin head has been updated to match the new mob.
  • changed: Zombified Piglin droprate config is now "zombifiedpiglindroprate". You will need to set this if you are migrating from an old config.
  • changed: Zombified Piglin Lang entries have been updated to match the new name.
  • changed: 1.14 support provider moved into 1.13 provider (now 1.13-1.15.2) with version check to reduce redundancy.

NOTE: This build contains changes to the Zombie Pigman head - existing heads will need to be updated (by dropping, or placing and breaking) to match heads spawned by the plugin.


API: minor API changes to CompatibilityProvider. Compatible with 5.2.0 API. 
 - added CompatibilityProvider.getEntityTypeFromTypename to retrieve the relevant entity type despite version-specific naming.



  • added: Zoglin heads have been provisionally added. (added in second snapshot build - #17 / #1068)
  • bugfix: correctly ignore cancelled bukkit events
  • ease potential conflicts: avoid replacing drops for fixdroppeditems or blockbreak when the head is vanilla unskinned and dropvanillaheads is enabled. PlayerHeads will now opt to do/modify nothing in these specific cases.
  • changed: added another CS-CoreLib head name variant to be ignored in the default config.
  • added: new configuration option pretestblockbreak (default: true).  When enabled, this option maintains the existing behavior (since 3.11) of sending a simulated block-break event while exempt from NPC in order to check for protection. This can now be disabled to ease potential conflicts with head-drop plugins (like Slimefun), however you should check the behavior against your server's protection and anticheat plugins to avoid unwanted problems.

5.2.6, 5.2.7

  • added: provisional head  support for Piglin, Hoglin and Strider.


  • fixed: head ignore lists are now properly cleared between reloads, instead of appended.


  • added: configuration option added in 5.2.3 (ignoredheadnames, ignoredheaduuids) now have their changes applied when the "/ph config reload" command is used and no longer require a server restart.
  • fixed: configuration values (except "behavior" settings) are no longer forced to be lowercase when using "/ph config set ..." which allows setting cased head names.
  • fixed: configuration string lists now properly allow names, uuids to be used as necessary when using "/ph config set ...". Previously the string lists mistakenly required valid material names (as in "requireitems" setting)
  • other: re-added internal package version information in JAR to allow verifying correct package version use and to provide API version to developers in another way.


  • added: configuration option "ignoredheadnames" which is a list of head names that PlayerHeads will avoid modifying, detecting, or otherwise interacting with. Slimefun heads ("CSCoreLib" heads) are now ignored by the plugin by default to avoid breaking custom items from that plugin.  Note: these are case-sensitive to the internal "owner" string.
  • added: configuration option "ignoredheaduuids" which is a list of head uuid strings that PlayerHeads will avoid modifying, detecting, or otherwise interacting with.
    Note: at this time, the reload and config commands do not affect currently blocked heads - this requires a server reload. this will be resolved in a future version.

5.2.1 provisional 1.15 alpha 1

  • modification of 5.2.1 release
  • added:  provisional support for 1.15 Bee mob (subject to change when bukkit support is available).

5.2.1 release

  • changed: Wither skeleton head drops will no longer, by default, remove vanilla drops when a positive droprate is configured. Reminder: this rate does not affect vanilla droprate.
  • added: new configuration option witherskeletonbehavior which can be set to the following values (like chargedcreeperbehavior):
    • ignore - don't consider vanilla head drop for Wither Skeletons s at all and add PlayerHeads rolls anyway (may cause double head drops rarely since both vanilla and plugin head rolls occur).
    • replace - remove vanilla head drops and add PlayerHeads rolls (same affect as a positive droprate in previous versions).
    • vanilla - keep preexisting head drops and do not add any PlayerHeads drops (same as setting the droprate to -1)
    • block - remove all head drops and do not add any (same as setting the droprate to 0 in previous versions)
      NOTE: when chargedcreeperbehavior is set to 'block' or 'vanilla', it supercedes these options (it is applied first).
  • added: new configuration option delaywitherdrop which, if enabled, drops the head for the Wither Boss a configured amount of time after the death. This is done so that skull-explosions don't destroy the head. This option overrides the state of antideathchest for the Wither (as if it was always on).
  • added: new configuration option delaywitherdropms which sets the time in miliseconds to delay the head drop for the Wither boss, if delaying is enabled.


  • API: added setDrop() methods to ___-DropHead events to allow drop item modification
  • API: added getChargedCreeperModifier() method for HeadRollEvent to get the multiplier applied to the droprate of deaths caused by charged creepers.
  • added: added configuration option chargedcreeperbehavior which modifies how PlayerHeads handles Charged Creeper-caused head drops.  This can add to the drops, enforce vanilla behavior, replace the drops with PH-controlled drops, or block these drops.  Removal of drops only considers vanilla head items.  This option requires considermobkillers to be enabled in order to function.
    If considermobkillers is not enabled or this setting is set to "ignore" behavior will function identical to previous versions (PH drops are added if applicable and creeer-caused head drops are not modified).
  • added: added configuration option chargedcreepermodifier which modifies the droprate of the death if it was detected (as above) to be caused by a charged creeper and the previous setting is set to "ignore" or "replace".


  • added: added API method that exposes the CompatibilityProvider to other plugins, this class has a variety of version-compatible operations (like setting owner, texture, etc)
  • added: added API methods for generating the ItemStack of a head for a user.


  • changed: setting any mob droprate to a negative value now causes the plugin to ignore the death event and permits vanilla behavior.  This extends from the behavior of the negative witherskeleton droprate added in 3.12.
  • added: added drop rate modifiers for slimes and magmacubes based on their size. Previously, all sizes of slime received the same droprate. In the configuration file these are numbered 1-4 for the size of slime provided by Bukkit, where 3 does not spawn naturally (corresponding to 0-3 in Minecraft) under the configuration section slimemodifier. The default modifier for each size is 1.0 to maintain behavior of previous versions. These values are multiplied against the base droprate for the mob as follows:Effective Droprate = mobdroprate * slimemodifier * (1 + lootingrate*looting_enchantment_level)



Foreword: After more than 6 months since we began support for new textured mobheads and 4 years since the last major release of username-based mobheads plugin, it is now time to say farewell to those legacy heads.

Beginning with version 5, username-based mobheads created by the 3.x plugin will no longer be automatically detected and upgraded into new textured mobheads as they do in version 4.x.

This slightly reduces plugin work, footprint, and fixes the longstanding problem of certain user-heads being abused to obtain mob-heads.

TL;DR - if you have heads created by the 3.x plugin that you still need to support, use version 4.x instead. If you began using the plugin at version 4.x, you can safely update to 5.x.

  • changed: config setting display consolidated into Config class. Simplified/reduced complicated legacy code when changing config settings.
  • changed: boolean config settings now accept "yes","true","1" as a true value [in commands] and others as false, instead of defaulting to true.
  • changed: unknown config value types are displayed as strings with quotations except null, which now shows (unset)
  • fixed: config value display is based on type instead of only "-droprate" values being displayed as doubles.
  • added: new feature to allow requiring an item for beheading, with config settings:  (BukkitDev Request #14)
    • requireitem - (true/false) If true, an item in the 'requireditems' list must be held in the main hand to behead. Disabled by default.
    • requireditems - (list) A lowercase list of Bukkit Materials that permit beheading when held in the main hand, if 'requireitem' is enabled. By default this only includes axes. 
  • added: new feature to allow mobs responsible for deaths to be considered for looting and required items, with config settings:
    • considermobkillers - (true/false) If true, mobs responsible for deaths are identified and checked for looting modifier, requireitem features. Disabled by default.
  • added: new feature to allow tamed wolves to be considered as killing for their owner (like in vanilla), with config settings: (BukkitDev Request #68)
    • considertameowner - (true/false) If true, the owner of a tamed animal is considered to be the killer instead and the death is considered a pk or mobpk by other features. Disabled by default. Requires considermobkillers to be enabled to function since detection of killer-animals must occur.


  • bugfix: fixed a longstanding issue where beheading messages are not broadcasted to the correct players when broadcastradius is enabled.
  • bugfix: suppressed exceptions when broadcast destination is in a different dimension (when using broadcastradius)
  • added: added the option to broadcast when a player beheads a mob (note: mob-on-mob beheadings will not be broadcasted) with the following config.yml settings [similar to PVP beheading broadcasts]:
    • broadcastmob: (true/false) enable or disable broadcast of player-on-mob beheadings (default: false)
    • broadcastmobrange: (integer) set a block radius within which to broadcast to players or 0 for unlimited (default: 0)
  • removed: (developer change) Deprecated NCPHook property removed from plugin class.
  • corrected: (developer change) HeadType.equals() corrected to compare Objects
  • added: (developer change) HeadType.toEnum() added to retrieve enum type value without a cast, in an effort to increase backend maintainability.


  • tidied: stripped excessive maven/manifest information from Plugin JAR.
  • fixed: ensured PlayerHeads-api JAR contains manifest information.
  • removed: removed support for username-based heads (LegacySkullType)
  • removed: removed all "Legacy" skull methods from core code (which were marked deprecated originally).
  • fixed: users with the ability to spawn a player-head can no longer use certain usernames to obtain the corresponding mobhead.
  • note: this change should not affect server support; 1.8-1.14 are still supported. However, the heads created by plugin versions 3.12 and lower will no longer be detected as mob-heads.


Older 4.x changelog is listed here.


Posts Quoted:
Clear All Quotes