Flag visibility (#617)

* Saves world settings to config.yml when they are changed mid-game.

* Fixes and adds to tests

* WIP: Added visibility settings for flags.

Tests still need to be fixed and requires saving to config.yml.

* Fixes tests

* Completed changes.

* Renames method to be hidden flags instead of visible settings

GameModeAddons will need to adjust WorldSettings API based classes.
This commit is contained in:
tastybento 2019-03-23 15:38:06 -07:00 committed by GitHub
parent cab584d13d
commit 23491d0c4a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 201 additions and 54 deletions

View File

@ -126,9 +126,9 @@ public interface WorldSettings {
int getSeaHeight(); int getSeaHeight();
/** /**
* @return visible settings for player * @return hidden flag list
*/ */
List<String> getVisibleSettings(); List<String> getHiddenFlags();
/** /**
* @return the visitorBannedCommands * @return the visitorBannedCommands

View File

@ -281,14 +281,20 @@ public class Flag implements Comparable<Flag> {
* Converts a flag to a panel item. The content of the flag will change depending on who the user is and where they are. * Converts a flag to a panel item. The content of the flag will change depending on who the user is and where they are.
* @param plugin - plugin * @param plugin - plugin
* @param user - user that will see this flag * @param user - user that will see this flag
* @return - PanelItem for this flag * @param invisible - true if this flag is not visible to players
* @return - PanelItem for this flag or null if item is inivisible to user
*/ */
public PanelItem toPanelItem(BentoBox plugin, User user) { public PanelItem toPanelItem(BentoBox plugin, User user, boolean invisible) {
// Invisibility
if (!user.isOp() && invisible) {
return null;
}
// Start the flag conversion // Start the flag conversion
PanelItemBuilder pib = new PanelItemBuilder() PanelItemBuilder pib = new PanelItemBuilder()
.icon(new ItemStack(icon)) .icon(new ItemStack(icon))
.name(user.getTranslation("protection.panel.flag-item.name-layout", TextVariables.NAME, user.getTranslation(getNameReference()))) .name(user.getTranslation("protection.panel.flag-item.name-layout", TextVariables.NAME, user.getTranslation(getNameReference())))
.clickHandler(clickHandler); .clickHandler(clickHandler)
.invisible(invisible);
if (hasSubPanel()) { if (hasSubPanel()) {
pib.description(user.getTranslation("protection.panel.flag-item.menu-layout", TextVariables.DESCRIPTION, user.getTranslation(getDescriptionReference()))); pib.description(user.getTranslation("protection.panel.flag-item.menu-layout", TextVariables.DESCRIPTION, user.getTranslation(getDescriptionReference())));
return pib.build(); return pib.build();
@ -483,4 +489,5 @@ public class Flag implements Comparable<Flag> {
return new Flag(this); return new Flag(this);
} }
} }
} }

View File

@ -4,6 +4,7 @@ import org.bukkit.Sound;
import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.ClickType;
import world.bentobox.bentobox.BentoBox; import world.bentobox.bentobox.BentoBox;
import world.bentobox.bentobox.api.addons.GameModeAddon;
import world.bentobox.bentobox.api.localization.TextVariables; import world.bentobox.bentobox.api.localization.TextVariables;
import world.bentobox.bentobox.api.panels.Panel; import world.bentobox.bentobox.api.panels.Panel;
import world.bentobox.bentobox.api.panels.PanelItem; import world.bentobox.bentobox.api.panels.PanelItem;
@ -66,12 +67,17 @@ public class CycleClick implements PanelItem.ClickHandler {
} }
// Left clicking increases the rank required // Left clicking increases the rank required
// Right clicking decreases the rank required // Right clicking decreases the rank required
// Shift Left Click toggles player visibility
// Get the user's island // Get the user's island
island = plugin.getIslands().getIslandAt(user.getLocation()).orElse(plugin.getIslands().getIsland(user.getWorld(), user.getUniqueId())); island = plugin.getIslands().getIslandAt(user.getLocation()).orElse(plugin.getIslands().getIsland(user.getWorld(), user.getUniqueId()));
if (island != null && (user.isOp() || user.getUniqueId().equals(island.getOwner()))) { if (island != null && (user.isOp() || user.getUniqueId().equals(island.getOwner()))) {
changeOccurred = true; changeOccurred = true;
RanksManager rm = plugin.getRanksManager(); RanksManager rm = plugin.getRanksManager();
plugin.getFlagsManager().getFlag(id).ifPresent(flag -> { plugin.getFlagsManager().getFlag(id).ifPresent(flag -> {
// Flag visibility
boolean invisible = false;
// Rank
int currentRank = island.getFlag(flag); int currentRank = island.getFlag(flag);
if (click.equals(ClickType.LEFT)) { if (click.equals(ClickType.LEFT)) {
if (currentRank >= maxRank) { if (currentRank >= maxRank) {
@ -79,7 +85,7 @@ public class CycleClick implements PanelItem.ClickHandler {
} else { } else {
island.setFlag(flag, rm.getRankUpValue(currentRank)); island.setFlag(flag, rm.getRankUpValue(currentRank));
} }
user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_STONE_BUTTON_CLICK_ON, 1F, 1F); user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_STONE_BUTTON_CLICK_OFF, 1F, 1F);
} else if (click.equals(ClickType.RIGHT)) { } else if (click.equals(ClickType.RIGHT)) {
if (currentRank <= minRank) { if (currentRank <= minRank) {
island.setFlag(flag, maxRank); island.setFlag(flag, maxRank);
@ -87,9 +93,20 @@ public class CycleClick implements PanelItem.ClickHandler {
island.setFlag(flag, rm.getRankDownValue(currentRank)); island.setFlag(flag, rm.getRankDownValue(currentRank));
} }
user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_STONE_BUTTON_CLICK_ON, 1F, 1F); user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_STONE_BUTTON_CLICK_ON, 1F, 1F);
} else if (click.equals(ClickType.SHIFT_LEFT) && user.isOp()) {
if (!plugin.getIWM().getHiddenFlags(user.getWorld()).contains(flag.getID())) {
invisible = true;
plugin.getIWM().getHiddenFlags(user.getWorld()).add(flag.getID());
user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_GLASS_BREAK, 1F, 1F);
} else {
plugin.getIWM().getHiddenFlags(user.getWorld()).remove(flag.getID());
user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_NOTE_BLOCK_CHIME, 1F, 1F);
}
// Save changes
plugin.getIWM().getAddon(user.getWorld()).ifPresent(GameModeAddon::saveWorldSettings);
} }
// Apply change to panel // Apply change to panel
panel.getInventory().setItem(slot, flag.toPanelItem(plugin, user).getItem()); panel.getInventory().setItem(slot, flag.toPanelItem(plugin, user, invisible).getItem());
}); });
} else { } else {
user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_METAL_HIT, 1F, 1F); user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_METAL_HIT, 1F, 1F);

View File

@ -4,6 +4,7 @@ import org.bukkit.Sound;
import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.ClickType;
import world.bentobox.bentobox.BentoBox; import world.bentobox.bentobox.BentoBox;
import world.bentobox.bentobox.api.addons.GameModeAddon;
import world.bentobox.bentobox.api.localization.TextVariables; import world.bentobox.bentobox.api.localization.TextVariables;
import world.bentobox.bentobox.api.panels.Panel; import world.bentobox.bentobox.api.panels.Panel;
import world.bentobox.bentobox.api.panels.PanelItem.ClickHandler; import world.bentobox.bentobox.api.panels.PanelItem.ClickHandler;
@ -29,7 +30,7 @@ public class IslandToggleClick implements ClickHandler {
} }
@Override @Override
public boolean onClick(Panel panel, User user, ClickType clickType, int slot) { public boolean onClick(Panel panel, User user, ClickType click, int slot) {
// Get the world // Get the world
if (!plugin.getIWM().inWorld(user.getLocation())) { if (!plugin.getIWM().inWorld(user.getLocation())) {
user.sendMessage("general.errors.wrong-world"); user.sendMessage("general.errors.wrong-world");
@ -45,11 +46,27 @@ public class IslandToggleClick implements ClickHandler {
Island island = plugin.getIslands().getIslandAt(user.getLocation()).orElse(plugin.getIslands().getIsland(user.getWorld(), user.getUniqueId())); Island island = plugin.getIslands().getIslandAt(user.getLocation()).orElse(plugin.getIslands().getIsland(user.getWorld(), user.getUniqueId()));
if (island != null && (user.isOp() || user.getUniqueId().equals(island.getOwner()))) { if (island != null && (user.isOp() || user.getUniqueId().equals(island.getOwner()))) {
plugin.getFlagsManager().getFlag(id).ifPresent(flag -> { plugin.getFlagsManager().getFlag(id).ifPresent(flag -> {
// Toggle flag
island.toggleFlag(flag); // Visibility
user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_STONE_BUTTON_CLICK_ON, 1F, 1F); boolean invisible = false;
if (click.equals(ClickType.SHIFT_LEFT) && user.isOp()) {
if (!plugin.getIWM().getHiddenFlags(user.getWorld()).contains(flag.getID())) {
invisible = true;
plugin.getIWM().getHiddenFlags(user.getWorld()).add(flag.getID());
user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_GLASS_BREAK, 1F, 1F);
} else {
plugin.getIWM().getHiddenFlags(user.getWorld()).remove(flag.getID());
user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_NOTE_BLOCK_CHIME, 1F, 1F);
}
// Save changes
plugin.getIWM().getAddon(user.getWorld()).ifPresent(GameModeAddon::saveWorldSettings);
} else {
// Toggle flag
island.toggleFlag(flag);
user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_STONE_BUTTON_CLICK_ON, 1F, 1F);
}
// Apply change to panel // Apply change to panel
panel.getInventory().setItem(slot, flag.toPanelItem(plugin, user).getItem()); panel.getInventory().setItem(slot, flag.toPanelItem(plugin, user, invisible).getItem());
}); });
} else { } else {
user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_METAL_HIT, 1F, 1F); user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_METAL_HIT, 1F, 1F);

View File

@ -29,7 +29,7 @@ public class WorldToggleClick implements ClickHandler {
} }
@Override @Override
public boolean onClick(Panel panel, User user, ClickType clickType, int slot) { public boolean onClick(Panel panel, User user, ClickType click, int slot) {
// Get the world // Get the world
if (!plugin.getIWM().inWorld(user.getLocation())) { if (!plugin.getIWM().inWorld(user.getLocation())) {
user.sendMessage("general.errors.wrong-world"); user.sendMessage("general.errors.wrong-world");
@ -43,11 +43,27 @@ public class WorldToggleClick implements ClickHandler {
} }
// Get flag // Get flag
plugin.getFlagsManager().getFlag(id).ifPresent(flag -> { plugin.getFlagsManager().getFlag(id).ifPresent(flag -> {
// Toggle flag // Visibility
flag.setSetting(user.getWorld(), !flag.isSetForWorld(user.getWorld())); boolean invisible = false;
user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_STONE_BUTTON_CLICK_ON, 1F, 1F); if (click.equals(ClickType.SHIFT_LEFT) && user.isOp()) {
if (!plugin.getIWM().getHiddenFlags(user.getWorld()).contains(flag.getID())) {
invisible = true;
plugin.getIWM().getHiddenFlags(user.getWorld()).add(flag.getID());
user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_GLASS_BREAK, 1F, 1F);
} else {
plugin.getIWM().getHiddenFlags(user.getWorld()).remove(flag.getID());
user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_NOTE_BLOCK_CHIME, 1F, 1F);
}
// Save changes
plugin.getIWM().getAddon(user.getWorld()).ifPresent(GameModeAddon::saveWorldSettings);
} else {
// Toggle flag
flag.setSetting(user.getWorld(), !flag.isSetForWorld(user.getWorld()));
user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_STONE_BUTTON_CLICK_ON, 1F, 1F);
}
// Apply change to panel // Apply change to panel
panel.getInventory().setItem(slot, flag.toPanelItem(plugin, user).getItem()); panel.getInventory().setItem(slot, flag.toPanelItem(plugin, user, invisible).getItem());
// Save world settings // Save world settings
plugin.getIWM().getAddon(Util.getWorld(user.getWorld())).ifPresent(GameModeAddon::saveWorldSettings); plugin.getIWM().getAddon(Util.getWorld(user.getWorld())).ifPresent(GameModeAddon::saveWorldSettings);
}); });

View File

@ -25,10 +25,11 @@ public class PanelItem {
private boolean glow; private boolean glow;
private ItemMeta meta; private ItemMeta meta;
private boolean playerHead; private boolean playerHead;
private boolean invisible;
public PanelItem(ItemStack icon, String name, List<String> description, boolean glow, ClickHandler clickHandler, boolean playerHead) { public PanelItem(PanelItemBuilder builtItem) {
this.icon = icon; this.icon = builtItem.getIcon();
this.playerHead = playerHead; this.playerHead = builtItem.isPlayerHead();
// Get the meta // Get the meta
meta = icon.getItemMeta(); meta = icon.getItemMeta();
if (meta != null) { if (meta != null) {
@ -41,13 +42,13 @@ public class PanelItem {
icon.setItemMeta(meta); icon.setItemMeta(meta);
} }
this.clickHandler = clickHandler; this.clickHandler = builtItem.getClickHandler();
// Create the final item // Create the final item
setName(name); setName(builtItem.getName());
setDescription(description); setDescription(builtItem.getDescription());
setGlow(glow); setGlow(builtItem.isGlow());
setInvisible(builtItem.isInvisible());
} }
@ -80,6 +81,25 @@ public class PanelItem {
} }
} }
public boolean isInvisible() {
return invisible;
}
public void setInvisible(boolean invisible) {
this.invisible = invisible;
if (meta != null) {
if (invisible) {
meta.addEnchant(Enchantment.VANISHING_CURSE, 1, true);
meta.removeItemFlags(ItemFlag.HIDE_ENCHANTS);
icon.setItemMeta(meta);
} else {
meta.removeEnchant(Enchantment.VANISHING_CURSE);
meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
icon.setItemMeta(meta);
}
}
}
public Optional<ClickHandler> getClickHandler() { public Optional<ClickHandler> getClickHandler() {
return Optional.ofNullable(clickHandler); return Optional.ofNullable(clickHandler);
} }

View File

@ -25,6 +25,10 @@ public class PanelBuilder {
* @return PanelBuilder * @return PanelBuilder
*/ */
public PanelBuilder item(PanelItem item) { public PanelBuilder item(PanelItem item) {
// Do not add null items
if (item == null) {
return this;
}
return item(nextSlot(), item); return item(nextSlot(), item);
} }
@ -35,6 +39,10 @@ public class PanelBuilder {
* @return PanelBuilder * @return PanelBuilder
*/ */
public PanelBuilder item(int slot, PanelItem item) { public PanelBuilder item(int slot, PanelItem item) {
// Do not add null items
if (item == null) {
return this;
}
items.put(slot, item); items.put(slot, item);
return this; return this;
} }

View File

@ -18,6 +18,7 @@ public class PanelItemBuilder {
private boolean glow = false; private boolean glow = false;
private PanelItem.ClickHandler clickHandler; private PanelItem.ClickHandler clickHandler;
private boolean playerHead; private boolean playerHead;
private boolean invisible;
public PanelItemBuilder icon(Material icon) { public PanelItemBuilder icon(Material icon) {
this.icon = new ItemStack(icon); this.icon = new ItemStack(icon);
@ -86,13 +87,67 @@ public class PanelItemBuilder {
return this; return this;
} }
public PanelItemBuilder invisible(boolean invisible) {
this.invisible = invisible;
return this;
}
public PanelItemBuilder clickHandler(ClickHandler clickHandler) { public PanelItemBuilder clickHandler(ClickHandler clickHandler) {
this.clickHandler = clickHandler; this.clickHandler = clickHandler;
return this; return this;
} }
public PanelItem build() { public PanelItem build() {
return new PanelItem(icon, name, description, glow, clickHandler, playerHead); return new PanelItem(this);
}
/**
* @return the icon
*/
public ItemStack getIcon() {
return icon;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @return the description
*/
public List<String> getDescription() {
return description;
}
/**
* @return the glow
*/
public boolean isGlow() {
return glow;
}
/**
* @return the clickHandler
*/
public PanelItem.ClickHandler getClickHandler() {
return clickHandler;
}
/**
* @return the playerHead
*/
public boolean isPlayerHead() {
return playerHead;
}
/**
* @return the invisible
*/
public boolean isInvisible() {
return invisible;
} }
} }

View File

@ -604,8 +604,13 @@ public class IslandWorldManager {
return gameModes.get(world).getWorldSettings().getDefaultIslandFlags(); return gameModes.get(world).getWorldSettings().getDefaultIslandFlags();
} }
public List<String> getVisibleSettings(@NonNull World world) { /**
return gameModes.get(world).getWorldSettings().getVisibleSettings(); * Returns a list of flags that should NOT be visible to the player
* @param world - world
* @return list of hidden flags
*/
public List<String> getHiddenFlags(@NonNull World world) {
return gameModes.get(world).getWorldSettings().getHiddenFlags();
} }
/** /**

View File

@ -46,8 +46,10 @@ public class SettingsPanel {
.collect(Collectors.toList()); .collect(Collectors.toList());
// Remove any that are not for this game mode // Remove any that are not for this game mode
plugin.getIWM().getAddon(world).ifPresent(gm -> flags.removeIf(f -> !f.getGameModes().isEmpty() && !f.getGameModes().contains(gm))); plugin.getIWM().getAddon(world).ifPresent(gm -> flags.removeIf(f -> !f.getGameModes().isEmpty() && !f.getGameModes().contains(gm)));
// Use paging // Use paging
flags.stream().skip(page * 43L).limit(page * 43L + 43L).forEach((f -> panelBuilder.item(f.toPanelItem(plugin, user)))); flags.stream().skip(page * 43L).limit(page * 43L + 43L)
.forEach((f -> panelBuilder.item(f.toPanelItem(plugin, user, plugin.getIWM().getHiddenFlags(world).contains(f.getID())))));
// Add forward and backward icons // Add forward and backward icons
if (page > 0) { if (page > 0) {
// Previous page icon // Previous page icon

View File

@ -349,7 +349,7 @@ public class FlagTest {
when(rm.getRank(Mockito.eq(RanksManager.OWNER_RANK))).thenReturn("Owner"); when(rm.getRank(Mockito.eq(RanksManager.OWNER_RANK))).thenReturn("Owner");
PanelItem pi = f.toPanelItem(plugin, user); PanelItem pi = f.toPanelItem(plugin, user, false);
verify(user).getTranslation(Mockito.eq("protection.flags.flagID.name")); verify(user).getTranslation(Mockito.eq("protection.flags.flagID.name"));
verify(user).getTranslation(Mockito.eq("protection.panel.flag-item.name-layout"), Mockito.anyVararg()); verify(user).getTranslation(Mockito.eq("protection.panel.flag-item.name-layout"), Mockito.anyVararg());

View File

@ -163,7 +163,7 @@ public class CycleClickTest {
PanelItem panelItem = mock(PanelItem.class); PanelItem panelItem = mock(PanelItem.class);
flag = mock(Flag.class); flag = mock(Flag.class);
when(flag.toPanelItem(Mockito.any(), Mockito.any())).thenReturn(panelItem); when(flag.toPanelItem(Mockito.any(), Mockito.any(), Mockito.eq(false))).thenReturn(panelItem);
when(panelItem.getItem()).thenReturn(mock(ItemStack.class)); when(panelItem.getItem()).thenReturn(mock(ItemStack.class));
FlagsManager fm = mock(FlagsManager.class); FlagsManager fm = mock(FlagsManager.class);
when(fm.getFlag(Mockito.anyString())).thenReturn(Optional.of(flag)); when(fm.getFlag(Mockito.anyString())).thenReturn(Optional.of(flag));
@ -233,14 +233,14 @@ public class CycleClickTest {
// Click left // Click left
assertTrue(udc.onClick(panel, user, ClickType.LEFT, SLOT)); assertTrue(udc.onClick(panel, user, ClickType.LEFT, SLOT));
Mockito.verify(island).setFlag(Mockito.eq(flag), Mockito.eq(RanksManager.OWNER_RANK)); Mockito.verify(island).setFlag(Mockito.eq(flag), Mockito.eq(RanksManager.OWNER_RANK));
Mockito.verify(flag).toPanelItem(Mockito.any(), Mockito.any()); Mockito.verify(flag).toPanelItem(Mockito.any(), Mockito.any(), Mockito.eq(false));
Mockito.verify(inv).setItem(Mockito.eq(SLOT), Mockito.any()); Mockito.verify(inv).setItem(Mockito.eq(SLOT), Mockito.any());
// Check rollover // Check rollover
// Clicking when Owner should go to Visitor // Clicking when Owner should go to Visitor
when(island.getFlag(Mockito.any())).thenReturn(RanksManager.OWNER_RANK); when(island.getFlag(Mockito.any())).thenReturn(RanksManager.OWNER_RANK);
assertTrue(udc.onClick(panel, user, ClickType.LEFT, SLOT)); assertTrue(udc.onClick(panel, user, ClickType.LEFT, SLOT));
Mockito.verify(island).setFlag(Mockito.eq(flag), Mockito.eq(RanksManager.VISITOR_RANK)); Mockito.verify(island).setFlag(Mockito.eq(flag), Mockito.eq(RanksManager.VISITOR_RANK));
Mockito.verify(flag, Mockito.times(2)).toPanelItem(Mockito.any(), Mockito.any()); Mockito.verify(flag, Mockito.times(2)).toPanelItem(Mockito.any(), Mockito.any(), Mockito.eq(false));
Mockito.verify(inv, Mockito.times(2)).setItem(Mockito.eq(SLOT), Mockito.any()); Mockito.verify(inv, Mockito.times(2)).setItem(Mockito.eq(SLOT), Mockito.any());
} }
@ -254,14 +254,14 @@ public class CycleClickTest {
// Click left // Click left
assertTrue(udc.onClick(panel, user, ClickType.LEFT, SLOT)); assertTrue(udc.onClick(panel, user, ClickType.LEFT, SLOT));
Mockito.verify(island).setFlag(Mockito.eq(flag), Mockito.eq(RanksManager.TRUSTED_RANK)); Mockito.verify(island).setFlag(Mockito.eq(flag), Mockito.eq(RanksManager.TRUSTED_RANK));
Mockito.verify(flag).toPanelItem(Mockito.any(), Mockito.any()); Mockito.verify(flag).toPanelItem(Mockito.any(), Mockito.any(), Mockito.eq(false));
Mockito.verify(inv).setItem(Mockito.eq(SLOT), Mockito.any()); Mockito.verify(inv).setItem(Mockito.eq(SLOT), Mockito.any());
// Check rollover // Check rollover
// Clicking when Member should go to Coop // Clicking when Member should go to Coop
when(island.getFlag(Mockito.any())).thenReturn(RanksManager.MEMBER_RANK); when(island.getFlag(Mockito.any())).thenReturn(RanksManager.MEMBER_RANK);
assertTrue(udc.onClick(panel, user, ClickType.LEFT, SLOT)); assertTrue(udc.onClick(panel, user, ClickType.LEFT, SLOT));
Mockito.verify(island).setFlag(Mockito.eq(flag), Mockito.eq(RanksManager.COOP_RANK)); Mockito.verify(island).setFlag(Mockito.eq(flag), Mockito.eq(RanksManager.COOP_RANK));
Mockito.verify(flag, Mockito.times(2)).toPanelItem(Mockito.any(), Mockito.any()); Mockito.verify(flag, Mockito.times(2)).toPanelItem(Mockito.any(), Mockito.any(), Mockito.eq(false));
Mockito.verify(inv, Mockito.times(2)).setItem(Mockito.eq(SLOT), Mockito.any()); Mockito.verify(inv, Mockito.times(2)).setItem(Mockito.eq(SLOT), Mockito.any());
} }
@ -273,14 +273,14 @@ public class CycleClickTest {
// Right click - down rank to Trusted // Right click - down rank to Trusted
assertTrue(udc.onClick(panel, user, ClickType.RIGHT, SLOT)); assertTrue(udc.onClick(panel, user, ClickType.RIGHT, SLOT));
Mockito.verify(island).setFlag(Mockito.eq(flag), Mockito.eq(RanksManager.TRUSTED_RANK)); Mockito.verify(island).setFlag(Mockito.eq(flag), Mockito.eq(RanksManager.TRUSTED_RANK));
Mockito.verify(flag).toPanelItem(Mockito.any(), Mockito.any()); Mockito.verify(flag).toPanelItem(Mockito.any(), Mockito.any(), Mockito.eq(false));
Mockito.verify(inv).setItem(Mockito.eq(SLOT), Mockito.any()); Mockito.verify(inv).setItem(Mockito.eq(SLOT), Mockito.any());
// Check rollover // Check rollover
// Clicking when Visitor should go to Owner // Clicking when Visitor should go to Owner
when(island.getFlag(Mockito.any())).thenReturn(RanksManager.VISITOR_RANK); when(island.getFlag(Mockito.any())).thenReturn(RanksManager.VISITOR_RANK);
assertTrue(udc.onClick(panel, user, ClickType.RIGHT, SLOT)); assertTrue(udc.onClick(panel, user, ClickType.RIGHT, SLOT));
Mockito.verify(island).setFlag(Mockito.eq(flag), Mockito.eq(RanksManager.OWNER_RANK)); Mockito.verify(island).setFlag(Mockito.eq(flag), Mockito.eq(RanksManager.OWNER_RANK));
Mockito.verify(flag, Mockito.times(2)).toPanelItem(Mockito.any(), Mockito.any()); Mockito.verify(flag, Mockito.times(2)).toPanelItem(Mockito.any(), Mockito.any(), Mockito.eq(false));
Mockito.verify(inv, Mockito.times(2)).setItem(Mockito.eq(SLOT), Mockito.any()); Mockito.verify(inv, Mockito.times(2)).setItem(Mockito.eq(SLOT), Mockito.any());
} }
@ -294,14 +294,14 @@ public class CycleClickTest {
// Right click // Right click
assertTrue(udc.onClick(panel, user, ClickType.RIGHT, SLOT)); assertTrue(udc.onClick(panel, user, ClickType.RIGHT, SLOT));
Mockito.verify(island).setFlag(Mockito.eq(flag), Mockito.eq(RanksManager.COOP_RANK)); Mockito.verify(island).setFlag(Mockito.eq(flag), Mockito.eq(RanksManager.COOP_RANK));
Mockito.verify(flag).toPanelItem(Mockito.any(), Mockito.any()); Mockito.verify(flag).toPanelItem(Mockito.any(), Mockito.any(), Mockito.eq(false));
Mockito.verify(inv).setItem(Mockito.eq(SLOT), Mockito.any()); Mockito.verify(inv).setItem(Mockito.eq(SLOT), Mockito.any());
// Check rollover // Check rollover
// Clicking when Coop should go to Member // Clicking when Coop should go to Member
when(island.getFlag(Mockito.any())).thenReturn(RanksManager.COOP_RANK); when(island.getFlag(Mockito.any())).thenReturn(RanksManager.COOP_RANK);
assertTrue(udc.onClick(panel, user, ClickType.RIGHT, SLOT)); assertTrue(udc.onClick(panel, user, ClickType.RIGHT, SLOT));
Mockito.verify(island).setFlag(Mockito.eq(flag), Mockito.eq(RanksManager.MEMBER_RANK)); Mockito.verify(island).setFlag(Mockito.eq(flag), Mockito.eq(RanksManager.MEMBER_RANK));
Mockito.verify(flag, Mockito.times(2)).toPanelItem(Mockito.any(), Mockito.any()); Mockito.verify(flag, Mockito.times(2)).toPanelItem(Mockito.any(), Mockito.any(), Mockito.eq(false));
Mockito.verify(inv, Mockito.times(2)).setItem(Mockito.eq(SLOT), Mockito.any()); Mockito.verify(inv, Mockito.times(2)).setItem(Mockito.eq(SLOT), Mockito.any());
} }

View File

@ -82,7 +82,7 @@ public class IslandToggleClickTest {
when(flag.isSetForWorld(Mockito.any())).thenReturn(false); when(flag.isSetForWorld(Mockito.any())).thenReturn(false);
PanelItem item = mock(PanelItem.class); PanelItem item = mock(PanelItem.class);
when(item.getItem()).thenReturn(mock(ItemStack.class)); when(item.getItem()).thenReturn(mock(ItemStack.class));
when(flag.toPanelItem(Mockito.any(), Mockito.eq(user))).thenReturn(item); when(flag.toPanelItem(Mockito.any(), Mockito.eq(user), Mockito.eq(false))).thenReturn(item);
when(fm.getFlag(Mockito.anyString())).thenReturn(Optional.of(flag)); when(fm.getFlag(Mockito.anyString())).thenReturn(Optional.of(flag));
when(plugin.getFlagsManager()).thenReturn(fm); when(plugin.getFlagsManager()).thenReturn(fm);

View File

@ -36,7 +36,7 @@ import world.bentobox.bentobox.util.Util;
@PrepareForTest({BentoBox.class, Util.class }) @PrepareForTest({BentoBox.class, Util.class })
public class WorldToggleClickTest { public class WorldToggleClickTest {
@Mock @Mock
private IslandWorldManager iwm; private IslandWorldManager iwm;
private WorldToggleClick listener; private WorldToggleClick listener;
@Mock @Mock
@ -45,7 +45,7 @@ public class WorldToggleClickTest {
private User user; private User user;
private Flag flag; private Flag flag;
@Mock @Mock
private GameModeAddon addon; private GameModeAddon addon;
/** /**
* @throws java.lang.Exception * @throws java.lang.Exception
@ -61,20 +61,20 @@ public class WorldToggleClickTest {
when(iwm.inWorld(any(Location.class))).thenReturn(true); when(iwm.inWorld(any(Location.class))).thenReturn(true);
when(iwm.getPermissionPrefix(Mockito.any())).thenReturn("bskyblock"); when(iwm.getPermissionPrefix(Mockito.any())).thenReturn("bskyblock");
Optional<GameModeAddon> optionalAddon = Optional.of(addon); Optional<GameModeAddon> optionalAddon = Optional.of(addon);
when(iwm.getAddon(Mockito.any())).thenReturn(optionalAddon); when(iwm.getAddon(Mockito.any())).thenReturn(optionalAddon);
when(plugin.getIWM()).thenReturn(iwm); when(plugin.getIWM()).thenReturn(iwm);
listener = new WorldToggleClick("test"); listener = new WorldToggleClick("test");
// Panel // Panel
when(panel.getInventory()).thenReturn(mock(Inventory.class)); when(panel.getInventory()).thenReturn(mock(Inventory.class));
// User // User
// Sometimes use Mockito.withSettings().verboseLogging() // Sometimes use Mockito.withSettings().verboseLogging()
when(user.getWorld()).thenReturn(mock(World.class)); when(user.getWorld()).thenReturn(mock(World.class));
when(user.getLocation()).thenReturn(mock(Location.class)); when(user.getLocation()).thenReturn(mock(Location.class));
when(user.getPlayer()).thenReturn(mock(Player.class)); when(user.getPlayer()).thenReturn(mock(Player.class));
// Util // Util
PowerMockito.mockStatic(Util.class); PowerMockito.mockStatic(Util.class);
when(Util.getWorld(Mockito.any())).thenReturn(mock(World.class)); when(Util.getWorld(Mockito.any())).thenReturn(mock(World.class));
@ -83,10 +83,10 @@ public class WorldToggleClickTest {
FlagsManager fm = mock(FlagsManager.class); FlagsManager fm = mock(FlagsManager.class);
flag = mock(Flag.class); flag = mock(Flag.class);
when(flag.isSetForWorld(Mockito.any())).thenReturn(false); when(flag.isSetForWorld(Mockito.any())).thenReturn(false);
PanelItem item = mock(PanelItem.class); PanelItem item = mock(PanelItem.class);
when(item.getItem()).thenReturn(mock(ItemStack.class)); when(item.getItem()).thenReturn(mock(ItemStack.class));
when(flag.toPanelItem(Mockito.any(), Mockito.eq(user))).thenReturn(item); when(flag.toPanelItem(Mockito.any(), Mockito.eq(user), Mockito.eq(false))).thenReturn(item);
when(fm.getFlag(Mockito.anyString())).thenReturn(Optional.of(flag)); when(fm.getFlag(Mockito.anyString())).thenReturn(Optional.of(flag));
when(plugin.getFlagsManager()).thenReturn(fm); when(plugin.getFlagsManager()).thenReturn(fm);
} }

View File

@ -148,7 +148,7 @@ public class PVPListenerTest {
when(flag.isSetForWorld(Mockito.any())).thenReturn(false); when(flag.isSetForWorld(Mockito.any())).thenReturn(false);
PanelItem item = mock(PanelItem.class); PanelItem item = mock(PanelItem.class);
when(item.getItem()).thenReturn(mock(ItemStack.class)); when(item.getItem()).thenReturn(mock(ItemStack.class));
when(flag.toPanelItem(Mockito.any(), Mockito.any())).thenReturn(item); when(flag.toPanelItem(Mockito.any(), Mockito.any(), Mockito.eq(false))).thenReturn(item);
when(fm.getFlag(Mockito.anyString())).thenReturn(Optional.of(flag)); when(fm.getFlag(Mockito.anyString())).thenReturn(Optional.of(flag));
when(plugin.getFlagsManager()).thenReturn(fm); when(plugin.getFlagsManager()).thenReturn(fm);

View File

@ -53,7 +53,7 @@ import world.bentobox.bentobox.util.Util;
@PrepareForTest({BentoBox.class, Util.class, Bukkit.class }) @PrepareForTest({BentoBox.class, Util.class, Bukkit.class })
public class InvincibleVisitorsListenerTest { public class InvincibleVisitorsListenerTest {
@Mock @Mock
private IslandWorldManager iwm; private IslandWorldManager iwm;
private InvincibleVisitorsListener listener; private InvincibleVisitorsListener listener;
@Mock @Mock
@ -83,7 +83,7 @@ public class InvincibleVisitorsListenerTest {
when(iwm.inWorld(any(Location.class))).thenReturn(true); when(iwm.inWorld(any(Location.class))).thenReturn(true);
when(iwm.getPermissionPrefix(Mockito.any())).thenReturn("bskyblock"); when(iwm.getPermissionPrefix(Mockito.any())).thenReturn("bskyblock");
Optional<GameModeAddon> optionalAddon = Optional.of(addon); Optional<GameModeAddon> optionalAddon = Optional.of(addon);
when(iwm.getAddon(Mockito.any())).thenReturn(optionalAddon); when(iwm.getAddon(Mockito.any())).thenReturn(optionalAddon);
when(plugin.getIWM()).thenReturn(iwm); when(plugin.getIWM()).thenReturn(iwm);
listener = new InvincibleVisitorsListener(); listener = new InvincibleVisitorsListener();
@ -107,7 +107,7 @@ public class InvincibleVisitorsListenerTest {
when(flag.isSetForWorld(Mockito.any())).thenReturn(false); when(flag.isSetForWorld(Mockito.any())).thenReturn(false);
PanelItem item = mock(PanelItem.class); PanelItem item = mock(PanelItem.class);
when(item.getItem()).thenReturn(mock(ItemStack.class)); when(item.getItem()).thenReturn(mock(ItemStack.class));
when(flag.toPanelItem(Mockito.any(), Mockito.eq(user))).thenReturn(item); when(flag.toPanelItem(Mockito.any(), Mockito.eq(user), Mockito.eq(false))).thenReturn(item);
when(fm.getFlag(Mockito.anyString())).thenReturn(Optional.of(flag)); when(fm.getFlag(Mockito.anyString())).thenReturn(Optional.of(flag));
when(plugin.getFlagsManager()).thenReturn(fm); when(plugin.getFlagsManager()).thenReturn(fm);

View File

@ -618,13 +618,13 @@ public class IslandWorldManagerTest {
} }
/** /**
* Test method for {@link world.bentobox.bentobox.managers.IslandWorldManager#getVisibleSettings(org.bukkit.World)}. * Test method for {@link world.bentobox.bentobox.managers.IslandWorldManager#getHiddenFlags(org.bukkit.World)}.
*/ */
@Test @Test
public void testGetVisibleSettings() { public void testGetVisibleSettings() {
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
when(ws.getVisibleSettings()).thenReturn(list); when(ws.getHiddenFlags()).thenReturn(list);
assertEquals(list, iwm.getVisibleSettings(world)); assertEquals(list, iwm.getHiddenFlags(world));
} }
/** /**