PrisonPearl allows players to imprison and control other players through the use of ender pearls. If you kill a player with an ender pearl in your possession, the pearl is converted to a prison pearl, and the player is imprisoned in the end. You must then secure the pearl from anyone who might wish to free the evildoer. You can also elect to use your prisoner as slave, by holding his pearl and summoning him from the end. He is bound to the pearl, and will die and return to the end if he attempts to flee.
Players are imprisoned when they die and have taken sufficient (configurable) damage from a player who has one or more ender pearls placed in his hotbar. The person who dealt the most damage to the player gets one pearl converted into a prison pearl. If a player stops taking damage for a configurable a period of time, his damage log is reset and he will not be imprisoned if he dies.
A pearl is only secure when placed in an inventory block, such as a chest or dispenser. A prison pearl in a players inventory will be freed if that player logs out. A prison pearl left on the ground will be freed if it despawns, or if the chunk containing it is unloaded. A burned or laved prison pearl will also be freed.
To free a player, simply throw his prison pearl, or use the ppfree command with the pearl in your inventory. If the player is online and free_tppearl is set to true, the player will be teleported to your location. If not, he will be respawned normally in the overworld.
Use the ppsummon command with a pearl in your inventory to summon that player back to the real world. This player can do anything as he pleases, but if he travels a configurable distance from the pearl he will begin to take damage. You can place the pearl in the chest if you think it is secure enough to prevent the prisoner from freeing himself. If he dies for any reason, he will be respawned in the end. You can reward your slave by using the ppreturn command, which sends him back to the end where he was with his inventory intact. A bad slave can instead be punished by using the ppkill command, which will put him back at the end spawn with no inventory.
Be careful not to allow your slaves to come in to contact with other people, because they could be stolen! Simply re-imprison an enslaved player to obtain their prison pearl, and use them for your own needs or free them on the spot.
An imprisoned player can at any time locate his pearl with the pplocate command. Any interested parties can then attempt to break in to the pearls storage location to free it.
All commands operate on the pearl in your hand. You can also use a command on a pearl in your inventory by supplying the name of that pearl.
/pplocatelocates a prisoner's prison pearl
/ppfree [player]frees the pearl
/ppsummon [player]summons a prisoner
/ppreturn [player]returns a prisoner to the end, inventory intact
/ppkill [player]instantly kills a prisoner, sending them to the end with no inventory
/ppbroadcast playerbroadcast your pplocates to the given player automatically.
/ppinfo [player]tells you the pearl's damage value and the location/status of the player in the pearl. This can be used to set up shops or other mechanisms which require the damage value of an item.
All of these have their own permission by name (ie
prisonpearl.locateany), which are by default granted to ops.
/pplocateany playerwill locate player's pearl
/ppfreeany playerwill free any player
/ppsavewill cause PrisonPearl to save its data to the disk
/ppimprisonany playerwill imprison any player.
free_worldis the name of the world a player will be teleported he's freed and has no bed (or if prison_resetbed).
free_respawncauses players to be killed (allowing them to respawn) instead of teleporting them to the free_world's spawn, which allows respawn altering plugins to kick in.
free_tppearlwhen an online player is free, teleport the player to the pearl instead of free_world
damagelog_minminimum amount of damage a player must inflict before he will be considered a candidate for imprisoning a player.
damagelog_tickscauses damage logs on a player to expire after he goes this many ticks unharmed.
ppkill_enabledallows the ppkill command to be used when true.
prison_stealingallows prisoners to be reimprisoned by another player when summoned.
prison_musthotbarrequires players to hold an ender pearl in their hot bar when they wish to imprison someone.
summon_damage_radiusis the distance a summoned player can travel from his pearl before taking damage.
summon_damage_ticksis the amount of ticks between damage inflicted to a summoned player.
summon_damage_amtis the amount of damage inflicted to a summoned player.
prison_worldis the world players are teleported/respawned in when players are imprisoned.
prison_resetbedcauses all imprisoned players to lose their current set bed location.
prison_motdis a list of strings which are sent to players whenever the teleport or respawn in prison.
prison_grant_permsis a list of permissions granted to an imprisoned player.
prison_deny_permsis a list of permissions denied to an imprisoned player.
save_ticksis the amount of ticks between prisonpearl saving data to its text files.
Use or build a version incorporating this this commit, then enable
free_respawn, and add
npcname=player is set in settings.prop. If the NPCs are given a different name, prisonpearls in the NPCs name will be created and the actual player won't be imprisoned. I haven't studied CombatTag very much, so I'd welcome commits to improve this behavior!