Added a new Factions event for power loss named PowerLossEvent.

PowerLossEvent happens after each player death
This commit is contained in:
alkarin 2012-12-17 10:10:13 -06:00
parent 640c96c828
commit 1f5dc830be
2 changed files with 104 additions and 10 deletions

View File

@ -0,0 +1,78 @@
package com.massivecraft.factions.event;
import src.com.massivecraft.factions.FPlayer;
import src.com.massivecraft.factions.Faction;
public class PowerLossEvent extends Event implements Cancellable
{
private static final HandlerList handlers = new HandlerList();
private boolean cancelled;
private Faction faction;
private FPlayer fplayer;
private String message;
public PowerLossEvent(Faction f, FPlayer p)
{
cancelled = false;
faction = f;
fplayer = p;
}
@Override
public HandlerList getHandlers()
{
return handlers;
}
public static HandlerList getHandlerList()
{
return handlers;
}
public Faction getFaction()
{
return faction;
}
public String getFactionId()
{
return faction.getId();
}
public String getFactionTag()
{
return faction.getTag();
}
public FPlayer getFPlayer()
{
return fplayer;
}
public Player getPlayer()
{
return fplayer.getPlayer();
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
@Override
public boolean isCancelled()
{
return cancelled;
}
@Override
public void setCancelled(boolean c)
{
this.cancelled = c;
}
}

View File

@ -57,6 +57,7 @@ public class FactionsEntityListener implements Listener
this.p = p;
}
@EventHandler(priority = EventPriority.NORMAL)
public void onEntityDeath(EntityDeathEvent event)
{
@ -67,20 +68,35 @@ public class FactionsEntityListener implements Listener
FPlayer fplayer = FPlayers.i.get(player);
Faction faction = Board.getFactionAt(new FLocation(player.getLocation()));
PowerLossEvent powerLossEvent = new PowerLossEvent(faction,fplayer);
// Check for no power loss conditions
if ( ! faction.getFlag(FFlag.POWERLOSS))
{
fplayer.msg("<i>You didn't lose any power since the territory you died in works that way.");
return;
powerLossEvent.setMessage("<i>You didn't lose any power since the territory you died in works that way.");
powerLossEvent.setCancelled(true);
}
if (Conf.worldsNoPowerLoss.contains(player.getWorld().getName()))
else if (Conf.worldsNoPowerLoss.contains(player.getWorld().getName()))
{
fplayer.msg("<i>You didn't lose any power due to the world you died in.");
return;
powerLossEvent.setMessage("<i>You didn't lose any power due to the world you died in.");
powerLossEvent.setCancelled(true);
}
else {
powerLossEvent.setMessage("<i>Your power is now <h>"+fplayer.getPowerRounded()+" / "+fplayer.getPowerMaxRounded());
}
// call Event
Bukkit.getPluginManager().callEvent(powerLossEvent);
fplayer.onDeath();
fplayer.msg("<i>Your power is now <h>"+fplayer.getPowerRounded()+" / "+fplayer.getPowerMaxRounded());
// Send the message from the powerLossEvent
final String msg = powerLossEvent.getMessage();
if (msg != null && !msg.isEmpty())
{
fplayer.msg(msg);
}
// Call player onDeath if the event is not cancelled
if(!powerLossEvent.isCancelled())
{
fplayer.onDeath();
}
}
@EventHandler(priority = EventPriority.NORMAL)