diff --git a/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamSetownerCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamSetownerCommand.java index 24f10557b..bd1d2a1a0 100644 --- a/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamSetownerCommand.java +++ b/src/main/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamSetownerCommand.java @@ -42,8 +42,7 @@ public boolean canExecute(User user, String label, List args) { } // Can use if in a team Island is = getIslands().getPrimaryIsland(getWorld(), user.getUniqueId()); - boolean inTeam = is.getMemberSet().contains(user.getUniqueId()); - if (!inTeam) { + if (is == null || !is.getMemberSet().contains(user.getUniqueId())) { user.sendMessage("general.errors.no-team"); return false; } @@ -99,6 +98,9 @@ protected boolean setOwner(User user, @NonNull UUID targetUUID2) { @Override public Optional> tabComplete(User user, String alias, List args) { String lastArg = !args.isEmpty() ? args.get(args.size() - 1) : ""; + if (getIslands().getPrimaryIsland(getWorld(), user.getUniqueId()) == null) { + return Optional.empty(); + } return Optional.of(Util.tabLimit( getIslands().getPrimaryIsland(getWorld(), user.getUniqueId()).getMemberSet().stream() .filter(uuid -> !user.getUniqueId().equals(uuid)).map(getPlayers()::getName).toList(), diff --git a/src/test/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamSetownerCommandTest.java b/src/test/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamSetownerCommandTest.java index c9b1f7a30..6525563db 100644 --- a/src/test/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamSetownerCommandTest.java +++ b/src/test/java/world/bentobox/bentobox/api/commands/island/team/IslandTeamSetownerCommandTest.java @@ -178,6 +178,16 @@ public void testCanExecuteUserStringListOfStringNullOwner() { assertFalse(its.canExecute(user, "", List.of("gibby"))); verify(user).sendMessage("general.errors.not-owner"); } + + /** + * Test method for {@link world.bentobox.bentobox.api.commands.island.team.IslandTeamSetownerCommand#canExecute(world.bentobox.bentobox.api.user.User, java.lang.String, java.util.List)}. + */ + @Test + public void testCanExecuteUserStringListOfStringNotInTeamNoIsland() { + when(im.getPrimaryIsland(any(), any())).thenReturn(null); + assertFalse(its.canExecute(user, "", List.of("gibby"))); + verify(user).sendMessage("general.errors.no-team"); + } /** * Test method for {@link world.bentobox.bentobox.api.commands.island.team.IslandTeamSetownerCommand#canExecute(world.bentobox.bentobox.api.user.User, java.lang.String, java.util.List)}. @@ -309,5 +319,15 @@ public void testTabCompleteUserStringListOfStringMember() { when(island.getMemberSet()).thenReturn(ImmutableSet.of(target)); assertEquals("tastybento", its.tabComplete(user, "", List.of()).get().get(0)); } + + /** + * Test method for + * {@link world.bentobox.bentobox.api.commands.island.team.IslandTeamSetownerCommand#tabComplete(world.bentobox.bentobox.api.user.User, java.lang.String, java.util.List)}. + */ + @Test + public void testTabCompleteUserStringListOfStringMemberNoIsland() { + when(im.getPrimaryIsland(any(), any())).thenReturn(null); + assertTrue(its.tabComplete(user, "", List.of()).isEmpty()); + } }