increment version like normal, a few bug fixes, food level should now reset properly when leaving from/dying in the arena

This commit is contained in:
Brian
2012-05-23 21:35:00 -04:00
parent 76dc0c1df3
commit fc28597b95
3 changed files with 179 additions and 8 deletions
+10 -5
View File
@@ -602,11 +602,13 @@ public class ArenaImpl implements Arena
if (ap != null && running)
log.playerDeath(ap);
arenaPlayers.remove(p);
restoreInvAndExp(p);
if (inLobby(p) || inArena(p))
if (inLobby(p) || inArena(p)) {
restoreInvAndExp(p);
refund(p);
}
else if (inSpec(p)) {
inventoryManager.restoreInventory(p);
}
movePlayerToEntry(p);
discardPlayer(p);
@@ -720,7 +722,7 @@ public class ArenaImpl implements Arena
private void removePotionEffects(Player p) {
for (PotionEffect effect : p.getActivePotionEffects()) {
p.addPotionEffect(new PotionEffect(effect.getType(), 0, 0), true);
p.removePotionEffect(effect.getType());
}
}
@@ -892,6 +894,9 @@ public class ArenaImpl implements Arena
if (!settings.getBoolean("keep-exp", false)) {
playerData.get(p).restoreData();
}
else {
p.setFoodLevel(playerData.get(p).food());
}
}
@Override
@@ -474,7 +474,7 @@ public class ArenaListener
else if (damagee instanceof Player) {
onPlayerDamage(event, (Player) damagee, damager);
}
// Snowman
// Snowmen melting
else if (damagee instanceof Snowman && event.getCause() == DamageCause.MELTING) {
event.setCancelled(true);
}
@@ -486,6 +486,10 @@ public class ArenaListener
else if (monsters.getMonsters().contains(damagee)) {
onMonsterDamage(event, damagee, damager);
}
// Player made golems
else if (monsters.getGolems().contains(damagee)) {
onGolemDamage(event, damagee, damager);
}
}
private void onPlayerDamage(EntityDamageEvent event, Player player, Entity damager) {
@@ -533,6 +537,21 @@ public class ArenaListener
event.setCancelled(true);
}
}
private void onGolemDamage(EntityDamageEvent event, Entity golem, Entity damager) {
if (damager instanceof Player) {
Player p = (Player) damager;
if (!arena.inArena(p)) {
event.setCancelled(true);
return;
}
if (!pvpEnabled) {
event.setCancelled(true);
return;
}
}
}
private void onBossDamage(EntityDamageEvent event, LivingEntity monster, Entity damager) {
// Health the boss back up.
@@ -786,8 +805,9 @@ public class ArenaListener
public void onPlayerQuit(PlayerQuitEvent event) {
Player p = event.getPlayer();
if (!arena.isEnabled() || (!arena.inArena(p) && !arena.inLobby(p)))
if (!arena.isEnabled() || (!arena.inArena(p) && !arena.inLobby(p) && !arena.inSpec(p))) {
return;
}
arena.playerLeave(p);
banned.add(p);
@@ -796,7 +816,7 @@ public class ArenaListener
public void onPlayerKick(PlayerKickEvent event) {
Player p = event.getPlayer();
if (!arena.isEnabled() || (!arena.inArena(p) && !arena.inLobby(p))) {
if (!arena.isEnabled() || (!arena.inArena(p) && !arena.inLobby(p) && !arena.inSpec(p))) {
return;
}