diff --git a/src/main/java/us/tastybento/bskyblock/api/events/island/TeamEvent.java b/src/main/java/us/tastybento/bskyblock/api/events/island/TeamEvent.java
deleted file mode 100644
index 99a9a8b0a..000000000
--- a/src/main/java/us/tastybento/bskyblock/api/events/island/TeamEvent.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package us.tastybento.bskyblock.api.events.island;
-
-import java.util.UUID;
-
-import us.tastybento.bskyblock.api.events.IslandEvent;
-import us.tastybento.bskyblock.database.objects.Island;
-
-/**
- * Fired when a team event happens.
- *
- * @author tastybento
- * @since 1.0
- */
-public class TeamEvent extends IslandEvent {
- public enum TeamReason {
- INVITE,
- JOIN,
- REJECT,
- LEAVE,
- KICK,
- MAKELEADER,
- INFO,
- DELETE,
- UNKNOWN,
- UNINVITE
- };
-
- /**
- * Player involved with this event
- */
- private UUID player;
- /**
- * True if this is an admin action
- */
- private boolean admin;
- /**
- * Reason for this event
- */
- private TeamReason reason = TeamReason.UNKNOWN;
-
- public TeamEvent(Island island) {
- super(island);
- }
-
- /**
- * @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;
- }
-
- /**
- * True if this is an admin driven event
- * @param admin
- * @return TeamEvent
- */
- public TeamEvent admin(boolean admin) {
- this.admin = admin;
- return this;
- }
-
- /**
- * @param reason for the event
- * @return
- */
- public TeamEvent reason(TeamReason reason) {
- this.reason = reason;
- return this;
- }
-
- /**
- * @param player involved in the event
- * @return
- */
- public TeamEvent involvedPlayer(UUID player) {
- this.player = player;
- return this;
- }
-}
diff --git a/src/main/java/us/tastybento/bskyblock/api/events/team/PlayerAcceptInviteEvent.java b/src/main/java/us/tastybento/bskyblock/api/events/team/PlayerAcceptInviteEvent.java
deleted file mode 100644
index faea7244e..000000000
--- a/src/main/java/us/tastybento/bskyblock/api/events/team/PlayerAcceptInviteEvent.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package us.tastybento.bskyblock.api.events.team;
-
-import org.bukkit.entity.Player;
-import org.bukkit.event.Event;
-import org.bukkit.event.HandlerList;
-
-/**
- * Fired when a player accepts an invite to join a team.
- *
- * @author Poslovitch
- * @since 1.0
- */
-public class PlayerAcceptInviteEvent extends Event {
- private static final HandlerList handlers = new HandlerList();
- private final Player player;
-
- /**
- * @param player
- */
- public PlayerAcceptInviteEvent(Player player) {
- this.player = player;
- }
-
- /**
- * @return the player
- */
- public Player getPlayer() {
- return this.player;
- }
-
- @Override
- public HandlerList getHandlers() {
- return handlers;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
-}
diff --git a/src/main/java/us/tastybento/bskyblock/api/events/team/PlayerRejectInviteEvent.java b/src/main/java/us/tastybento/bskyblock/api/events/team/PlayerRejectInviteEvent.java
deleted file mode 100644
index 345cc7a97..000000000
--- a/src/main/java/us/tastybento/bskyblock/api/events/team/PlayerRejectInviteEvent.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * This file is part of ASkyBlock.
- *
- * ASkyBlock is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * ASkyBlock is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with ASkyBlock. If not, see .
- *******************************************************************************/
-
-package us.tastybento.bskyblock.api.events.team;
-
-import org.bukkit.entity.Player;
-import org.bukkit.event.Event;
-import org.bukkit.event.HandlerList;
-
-/**
- * Fired when a player rejects an invite to join a team.
- *
- * @author Poslovitch
- * @since 1.0
- */
-public class PlayerRejectInviteEvent extends Event {
- private static final HandlerList handlers = new HandlerList();
- private final Player player;
-
- /**
- * @param player
- */
- public PlayerRejectInviteEvent(Player player) {
- this.player = player;
- }
-
- /**
- * @return the player
- */
- public Player getPlayer() {
- return this.player;
- }
-
- @Override
- public HandlerList getHandlers() {
- return handlers;
- }
-
- public static HandlerList getHandlerList() {
- return handlers;
- }
-}
diff --git a/src/main/java/us/tastybento/bskyblock/api/events/team/TeamEvent.java b/src/main/java/us/tastybento/bskyblock/api/events/team/TeamEvent.java
new file mode 100644
index 000000000..2d50f9668
--- /dev/null
+++ b/src/main/java/us/tastybento/bskyblock/api/events/team/TeamEvent.java
@@ -0,0 +1,120 @@
+package us.tastybento.bskyblock.api.events.team;
+
+import java.util.UUID;
+
+import us.tastybento.bskyblock.api.events.IslandEvent;
+import us.tastybento.bskyblock.database.objects.Island;
+
+/**
+ * Fired when a team event happens.
+ *
+ * @author tastybento
+ * @since 1.0
+ */
+public class TeamEvent extends IslandEvent {
+ public enum TeamReason {
+ INVITE,
+ JOIN,
+ REJECT,
+ LEAVE,
+ KICK,
+ MAKELEADER,
+ INFO,
+ DELETE,
+ 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 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;
+
+ public TeamEventBuilder island(Island island) {
+ this.island = island;
+ return this;
+ }
+
+ /**
+ * True if this is an admin driven event
+ * @param admin
+ * @return TeamEvent
+ */
+ public TeamEventBuilder admin(boolean admin) {
+ this.admin = admin;
+ return this;
+ }
+
+ /**
+ * @param reason for the event
+ * @return
+ */
+ public TeamEventBuilder reason(TeamReason reason) {
+ this.reason = reason;
+ return this;
+ }
+
+ /**
+ * @param player involved in the event
+ * @return
+ */
+ public TeamEventBuilder involvedPlayer(UUID player) {
+ this.player = player;
+ return this;
+ }
+
+ public TeamEvent build() {
+ return new TeamEvent(island, player, admin, reason);
+ }
+
+ }
+
+ /**
+ * @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;
+ }
+
+}
diff --git a/src/main/java/us/tastybento/bskyblock/commands/AdminCommand.java b/src/main/java/us/tastybento/bskyblock/commands/AdminCommand.java
index 64a8c3e17..3e55f3c16 100755
--- a/src/main/java/us/tastybento/bskyblock/commands/AdminCommand.java
+++ b/src/main/java/us/tastybento/bskyblock/commands/AdminCommand.java
@@ -13,8 +13,8 @@ import org.bukkit.permissions.PermissionAttachmentInfo;
import us.tastybento.bskyblock.BSkyBlock;
import us.tastybento.bskyblock.api.commands.AbstractCommand;
-import us.tastybento.bskyblock.api.events.island.TeamEvent;
-import us.tastybento.bskyblock.api.events.island.TeamEvent.TeamReason;
+import us.tastybento.bskyblock.api.events.team.TeamEvent;
+import us.tastybento.bskyblock.api.events.team.TeamEvent.TeamReason;
import us.tastybento.bskyblock.config.Settings;
import us.tastybento.bskyblock.database.objects.Island;
import us.tastybento.bskyblock.util.Util;
@@ -100,10 +100,10 @@ public class AdminCommand extends AbstractCommand {
switch (args[0].toLowerCase()) {
case "info":
// Fire event so add-ons can run commands, etc.
- TeamEvent event = new TeamEvent(getIslands().getIsland(targetPlayer))
- .admin(true)
- .reason(TeamReason.INFO)
- .involvedPlayer(targetPlayer);
+ TeamEvent event = TeamEvent.builder().island(getIslands().getIsland(targetPlayer))
+ .admin(true)
+ .reason(TeamReason.INFO)
+ .involvedPlayer(targetPlayer).build();
plugin.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) return;
// Display info
@@ -126,10 +126,10 @@ public class AdminCommand extends AbstractCommand {
return;
}
// Fire event so add-ons can run commands, etc.
- TeamEvent event2 = new TeamEvent(getIslands().getIsland(targetPlayer))
+ TeamEvent event2 = TeamEvent.builder().island(getIslands().getIsland(targetPlayer))
.admin(true)
.reason(TeamReason.MAKELEADER)
- .involvedPlayer(targetPlayer);
+ .involvedPlayer(targetPlayer).build();
plugin.getServer().getPluginManager().callEvent(event2);
if (event2.isCancelled()) return;
// Display info
@@ -201,10 +201,10 @@ public class AdminCommand extends AbstractCommand {
return;
}
// Fire event so add-ons can run commands, etc.
- TeamEvent event3 = new TeamEvent(getIslands().getIsland(targetPlayer))
+ TeamEvent event3 = TeamEvent.builder().island(getIslands().getIsland(targetPlayer))
.admin(true)
.reason(TeamReason.KICK)
- .involvedPlayer(targetPlayer);
+ .involvedPlayer(targetPlayer).build();
plugin.getServer().getPluginManager().callEvent(event3);
if (event3.isCancelled()) return;
// Display info
@@ -223,10 +223,10 @@ public class AdminCommand extends AbstractCommand {
return;
case "delete":
// Fire event so add-ons can run commands, etc.
- TeamEvent event4 = new TeamEvent(getIslands().getIsland(targetPlayer))
+ TeamEvent event4 = TeamEvent.builder().island(getIslands().getIsland(targetPlayer))
.admin(true)
.reason(TeamReason.DELETE)
- .involvedPlayer(targetPlayer);
+ .involvedPlayer(targetPlayer).build();
plugin.getServer().getPluginManager().callEvent(event4);
if (event4.isCancelled()) return;
UUID teamLeader = getIslands().getTeamLeader(targetPlayer);
@@ -283,10 +283,10 @@ public class AdminCommand extends AbstractCommand {
// Get the team's island
Island teamIsland = getIslands().getIsland(targetPlayer2);
// Fire event so add-ons can run commands, etc.
- TeamEvent event = new TeamEvent(teamIsland)
+ TeamEvent event = TeamEvent.builder().island(teamIsland)
.admin(true)
.reason(TeamReason.JOIN)
- .involvedPlayer(targetPlayer);
+ .involvedPlayer(targetPlayer).build();
plugin.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) return;
// Move player to team's island
diff --git a/src/main/java/us/tastybento/bskyblock/commands/IslandCommand.java b/src/main/java/us/tastybento/bskyblock/commands/IslandCommand.java
index 0a6a35aa4..7d4e06eeb 100755
--- a/src/main/java/us/tastybento/bskyblock/commands/IslandCommand.java
+++ b/src/main/java/us/tastybento/bskyblock/commands/IslandCommand.java
@@ -21,9 +21,8 @@ import com.google.common.collect.HashBiMap;
import us.tastybento.bskyblock.BSkyBlock;
import us.tastybento.bskyblock.api.commands.AbstractCommand;
-import us.tastybento.bskyblock.api.events.island.TeamEvent;
-import us.tastybento.bskyblock.api.events.island.TeamEvent.TeamReason;
-import us.tastybento.bskyblock.api.events.team.PlayerAcceptInviteEvent;
+import us.tastybento.bskyblock.api.events.team.TeamEvent;
+import us.tastybento.bskyblock.api.events.team.TeamEvent.TeamReason;
import us.tastybento.bskyblock.config.Settings;
import us.tastybento.bskyblock.database.objects.Island;
import us.tastybento.bskyblock.schematics.Schematic;
@@ -473,7 +472,7 @@ public class IslandCommand extends AbstractCommand {
if (DEBUG)
plugin.getLogger().info("DEBUG: executing team command for " + playerUUID);
// Fire event so add-ons can run commands, etc.
- TeamEvent event = new TeamEvent(getIslands().getIsland(playerUUID)).reason(TeamReason.INFO).involvedPlayer(playerUUID);
+ TeamEvent event = TeamEvent.builder().island(getIslands().getIsland(playerUUID)).reason(TeamReason.INFO).involvedPlayer(playerUUID).build();
plugin.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) return;
if (teamLeaderUUID.equals(playerUUID)) {
@@ -623,7 +622,7 @@ public class IslandCommand extends AbstractCommand {
Util.sendMessage(player, ChatColor.RED + getLocale(sender).get("invite.removingInvite"));
}
// Fire event so add-ons can run commands, etc.
- TeamEvent event = new TeamEvent(getIslands().getIsland(playerUUID)).reason(TeamReason.INVITE).involvedPlayer(invitedPlayerUUID);
+ TeamEvent event = TeamEvent.builder().island(getIslands().getIsland(playerUUID)).reason(TeamReason.INVITE).involvedPlayer(invitedPlayerUUID).build();
plugin.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) return;
// Put the invited player (key) onto the list with inviter (value)
@@ -673,7 +672,7 @@ public class IslandCommand extends AbstractCommand {
@Override
public void execute(CommandSender sender, String[] args) {
// Fire event so add-ons can run commands, etc.
- TeamEvent event = new TeamEvent(getIslands().getIsland(playerUUID)).reason(TeamReason.UNINVITE).involvedPlayer(playerUUID);
+ TeamEvent event = TeamEvent.builder().island(getIslands().getIsland(playerUUID)).reason(TeamReason.UNINVITE).involvedPlayer(playerUUID).build();
plugin.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) return;
if (inviteList.inverse().containsKey(playerUUID)) {
@@ -720,7 +719,7 @@ public class IslandCommand extends AbstractCommand {
return;
}
// Fire event so add-ons can run commands, etc.
- TeamEvent event = new TeamEvent(getIslands().getIsland(playerUUID)).reason(TeamReason.LEAVE).involvedPlayer(playerUUID);
+ TeamEvent event = TeamEvent.builder().island(getIslands().getIsland(playerUUID)).reason(TeamReason.LEAVE).involvedPlayer(playerUUID).build();
plugin.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) return;
// Check for confirmation
@@ -807,7 +806,7 @@ public class IslandCommand extends AbstractCommand {
return;
}
// Fire event so add-ons can run commands, etc.
- TeamEvent event = new TeamEvent(getIslands().getIsland(playerUUID)).reason(TeamReason.KICK).involvedPlayer(targetPlayerUUID);
+ TeamEvent event = TeamEvent.builder().island(getIslands().getIsland(playerUUID)).reason(TeamReason.KICK).involvedPlayer(targetPlayerUUID).build();
plugin.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) return;
// Check for confirmation
@@ -894,7 +893,7 @@ public class IslandCommand extends AbstractCommand {
if (DEBUG)
plugin.getLogger().info("DEBUG: Invite is valid");
// Fire event so add-ons can run commands, etc.
- TeamEvent event = new TeamEvent(getIslands().getIsland(prospectiveTeamLeaderUUID)).reason(TeamReason.JOIN).involvedPlayer(playerUUID);
+ TeamEvent event = TeamEvent.builder().island(getIslands().getIsland(prospectiveTeamLeaderUUID)).reason(TeamReason.JOIN).involvedPlayer(playerUUID).build();
plugin.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) return;
// Remove the invite
@@ -929,8 +928,6 @@ public class IslandCommand extends AbstractCommand {
// Put player back into normal mode
player.setGameMode(GameMode.SURVIVAL);
- // Fire event so add-ons can run commands, etc.
- plugin.getServer().getPluginManager().callEvent(new PlayerAcceptInviteEvent(player));
Util.sendMessage(player, ChatColor.GREEN + getLocale(sender).get("invite.youHaveJoinedAnIsland").replace("[label]", Settings.ISLANDCOMMAND));
if (plugin.getServer().getPlayer(inviteList.get(playerUUID)) != null) {
@@ -970,7 +967,7 @@ public class IslandCommand extends AbstractCommand {
// Reject /island reject
if (inviteList.containsKey(playerUUID)) {
// Fire event so add-ons can run commands, etc.
- TeamEvent event = new TeamEvent(getIslands().getIsland(inviteList.get(playerUUID))).reason(TeamReason.REJECT).involvedPlayer(playerUUID);
+ TeamEvent event = TeamEvent.builder().island(getIslands().getIsland(inviteList.get(playerUUID))).reason(TeamReason.REJECT).involvedPlayer(playerUUID).build();
plugin.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) return;
@@ -1038,7 +1035,7 @@ public class IslandCommand extends AbstractCommand {
return;
}
// Fire event so add-ons can run commands, etc.
- TeamEvent event = new TeamEvent(getIslands().getIsland(playerUUID)).reason(TeamReason.MAKELEADER).involvedPlayer(targetUUID);
+ TeamEvent event = TeamEvent.builder().island(getIslands().getIsland(playerUUID)).reason(TeamReason.MAKELEADER).involvedPlayer(targetUUID).build();
plugin.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) return;