mirror of
https://github.com/BentoBoxWorld/BentoBox.git
synced 2025-02-16 12:21:35 +01:00
Changed TeamEvent to fire off class-specific events.
This commit is contained in:
parent
ed6899c989
commit
18ad604b7b
@ -2,6 +2,8 @@ package us.tastybento.bskyblock.api.events.team;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Location;
|
||||
|
||||
import us.tastybento.bskyblock.api.events.IslandBaseEvent;
|
||||
import us.tastybento.bskyblock.database.objects.Island;
|
||||
|
||||
@ -11,7 +13,8 @@ import us.tastybento.bskyblock.database.objects.Island;
|
||||
* @author tastybento
|
||||
* @since 1.0
|
||||
*/
|
||||
public class TeamEvent extends IslandBaseEvent {
|
||||
public class TeamEvent {
|
||||
|
||||
public enum TeamReason {
|
||||
INVITE,
|
||||
JOIN,
|
||||
@ -24,44 +27,85 @@ public class TeamEvent extends IslandBaseEvent {
|
||||
UNKNOWN,
|
||||
UNINVITE
|
||||
};
|
||||
|
||||
/**
|
||||
* Player involved with this event
|
||||
*/
|
||||
private final UUID player;
|
||||
/**
|
||||
* True if this is an admin action
|
||||
*/
|
||||
private final boolean admin;
|
||||
/**
|
||||
* Reason for this event
|
||||
*/
|
||||
private final TeamReason reason;
|
||||
|
||||
private TeamEvent(Island island, UUID player, boolean admin, TeamReason reason) {
|
||||
// Final variables have to be declared in the constuctor
|
||||
super(island);
|
||||
this.player = player;
|
||||
this.admin = admin;
|
||||
this.reason = reason;
|
||||
}
|
||||
|
||||
public static TeamEventBuilder builder() {
|
||||
return new TeamEventBuilder();
|
||||
}
|
||||
|
||||
|
||||
public static class TeamJoinEvent extends IslandBaseEvent {
|
||||
private TeamJoinEvent(Island island, UUID player, boolean admin, Location location) {
|
||||
// Final variables have to be declared in the constuctor
|
||||
super(island, player, admin, location);
|
||||
}
|
||||
}
|
||||
public static class TeamInviteEvent extends IslandBaseEvent {
|
||||
private TeamInviteEvent(Island island, UUID player, boolean admin, Location location) {
|
||||
// Final variables have to be declared in the constuctor
|
||||
super(island, player, admin, location);
|
||||
}
|
||||
}
|
||||
public static class TeamLeaveEvent extends IslandBaseEvent {
|
||||
private TeamLeaveEvent(Island island, UUID player, boolean admin, Location location) {
|
||||
// Final variables have to be declared in the constuctor
|
||||
super(island, player, admin, location);
|
||||
}
|
||||
}
|
||||
public static class TeamRejectEvent extends IslandBaseEvent {
|
||||
private TeamRejectEvent(Island island, UUID player, boolean admin, Location location) {
|
||||
// Final variables have to be declared in the constuctor
|
||||
super(island, player, admin, location);
|
||||
}
|
||||
}
|
||||
public static class TeamKickEvent extends IslandBaseEvent {
|
||||
private TeamKickEvent(Island island, UUID player, boolean admin, Location location) {
|
||||
// Final variables have to be declared in the constuctor
|
||||
super(island, player, admin, location);
|
||||
}
|
||||
}
|
||||
public static class TeamMakeLeaderEvent extends IslandBaseEvent {
|
||||
private TeamMakeLeaderEvent(Island island, UUID player, boolean admin, Location location) {
|
||||
// Final variables have to be declared in the constuctor
|
||||
super(island, player, admin, location);
|
||||
}
|
||||
}
|
||||
public static class TeamInfoEvent extends IslandBaseEvent {
|
||||
private TeamInfoEvent(Island island, UUID player, boolean admin, Location location) {
|
||||
// Final variables have to be declared in the constuctor
|
||||
super(island, player, admin, location);
|
||||
}
|
||||
}
|
||||
public static class TeamDeleteEvent extends IslandBaseEvent {
|
||||
private TeamDeleteEvent(Island island, UUID player, boolean admin, Location location) {
|
||||
// Final variables have to be declared in the constuctor
|
||||
super(island, player, admin, location);
|
||||
}
|
||||
}
|
||||
public static class TeamUninviteEvent extends IslandBaseEvent {
|
||||
private TeamUninviteEvent(Island island, UUID player, boolean admin, Location location) {
|
||||
// Final variables have to be declared in the constuctor
|
||||
super(island, player, admin, location);
|
||||
}
|
||||
}
|
||||
public static class TeamGeneralEvent extends IslandBaseEvent {
|
||||
private TeamGeneralEvent(Island island, UUID player, boolean admin, Location location) {
|
||||
// Final variables have to be declared in the constuctor
|
||||
super(island, player, admin, location);
|
||||
}
|
||||
}
|
||||
|
||||
public static class TeamEventBuilder {
|
||||
// Here field are NOT final. They are just used for the building.
|
||||
private Island island;
|
||||
private UUID player;
|
||||
private TeamReason reason = TeamReason.UNKNOWN;
|
||||
private boolean admin;
|
||||
|
||||
private Location location;
|
||||
|
||||
public TeamEventBuilder island(Island island) {
|
||||
this.island = island;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* True if this is an admin driven event
|
||||
* @param admin
|
||||
@ -80,7 +124,7 @@ public class TeamEvent extends IslandBaseEvent {
|
||||
this.reason = reason;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param player involved in the event
|
||||
* @return
|
||||
@ -89,32 +133,36 @@ public class TeamEvent extends IslandBaseEvent {
|
||||
this.player = player;
|
||||
return this;
|
||||
}
|
||||
|
||||
public TeamEvent build() {
|
||||
return new TeamEvent(island, player, admin, reason);
|
||||
|
||||
public TeamEventBuilder location(Location center) {
|
||||
this.location = center;
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
||||
public IslandBaseEvent build() {
|
||||
switch (reason) {
|
||||
case JOIN:
|
||||
return new TeamJoinEvent(island, player, admin, location);
|
||||
case INVITE:
|
||||
return new TeamInviteEvent(island, player, admin, location);
|
||||
case LEAVE:
|
||||
return new TeamLeaveEvent(island, player, admin, location);
|
||||
case REJECT:
|
||||
return new TeamRejectEvent(island, player, admin, location);
|
||||
case KICK:
|
||||
return new TeamKickEvent(island, player, admin, location);
|
||||
case MAKELEADER:
|
||||
return new TeamMakeLeaderEvent(island, player, admin, location);
|
||||
case INFO:
|
||||
return new TeamInfoEvent(island, player, admin, location);
|
||||
case DELETE:
|
||||
return new TeamDeleteEvent(island, player, admin, location);
|
||||
case UNINVITE:
|
||||
return new TeamUninviteEvent(island, player, admin, location);
|
||||
default:
|
||||
return new TeamGeneralEvent(island, player, admin, location);
|
||||
|
||||
/**
|
||||
* @return the player involved with this event
|
||||
*/
|
||||
public UUID getPlayer() {
|
||||
return player;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if this is an admin action
|
||||
*/
|
||||
public boolean isAdmin() {
|
||||
return admin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the reason for this team event
|
||||
*/
|
||||
public TeamReason getReason() {
|
||||
return reason;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
|
||||
import us.tastybento.bskyblock.api.commands.User;
|
||||
import us.tastybento.bskyblock.api.events.IslandBaseEvent;
|
||||
import us.tastybento.bskyblock.api.events.team.TeamEvent;
|
||||
import us.tastybento.bskyblock.api.events.team.TeamEvent.TeamReason;
|
||||
import us.tastybento.bskyblock.config.Settings;
|
||||
@ -46,7 +47,7 @@ public class IslandInviteAcceptCommand extends AbstractIslandTeamCommandArgument
|
||||
if (DEBUG)
|
||||
plugin.getLogger().info("DEBUG: Invite is valid");
|
||||
// Fire event so add-ons can run commands, etc.
|
||||
TeamEvent event = TeamEvent.builder()
|
||||
IslandBaseEvent event = TeamEvent.builder()
|
||||
.island(getIslands()
|
||||
.getIsland(prospectiveTeamLeaderUUID))
|
||||
.reason(TeamReason.JOIN)
|
||||
|
@ -6,6 +6,7 @@ import java.util.UUID;
|
||||
import org.bukkit.ChatColor;
|
||||
|
||||
import us.tastybento.bskyblock.api.commands.User;
|
||||
import us.tastybento.bskyblock.api.events.IslandBaseEvent;
|
||||
import us.tastybento.bskyblock.api.events.team.TeamEvent;
|
||||
import us.tastybento.bskyblock.api.events.team.TeamEvent.TeamReason;
|
||||
|
||||
@ -23,7 +24,7 @@ public class IslandInviteRejectCommand extends AbstractIslandTeamCommandArgument
|
||||
// Reject /island reject
|
||||
if (inviteList.containsKey(playerUUID)) {
|
||||
// Fire event so add-ons can run commands, etc.
|
||||
TeamEvent event = TeamEvent.builder()
|
||||
IslandBaseEvent event = TeamEvent.builder()
|
||||
.island(getIslands()
|
||||
.getIsland(inviteList.get(playerUUID)))
|
||||
.reason(TeamReason.REJECT)
|
||||
|
@ -8,6 +8,7 @@ import org.bukkit.ChatColor;
|
||||
import org.bukkit.permissions.PermissionAttachmentInfo;
|
||||
|
||||
import us.tastybento.bskyblock.api.commands.User;
|
||||
import us.tastybento.bskyblock.api.events.IslandBaseEvent;
|
||||
import us.tastybento.bskyblock.api.events.team.TeamEvent;
|
||||
import us.tastybento.bskyblock.api.events.team.TeamEvent.TeamReason;
|
||||
import us.tastybento.bskyblock.config.Settings;
|
||||
@ -29,7 +30,7 @@ public class IslandTeamCommand extends AbstractIslandTeamCommandArgument {
|
||||
if (DEBUG)
|
||||
plugin.getLogger().info("DEBUG: executing team command for " + playerUUID);
|
||||
// Fire event so add-ons can run commands, etc.
|
||||
TeamEvent event = TeamEvent.builder()
|
||||
IslandBaseEvent event = TeamEvent.builder()
|
||||
.island(getIslands()
|
||||
.getIsland(playerUUID))
|
||||
.reason(TeamReason.INFO)
|
||||
|
@ -5,12 +5,12 @@ import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.apache.commons.lang.math.NumberUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.permissions.PermissionAttachmentInfo;
|
||||
|
||||
import us.tastybento.bskyblock.api.commands.User;
|
||||
import us.tastybento.bskyblock.api.events.IslandBaseEvent;
|
||||
import us.tastybento.bskyblock.api.events.team.TeamEvent;
|
||||
import us.tastybento.bskyblock.api.events.team.TeamEvent.TeamReason;
|
||||
import us.tastybento.bskyblock.config.Settings;
|
||||
@ -106,7 +106,7 @@ public class IslandTeamInviteCommand extends AbstractIslandTeamCommandArgument {
|
||||
user.sendMessage(ChatColor.RED + "invite.removingInvite");
|
||||
}
|
||||
// Fire event so add-ons can run commands, etc.
|
||||
TeamEvent event = TeamEvent.builder()
|
||||
IslandBaseEvent event = TeamEvent.builder()
|
||||
.island(getIslands().getIsland(playerUUID))
|
||||
.reason(TeamReason.INVITE)
|
||||
.involvedPlayer(invitedPlayerUUID)
|
||||
|
@ -9,6 +9,7 @@ import org.bukkit.ChatColor;
|
||||
import org.bukkit.permissions.PermissionAttachmentInfo;
|
||||
|
||||
import us.tastybento.bskyblock.api.commands.User;
|
||||
import us.tastybento.bskyblock.api.events.IslandBaseEvent;
|
||||
import us.tastybento.bskyblock.api.events.team.TeamEvent;
|
||||
import us.tastybento.bskyblock.api.events.team.TeamEvent.TeamReason;
|
||||
import us.tastybento.bskyblock.config.Settings;
|
||||
@ -54,7 +55,12 @@ public class IslandTeamPromoteCommand extends AbstractIslandTeamCommandArgument
|
||||
return true;
|
||||
}
|
||||
// Fire event so add-ons can run commands, etc.
|
||||
TeamEvent event = TeamEvent.builder().island(getIslands().getIsland(playerUUID)).reason(TeamReason.MAKELEADER).involvedPlayer(targetUUID).build();
|
||||
IslandBaseEvent event = TeamEvent.builder()
|
||||
.island(getIslands()
|
||||
.getIsland(playerUUID))
|
||||
.reason(TeamReason.MAKELEADER)
|
||||
.involvedPlayer(targetUUID)
|
||||
.build();
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
if (event.isCancelled()) return true;
|
||||
|
||||
|
@ -6,6 +6,7 @@ import java.util.UUID;
|
||||
import org.bukkit.ChatColor;
|
||||
|
||||
import us.tastybento.bskyblock.api.commands.User;
|
||||
import us.tastybento.bskyblock.api.events.IslandBaseEvent;
|
||||
import us.tastybento.bskyblock.api.events.team.TeamEvent;
|
||||
import us.tastybento.bskyblock.api.events.team.TeamEvent.TeamReason;
|
||||
import us.tastybento.bskyblock.config.Settings;
|
||||
@ -33,7 +34,7 @@ public class IslandTeamUninviteCommand extends AbstractIslandTeamCommandArgument
|
||||
}
|
||||
|
||||
// Fire event so add-ons can run commands, etc.
|
||||
TeamEvent event = TeamEvent.builder()
|
||||
IslandBaseEvent event = TeamEvent.builder()
|
||||
.island(getIslands()
|
||||
.getIsland(playerUUID))
|
||||
.reason(TeamReason.UNINVITE)
|
||||
|
@ -13,6 +13,7 @@ import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
import us.tastybento.bskyblock.api.events.IslandBaseEvent;
|
||||
import us.tastybento.bskyblock.api.events.team.TeamEvent;
|
||||
import us.tastybento.bskyblock.api.events.team.TeamEvent.TeamReason;
|
||||
|
||||
@ -39,12 +40,12 @@ public class TestTest {
|
||||
public void createAndSave() {
|
||||
|
||||
|
||||
TeamEvent event = TeamEvent.builder()
|
||||
IslandBaseEvent event = TeamEvent.builder()
|
||||
//.island(getIslands().getIsland(playerUUID))
|
||||
.reason(TeamReason.INFO)
|
||||
.involvedPlayer(playerUUID)
|
||||
.build();
|
||||
assertEquals(playerUUID, event.getPlayer());
|
||||
assertEquals(playerUUID, event.getPlayerUUID());
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user