Player Heads
Ever PVP someone or PVE a mob and get no good loot? Feel like you deserve a trophy for your victory? Want a simpler alternative to bigger plugins that implement everything but the kitchen sink? Then PlayerHeads is right for you! You can now lop off enemies heads in battle, and mount it on a pole for all to fear, wear your opponent's face as a mask like camouflage, or just collect all of the mob heads.
Installation
Place PlayerHeads.jar in your plugins folder, on server start the configuration will be generated. Remember to remove any outdated playerheads jars when adding the new one.
If you can't be bothered to read the rest of this page, then just watch this video by Awesome_Soul:
Portuguese (Português) video: http://youtu.be/OqhI_oIGPWo
German (Deutsch) video: http://youtu.be/ijEws5yjo6Y
Try It
Server: aztecmc.org (rare drops are enabled for mob and player-heads)
Website: aztecmc.org
Documentation
Notes
- PlayerHeads is now translatable! Edit "lang.properties" to whatever phrases you desire.
- lang files will change between releases, when updating be sure to delete the old file if you haven't edited it.
- If you've given people the * permission node, they will get 100% drop rates. If you don't want this to happen, deny (or add negative) nodes for the following: playerheads.alwaysbehead and playerheads.alwaysbeheadmob
- If you want to disable head drops in a specific world, use your permission plugin to deny (or add negative) nodes for the following in that world: playerheads.canbehead and playerheads.canbeheadmob
- If you have any problem using "lang_[language]_[country]_[variant].properties" for any reason, just use the file name "lang.properties" to override messages.
- Spawn mob heads with the following names: #creeper #zombie #skeleton #wither #spider #enderman #enderdragon ... (any many more!)
Known issues
- Renamed heads (with an anvil) don't stay renamed after placing, mining, dropping them.
- If for any reason your mob heads loose their name, you can get it back by placing and mining it.
- If you use the BountyHunters plugin and you have enabled head drops for bounties as well as player head drops from PlayerHeads, both will be dropped - for now, you should disable one or the other. Alternative solutions are being looked at.
- If you use JPerms, users with Op or playerheads.* permission will receive playerheads.alwaysbehead[mob] permissions and have 100% droprate since PlayerHeads permissions nodes are ignored. It's recommended to use another permissions plugin if this is a concern (LuckPerms, PermissionsEX, GroupManager).
Dev Builds
Development builds of this project can be acquired at the provided continuous integration servers. These builds have not been approved by the BukkitDev staff. Use them at your own risk.
https://ci.meme.tips/job/PlayerHeads (upstream)/ (selected major changes only)
https://ci.meme.tips/job/PlayerHeads-5.x/ (rapid changes and work-in-progress)
Sourcecode / API documentation
We've included the entire sourcecode via github:
https://github.com/meiskam/PlayerHeads
Third-party plugin-developers can view the PlayerHeads API documentation at the following link: https://crashdemons.github.io/PlayerHeads/
Server Support
Current versions of the plugin have been tested as compatible on the following server environments:
- Spigot/Paper 1.8-1.18.2 (Use PlayerHeads 5.20.2 or lower; READ NOTE)
- Spigot/Paper 1.19-1.20.4
Server environments that are known to be incompatible:
- Glowstone 1.12 (only partial support is available in PlayerHeads 5.20.2 and lower)
Support should exist for any modern bukkit server with access to authlib which is needed to set textures.
Legacy version notes:
- 5.x drops support for older usernamed-based mobheads (3.x), fixing some longstanding issues with spawn commands; uses vanilla and texured heads exclusively (4.x)
- 4.x introduces new, more reliable support for head textures, more configuration options, updated mobs, and more consistent permission behavior and will continue to receive updates in the future - some older configurations may be incompatible (see the changelog and Configuration page). This version automatically upgrades 3.x heads to 4.x when breaking or dropping heads.
- 3.x maintains the original behavior of the plugin with username-based mobheads, but head skins may be less reliable over time and support has been discontinued.
Legacy version documentation: changelog, configuration, permissions.
@deleted_9240089
Yes this was fixed a while ago, update to the latest version.
@RemyPas
All permissions and configurations have default values, if you don't want people to have permission to do something, then you must remove that permission from them.
@SugarDaddii88
With that version wither skeletons should drop both normal skeleton heads and wither skeleton heads.
@VanillaNinjaz
The newest version of PlayerHeads will not display that error even if you're using an old CraftBukkit version.
The heads can be broken in protected regions. Is their any fix to this?
Is it me or do the permission have no effect at all.
I installed the plugin on my server. But didn't give anyone permissions yet. So the OP's could test it amongst themselves... All of a sudden everyone drops heads on kills and players are collecting them.
I'm having the issue with player heads turning into skeletons after relogging. I have Orebfuscator installed, since you said ore obfuscation plugins screw this up I'm guessing that's the reason. Is there no fix for this?
If have a Problem: I have 1.4.2 but WitherSkeletons drop only SkeletonsSkulls Why BTW: I dont wanna update my Bukkitserver
MFG
@Oohoa
Did you solve this? Same thing is happening for me on update. Skulls turn into skeletons heads when an outsider breaks them in towny?
1.4.5.R2 2488 / 2.3.0054 - explosion regens off in towny
hey just an idea if u want to add it it would be cool, use tagapi to change the players tag when they are wearieng a head ;)
can you where other players heads? o.o also there is a plugin that mixes with discuise craft that alows mob heads to add a discuise to you
Support for WorldGuard! , People can break heads inside regions :(
Very very interesting, May i suggest adding support for DisguiseCraft? As in a player that puts on the Creeper head will get a creeper disguise, that would make it all much more worth the time killing those hundreds creepers lol.
@VanillaNinjaz
@Rat_Cat12
@silentnight18
You must run the version of CraftBukkit that version 2.3.0054 requires as stated next to the download: CB 1.4.5-R0.1 (or higher).
@PyroGodz
I assume you're running an old version of Spigot, either update to the latest dev build of Spigot or set "item-merge-radius" to 0 in your "bukkit.yml"
@rasnyderiii
Can not reproduce, please be more specific about plugins, versions, and what kind of protections you had around the area in question.
@ZwingGX
@Oohoa
The only way I can reproduce this is to use other plugins such as towny explosion regen, or ore obfuscation. It seems to never happen using only my plugin. Please be specific about your plugin list, versions, and under what conditions the heads change to skeletons.
You can dupe a head - if you have any type of chestshop sign plugin - hold head in hand - click on sign - other heads not turn into head in hand.
who cares, but hey letting you know!
@VanillaNinjaz
Also seeing this error every 5 minutes, rather annoying.
Updated to latest version and all the heads still revert back to skeletons. Any help? Craftbukkit 1.4.5 R0.2
@VanillaNinjaz I'm getting that too. I think it is a bug.
Someone please tell me how to fix this? It keeps spamming my log every hour.
16:58:17 [SEVERE] Could not pass event EntityDeathEvent to PlayerHeads v2.3.0054 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:341) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462) at org.bukkit.craftbukkit.event.CraftEventFactory.callEntityDeathEvent(CraftEventFactory.java:299) at net.minecraft.server.EntitySkeleton.dropDeathLoot(EntitySkeleton.java:175) at net.minecraft.server.EntityLiving.die(EntityLiving.java:850) at net.minecraft.server.EntitySkeleton.die(EntitySkeleton.java:126) at net.minecraft.server.EntityLiving.damageEntity(EntityLiving.java:730) at net.minecraft.server.EntityMonster.damageEntity(EntityMonster.java:39) at net.minecraft.server.Explosion.a(Explosion.java:170) at net.minecraft.server.World.createExplosion(World.java:1609) at net.minecraft.server.WorldServer.createExplosion(WorldServer.java:771) at net.minecraft.server.EntityCreeper.j_(EntityCreeper.java:102) at net.minecraft.server.World.entityJoinedWorld(World.java:1333) at net.minecraft.server.WorldServer.entityJoinedWorld(WorldServer.java:546) at net.minecraft.server.World.playerJoinedWorld(World.java:1315) at net.minecraft.server.World.tickEntities(World.java:1193) at net.minecraft.server.WorldServer.tickEntities(WorldServer.java:444) at net.minecraft.server.MinecraftServer.r(MinecraftServer.java:577) at net.minecraft.server.DedicatedServer.r(DedicatedServer.java:222) at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:493) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:426) at net.minecraft.server.ThreadServerApplication.run(SourceFile:856) Caused by: java.lang.NoSuchMethodError: org.bukkit.entity.Skeleton.getSkeletonType()Lorg/bukkit/entity/Skeleton$SkeletonType; at org.shininet.bukkit.playerheads.PlayerHeadsListener.onEntityDeath(PlayerHeadsListener.java:80) at sun.reflect.GeneratedMethodAccessor224.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:339) ... 23 more 16:58:17 [SEVERE] Could not pass event EntityDeathEvent to PlayerHeads v2.3.0054 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:341) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462) at org.bukkit.craftbukkit.event.CraftEventFactory.callEntityDeathEvent(CraftEventFactory.java:299) at net.minecraft.server.EntitySkeleton.dropDeathLoot(EntitySkeleton.java:175) at net.minecraft.server.EntityLiving.die(EntityLiving.java:850) at net.minecraft.server.EntitySkeleton.die(EntitySkeleton.java:126) at net.minecraft.server.EntityLiving.damageEntity(EntityLiving.java:730) at net.minecraft.server.EntityMonster.damageEntity(EntityMonster.java:39) at net.minecraft.server.Explosion.a(Explosion.java:170) at net.minecraft.server.World.createExplosion(World.java:1609) at net.minecraft.server.WorldServer.createExplosion(WorldServer.java:771) at net.minecraft.server.EntityCreeper.j_(EntityCreeper.java:102) at net.minecraft.server.World.entityJoinedWorld(World.java:1333) at net.minecraft.server.WorldServer.entityJoinedWorld(WorldServer.java:546) at net.minecraft.server.World.playerJoinedWorld(World.java:1315) at net.minecraft.server.World.tickEntities(World.java:1193) at net.minecraft.server.WorldServer.tickEntities(WorldServer.java:444) at net.minecraft.server.MinecraftServer.r(MinecraftServer.java:577) at net.minecraft.server.DedicatedServer.r(DedicatedServer.java:222) at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:493) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:426) at net.minecraft.server.ThreadServerApplication.run(SourceFile:856) Caused by: java.lang.NoSuchMethodError: org.bukkit.entity.Skeleton.getSkeletonType()Lorg/bukkit/entity/Skeleton$SkeletonType; at org.shininet.bukkit.playerheads.PlayerHeadsListener.onEntityDeath(PlayerHeadsListener.java:80) at sun.reflect.GeneratedMethodAccessor224.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:339) ... 23 more 16:58:17 [SEVERE] Could not pass event EntityDeathEvent to PlayerHeads v2.3.0054 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:341) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462) at org.bukkit.craftbukkit.event.CraftEventFactory.callEntityDeathEvent(CraftEventFactory.java:299) at net.minecraft.server.EntitySkeleton.dropDeathLoot(EntitySkeleton.java:175) at net.minecraft.server.EntityLiving.die(EntityLiving.java:850) at net.minecraft.server.EntitySkeleton.die(EntitySkeleton.java:126) at net.minecraft.server.EntityLiving.damageEntity(EntityLiving.java:730) at net.minecraft.server.EntityMonster.damageEntity(EntityMonster.java:39) at net.minecraft.server.Explosion.a(Explosion.java:170) at net.minecraft.server.World.createExplosion(World.java:1609) at net.minecraft.server.WorldServer.createExplosion(WorldServer.java:771) at net.minecraft.server.EntityCreeper.j_(EntityCreeper.java:102) at net.minecraft.server.World.entityJoinedWorld(World.java:1333) at net.minecraft.server.WorldServer.entityJoinedWorld(WorldServer.java:546) at net.minecraft.server.World.playerJoinedWorld(World.java:1315) at net.minecraft.server.World.tickEntities(World.java:1193) at net.minecraft.server.WorldServer.tickEntities(WorldServer.java:444) at net.minecraft.server.MinecraftServer.r(MinecraftServer.java:577) at net.minecraft.server.DedicatedServer.r(DedicatedServer.java:222) at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:493) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:426) at net.minecraft.server.ThreadServerApplication.run(SourceFile:856) Caused by: java.lang.NoSuchMethodError: org.bukkit.entity.Skeleton.getSkeletonType()Lorg/bukkit/entity/Skeleton$SkeletonType; at org.shininet.bukkit.playerheads.PlayerHeadsListener.onEntityDeath(PlayerHeadsListener.java:80) at sun.reflect.GeneratedMethodAccessor224.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:339) ... 23 more
Server restart after player heads all skeleton's skull replaced... (V 1.4.5)
I thought you should know that that 'bug' of not keeping a custom name after being placed and mined again isn't in your plugin, it happens (the last time I checked) on any minecraft block. Try it on dirt or something; it's not your plugins fault, as I don't even have it installed.
Thanks, will test it :-)
I'm not sure if this has been fixed yet, but if you place a bunch of heads, and keep breaking them without grabbing the heads, they will all stack into the last player head you broke. To fix it, you need to disable heads from stacking.