Sort player's islands by age so they are always in the same order.
This commit is contained in:
parent
3c6e3d1286
commit
6599e3de80
|
@ -6,7 +6,6 @@ import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import world.bentobox.bentobox.api.commands.CompositeCommand;
|
import world.bentobox.bentobox.api.commands.CompositeCommand;
|
||||||
import world.bentobox.bentobox.api.commands.DelayedTeleportCommand;
|
import world.bentobox.bentobox.api.commands.DelayedTeleportCommand;
|
||||||
|
@ -41,7 +40,7 @@ public class IslandGoCommand extends DelayedTeleportCommand {
|
||||||
user.sendMessage("commands.island.go.teleport");
|
user.sendMessage("commands.island.go.teleport");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Set<Island> islands = getIslands().getIslands(getWorld(), user.getUniqueId());
|
List<Island> islands = getIslands().getIslands(getWorld(), user.getUniqueId());
|
||||||
if (islands.isEmpty()) {
|
if (islands.isEmpty()) {
|
||||||
user.sendMessage("general.errors.no-island");
|
user.sendMessage("general.errors.no-island");
|
||||||
return false;
|
return false;
|
||||||
|
@ -86,7 +85,7 @@ public class IslandGoCommand extends DelayedTeleportCommand {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean checkReserved(User user, Set<Island> islands) {
|
private boolean checkReserved(User user, List<Island> islands) {
|
||||||
for (Island island : islands) {
|
for (Island island : islands) {
|
||||||
if (island.isReserved()) {
|
if (island.isReserved()) {
|
||||||
// Send player to create an island
|
// Send player to create an island
|
||||||
|
|
|
@ -3,7 +3,6 @@ package world.bentobox.bentobox.api.commands.island;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import world.bentobox.bentobox.api.commands.CompositeCommand;
|
import world.bentobox.bentobox.api.commands.CompositeCommand;
|
||||||
import world.bentobox.bentobox.api.commands.ConfirmableCommand;
|
import world.bentobox.bentobox.api.commands.ConfirmableCommand;
|
||||||
|
@ -14,7 +13,7 @@ import world.bentobox.bentobox.util.Util;
|
||||||
|
|
||||||
public class IslandHomesCommand extends ConfirmableCommand {
|
public class IslandHomesCommand extends ConfirmableCommand {
|
||||||
|
|
||||||
private Set<Island> islands;
|
private List<Island> islands;
|
||||||
|
|
||||||
public IslandHomesCommand(CompositeCommand islandCommand) {
|
public IslandHomesCommand(CompositeCommand islandCommand) {
|
||||||
super(islandCommand, "homes");
|
super(islandCommand, "homes");
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package world.bentobox.bentobox.api.commands.island.team;
|
package world.bentobox.bentobox.api.commands.island.team;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import world.bentobox.bentobox.api.commands.CompositeCommand;
|
import world.bentobox.bentobox.api.commands.CompositeCommand;
|
||||||
|
@ -144,7 +143,7 @@ public class IslandTeamInviteAcceptCommand extends ConfirmableCommand {
|
||||||
// Remove the invite
|
// Remove the invite
|
||||||
itc.removeInvite(user.getUniqueId());
|
itc.removeInvite(user.getUniqueId());
|
||||||
// Get the player's island - may be null if the player has no island
|
// Get the player's island - may be null if the player has no island
|
||||||
Set<Island> islands = getIslands().getIslands(getWorld(), user.getUniqueId());
|
List<Island> islands = getIslands().getIslands(getWorld(), user.getUniqueId());
|
||||||
// Get the team's island
|
// Get the team's island
|
||||||
Island teamIsland = invite.getIsland();
|
Island teamIsland = invite.getIsland();
|
||||||
if (teamIsland == null) {
|
if (teamIsland == null) {
|
||||||
|
|
|
@ -321,7 +321,7 @@ public class IslandsManager {
|
||||||
* @return List of islands or empty list if none found for user
|
* @return List of islands or empty list if none found for user
|
||||||
*/
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
public Set<Island> getIslands(@NonNull World world, @NonNull User user) {
|
public List<Island> getIslands(@NonNull World world, @NonNull User user) {
|
||||||
return getIslands(world, user.getUniqueId());
|
return getIslands(world, user.getUniqueId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -333,7 +333,7 @@ public class IslandsManager {
|
||||||
* @return List of islands or empty list if none found for user
|
* @return List of islands or empty list if none found for user
|
||||||
*/
|
*/
|
||||||
@NonNull
|
@NonNull
|
||||||
public Set<Island> getIslands(@NonNull World world, UUID uniqueId) {
|
public List<Island> getIslands(@NonNull World world, UUID uniqueId) {
|
||||||
return islandCache.getIslands(world, uniqueId);
|
return islandCache.getIslands(world, uniqueId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
package world.bentobox.bentobox.managers.island;
|
package world.bentobox.bentobox.managers.island;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
@ -170,7 +173,7 @@ public class IslandCache {
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public Island get(@NonNull World world, @NonNull UUID uuid) {
|
public Island get(@NonNull World world, @NonNull UUID uuid) {
|
||||||
Set<Island> islands = getIslands(world, uuid);
|
List<Island> islands = getIslands(world, uuid);
|
||||||
if (islands.isEmpty()) {
|
if (islands.isEmpty()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -190,15 +193,16 @@ public class IslandCache {
|
||||||
*
|
*
|
||||||
* @param world world to check. Includes nether and end worlds.
|
* @param world world to check. Includes nether and end worlds.
|
||||||
* @param uuid player's UUID
|
* @param uuid player's UUID
|
||||||
* @return list of island or empty list if none
|
* @return list of island or empty list if none sorted from oldest to youngest
|
||||||
*/
|
*/
|
||||||
public Set<Island> getIslands(@NonNull World world, @NonNull UUID uuid) {
|
public List<Island> getIslands(@NonNull World world, @NonNull UUID uuid) {
|
||||||
World w = Util.getWorld(world);
|
World w = Util.getWorld(world);
|
||||||
if (w == null) {
|
if (w == null) {
|
||||||
return new HashSet<>();
|
return new ArrayList<>();
|
||||||
}
|
}
|
||||||
return islandsByUUID.computeIfAbsent(uuid, k -> new HashSet<>()).stream().filter(i -> w.equals(i.getWorld()))
|
return islandsByUUID.computeIfAbsent(uuid, k -> new HashSet<>()).stream().filter(island -> w.equals(island.getWorld()))
|
||||||
.collect(Collectors.toSet());
|
.sorted(Comparator.comparingLong(Island::getCreatedDate))
|
||||||
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -14,7 +14,6 @@ import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
@ -115,7 +114,7 @@ public class IslandDeletehomeCommandTest extends RanksManagerBeforeClassTest {
|
||||||
when(island.onIsland(any())).thenReturn(true);
|
when(island.onIsland(any())).thenReturn(true);
|
||||||
when(im.getIsland(world, uuid)).thenReturn(island);
|
when(im.getIsland(world, uuid)).thenReturn(island);
|
||||||
when(im.getIsland(world, user)).thenReturn(island);
|
when(im.getIsland(world, user)).thenReturn(island);
|
||||||
when(im.getIslands(world, uuid)).thenReturn(Set.of(island));
|
when(im.getIslands(world, uuid)).thenReturn(List.of(island));
|
||||||
@NotNull
|
@NotNull
|
||||||
Map<String, Location> homeMap = new HashMap<>();
|
Map<String, Location> homeMap = new HashMap<>();
|
||||||
homeMap.put("Home", null);
|
homeMap.put("Home", null);
|
||||||
|
|
|
@ -126,7 +126,7 @@ public class IslandGoCommandTest {
|
||||||
when(ic.getWorld()).thenReturn(world);
|
when(ic.getWorld()).thenReturn(world);
|
||||||
|
|
||||||
// Player has island by default
|
// Player has island by default
|
||||||
when(im.getIslands(world, uuid)).thenReturn(Set.of(island));
|
when(im.getIslands(world, uuid)).thenReturn(List.of(island));
|
||||||
when(im.hasIsland(world, uuid)).thenReturn(true);
|
when(im.hasIsland(world, uuid)).thenReturn(true);
|
||||||
// when(im.isOwner(world, uuid)).thenReturn(true);
|
// when(im.isOwner(world, uuid)).thenReturn(true);
|
||||||
when(plugin.getIslands()).thenReturn(im);
|
when(plugin.getIslands()).thenReturn(im);
|
||||||
|
@ -204,7 +204,7 @@ public class IslandGoCommandTest {
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testExecuteNoArgsNoIsland() {
|
public void testExecuteNoArgsNoIsland() {
|
||||||
when(im.getIslands(world, uuid)).thenReturn(Set.of());
|
when(im.getIslands(world, uuid)).thenReturn(List.of());
|
||||||
assertFalse(igc.canExecute(user, igc.getLabel(), Collections.emptyList()));
|
assertFalse(igc.canExecute(user, igc.getLabel(), Collections.emptyList()));
|
||||||
verify(player).sendMessage("general.errors.no-island");
|
verify(player).sendMessage("general.errors.no-island");
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,8 +14,8 @@ import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
@ -189,7 +189,7 @@ public class IslandHomesCommandTest {
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testCanExecute() {
|
public void testCanExecute() {
|
||||||
when(im.getIslands(world, user)).thenReturn(Set.of(island));
|
when(im.getIslands(world, user)).thenReturn(List.of(island));
|
||||||
IslandHomesCommand isc = new IslandHomesCommand(ic);
|
IslandHomesCommand isc = new IslandHomesCommand(ic);
|
||||||
assertTrue(isc.canExecute(user, "island", Collections.emptyList()));
|
assertTrue(isc.canExecute(user, "island", Collections.emptyList()));
|
||||||
verify(user, never()).sendMessage("general.errors.no-island");
|
verify(user, never()).sendMessage("general.errors.no-island");
|
||||||
|
@ -200,7 +200,7 @@ public class IslandHomesCommandTest {
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void testExecuteUserStringListOfString() {
|
public void testExecuteUserStringListOfString() {
|
||||||
when(im.getIslands(world, user)).thenReturn(Set.of(island));
|
when(im.getIslands(world, user)).thenReturn(List.of(island));
|
||||||
IslandHomesCommand isc = new IslandHomesCommand(ic);
|
IslandHomesCommand isc = new IslandHomesCommand(ic);
|
||||||
assertTrue(isc.canExecute(user, "island", Collections.emptyList()));
|
assertTrue(isc.canExecute(user, "island", Collections.emptyList()));
|
||||||
assertTrue(isc.execute(user, "island", Collections.emptyList()));
|
assertTrue(isc.execute(user, "island", Collections.emptyList()));
|
||||||
|
|
|
@ -14,7 +14,7 @@ import static org.mockito.Mockito.when;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
@ -104,8 +104,7 @@ public class IslandSethomeCommandTest {
|
||||||
|
|
||||||
// Island for player to begin with
|
// Island for player to begin with
|
||||||
when(im.hasIsland(world, user)).thenReturn(true);
|
when(im.hasIsland(world, user)).thenReturn(true);
|
||||||
// when(im.isOwner(world, uuid)).thenReturn(true);
|
when(im.getIslands(world, user)).thenReturn(List.of(island));
|
||||||
when(im.getIslands(world, user)).thenReturn(Set.of(island));
|
|
||||||
when(plugin.getIslands()).thenReturn(im);
|
when(plugin.getIslands()).thenReturn(im);
|
||||||
|
|
||||||
// Has team
|
// Has team
|
||||||
|
|
|
@ -77,7 +77,6 @@ public class IslandSetnameCommandTest {
|
||||||
private IslandSetnameCommand isc;
|
private IslandSetnameCommand isc;
|
||||||
@Mock
|
@Mock
|
||||||
private @NonNull World world;
|
private @NonNull World world;
|
||||||
private RanksManager rm;
|
|
||||||
private Settings settings;
|
private Settings settings;
|
||||||
@Mock
|
@Mock
|
||||||
private PluginManager pim;
|
private PluginManager pim;
|
||||||
|
|
|
@ -24,6 +24,7 @@ import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
@ -250,7 +251,7 @@ public class IslandsManagerTest extends AbstractCommonSetup {
|
||||||
when(islandCache.getIslandAt(any(Location.class))).thenReturn(island);
|
when(islandCache.getIslandAt(any(Location.class))).thenReturn(island);
|
||||||
when(islandCache.get(any(), any())).thenReturn(island);
|
when(islandCache.get(any(), any())).thenReturn(island);
|
||||||
optionalIsland = Optional.ofNullable(island);
|
optionalIsland = Optional.ofNullable(island);
|
||||||
when(islandCache.getIslands(world, uuid)).thenReturn(Set.of(island));
|
when(islandCache.getIslands(world, uuid)).thenReturn(List.of(island));
|
||||||
|
|
||||||
// User location
|
// User location
|
||||||
when(user.getLocation()).thenReturn(location);
|
when(user.getLocation()).thenReturn(location);
|
||||||
|
|
Loading…
Reference in New Issue