001 package org.bukkit.event.entity;
002
003 import java.util.List;
004
005 import org.bukkit.entity.Player;
006 import org.bukkit.inventory.ItemStack;
007
008 /**
009 * Thrown whenever a {@link Player} dies
010 */
011 public class PlayerDeathEvent extends EntityDeathEvent {
012 private int newExp = 0;
013 private String deathMessage = "";
014 private int newLevel = 0;
015 private int newTotalExp = 0;
016 private boolean keepLevel = false;
017 private boolean keepInventory = false;
018
019 public PlayerDeathEvent(final Player player, final List<ItemStack> drops, final int droppedExp, final String deathMessage) {
020 this(player, drops, droppedExp, 0, deathMessage);
021 }
022
023 public PlayerDeathEvent(final Player player, final List<ItemStack> drops, final int droppedExp, final int newExp, final String deathMessage) {
024 this(player, drops, droppedExp, newExp, 0, 0, deathMessage);
025 }
026
027 public PlayerDeathEvent(final Player player, final List<ItemStack> drops, final int droppedExp, final int newExp, final int newTotalExp, final int newLevel, final String deathMessage) {
028 super(player, drops, droppedExp);
029 this.newExp = newExp;
030 this.newTotalExp = newTotalExp;
031 this.newLevel = newLevel;
032 this.deathMessage = deathMessage;
033 }
034
035 @Override
036 public Player getEntity() {
037 return (Player) entity;
038 }
039
040 /**
041 * Set the death message that will appear to everyone on the server.
042 *
043 * @param deathMessage Message to appear to other players on the server.
044 */
045 public void setDeathMessage(String deathMessage) {
046 this.deathMessage = deathMessage;
047 }
048
049 /**
050 * Get the death message that will appear to everyone on the server.
051 *
052 * @return Message to appear to other players on the server.
053 */
054 public String getDeathMessage() {
055 return deathMessage;
056 }
057
058 /**
059 * Gets how much EXP the Player should have at respawn.
060 * <p>
061 * This does not indicate how much EXP should be dropped, please see
062 * {@link #getDroppedExp()} for that.
063 *
064 * @return New EXP of the respawned player
065 */
066 public int getNewExp() {
067 return newExp;
068 }
069
070 /**
071 * Sets how much EXP the Player should have at respawn.
072 * <p>
073 * This does not indicate how much EXP should be dropped, please see
074 * {@link #setDroppedExp(int)} for that.
075 *
076 * @param exp New EXP of the respawned player
077 */
078 public void setNewExp(int exp) {
079 newExp = exp;
080 }
081
082 /**
083 * Gets the Level the Player should have at respawn.
084 *
085 * @return New Level of the respawned player
086 */
087 public int getNewLevel() {
088 return newLevel;
089 }
090
091 /**
092 * Sets the Level the Player should have at respawn.
093 *
094 * @param level New Level of the respawned player
095 */
096 public void setNewLevel(int level) {
097 newLevel = level;
098 }
099
100 /**
101 * Gets the Total EXP the Player should have at respawn.
102 *
103 * @return New Total EXP of the respawned player
104 */
105 public int getNewTotalExp() {
106 return newTotalExp;
107 }
108
109 /**
110 * Sets the Total EXP the Player should have at respawn.
111 *
112 * @param totalExp New Total EXP of the respawned player
113 */
114 public void setNewTotalExp(int totalExp) {
115 newTotalExp = totalExp;
116 }
117
118 /**
119 * Gets if the Player should keep all EXP at respawn.
120 * <p>
121 * This flag overrides other EXP settings
122 *
123 * @return True if Player should keep all pre-death exp
124 */
125 public boolean getKeepLevel() {
126 return keepLevel;
127 }
128
129 /**
130 * Sets if the Player should keep all EXP at respawn.
131 * <p>
132 * This overrides all other EXP settings
133 *
134 * @param keepLevel True to keep all current value levels
135 */
136 public void setKeepLevel(boolean keepLevel) {
137 this.keepLevel = keepLevel;
138 }
139
140 /**
141 * Sets if the Player keeps inventory on death.
142 *
143 * @param keepInventory True to keep the inventory
144 */
145 public void setKeepInventory(boolean keepInventory) {
146 this.keepInventory = keepInventory;
147 }
148
149 /**
150 * Gets if the Player keeps inventory on death.
151 *
152 * @return True if the player keeps inventory on death
153 */
154 public boolean getKeepInventory() {
155 return keepInventory;
156 }
157 }