For some reason I like ...Change events. The power loss event is now converted to a power change event.

This commit is contained in:
Olof Larsson 2013-04-19 14:39:44 +02:00
parent 9770cb8983
commit afe944d3c4
4 changed files with 72 additions and 33 deletions

View File

@ -9,6 +9,8 @@ import org.bukkit.entity.Player;
import com.massivecraft.factions.event.FactionsEventLandClaim; import com.massivecraft.factions.event.FactionsEventLandClaim;
import com.massivecraft.factions.event.FactionsEventMembershipChange; import com.massivecraft.factions.event.FactionsEventMembershipChange;
import com.massivecraft.factions.event.FactionsEventMembershipChange.MembershipChangeReason; import com.massivecraft.factions.event.FactionsEventMembershipChange.MembershipChangeReason;
import com.massivecraft.factions.event.FactionsEventPowerChange;
import com.massivecraft.factions.event.FactionsEventPowerChange.PowerChangeReason;
import com.massivecraft.factions.iface.EconomyParticipator; import com.massivecraft.factions.iface.EconomyParticipator;
import com.massivecraft.factions.iface.RelationParticipator; import com.massivecraft.factions.iface.RelationParticipator;
import com.massivecraft.factions.integration.Econ; import com.massivecraft.factions.integration.Econ;
@ -470,6 +472,11 @@ public class FPlayer extends SenderEntity<FPlayer> implements EconomyParticipato
} }
} }
FactionsEventPowerChange event = new FactionsEventPowerChange(null, this, PowerChangeReason.TIME, powerTarget);
event.run();
if (event.isCancelled()) return;
powerTarget = event.getNewPower();
this.setPower(powerTarget, now); this.setPower(powerTarget, now);
} }

View File

@ -0,0 +1,56 @@
package com.massivecraft.factions.event;
import org.bukkit.command.CommandSender;
import org.bukkit.event.HandlerList;
import com.massivecraft.factions.FPlayer;
public class FactionsEventPowerChange extends FactionsEventAbstractSender
{
// -------------------------------------------- //
// REQUIRED EVENT CODE
// -------------------------------------------- //
private static final HandlerList handlers = new HandlerList();
@Override public HandlerList getHandlers() { return handlers; }
public static HandlerList getHandlerList() { return handlers; }
// -------------------------------------------- //
// FIELDS
// -------------------------------------------- //
private final FPlayer fplayer;
public FPlayer getFPlayer() { return this.fplayer; }
private final PowerChangeReason reason;
public PowerChangeReason getReason() { return this.reason; }
private double newPower;
public double getNewPower() { return this.newPower; }
public void setNewPower(double newPower) { this.newPower = newPower; }
// -------------------------------------------- //
// CONSTRUCT
// -------------------------------------------- //
public FactionsEventPowerChange(CommandSender sender, FPlayer fplayer, PowerChangeReason reason, double newPower)
{
super(sender);
this.fplayer = fplayer;
this.reason = reason;
this.newPower = newPower;
}
// -------------------------------------------- //
// REASON ENUM
// -------------------------------------------- //
public enum PowerChangeReason
{
TIME,
DEATH,
UNDEFINED,
;
}
}

View File

@ -1,27 +0,0 @@
package com.massivecraft.factions.event;
import org.bukkit.command.CommandSender;
import org.bukkit.event.HandlerList;
public class FactionsEventPowerLoss extends FactionsEventAbstractSender
{
// -------------------------------------------- //
// REQUIRED EVENT CODE
// -------------------------------------------- //
private static final HandlerList handlers = new HandlerList();
@Override public HandlerList getHandlers() { return handlers; }
public static HandlerList getHandlerList() { return handlers; }
// -------------------------------------------- //
// CONSTRUCT
// -------------------------------------------- //
// TODO: Replace this event with a power change event?
public FactionsEventPowerLoss(CommandSender sender)
{
super(sender);
}
}

View File

@ -54,7 +54,8 @@ import com.massivecraft.factions.FPlayerColl;
import com.massivecraft.factions.Faction; import com.massivecraft.factions.Faction;
import com.massivecraft.factions.Factions; import com.massivecraft.factions.Factions;
import com.massivecraft.factions.Rel; import com.massivecraft.factions.Rel;
import com.massivecraft.factions.event.FactionsEventPowerLoss; import com.massivecraft.factions.event.FactionsEventPowerChange;
import com.massivecraft.factions.event.FactionsEventPowerChange.PowerChangeReason;
import com.massivecraft.factions.util.VisualizeUtil; import com.massivecraft.factions.util.VisualizeUtil;
import com.massivecraft.mcore.ps.PS; import com.massivecraft.mcore.ps.PS;
import com.massivecraft.mcore.util.MUtil; import com.massivecraft.mcore.util.MUtil;
@ -105,13 +106,15 @@ public class FactionsListenerMain implements Listener
return; return;
} }
// ... and our special event doesn't get cancelled ... // ... Event ...
FactionsEventPowerLoss powerLossEvent = new FactionsEventPowerLoss(player); double newPower = fplayer.getPower() + ConfServer.powerPerDeath;
powerLossEvent.run(); FactionsEventPowerChange powerChangeEvent = new FactionsEventPowerChange(null, fplayer, PowerChangeReason.DEATH, newPower);
if (powerLossEvent.isCancelled()) return; powerChangeEvent.run();
if (powerChangeEvent.isCancelled()) return;
newPower = powerChangeEvent.getNewPower();
// ... alter the power ... // ... alter the power ...
fplayer.setPower(fplayer.getPower() + ConfServer.powerPerDeath); fplayer.setPower(newPower);
// ... and inform the player. // ... and inform the player.
fplayer.msg("<i>Your power is now <h>%d / %d", fplayer.getPowerRounded(), fplayer.getPowerMaxRounded()); fplayer.msg("<i>Your power is now <h>%d / %d", fplayer.getPowerRounded(), fplayer.getPowerMaxRounded());