From bda7d75e1d7f8257d63a50337196b6e37e6261b0 Mon Sep 17 00:00:00 2001 From: Lewis Milburn Date: Fri, 4 Oct 2024 21:09:19 +0100 Subject: [PATCH] Remove duplications. --- .../commands/admin/InvisibleCommand.java | 22 +++------- .../commands/admin/VisibleCommand.java | 25 +++-------- .../net/lewmc/essence/utils/StatsUtil.java | 43 +++++++++++++++++++ 3 files changed, 55 insertions(+), 35 deletions(-) create mode 100644 src/main/java/net/lewmc/essence/utils/StatsUtil.java diff --git a/src/main/java/net/lewmc/essence/commands/admin/InvisibleCommand.java b/src/main/java/net/lewmc/essence/commands/admin/InvisibleCommand.java index ccae27cd..a7312d58 100644 --- a/src/main/java/net/lewmc/essence/commands/admin/InvisibleCommand.java +++ b/src/main/java/net/lewmc/essence/commands/admin/InvisibleCommand.java @@ -1,15 +1,11 @@ package net.lewmc.essence.commands.admin; import net.lewmc.essence.Essence; -import net.lewmc.essence.utils.CommandUtil; -import net.lewmc.essence.utils.MessageUtil; -import net.lewmc.essence.utils.PermissionHandler; +import net.lewmc.essence.utils.*; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.bukkit.potion.PotionEffect; -import org.bukkit.potion.PotionEffectType; import org.jetbrains.annotations.NotNull; /** @@ -33,12 +29,12 @@ public boolean onCommand( @NotNull String s, String[] args ) { - if (!(commandSender instanceof Player)) { - commandSender.sendMessage("Only players can use this command."); + if (!(commandSender instanceof Player player)) { + LogUtil log = new LogUtil(this.plugin); + log.noConsole(); return true; } - Player player = (Player) commandSender; MessageUtil message = new MessageUtil(commandSender, plugin); PermissionHandler permission = new PermissionHandler(commandSender, message); @@ -48,14 +44,8 @@ public boolean onCommand( return cmd.disabled(message); } - if (permission.has("essence.admin.invisible")) { - // Apply invisibility - player.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 1)); - message.send("visibility", "invisible", new String[]{player.getName()}); - return true; - } else { - return permission.not(); - } + StatsUtil stats = new StatsUtil(this.plugin, player, permission); + return stats.invisible(true); } return false; diff --git a/src/main/java/net/lewmc/essence/commands/admin/VisibleCommand.java b/src/main/java/net/lewmc/essence/commands/admin/VisibleCommand.java index ce0c2356..238ddfdc 100644 --- a/src/main/java/net/lewmc/essence/commands/admin/VisibleCommand.java +++ b/src/main/java/net/lewmc/essence/commands/admin/VisibleCommand.java @@ -1,14 +1,11 @@ package net.lewmc.essence.commands.admin; import net.lewmc.essence.Essence; -import net.lewmc.essence.utils.CommandUtil; -import net.lewmc.essence.utils.MessageUtil; -import net.lewmc.essence.utils.PermissionHandler; +import net.lewmc.essence.utils.*; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import org.bukkit.potion.PotionEffectType; import org.jetbrains.annotations.NotNull; /** @@ -33,12 +30,12 @@ public boolean onCommand( @NotNull String s, String[] args ) { - if (!(commandSender instanceof Player)) { - commandSender.sendMessage("Only players can use this command."); + if (!(commandSender instanceof Player player)) { + LogUtil log = new LogUtil(this.plugin); + log.noConsole(); return true; } - Player player = (Player) commandSender; MessageUtil message = new MessageUtil(commandSender, plugin); PermissionHandler permission = new PermissionHandler(commandSender, message); @@ -48,18 +45,8 @@ public boolean onCommand( return cmd.disabled(message); } - if (permission.has("essence.admin.visible")) { - // Remove invisibility - if (player.hasPotionEffect(PotionEffectType.INVISIBILITY)) { - player.removePotionEffect(PotionEffectType.INVISIBILITY); - message.send("visibility", "visible", new String[]{player.getName()}); - } else { - message.send("visibility", "alreadyvisible", new String[]{player.getName()}); - } - return true; - } else { - return permission.not(); - } + StatsUtil stats = new StatsUtil(this.plugin, player, permission); + return stats.invisible(false); } return false; diff --git a/src/main/java/net/lewmc/essence/utils/StatsUtil.java b/src/main/java/net/lewmc/essence/utils/StatsUtil.java new file mode 100644 index 00000000..e3b1ae37 --- /dev/null +++ b/src/main/java/net/lewmc/essence/utils/StatsUtil.java @@ -0,0 +1,43 @@ +package net.lewmc.essence.utils; + +import net.lewmc.essence.Essence; +import org.bukkit.entity.Player; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +/** + * Manages player statistics. + */ +public class StatsUtil { + private final Player player; + private final PermissionHandler permission; + private final Essence plugin; + + public StatsUtil(Essence plugin, Player player, PermissionHandler permission) { + this.plugin = plugin; + this.player = player; + this.permission = permission; + } + + /** + * Sets the player to be invisible. + * @param isInvisible boolean - Should the player be invisible (true) or visible (false). + * @return boolean - Was the operation successful? + */ + public boolean invisible(boolean isInvisible) { + if (this.permission.has("essence.admin.invisible")) { + if (isInvisible) { + this.player.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 1)); + MessageUtil message = new MessageUtil(this.player, this.plugin); + message.send("visibility", "invisible", new String[]{this.player.getName()}); + } else { + this.player.removePotionEffect(PotionEffectType.INVISIBILITY); + MessageUtil message = new MessageUtil(this.player, this.plugin); + message.send("visibility", "visible", new String[]{this.player.getName()}); + } + return true; + } else { + return this.permission.not(); + } + } +}