Implement event for role changes

This commit is contained in:
MTM123 2019-08-29 15:04:51 +03:00
parent b30711ebcf
commit 8c656eea6e
2 changed files with 62 additions and 1 deletions

View File

@ -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;
}
}

View File

@ -241,7 +241,18 @@ public abstract class MemoryFPlayer implements FPlayer {
return this.role;
}
public void setRole(Role role) { this.role = role; }
public void setRole(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() {
return this.powerBoost;