Added TeamEvents using the Builder pattern.

TeamEvent is used for all team events. Removed the extra classes that
are not needed anymore.

See this for a good summary on builder patterns:
http://minborgsjavapot.blogspot.com/2014/08/creating-objects-using-builder-pattern.html

Plan is to replace the island events with builder pattern too, so that
we only need one class for typical island events.
This commit is contained in:
tastybento 2017-08-27 21:54:01 -07:00
parent c565d5edf8
commit 4eaa5a1f5f
16 changed files with 243 additions and 231 deletions

View File

@ -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() {

View File

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

View File

@ -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 <code>getIsland().getOwner();</code>
* @return the owner of the joined island
*/
public UUID getNewIslandOwner() {
return getIsland().getOwner();
}
}

View File

@ -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 <code>getIsland().getOwner();</code>
* @return the owner of the left island
*/
public UUID getOldIslandOwner() {
return getIsland().getOwner();
}
}

View File

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

View File

@ -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) {

View File

@ -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.");

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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