Prevent invites to vanished players

https://github.com/BentoBoxWorld/BentoBox/issues/972
This commit is contained in:
tastybento 2020-08-31 20:59:11 -07:00
parent c05f2a3c15
commit c1ede3c66a
2 changed files with 15 additions and 2 deletions

View File

@ -81,7 +81,7 @@ public class IslandTeamInviteCommand extends CompositeCommand {
return false;
}
invitedPlayer = User.getInstance(invitedPlayerUUID);
if (!invitedPlayer.isOnline()) {
if (!invitedPlayer.isOnline() || !user.getPlayer().canSee(invitedPlayer.getPlayer())) {
user.sendMessage("general.errors.offline-player");
return false;
}

View File

@ -71,6 +71,8 @@ public class IslandTeamInviteCommandTest {
private UUID islandUUID;
private IslandTeamInviteCommand itl;
private UUID notUUID;
@Mock
private Player p;
/**
@ -92,7 +94,6 @@ public class IslandTeamInviteCommandTest {
// Player & users
PowerMockito.mockStatic(User.class);
Player p = mock(Player.class);
// Sometimes use Mockito.withSettings().verboseLogging()
when(user.isOp()).thenReturn(false);
uuid = UUID.randomUUID();
@ -104,6 +105,8 @@ public class IslandTeamInviteCommandTest {
when(user.getPermissionValue(anyString(), anyInt())).thenReturn(3);
when(User.getInstance(eq(uuid))).thenReturn(user);
when(user.getTranslation(any())).thenAnswer(invocation -> invocation.getArgument(0, String.class));
// Vanished players
when(p.canSee(any())).thenReturn(true);
User.setPlugin(plugin);
// Target
@ -230,6 +233,16 @@ public class IslandTeamInviteCommandTest {
assertFalse(itl.canExecute(user, itl.getLabel(), Collections.singletonList("target")));
verify(user).sendMessage(eq("general.errors.offline-player"));
}
/**
* Test method for {@link world.bentobox.bentobox.api.commands.island.team.IslandTeamInviteCommand#canExecute(User, String, java.util.List)}.
*/
@Test
public void testCanExecuteVanishedPlayer() {
when(p.canSee(any())).thenReturn(false);
assertFalse(itl.canExecute(user, itl.getLabel(), Collections.singletonList("target")));
verify(user).sendMessage(eq("general.errors.offline-player"));
}
/**