From f1eaa0fcde53700d8b15b9bb1fa59235965a532f Mon Sep 17 00:00:00 2001 From: tastybento Date: Sun, 5 Feb 2023 16:23:23 -0800 Subject: [PATCH] Refactor to reduce complexity --- .../clicklisteners/IslandToggleClick.java | 100 ++++++++++-------- 1 file changed, 58 insertions(+), 42 deletions(-) diff --git a/src/main/java/world/bentobox/bentobox/api/flags/clicklisteners/IslandToggleClick.java b/src/main/java/world/bentobox/bentobox/api/flags/clicklisteners/IslandToggleClick.java index 5f234fd24..056af998c 100644 --- a/src/main/java/world/bentobox/bentobox/api/flags/clicklisteners/IslandToggleClick.java +++ b/src/main/java/world/bentobox/bentobox/api/flags/clicklisteners/IslandToggleClick.java @@ -9,6 +9,7 @@ import org.bukkit.event.inventory.ClickType; import world.bentobox.bentobox.BentoBox; import world.bentobox.bentobox.api.addons.GameModeAddon; import world.bentobox.bentobox.api.events.flags.FlagSettingChangeEvent; +import world.bentobox.bentobox.api.flags.Flag; import world.bentobox.bentobox.api.localization.TextVariables; import world.bentobox.bentobox.api.panels.Panel; import world.bentobox.bentobox.api.panels.PanelItem.ClickHandler; @@ -60,18 +61,7 @@ public class IslandToggleClick implements ClickHandler { { if (click.equals(ClickType.SHIFT_LEFT) && user.isOp()) { - if (!plugin.getIWM().getHiddenFlags(user.getWorld()).contains(flag.getID())) - { - 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); + shiftLeftClick(user, flag); } else { @@ -82,40 +72,66 @@ public class IslandToggleClick implements ClickHandler { user.notify("protection.panel.flag-item.setting-cooldown"); return; } - // Toggle flag - island.toggleFlag(flag); - user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_STONE_BUTTON_CLICK_ON, 1F, 1F); - // Set cooldown - island.setCooldown(flag); - // Fire event - Bukkit.getPluginManager().callEvent(new FlagSettingChangeEvent(island, - user.getUniqueId(), - flag, - island.isAllowed(flag))); - - if (flag.hasSubflags()) - { - // Fire events for all subflags as well - flag.getSubflags().forEach(subflag -> Bukkit.getPluginManager() - .callEvent(new FlagSettingChangeEvent(island, - user.getUniqueId(), - subflag, - island.isAllowed(subflag)))); - } + toggleFlag(user, flag, island); } }); } else { - if (island == null) { - user.sendMessage("general.errors.not-on-island"); - } else { - // Player is not the allowed to change settings. - user.sendMessage("general.errors.insufficient-rank", - TextVariables.RANK, - user.getTranslation(plugin.getRanksManager().getRank(Objects.requireNonNull(island).getRank(user)))); - } - - user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_METAL_HIT, 1F, 1F); + reportError(user, island); } return true; } + + private void toggleFlag(User user, Flag flag, Island island) { + // Toggle flag + island.toggleFlag(flag); + user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_STONE_BUTTON_CLICK_ON, 1F, 1F); + // Set cooldown + island.setCooldown(flag); + // Fire event + Bukkit.getPluginManager().callEvent(new FlagSettingChangeEvent(island, + user.getUniqueId(), + flag, + island.isAllowed(flag))); + + if (flag.hasSubflags()) + { + // Fire events for all subflags as well + flag.getSubflags().forEach(subflag -> Bukkit.getPluginManager() + .callEvent(new FlagSettingChangeEvent(island, + user.getUniqueId(), + subflag, + island.isAllowed(subflag)))); + } + + } + + private void reportError(User user, Island island) { + if (island == null) { + user.sendMessage("general.errors.not-on-island"); + } else { + // Player is not the allowed to change settings. + user.sendMessage("general.errors.insufficient-rank", + TextVariables.RANK, + user.getTranslation(plugin.getRanksManager().getRank(Objects.requireNonNull(island).getRank(user)))); + } + + user.getPlayer().playSound(user.getLocation(), Sound.BLOCK_METAL_HIT, 1F, 1F); + + } + + private void shiftLeftClick(User user, Flag flag) { + if (!plugin.getIWM().getHiddenFlags(user.getWorld()).contains(flag.getID())) + { + 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); + + } }