diff --git a/src/main/java/world/bentobox/bentobox/api/commands/admin/AdminDeleteCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/admin/AdminDeleteCommand.java index b18a7b29f..db90ca099 100644 --- a/src/main/java/world/bentobox/bentobox/api/commands/admin/AdminDeleteCommand.java +++ b/src/main/java/world/bentobox/bentobox/api/commands/admin/AdminDeleteCommand.java @@ -27,10 +27,10 @@ public class AdminDeleteCommand extends ConfirmableCommand { @Override public boolean canExecute(User user, String label, List args) { - if (args.size() != 1) { - showHelp(this, user); - return false; - } + if (args.size() != 1) { + showHelp(this, user); + return false; + } // Get target UUID targetUUID = getPlayers().getUUID(args.get(0)); if (targetUUID == null) { @@ -86,7 +86,7 @@ public class AdminDeleteCommand extends ConfirmableCommand { getPlugin().getVault().ifPresent(vault -> vault.withdraw(target, vault.getBalance(target))); } } - getIslands().deleteIsland(oldIsland, true); + getIslands().deleteIsland(oldIsland, true, targetUUID); } getPlayers().clearHomeLocations(getWorld(), targetUUID); user.sendMessage("general.success"); diff --git a/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamInviteAcceptCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamInviteAcceptCommand.java index a7e1058c8..f17237c46 100644 --- a/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamInviteAcceptCommand.java +++ b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamInviteAcceptCommand.java @@ -89,7 +89,7 @@ public class IslandTeamInviteAcceptCommand extends ConfirmableCommand { getIslands().homeTeleport(getWorld(), user.getPlayer()); // Delete the old island if (island != null) { - getIslands().deleteIsland(island, true); + getIslands().deleteIsland(island, true, user.getUniqueId()); } // TODO Set the cooldown // Reset deaths diff --git a/src/main/java/world/bentobox/bentobox/api/events/island/IslandEvent.java b/src/main/java/world/bentobox/bentobox/api/events/island/IslandEvent.java index 886119b3f..c8738c6c9 100644 --- a/src/main/java/world/bentobox/bentobox/api/events/island/IslandEvent.java +++ b/src/main/java/world/bentobox/bentobox/api/events/island/IslandEvent.java @@ -222,7 +222,10 @@ public class IslandEvent extends IslandBaseEvent { } } /** - * Fired when an island is deleted. + * Fired when island blocks are going to be deleted. + * If canceled, the island blocks will not be deleted. Note that by the time this is called + * the ownership of the island may have been removed. This event is just for detecting + * that the island blocks are going to be removed. * */ public static class IslandDeletedEvent extends IslandBaseEvent { diff --git a/src/main/java/world/bentobox/bentobox/managers/IslandsManager.java b/src/main/java/world/bentobox/bentobox/managers/IslandsManager.java index 9c6a6d636..ff59b76b0 100644 --- a/src/main/java/world/bentobox/bentobox/managers/IslandsManager.java +++ b/src/main/java/world/bentobox/bentobox/managers/IslandsManager.java @@ -276,10 +276,11 @@ public class IslandsManager { * Deletes island. * @param island island to delete, not null * @param removeBlocks whether the island blocks should be removed or not + * @param involvedPlayer - player related to the island deletion, if any */ - public void deleteIsland(@NonNull Island island, boolean removeBlocks) { + public void deleteIsland(@NonNull Island island, boolean removeBlocks, UUID involvedPlayer) { // Fire event - IslandBaseEvent event = IslandEvent.builder().island(island).reason(Reason.DELETE).build(); + IslandBaseEvent event = IslandEvent.builder().island(island).involvedPlayer(involvedPlayer).reason(Reason.DELETE).build(); if (event.isCancelled()) { return; } diff --git a/src/main/java/world/bentobox/bentobox/managers/island/NewIsland.java b/src/main/java/world/bentobox/bentobox/managers/island/NewIsland.java index f53674b00..104bede7c 100644 --- a/src/main/java/world/bentobox/bentobox/managers/island/NewIsland.java +++ b/src/main/java/world/bentobox/bentobox/managers/island/NewIsland.java @@ -207,7 +207,7 @@ public class NewIsland { // Delete old island if (oldIsland != null) { // Delete the old island - plugin.getIslands().deleteIsland(oldIsland, true); + plugin.getIslands().deleteIsland(oldIsland, true, user.getUniqueId()); } // Fire exit event diff --git a/src/test/java/world/bentobox/bentobox/managers/IslandsManagerTest.java b/src/test/java/world/bentobox/bentobox/managers/IslandsManagerTest.java index 3ad2a6a90..4a911f7ac 100644 --- a/src/test/java/world/bentobox/bentobox/managers/IslandsManagerTest.java +++ b/src/test/java/world/bentobox/bentobox/managers/IslandsManagerTest.java @@ -431,7 +431,7 @@ public class IslandsManagerTest { IslandsManager im = new IslandsManager(plugin); UUID owner = UUID.randomUUID(); Island island = im.createIsland(location, owner); - im.deleteIsland(island, false); + im.deleteIsland(island, false, owner); assertNull(island.getOwner()); Mockito.verify(pim, Mockito.times(2)).callEvent(Mockito.any(IslandDeleteEvent.class)); } @@ -445,7 +445,7 @@ public class IslandsManagerTest { IslandsManager im = new IslandsManager(plugin); UUID owner = UUID.randomUUID(); Island island = im.createIsland(location, owner); - im.deleteIsland(island, true); + im.deleteIsland(island, true, owner); assertNull(island.getOwner()); Mockito.verify(pim, Mockito.times(4)).callEvent(Mockito.any(IslandDeleteEvent.class)); }