mirror of
https://github.com/BentoBoxWorld/BentoBox.git
synced 2024-09-28 14:47:30 +02:00
Renamed Island#addToBanList() and Island#removeFromBanList() + added log in them
They respectively got renamed to Island#ban() and Island#unban(). They now require the UUID of an issuer (which can be null, but it's better to provide one)
This commit is contained in:
parent
fa3dbc5519
commit
369600e4d5
@ -80,24 +80,24 @@ public class IslandBanCommand extends CompositeCommand {
|
||||
return ban(user, target);
|
||||
}
|
||||
|
||||
private boolean ban(User user, User targetUser) {
|
||||
Island island = getIslands().getIsland(getWorld(), user.getUniqueId());
|
||||
private boolean ban(User issuer, User target) {
|
||||
Island island = getIslands().getIsland(getWorld(), issuer.getUniqueId());
|
||||
|
||||
// Check if player can ban any more players
|
||||
int banLimit = user.getPermissionValue(getPermissionPrefix() + "ban.maxlimit", getIWM().getBanLimit(getWorld()));
|
||||
int banLimit = issuer.getPermissionValue(getPermissionPrefix() + "ban.maxlimit", getIWM().getBanLimit(getWorld()));
|
||||
if (banLimit <= -1 || island.getBanned().size() < banLimit) {
|
||||
if (island.addToBanList(targetUser.getUniqueId())) {
|
||||
user.sendMessage("general.success");
|
||||
targetUser.sendMessage("commands.island.ban.owner-banned-you", TextVariables.NAME, user.getName());
|
||||
if (island.ban(issuer.getUniqueId(), target.getUniqueId())) {
|
||||
issuer.sendMessage("general.success");
|
||||
target.sendMessage("commands.island.ban.owner-banned-you", TextVariables.NAME, issuer.getName());
|
||||
// If the player is online, has an island and on the banned island, move them home immediately
|
||||
if (targetUser.isOnline() && getIslands().hasIsland(getWorld(), targetUser.getUniqueId()) && island.onIsland(targetUser.getLocation())) {
|
||||
getIslands().homeTeleport(getWorld(), targetUser.getPlayer());
|
||||
island.getWorld().playSound(targetUser.getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1F, 1F);
|
||||
if (target.isOnline() && getIslands().hasIsland(getWorld(), target.getUniqueId()) && island.onIsland(target.getLocation())) {
|
||||
getIslands().homeTeleport(getWorld(), target.getPlayer());
|
||||
island.getWorld().playSound(target.getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1F, 1F);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
user.sendMessage("commands.island.ban.cannot-ban-more-players");
|
||||
issuer.sendMessage("commands.island.ban.cannot-ban-more-players");
|
||||
}
|
||||
// Banning was blocked, maybe due to an event cancellation. Fail silently.
|
||||
return false;
|
||||
|
@ -64,14 +64,14 @@ public class IslandUnbanCommand extends CompositeCommand {
|
||||
return unban(user, targetUser);
|
||||
}
|
||||
|
||||
private boolean unban(User user, User targetUser) {
|
||||
if (getIslands().getIsland(getWorld(), user.getUniqueId()).removeFromBanList(targetUser.getUniqueId())) {
|
||||
user.sendMessage("general.success");
|
||||
targetUser.sendMessage("commands.island.unban.you-are-unbanned", TextVariables.NAME, user.getName());
|
||||
private boolean unban(User issuer, User target) {
|
||||
if (getIslands().getIsland(getWorld(), issuer.getUniqueId()).unban(issuer.getUniqueId(), target.getUniqueId())) {
|
||||
issuer.sendMessage("general.success");
|
||||
target.sendMessage("commands.island.unban.you-are-unbanned", TextVariables.NAME, issuer.getName());
|
||||
// Set cooldown
|
||||
if (getSettings().getBanCooldown() > 0 && getParent() != null) {
|
||||
getParent().getSubCommand("ban").ifPresent(subCommand ->
|
||||
subCommand.setCooldown(user.getUniqueId(), targetUser.getUniqueId(), getSettings().getBanCooldown() * 60));
|
||||
subCommand.setCooldown(issuer.getUniqueId(), target.getUniqueId(), getSettings().getBanCooldown() * 60));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -126,14 +126,17 @@ public class Island implements DataObject {
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds target to a list of banned players for this island. May be blocked by the event being cancelled.
|
||||
* Bans the target player from this Island.
|
||||
* If the player is a member, coop or trustee, they will be removed from those lists.
|
||||
* @param targetUUID - the target's UUID
|
||||
* @return true if successfully added
|
||||
* @param issuer UUID of the issuer, may be null.
|
||||
* Whenever possible, one should be provided.
|
||||
* @param target UUID of the target, must be provided.
|
||||
* @return {@code true} if the target is successfully banned, {@code false} otherwise.
|
||||
*/
|
||||
public boolean addToBanList(UUID targetUUID) {
|
||||
if (targetUUID != null) {
|
||||
members.put(targetUUID, RanksManager.BANNED_RANK);
|
||||
public boolean ban(UUID issuer, UUID target) {
|
||||
if (target != null) {
|
||||
members.put(target, RanksManager.BANNED_RANK);
|
||||
log(new LogEntry.Builder("BAN").data("player", target).data("issuer", issuer).build());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@ -152,6 +155,21 @@ public class Island implements DataObject {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Unbans the target player from this Island.
|
||||
* @param issuer UUID of the issuer, may be null.
|
||||
* Whenever possible, one should be provided.
|
||||
* @param target UUID of the target, must be provided.
|
||||
* @return {@code true} if the target is successfully unbanned, {@code false} otherwise.
|
||||
*/
|
||||
public boolean unban(UUID issuer, UUID target) {
|
||||
if (members.remove(target) != null) {
|
||||
log(new LogEntry.Builder("UNBAN").data("player", target).data("issuer", issuer).build());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the center Location
|
||||
*/
|
||||
@ -405,15 +423,6 @@ public class Island implements DataObject {
|
||||
return Util.sameWorld(world, target.getWorld()) && target.getBlockX() >= getMinProtectedX() && target.getBlockX() < (getMinProtectedX() + protectionRange * 2) && target.getBlockZ() >= getMinProtectedZ() && target.getBlockZ() < (getMinProtectedZ() + protectionRange * 2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes target from the banned list. May be cancelled by unban event.
|
||||
* @param targetUUID - the target's UUID
|
||||
* @return true if successful, otherwise false.
|
||||
*/
|
||||
public boolean removeFromBanList(UUID targetUUID) {
|
||||
return (members.remove(targetUUID) != null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes a player from the team member map. Generally, you should
|
||||
* use {@link world.bentobox.bentobox.managers.IslandsManager#removePlayer(World, UUID)}
|
||||
|
@ -745,7 +745,6 @@ public class IslandsManager {
|
||||
islandCache.addPlayer(playerUUID, teamIsland);
|
||||
// Save the database
|
||||
save(false);
|
||||
|
||||
}
|
||||
|
||||
public void setLast(Location last) {
|
||||
|
@ -402,7 +402,7 @@ public class TestBentoBox {
|
||||
assertFalse(members.contains(member3));
|
||||
|
||||
// Ban member
|
||||
island.addToBanList(member1);
|
||||
island.ban(null, member1);
|
||||
members = island.getMemberSet();
|
||||
assertTrue(members.contains(playerUUID));
|
||||
assertFalse(members.contains(member1));
|
||||
@ -413,7 +413,7 @@ public class TestBentoBox {
|
||||
assertTrue(banned.contains(member1));
|
||||
|
||||
// Unban
|
||||
island.removeFromBanList(member1);
|
||||
island.unban(null, member1);
|
||||
assertFalse(island.getBanned().contains(member1));
|
||||
|
||||
// Protection
|
||||
@ -445,7 +445,7 @@ public class TestBentoBox {
|
||||
// Check if the members have capability
|
||||
User mem1 = User.getInstance(member1); // Visitor
|
||||
User mem2 = User.getInstance(member2); // Member
|
||||
island.addToBanList(member3);
|
||||
island.ban(null, member3);
|
||||
User mem3 = User.getInstance(member3); // Banned
|
||||
|
||||
// Member 1 is a visitor
|
||||
|
@ -237,7 +237,7 @@ public class IslandBanCommandTest {
|
||||
when(user.getPermissionValue(Mockito.anyString(), Mockito.anyInt())).thenReturn(-1);
|
||||
|
||||
// Allow adding to ban list
|
||||
when(island.addToBanList(Mockito.any())).thenReturn(true);
|
||||
when(island.ban(Mockito.any(), Mockito.any())).thenReturn(true);
|
||||
|
||||
assertTrue(ibc.execute(user, ibc.getLabel(), Collections.singletonList("bill")));
|
||||
Mockito.verify(user).sendMessage("general.success");
|
||||
@ -259,7 +259,7 @@ public class IslandBanCommandTest {
|
||||
when(User.getInstance(Mockito.any(UUID.class))).thenReturn(targetUser);
|
||||
when(user.getPermissionValue(Mockito.anyString(), Mockito.anyInt())).thenReturn(-1);
|
||||
// Allow adding to ban list
|
||||
when(island.addToBanList(Mockito.any())).thenReturn(true);
|
||||
when(island.ban(Mockito.any(), Mockito.any())).thenReturn(true);
|
||||
|
||||
assertTrue(ibc.execute(user, ibc.getLabel(), Collections.singletonList("bill")));
|
||||
Mockito.verify(user).sendMessage("general.success");
|
||||
@ -280,7 +280,7 @@ public class IslandBanCommandTest {
|
||||
when(targetUser.isOnline()).thenReturn(true);
|
||||
when(User.getInstance(Mockito.any(UUID.class))).thenReturn(targetUser);
|
||||
// Disallow adding to ban list - even cancelled
|
||||
when(island.addToBanList(Mockito.any())).thenReturn(false);
|
||||
when(island.ban(Mockito.any(), Mockito.any())).thenReturn(false);
|
||||
|
||||
assertFalse(ibc.execute(user, ibc.getLabel(), Collections.singletonList("bill")));
|
||||
Mockito.verify(user, Mockito.never()).sendMessage("general.success");
|
||||
|
@ -208,7 +208,7 @@ public class IslandUnbanCommandTest {
|
||||
when(island.isBanned(Mockito.eq(targetUUID))).thenReturn(true);
|
||||
|
||||
// Allow removing from ban list
|
||||
when(island.removeFromBanList(Mockito.any())).thenReturn(true);
|
||||
when(island.unban(Mockito.any(), Mockito.any())).thenReturn(true);
|
||||
|
||||
assertTrue(iubc.execute(user, iubc.getLabel(), Collections.singletonList("bill")));
|
||||
Mockito.verify(user).sendMessage("general.success");
|
||||
@ -232,7 +232,7 @@ public class IslandUnbanCommandTest {
|
||||
when(island.isBanned(Mockito.eq(targetUUID))).thenReturn(true);
|
||||
|
||||
// Allow removing from ban list
|
||||
when(island.removeFromBanList(Mockito.any())).thenReturn(false);
|
||||
when(island.unban(Mockito.any(), Mockito.any())).thenReturn(false);
|
||||
|
||||
assertFalse(iubc.execute(user, iubc.getLabel(), Collections.singletonList("bill")));
|
||||
Mockito.verify(user, Mockito.never()).sendMessage("general.success");
|
||||
|
Loading…
Reference in New Issue
Block a user