package net.knarcraft.placeholdersigns.command; import net.knarcraft.knarlib.formatting.StringFormatter; import net.knarcraft.knarlib.util.TabCompletionHelper; import net.knarcraft.placeholdersigns.PlaceholderSigns; import net.knarcraft.placeholdersigns.config.PlaceholderSignMessage; import net.knarcraft.placeholdersigns.container.PlaceholderSign; import net.knarcraft.placeholdersigns.handler.PlaceholderSignHandler; import net.knarcraft.placeholdersigns.util.TabCompleteHelper; import org.bukkit.block.Block; import org.bukkit.block.Sign; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; public class SetPlaceholderUpdateDelayCommand implements TabExecutor { @Override public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] arguments) { PlaceholderSigns placeholderSigns = PlaceholderSigns.getInstance(); StringFormatter stringFormatter = placeholderSigns.getStringFormatter(); if (!(commandSender instanceof Player player)) { stringFormatter.displayErrorMessage(commandSender, PlaceholderSignMessage.ERROR_PLAYER_ONLY); return false; } if (arguments.length < 1) { return false; } Block targetBlock = player.getTargetBlockExact(7); if (targetBlock == null || !(targetBlock.getState() instanceof Sign sign)) { stringFormatter.displayErrorMessage(commandSender, PlaceholderSignMessage.ERROR_NOT_LOOKING_AT_SIGN); return false; } Integer updateDelay = null; try { updateDelay = Integer.parseInt(arguments[0]); } catch (NumberFormatException exception) { if (!arguments[0].equalsIgnoreCase("null")) { return false; } } PlaceholderSignHandler signHandler = placeholderSigns.getSignHandler(); PlaceholderSign placeholderSign = signHandler.getFromLocation(sign.getLocation()); if (placeholderSign != null) { placeholderSign.setUpdateDelay(updateDelay); signHandler.save(); stringFormatter.displaySuccessMessage(player, PlaceholderSignMessage.SUCCESS_UPDATE_DELAY_CHANGED); return true; } else { stringFormatter.displayErrorMessage(player, PlaceholderSignMessage.ERROR_NOT_LOOKING_AT_PLACEHOLDER_SIGN); return false; } } @Nullable @Override public List onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] arguments) { if (arguments.length == 1) { return TabCompletionHelper.filterMatchingStartsWith(TabCompleteHelper.getDelays(), arguments[0]); } else { return new ArrayList<>(); } } }