package com.sijobe.spc.hooks; import com.sijobe.spc.core.Constants; import com.sijobe.spc.core.PlayerMP; import com.sijobe.spc.updater.CheckVersion; import com.sijobe.spc.updater.ModVersion; import com.sijobe.spc.updater.UpdateCallback; import com.sijobe.spc.util.FontColour; import com.sijobe.spc.wrapper.Player; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Vector; /** * Loaded on player load and checks for updates of the mod. * * TODO: Fix updater so it isn't shit * TODO: Check once, alert users afterward * * @author simo_415 */ public class CheckUpdates extends PlayerMP { /** * The players names who have already been alerted */ private static List<String> ALERTED = new ArrayList<String>(); /** * @see com.sijobe.spc.core.IPlayerMP#onTick(com.sijobe.spc.wrapper.Player) */ @Override public void onTick(Player player) { if (!ALERTED.contains(player.getPlayerName())) { ALERTED.add(player.getPlayerName()); checkForUpdates(player); } } /** * Checks for any updates to the mod and alerts the user * * @param player - The player that asked for an update check */ private void checkForUpdates(final Player player) { (new CheckVersion( new ModVersion[]{Constants.SPC_VERSION}, "", new UpdateCallback() { @Override public void updateCallback(Vector<HashMap<String,Object>> s) { processUpdate(s, player); } }) ).start(); } /** * When an update is detected it alerts the player * * @param s * @param player - The player to send the alert to */ private void processUpdate(Vector<HashMap<String,Object>> s, Player player) { if (s != null && s.size() != 0) { for (HashMap<String,Object> t : s) { if (t.get("message") == null || ((String)t.get("message")).equalsIgnoreCase("")) { player.sendChatMessage(FontColour.AQUA + "" + t.get("name") + " V" + t.get("version") + " now out! " + t.get("website")); } else { player.sendChatMessage((String)t.get("message")); } } } } }