All checks were successful
KnarCraft/PlaceholderSigns/pipeline/head This commit looks good
78 lines
3.1 KiB
Java
78 lines
3.1 KiB
Java
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<String> 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<>();
|
|
}
|
|
}
|
|
|
|
}
|