diff --git a/src/main/java/us/tastybento/bskyblock/api/events/IslandEvent.java b/src/main/java/us/tastybento/bskyblock/api/events/IslandEvent.java
index 4f8192f71..2258a29f0 100644
--- a/src/main/java/us/tastybento/bskyblock/api/events/IslandEvent.java
+++ b/src/main/java/us/tastybento/bskyblock/api/events/IslandEvent.java
@@ -1,5 +1,7 @@
package us.tastybento.bskyblock.api.events;
+import java.util.UUID;
+
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
@@ -30,6 +32,13 @@ public class IslandEvent extends Event implements Cancellable{
public Island getIsland(){
return this.island;
}
+
+ /**
+ * @return the owner of the island
+ */
+ public UUID getOwner() {
+ return this.getOwner();
+ }
@Override
public HandlerList getHandlers() {
diff --git a/src/main/java/us/tastybento/bskyblock/api/events/island/IslandChangeOwnerEvent.java b/src/main/java/us/tastybento/bskyblock/api/events/island/IslandChangeOwnerEvent.java
deleted file mode 100644
index a7387936d..000000000
--- a/src/main/java/us/tastybento/bskyblock/api/events/island/IslandChangeOwnerEvent.java
+++ /dev/null
@@ -1,41 +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 the owner of an island changes
- *
- * @author Poslovitch
- * @version 1.0
- */
-public class IslandChangeOwnerEvent extends IslandEvent {
- private final UUID oldOwner, newOwner;
-
- /**
- * @param island
- * @param oldOwner
- * @param newOwner
- */
- public IslandChangeOwnerEvent(Island island, UUID oldOwner, UUID newOwner) {
- super(island);
- this.oldOwner = oldOwner;
- this.newOwner = newOwner;
- }
-
- /**
- * @return the old owner
- */
- public UUID getOldOwner() {
- return oldOwner;
- }
-
- /**
- * @return the new owner
- */
- public UUID getNewOwner() {
- return newOwner;
- }
-}
diff --git a/src/main/java/us/tastybento/bskyblock/api/events/island/IslandJoinEvent.java b/src/main/java/us/tastybento/bskyblock/api/events/island/IslandJoinEvent.java
deleted file mode 100644
index 445da4cc0..000000000
--- a/src/main/java/us/tastybento/bskyblock/api/events/island/IslandJoinEvent.java
+++ /dev/null
@@ -1,41 +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 player joins an existing island.
- *
- * @author tastybento
- * @since 1.0
- */
-public class IslandJoinEvent extends IslandEvent {
- private final UUID player;
-
- /**
- * @param island
- * @param player
- */
- public IslandJoinEvent(Island island, UUID player) {
- super(island);
- this.player = player;
- }
-
- /**
- * @return the player
- */
- public UUID getPlayer() {
- return player;
- }
-
- /**
- * Convenience method suggested by Exloki.
- * Equals to getIsland().getOwner();
- * @return the owner of the joined island
- */
- public UUID getNewIslandOwner() {
- return getIsland().getOwner();
- }
-}
diff --git a/src/main/java/us/tastybento/bskyblock/api/events/island/IslandLeaveEvent.java b/src/main/java/us/tastybento/bskyblock/api/events/island/IslandLeaveEvent.java
deleted file mode 100644
index 141e4fbcc..000000000
--- a/src/main/java/us/tastybento/bskyblock/api/events/island/IslandLeaveEvent.java
+++ /dev/null
@@ -1,41 +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 player leaves an existing island.
- *
- * @author tastybento
- * @since 1.0
- */
-public class IslandLeaveEvent extends IslandEvent {
- private final UUID player;
-
- /**
- * @param island
- * @param player
- */
- public IslandLeaveEvent(Island island, UUID player) {
- super(island);
- this.player = player;
- }
-
- /**
- * @return the player
- */
- public UUID getPlayer() {
- return player;
- }
-
- /**
- * Convenience method suggested by Exloki.
- * Equals to getIsland().getOwner();
- * @return the owner of the left island
- */
- public UUID getOldIslandOwner() {
- return getIsland().getOwner();
- }
-}
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
new file mode 100644
index 000000000..99a9a8b0a
--- /dev/null
+++ b/src/main/java/us/tastybento/bskyblock/api/events/island/TeamEvent.java
@@ -0,0 +1,93 @@
+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/commands/AdminCommand.java b/src/main/java/us/tastybento/bskyblock/commands/AdminCommand.java
index 8b6e98fd7..64a8c3e17 100755
--- a/src/main/java/us/tastybento/bskyblock/commands/AdminCommand.java
+++ b/src/main/java/us/tastybento/bskyblock/commands/AdminCommand.java
@@ -13,7 +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.team.PlayerAcceptInviteEvent;
+import us.tastybento.bskyblock.api.events.island.TeamEvent;
+import us.tastybento.bskyblock.api.events.island.TeamEvent.TeamReason;
import us.tastybento.bskyblock.config.Settings;
import us.tastybento.bskyblock.database.objects.Island;
import us.tastybento.bskyblock.util.Util;
@@ -98,6 +99,14 @@ 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);
+ plugin.getServer().getPluginManager().callEvent(event);
+ if (event.isCancelled()) return;
+ // Display info
Util.sendMessage(sender, getLocale(sender).get("team.listingMembers"));
// Display members in the list
for (UUID m : getIslands().getMembers(targetPlayer)) {
@@ -116,6 +125,14 @@ public class AdminCommand extends AbstractCommand {
Util.sendMessage(sender, ChatColor.RED + "'" + args[1] + "' - " + getLocale(playerUUID).get("admin.team.error.already-a-leader"));
return;
}
+ // Fire event so add-ons can run commands, etc.
+ TeamEvent event2 = new TeamEvent(getIslands().getIsland(targetPlayer))
+ .admin(true)
+ .reason(TeamReason.MAKELEADER)
+ .involvedPlayer(targetPlayer);
+ plugin.getServer().getPluginManager().callEvent(event2);
+ if (event2.isCancelled()) return;
+ // Display info
getIslands().getIsland(targetPlayer).setOwner(targetPlayer);
Util.sendMessage(sender, ChatColor.GREEN
+ getLocale(sender).get("makeleader.nameIsNowTheOwner").replace("[name]", getPlayers().getName(targetPlayer)));
@@ -183,6 +200,14 @@ public class AdminCommand extends AbstractCommand {
Util.sendMessage(sender, ChatColor.RED + "'" + args[1] + "' - " + getLocale(playerUUID).get("admin.team.error.player-is-a-team-leader"));
return;
}
+ // Fire event so add-ons can run commands, etc.
+ TeamEvent event3 = new TeamEvent(getIslands().getIsland(targetPlayer))
+ .admin(true)
+ .reason(TeamReason.KICK)
+ .involvedPlayer(targetPlayer);
+ plugin.getServer().getPluginManager().callEvent(event3);
+ if (event3.isCancelled()) return;
+ // Display info
// Remove from team
getIslands().setLeaveTeam(targetPlayer);
// Tell the player they kicked okay
@@ -197,11 +222,18 @@ public class AdminCommand extends AbstractCommand {
getIslands().save(true);
return;
case "delete":
+ // Fire event so add-ons can run commands, etc.
+ TeamEvent event4 = new TeamEvent(getIslands().getIsland(targetPlayer))
+ .admin(true)
+ .reason(TeamReason.DELETE)
+ .involvedPlayer(targetPlayer);
+ plugin.getServer().getPluginManager().callEvent(event4);
+ if (event4.isCancelled()) return;
UUID teamLeader = getIslands().getTeamLeader(targetPlayer);
for (UUID m : getIslands().getMembers(targetPlayer)) {
if (DEBUG)
plugin.getLogger().info("DEBUG: member " + m);
- //Only the team leader gets to stay
+ // Only the team leader gets to stay
if (!teamLeader.equals(m)) {
getIslands().setLeaveTeam(targetPlayer);
} else {
@@ -250,6 +282,13 @@ 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)
+ .admin(true)
+ .reason(TeamReason.JOIN)
+ .involvedPlayer(targetPlayer);
+ plugin.getServer().getPluginManager().callEvent(event);
+ if (event.isCancelled()) return;
// Move player to team's island
Location newHome = getIslands().getSafeHomeLocation(targetPlayer2, 1);
if (newHome != null) {
diff --git a/src/main/java/us/tastybento/bskyblock/commands/IslandCommand.java b/src/main/java/us/tastybento/bskyblock/commands/IslandCommand.java
index 6c7183eaa..0a6a35aa4 100755
--- a/src/main/java/us/tastybento/bskyblock/commands/IslandCommand.java
+++ b/src/main/java/us/tastybento/bskyblock/commands/IslandCommand.java
@@ -21,6 +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.config.Settings;
import us.tastybento.bskyblock.database.objects.Island;
@@ -469,7 +471,11 @@ public class IslandCommand extends AbstractCommand {
@Override
public void execute(CommandSender sender, String[] args) {
if (DEBUG)
- plugin.getLogger().info("DEBUG: executing team command for " + teamLeaderUUID);
+ 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);
+ plugin.getServer().getPluginManager().callEvent(event);
+ if (event.isCancelled()) return;
if (teamLeaderUUID.equals(playerUUID)) {
int maxSize = Settings.maxTeamSize;
for (PermissionAttachmentInfo perms : player.getEffectivePermissions()) {
@@ -616,6 +622,10 @@ public class IslandCommand extends AbstractCommand {
inviteList.inverse().remove(playerUUID);
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);
+ plugin.getServer().getPluginManager().callEvent(event);
+ if (event.isCancelled()) return;
// Put the invited player (key) onto the list with inviter (value)
// If someone else has invited a player, then this invite will overwrite the previous invite!
inviteList.put(invitedPlayerUUID, playerUUID);
@@ -662,7 +672,10 @@ public class IslandCommand extends AbstractCommand {
@Override
public void execute(CommandSender sender, String[] args) {
- // Invite label with no name, i.e., /island invite - tells the player who has invited them so far
+ // Fire event so add-ons can run commands, etc.
+ TeamEvent event = new TeamEvent(getIslands().getIsland(playerUUID)).reason(TeamReason.UNINVITE).involvedPlayer(playerUUID);
+ plugin.getServer().getPluginManager().callEvent(event);
+ if (event.isCancelled()) return;
if (inviteList.inverse().containsKey(playerUUID)) {
Player invitee = plugin.getServer().getPlayer(inviteList.inverse().get(playerUUID));
if (invitee != null) {
@@ -700,60 +713,56 @@ public class IslandCommand extends AbstractCommand {
@Override
public void execute(CommandSender sender, String[] args) {
- if (Util.inWorld(player)) {
- if (getPlayers().inTeam(playerUUID)) {
- // Team leaders cannot leave
- if (teamLeaderUUID != null && teamLeaderUUID.equals(playerUUID)) {
- Util.sendMessage(player, ChatColor.RED + getLocale(sender).get("leave.errorYouAreTheLeader"));
- return;
- }
- // Check for confirmation
- if (Settings.leaveConfirmation && !leavingPlayers.contains(playerUUID)) {
- leavingPlayers.add(playerUUID);
- Util.sendMessage(player, ChatColor.GOLD + getLocale(sender).get("leave.warning"));
+ if (getPlayers().inTeam(playerUUID)) {
+ // Team leaders cannot leave
+ if (teamLeaderUUID != null && teamLeaderUUID.equals(playerUUID)) {
+ Util.sendMessage(player, ChatColor.RED + getLocale(sender).get("leave.errorYouAreTheLeader"));
+ return;
+ }
+ // Fire event so add-ons can run commands, etc.
+ TeamEvent event = new TeamEvent(getIslands().getIsland(playerUUID)).reason(TeamReason.LEAVE).involvedPlayer(playerUUID);
+ plugin.getServer().getPluginManager().callEvent(event);
+ if (event.isCancelled()) return;
+ // Check for confirmation
+ if (Settings.leaveConfirmation && !leavingPlayers.contains(playerUUID)) {
+ leavingPlayers.add(playerUUID);
+ Util.sendMessage(player, ChatColor.GOLD + getLocale(sender).get("leave.warning"));
- plugin.getServer().getScheduler().runTaskLater(plugin, () -> {
- // If the player is still on the list, remove them and cancel the leave
- if (leavingPlayers.contains(playerUUID)) {
- leavingPlayers.remove(playerUUID);
- Util.sendMessage(player, ChatColor.RED + getLocale(sender).get("leave.canceled"));
- }
- }, Settings.leaveConfirmWait * 20L);
+ plugin.getServer().getScheduler().runTaskLater(plugin, () -> {
+ // If the player is still on the list, remove them and cancel the leave
+ if (leavingPlayers.contains(playerUUID)) {
+ leavingPlayers.remove(playerUUID);
+ Util.sendMessage(player, ChatColor.RED + getLocale(sender).get("leave.canceled"));
+ }
+ }, Settings.leaveConfirmWait * 20L);
- return;
- }
- // Remove from confirmation list
- leavingPlayers.remove(playerUUID);
- // Remove from team
- if (!getIslands().setLeaveTeam(playerUUID)) {
- //Util.sendMessage(player, getLocale(playerUUID).get("leaveerrorYouCannotLeaveIsland);
- // If this is canceled, fail silently
- return;
- }
- // Log the location that this player left so they
- // cannot join again before the cool down ends
- getPlayers().startInviteCoolDownTimer(playerUUID, getIslands().getIslandLocation(teamLeaderUUID));
+ return;
+ }
+ // Remove from confirmation list
+ leavingPlayers.remove(playerUUID);
+ // Remove from team
+ getIslands().setLeaveTeam(playerUUID);
+ // Log the location that this player left so they
+ // cannot join again before the cool down ends
+ getPlayers().startInviteCoolDownTimer(playerUUID, getIslands().getIslandLocation(teamLeaderUUID));
- Util.sendMessage(player, ChatColor.GREEN + getLocale(sender).get("leave.youHaveLeftTheIsland"));
- // Tell the leader if they are online
- if (plugin.getServer().getPlayer(teamLeaderUUID) != null) {
- Player leader = plugin.getServer().getPlayer(teamLeaderUUID);
- Util.sendMessage(leader, ChatColor.RED + getLocale(teamLeaderUUID).get("leave.nameHasLeftYourIsland").replace("[name]", player.getName()));
- } else {
- // TODO: Leave them a message
- //plugin.getMessages().setMessage(teamLeader, plugin.myLocale(teamLeader).leavenameHasLeftYourIsland.replace("[name]", player.getName()));
- }
-
- // Clear all player variables and save
- getPlayers().resetPlayer(player);
- if (!player.performCommand(Settings.SPAWNCOMMAND)) {
- player.teleport(player.getWorld().getSpawnLocation());
- }
+ Util.sendMessage(player, ChatColor.GREEN + getLocale(sender).get("leave.youHaveLeftTheIsland"));
+ // Tell the leader if they are online
+ if (plugin.getServer().getPlayer(teamLeaderUUID) != null) {
+ Player leader = plugin.getServer().getPlayer(teamLeaderUUID);
+ Util.sendMessage(leader, ChatColor.RED + getLocale(teamLeaderUUID).get("leave.nameHasLeftYourIsland").replace("[name]", player.getName()));
} else {
- Util.sendMessage(player, ChatColor.RED + getLocale(sender).get("leave.errorYouCannotLeaveIsland"));
+ // TODO: Leave them a message
+ //plugin.getMessages().setMessage(teamLeader, plugin.myLocale(teamLeader).leavenameHasLeftYourIsland.replace("[name]", player.getName()));
+ }
+
+ // Clear all player variables and save
+ getPlayers().resetPlayer(player);
+ if (!player.performCommand(Settings.SPAWNCOMMAND)) {
+ player.teleport(player.getWorld().getSpawnLocation());
}
} else {
- Util.sendMessage(player, ChatColor.RED + getLocale(sender).get("leave.errorYouMustBeInWorld"));
+ Util.sendMessage(player, ChatColor.RED + getLocale(sender).get("leave.errorYouCannotLeaveIsland"));
}
}
@@ -797,6 +806,10 @@ public class IslandCommand extends AbstractCommand {
Util.sendMessage(player, ChatColor.RED + getLocale(sender).get("kick.error.youCannotKickYourself"));
return;
}
+ // Fire event so add-ons can run commands, etc.
+ TeamEvent event = new TeamEvent(getIslands().getIsland(playerUUID)).reason(TeamReason.KICK).involvedPlayer(targetPlayerUUID);
+ plugin.getServer().getPluginManager().callEvent(event);
+ if (event.isCancelled()) return;
// Check for confirmation
if (Settings.confirmKick && !kickingPlayers.contains(playerUUID)) {
kickingPlayers.add(playerUUID);
@@ -815,10 +828,7 @@ public class IslandCommand extends AbstractCommand {
// Remove from confirmation list
kickingPlayers.remove(playerUUID);
// Remove from team
- if (!getIslands().setLeaveTeam(targetPlayerUUID)) {
- // If this is canceled, fail silently
- return;
- }
+ getIslands().setLeaveTeam(targetPlayerUUID);
// Log the location that this player left so they
// cannot join again before the cool down ends
getPlayers().startInviteCoolDownTimer(targetPlayerUUID, getIslands().getIslandLocation(teamLeaderUUID));
@@ -883,6 +893,10 @@ 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);
+ plugin.getServer().getPluginManager().callEvent(event);
+ if (event.isCancelled()) return;
// Remove the invite
if (DEBUG)
plugin.getLogger().info("DEBUG: Removing player from invite list");
@@ -954,16 +968,22 @@ public class IslandCommand extends AbstractCommand {
@Override
public void execute(CommandSender sender, String[] args) {
// Reject /island reject
- if (inviteList.containsKey(player.getUniqueId())) {
+ 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);
+ plugin.getServer().getPluginManager().callEvent(event);
+ if (event.isCancelled()) return;
+
+ // Remove this player from the global invite list
+ inviteList.remove(player.getUniqueId());
Util.sendMessage(player, ChatColor.GREEN + getLocale(playerUUID).get("reject.youHaveRejectedInvitation"));
- // If the player is online still then tell them directly
+ // If the leader is online tell them directly
// about the rejection
- if (Bukkit.getPlayer(inviteList.get(player.getUniqueId())) != null) {
+ if (Bukkit.getPlayer(inviteList.get(playerUUID)) != null) {
Util.sendMessage(Bukkit.getPlayer(inviteList.get(playerUUID)),
ChatColor.RED + getLocale(playerUUID).get("reject.nameHasRejectedInvite").replace("[name]", player.getName()));
}
- // Remove this player from the global invite list
- inviteList.remove(player.getUniqueId());
+
} else {
// Someone typed /island reject and had not been invited
Util.sendMessage(player, ChatColor.RED + getLocale(playerUUID).get("reject.youHaveNotBeenInvited"));
@@ -996,8 +1016,8 @@ public class IslandCommand extends AbstractCommand {
@Override
public void execute(CommandSender sender, String[] args) {
plugin.getLogger().info("DEBUG: arg[0] = " + args[0]);
- UUID targetPlayer = getPlayers().getUUID(args[0]);
- if (targetPlayer == null) {
+ UUID targetUUID = getPlayers().getUUID(args[0]);
+ if (targetUUID == null) {
Util.sendMessage(player, ChatColor.RED + getLocale(playerUUID).get("general.errors.unknown-player"));
return;
}
@@ -1009,33 +1029,38 @@ public class IslandCommand extends AbstractCommand {
Util.sendMessage(player, ChatColor.RED + getLocale(playerUUID).get("makeleader.errorNotYourIsland"));
return;
}
- if (targetPlayer.equals(playerUUID)) {
+ if (targetUUID.equals(playerUUID)) {
Util.sendMessage(player, ChatColor.RED + getLocale(playerUUID).get("makeleader.errorGeneralError"));
return;
}
- if (!teamMembers.contains(targetPlayer)) {
+ if (!teamMembers.contains(targetUUID)) {
Util.sendMessage(player, ChatColor.RED + getLocale(playerUUID).get("makeleader.errorThatPlayerIsNotInTeam"));
return;
}
- // targetPlayer is the new leader
- getIslands().getIsland(playerUUID).setOwner(targetPlayer);
+ // Fire event so add-ons can run commands, etc.
+ TeamEvent event = new TeamEvent(getIslands().getIsland(playerUUID)).reason(TeamReason.MAKELEADER).involvedPlayer(targetUUID);
+ plugin.getServer().getPluginManager().callEvent(event);
+ if (event.isCancelled()) return;
+
+ // target is the new leader
+ getIslands().getIsland(playerUUID).setOwner(targetUUID);
Util.sendMessage(player, ChatColor.GREEN
- + getLocale(playerUUID).get("makeleader.nameIsNowTheOwner").replace("[name]", getPlayers().getName(targetPlayer)));
+ + getLocale(playerUUID).get("makeleader.nameIsNowTheOwner").replace("[name]", getPlayers().getName(targetUUID)));
// Check if online
- Player target = plugin.getServer().getPlayer(targetPlayer);
+ Player target = plugin.getServer().getPlayer(targetUUID);
if (target == null) {
// TODO offline messaging
//plugin.getMessages().setMessage(targetPlayer, getLocale(playerUUID).get("makeleader.youAreNowTheOwner"));
} else {
// Online
- Util.sendMessage(plugin.getServer().getPlayer(targetPlayer), ChatColor.GREEN + getLocale(targetPlayer).get("makeleader.youAreNowTheOwner"));
+ Util.sendMessage(plugin.getServer().getPlayer(targetUUID), ChatColor.GREEN + getLocale(targetUUID).get("makeleader.youAreNowTheOwner"));
// Check if new leader has a lower range permission than the island size
boolean hasARangePerm = false;
int range = Settings.islandProtectionRange;
// Check for zero protection range
- Island islandByOwner = getIslands().getIsland(targetPlayer);
+ Island islandByOwner = getIslands().getIsland(targetUUID);
if (islandByOwner.getProtectionRange() == 0) {
plugin.getLogger().warning("Player " + player.getName() + "'s island had a protection range of 0. Setting to default " + range);
islandByOwner.setProtectionRange(range);
@@ -1069,8 +1094,8 @@ public class IslandCommand extends AbstractCommand {
// Range can go up or down
if (range != islandByOwner.getProtectionRange()) {
- Util.sendMessage(player, getLocale(targetPlayer).get("admin.SetRangeUpdated").replace("[number]", String.valueOf(range)));
- Util.sendMessage(target, getLocale(targetPlayer).get("admin.SetRangeUpdated").replace("[number]", String.valueOf(range)));
+ Util.sendMessage(player, getLocale(targetUUID).get("admin.SetRangeUpdated").replace("[number]", String.valueOf(range)));
+ Util.sendMessage(target, getLocale(targetUUID).get("admin.SetRangeUpdated").replace("[number]", String.valueOf(range)));
plugin.getLogger().info(
"Makeleader: Island protection range changed from " + islandByOwner.getProtectionRange() + " to "
+ range + " for " + player.getName() + " due to permission.");
diff --git a/src/main/java/us/tastybento/bskyblock/database/managers/IslandsManager.java b/src/main/java/us/tastybento/bskyblock/database/managers/IslandsManager.java
index 6b80dcc92..f417511f6 100644
--- a/src/main/java/us/tastybento/bskyblock/database/managers/IslandsManager.java
+++ b/src/main/java/us/tastybento/bskyblock/database/managers/IslandsManager.java
@@ -29,7 +29,6 @@ import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import us.tastybento.bskyblock.BSkyBlock;
-import us.tastybento.bskyblock.api.events.island.IslandLeaveEvent;
import us.tastybento.bskyblock.config.Settings;
import us.tastybento.bskyblock.database.BSBDatabase;
import us.tastybento.bskyblock.database.objects.Island;
@@ -345,32 +344,12 @@ public class IslandsManager {
/**
* Called when a player leaves a team
* @param playerUUID
- * @return true if successful, false if not
*/
- public boolean setLeaveTeam(UUID playerUUID) {
+ public void setLeaveTeam(UUID playerUUID) {
if (DEBUG)
plugin.getLogger().info("DEBUG: leaving team");
- // Try to remove player from old island
- // TODO: Fire an event, if not cancelled, zero the player data
- Island island = islandsByUUID.get(playerUUID);
- if (island != null) {
- if (DEBUG)
- plugin.getLogger().info("DEBUG: island found");
- IslandLeaveEvent leaveEvent = new IslandLeaveEvent(island, playerUUID);
-
- plugin.getServer().getPluginManager().callEvent(leaveEvent);
- if (leaveEvent.isCancelled()) {
- if (DEBUG)
- plugin.getLogger().info("DEBUG: leave event was canceled");
- return false;
- }
- if (DEBUG)
- plugin.getLogger().info("DEBUG: clearing player data");
- plugin.getPlayers().clearPlayerHomes(playerUUID);
- removePlayer(playerUUID);
- return true;
- }
- return false;
+ plugin.getPlayers().clearPlayerHomes(playerUUID);
+ removePlayer(playerUUID);
}
/**
@@ -1362,6 +1341,6 @@ public class IslandsManager {
new DeleteIslandBlocks(plugin, island);
}
//getServer().getPluginManager().callEvent(new IslandDeleteEvent(player, island.getCenter()));
-
+
}
}
diff --git a/src/main/java/us/tastybento/bskyblock/listeners/NetherPortals.java b/src/main/java/us/tastybento/bskyblock/listeners/NetherPortals.java
index bb48e924b..09ba33d70 100644
--- a/src/main/java/us/tastybento/bskyblock/listeners/NetherPortals.java
+++ b/src/main/java/us/tastybento/bskyblock/listeners/NetherPortals.java
@@ -2,7 +2,6 @@ package us.tastybento.bskyblock.listeners;
import java.util.UUID;
-import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
diff --git a/src/main/java/us/tastybento/bskyblock/listeners/protection/FlyingMobEvents.java b/src/main/java/us/tastybento/bskyblock/listeners/protection/FlyingMobEvents.java
index 6410896d6..01f2ba36b 100644
--- a/src/main/java/us/tastybento/bskyblock/listeners/protection/FlyingMobEvents.java
+++ b/src/main/java/us/tastybento/bskyblock/listeners/protection/FlyingMobEvents.java
@@ -17,7 +17,6 @@ import org.bukkit.event.entity.EntityChangeBlockEvent;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.ExplosionPrimeEvent;
-import org.bukkit.scheduler.BukkitRunnable;
import us.tastybento.bskyblock.BSkyBlock;
import us.tastybento.bskyblock.database.objects.Island;
diff --git a/src/main/java/us/tastybento/bskyblock/listeners/protection/IslandGuard.java b/src/main/java/us/tastybento/bskyblock/listeners/protection/IslandGuard.java
index 741df921e..33c1c6024 100644
--- a/src/main/java/us/tastybento/bskyblock/listeners/protection/IslandGuard.java
+++ b/src/main/java/us/tastybento/bskyblock/listeners/protection/IslandGuard.java
@@ -8,7 +8,6 @@ import java.util.List;
import java.util.Set;
import java.util.UUID;
-import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
@@ -45,7 +44,6 @@ import org.bukkit.event.block.BlockMultiPlaceEvent;
import org.bukkit.event.block.BlockPistonExtendEvent;
import org.bukkit.event.block.BlockPistonRetractEvent;
import org.bukkit.event.block.BlockPlaceEvent;
-import org.bukkit.event.block.BlockRedstoneEvent;
import org.bukkit.event.block.BlockSpreadEvent;
import org.bukkit.event.entity.CreatureSpawnEvent;
import org.bukkit.event.entity.EntityChangeBlockEvent;
@@ -73,7 +71,6 @@ import org.bukkit.event.world.StructureGrowEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.material.MaterialData;
import org.bukkit.potion.Potion;
-import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.util.BlockIterator;
import org.bukkit.util.Vector;
diff --git a/src/main/java/us/tastybento/bskyblock/listeners/protection/IslandGuard1_8.java b/src/main/java/us/tastybento/bskyblock/listeners/protection/IslandGuard1_8.java
index ee345bdc4..14ae43b8e 100644
--- a/src/main/java/us/tastybento/bskyblock/listeners/protection/IslandGuard1_8.java
+++ b/src/main/java/us/tastybento/bskyblock/listeners/protection/IslandGuard1_8.java
@@ -1,6 +1,5 @@
package us.tastybento.bskyblock.listeners.protection;
-import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
diff --git a/src/main/java/us/tastybento/bskyblock/listeners/protection/IslandGuard1_9.java b/src/main/java/us/tastybento/bskyblock/listeners/protection/IslandGuard1_9.java
index 371f34491..4062f9acd 100644
--- a/src/main/java/us/tastybento/bskyblock/listeners/protection/IslandGuard1_9.java
+++ b/src/main/java/us/tastybento/bskyblock/listeners/protection/IslandGuard1_9.java
@@ -5,7 +5,6 @@ import java.util.HashMap;
import java.util.List;
import java.util.UUID;
-import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
diff --git a/src/main/java/us/tastybento/bskyblock/listeners/protection/VisitorGuard.java b/src/main/java/us/tastybento/bskyblock/listeners/protection/VisitorGuard.java
index e883a906f..e9389a70b 100644
--- a/src/main/java/us/tastybento/bskyblock/listeners/protection/VisitorGuard.java
+++ b/src/main/java/us/tastybento/bskyblock/listeners/protection/VisitorGuard.java
@@ -1,6 +1,5 @@
package us.tastybento.bskyblock.listeners.protection;
-import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
diff --git a/src/main/java/us/tastybento/bskyblock/schematics/SchematicsMgr.java b/src/main/java/us/tastybento/bskyblock/schematics/SchematicsMgr.java
index 6dd0ead6f..250d75ecc 100644
--- a/src/main/java/us/tastybento/bskyblock/schematics/SchematicsMgr.java
+++ b/src/main/java/us/tastybento/bskyblock/schematics/SchematicsMgr.java
@@ -4,7 +4,6 @@ import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
diff --git a/src/main/java/us/tastybento/bskyblock/util/SafeSpotTeleport.java b/src/main/java/us/tastybento/bskyblock/util/SafeSpotTeleport.java
index a5927edc4..554d46b12 100644
--- a/src/main/java/us/tastybento/bskyblock/util/SafeSpotTeleport.java
+++ b/src/main/java/us/tastybento/bskyblock/util/SafeSpotTeleport.java
@@ -3,7 +3,6 @@ package us.tastybento.bskyblock.util;
import java.util.ArrayList;
import java.util.List;
-import org.bukkit.ChatColor;
import org.bukkit.ChunkSnapshot;
import org.bukkit.GameMode;
import org.bukkit.Location;