Newer
Older
ultramine_hawkeye / src / main / java / org / ultramine / mods / hawkeye / DisplayManager.java
@zaxar163 zaxar163 on 5 Jul 2018 4 KB Inital.
package org.ultramine.mods.hawkeye;

import java.text.SimpleDateFormat;
import java.util.List;
import net.minecraft.event.ClickEvent;
import net.minecraft.event.ClickEvent.Action;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.ChatStyle;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IChatComponent;
import org.ultramine.mods.hawkeye.entry.DataEntry;
import org.ultramine.mods.hawkeye.util.HawkUtil;

public class DisplayManager {
   private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");

   public static void displayPage(PlayerSession session, int page) {
      List results = session.getSearchResults();
      if (results != null && results.size() != 0) {
         int maxLines = session.isOnePoint() ? 10 : 8;
         int maxPages = (int)Math.ceil((double)results.size() / (double)maxLines);
         if (page <= maxPages && page >= 1) {
            HawkUtil.sendMessage(session.getSender(), "&8--------------------- &7Page (&c" + page + "&7/&c" + maxPages + "&7) &8--------------------" + (maxPages < 9 ? "-" : ""));
            if (session.isOnePoint()) {
               ChatComponentText line = new ChatComponentText("Location: ");
               line.b().setColor(EnumChatFormatting.GRAY);
               line.a(formatCoords((DataEntry)results.get(0))).appendText(" Actions: ").appendSibling((new ChatComponentText(Integer.toString(results.size()))).a((new ChatStyle()).setColor(EnumChatFormatting.YELLOW)));
               session.getSender().addChatMessage(line);
            }

            for(int i = (page - 1) * maxLines; i < (page - 1) * maxLines + maxLines && i != results.size(); ++i) {
               DataEntry entry = (DataEntry)results.get(i);
               if (session.isOnePoint()) {
                  session.getSender().addChatMessage(formatDate(entry).appendText(" ").appendSibling(formatPlayer(entry)).appendText(" ").appendSibling(formatAction(entry)).appendText(" ").appendSibling(formatData(entry)));
               } else {
                  ChatComponentText line1 = new ChatComponentText("");
                  line1.b().setColor(EnumChatFormatting.GRAY);
                  line1.a((new ChatComponentText("| ")).a((new ChatStyle()).setColor(EnumChatFormatting.DARK_GRAY))).appendText("id:").appendSibling(formatID(entry)).appendText(" ").appendSibling(formatDate(entry)).appendText(" ").appendSibling(formatPlayer(entry)).appendText(" ").appendSibling(formatAction(entry));
                  session.getSender().addChatMessage(line1);
                  ChatComponentText line2 = new ChatComponentText("");
                  line2.b().setColor(EnumChatFormatting.GRAY);
                  line2.a((new ChatComponentText("| ")).a((new ChatStyle()).setColor(EnumChatFormatting.DARK_GRAY))).appendText("   Loc: ").appendSibling(formatCoords(entry)).appendText(" Data: ").appendSibling(formatData(entry));
                  session.getSender().addChatMessage(line2);
               }
            }

         }
      } else {
         HawkUtil.sendMessage(session.getSender(), "&cNo results found");
      }
   }

   private static IChatComponent withColor(EnumChatFormatting color, String str) {
      return (new ChatComponentText(str)).a((new ChatStyle()).setColor(color));
   }

   private static IChatComponent formatID(DataEntry entry) {
      String sid = Long.toString(entry.getDataId());
      ChatComponentText id = new ChatComponentText(sid);
      id.b().setColor(EnumChatFormatting.RED);
      id.b().setChatClickEvent(new ClickEvent(Action.SUGGEST_COMMAND, sid));
      return id;
   }

   private static IChatComponent formatDate(DataEntry entry) {
      return withColor(EnumChatFormatting.DARK_AQUA, DATE_FORMAT.format(entry.getDate()));
   }

   private static IChatComponent formatPlayer(DataEntry entry) {
      ChatComponentText player = new ChatComponentText(entry.getPlayer());
      player.b().setColor(EnumChatFormatting.RED);
      player.b().setChatClickEvent(new ClickEvent(Action.SUGGEST_COMMAND, entry.getPlayer()));
      return player;
   }

   private static IChatComponent formatAction(DataEntry entry) {
      return withColor(EnumChatFormatting.GOLD, entry.getType().getConfigName());
   }

   private static IChatComponent formatCoords(DataEntry entry) {
      ChatComponentText coords = new ChatComponentText("[" + entry.getWorld() + "](" + entry.getX() + "," + entry.getY() + "," + entry.getZ() + ")");
      coords.b().setColor(EnumChatFormatting.GOLD);
      coords.b().setChatClickEvent(new ClickEvent(Action.SUGGEST_COMMAND, "/tp " + entry.getWorld() + " " + entry.getX() + " " + entry.getY() + " " + entry.getZ()));
      return coords;
   }

   private static IChatComponent formatData(DataEntry entry) {
      IChatComponent data = entry.getStringData();
      if (data.getChatStyle().getColor() == null) {
         data.getChatStyle().setColor(EnumChatFormatting.GRAY);
      }

      return data;
   }
}