From 87ede00cc387612cfaaf0942e24ac2e212bda339 Mon Sep 17 00:00:00 2001 From: Driftay Date: Thu, 29 Aug 2019 07:53:34 -0400 Subject: [PATCH] FPlayerRoleChangeEvent Added --- .../event/FPlayerRoleChangeEvent.java | 50 +++++++++++++++++++ .../factions/zcore/persist/MemoryFPlayer.java | 10 +++- 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/massivecraft/factions/event/FPlayerRoleChangeEvent.java diff --git a/src/main/java/com/massivecraft/factions/event/FPlayerRoleChangeEvent.java b/src/main/java/com/massivecraft/factions/event/FPlayerRoleChangeEvent.java new file mode 100644 index 00000000..fdbec66a --- /dev/null +++ b/src/main/java/com/massivecraft/factions/event/FPlayerRoleChangeEvent.java @@ -0,0 +1,50 @@ +package com.massivecraft.factions.event; + +import com.massivecraft.factions.FPlayer; +import com.massivecraft.factions.Faction; +import com.massivecraft.factions.struct.Role; +import org.bukkit.event.Cancellable; + +/** + * Represents {@link Role} change of a factions player + * @see FPlayer#getRole() + */ +public class FPlayerRoleChangeEvent extends FactionPlayerEvent implements Cancellable { + + private boolean cancelled; + private final Role from; + private Role to; + + public FPlayerRoleChangeEvent(Faction faction, FPlayer fPlayer, Role from, Role to) { + super(faction, fPlayer); + this.from = from; + this.to = to; + } + + public FPlayerRoleChangeEvent(Faction faction, FPlayer fPlayer, Role to) { + this(faction, fPlayer, fPlayer.getRole(), to); + } + + @Override + public boolean isCancelled() { + return false; + } + + @Override + public void setCancelled(boolean cancelled) { + this.cancelled = cancelled; + } + + public Role getFrom() { + return from; + } + + public Role getTo() { + return to; + } + + public void setTo(Role to) { + this.to = to; + } + +} diff --git a/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFPlayer.java b/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFPlayer.java index 9e026bc7..d2d1544b 100644 --- a/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFPlayer.java +++ b/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFPlayer.java @@ -242,7 +242,15 @@ public abstract class MemoryFPlayer implements FPlayer { } public void setRole(Role role) { - this.role = role; + if (this.role == role) + return; + + FPlayerRoleChangeEvent event = new FPlayerRoleChangeEvent(getFaction(), this, role); + Bukkit.getPluginManager().callEvent(event); + + if (!event.isCancelled()) { + this.role = event.getTo(); + } } public double getPowerBoost() {