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;