Skip to content
matthewbot edited this page May 8, 2012 · 15 revisions

PrisonPearl

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.

Imprisoning

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.

Securing pearls

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.

Freeing players

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.

Using slave labor

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.

Rescue missions

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.

Commands

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.

  • /ppl or /pplocate locates a prisoner's prison pearl
  • /ppf or /ppfree [player] frees the pearl
  • /pps or /ppsummon [player] summons a prisoner
  • /ppr or /ppreturn [player] returns a prisoner to the end, inventory intact
  • /ppk or /ppkill [player] instantly kills a prisoner, sending them to the end with no inventory
  • /ppb or /ppbroadcast player broadcast your pplocates to the given player automatically.
  • /ppi or /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.

Op commands

All of these have their own permission by name (ie /pplocateany requires prisonpearl.locateany), which are by default granted to ops.

  • /pplocateany player will locate player's pearl
  • /ppfreeany player will free any player
  • /ppsave will cause PrisonPearl to save its data to the disk
  • /ppimprisonany player will imprison any player.

Configuration options

  • free_world is the name of the world a player will be teleported he's freed and has no bed (or if prison_resetbed).
  • free_respawn causes 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_tppearl when an online player is free, teleport the player to the pearl instead of free_world
  • damagelog_min minimum amount of damage a player must inflict before he will be considered a candidate for imprisoning a player.
  • damagelog_ticks causes damage logs on a player to expire after he goes this many ticks unharmed.
  • ppkill_enabled allows the ppkill command to be used when true.
  • prison_stealing allows prisoners to be reimprisoned by another player when summoned.
  • prison_musthotbar requires players to hold an ender pearl in their hot bar when they wish to imprison someone.
  • summon_damage_radius is the distance a summoned player can travel from his pearl before taking damage.
  • summon_damage_ticks is the amount of ticks between damage inflicted to a summoned player.
  • summon_damage_amt is the amount of damage inflicted to a summoned player.
  • prison_world is the world players are teleported/respawned in when players are imprisoned.
  • prison_resetbed causes all imprisoned players to lose their current set bed location.
  • prison_motd is a list of strings which are sent to players whenever the teleport or respawn in prison.
  • prison_grant_perms is a list of permissions granted to an imprisoned player.
  • prison_deny_perms is a list of permissions denied to an imprisoned player.
  • save_ticks is the amount of ticks between prisonpearl saving data to its text files.

RandomSpawn integration

Use or build a version incorporating this this commit, then enable free_respawn, and add RandomSpawn.exclude to prison_grant_perms.

CombatTag integration

Ensure that 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!