ImageMaps/src/main/java/de/craftlancer/imagemaps/ImageMapListCommand.java

68 lines
2.9 KiB
Java

package de.craftlancer.imagemaps;
import java.io.File;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import de.craftlancer.core.Utils;
import de.craftlancer.core.util.MessageLevel;
import de.craftlancer.core.util.MessageUtil;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.TextComponent;
public class ImageMapListCommand extends ImageMapSubCommand {
public ImageMapListCommand(ImageMaps plugin) {
super("imagemaps.list", plugin, true);
}
@Override
protected String execute(CommandSender sender, Command cmd, String label, String[] args) {
if (!checkSender(sender)) {
MessageUtil.sendMessage(getPlugin(), sender, MessageLevel.WARNING, "You can't run this command.");
return null;
}
long page = args.length >= 2 ? Utils.parseIntegerOrDefault(args[1], 0) - 1 : 0;
String[] fileList = new File(plugin.getDataFolder(), "images").list();
MessageUtil.sendMessage(plugin,
sender,
MessageLevel.INFO,
String.format("Image List %d/%d", page + 1, (int) Math.ceil((double) fileList.length / Utils.ELEMENTS_PER_PAGE)));
// TODO alternating color
Utils.paginate(fileList, page).forEach(filename -> {
BaseComponent infoAction = new TextComponent("[Info]");
infoAction.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/imagemap info " + filename));
infoAction.setColor(ChatColor.GOLD);
BaseComponent reloadAction = new TextComponent("[Reload]");
reloadAction.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/imagemap reload " + filename));
reloadAction.setColor(ChatColor.GOLD);
BaseComponent placeAction = new TextComponent("[Place]");
placeAction.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/imagemap place " + filename));
placeAction.setColor(ChatColor.GOLD);
BaseComponent message = new TextComponent(filename);
message.addExtra(" ");
message.addExtra(infoAction);
message.addExtra(" ");
message.addExtra(reloadAction);
message.addExtra(" ");
message.addExtra(placeAction);
MessageUtil.sendMessage(plugin, sender, MessageLevel.NORMAL, message);
});
return null;
}
@Override
public void help(CommandSender sender) {
MessageUtil.sendMessage(getPlugin(), sender, MessageLevel.NORMAL, "Lists all files in the images folder.");
MessageUtil.sendMessage(getPlugin(), sender, MessageLevel.INFO, "Usage: /imagemap list [page]");
}
}