package net.itstjf.accountmanager.main; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.util.ArrayList; import java.util.Iterator; import java.util.Map.Entry; import org.lwjgl.input.Keyboard; import net.itstjf.accountmanager.alts.AccountInfo; import net.itstjf.accountmanager.gui.GuiAlts; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiMainMenu; import net.minecraft.client.gui.GuiMultiplayer; import net.minecraft.client.settings.KeyBinding; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.mumfrey.liteloader.Tickable; import com.mumfrey.liteloader.core.LiteLoader; public class LiteModAccountManager implements Tickable { public static LiteModAccountManager instance; public final File location = new File(LiteLoader.getCommonConfigFolder(), "Alts.json"); private Gson gson = new GsonBuilder().setPrettyPrinting().create(); public KeyBinding keyGui = new KeyBinding("Display Alts", Keyboard.KEY_P, "key.categories.accountmanager.gui"); public ArrayList<AccountInfo> altList = new ArrayList(); public String nextVersion = null; public LiteModAccountManager() { instance = this; String update = isUpdateAvailable(); if(update != null) { nextVersion = update; } } private String isUpdateAvailable() { try { URL url = new URL("https://dl.dropboxusercontent.com/s/jg6pt83zqsqz9cy/AccManager1710.txt"); BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); String str = in.readLine(); if(!str.equalsIgnoreCase(getVersion())) { in.close(); return str; } in.close(); return null; } catch (IOException e) {} return null; } @Override public String getVersion() { return "v1.6"; } @Override public void init(File configPath) { LiteLoader.getInput().registerKeyBinding(keyGui); if(!location.exists()) saveAlts(); else loadAlts(); } @Override public void upgradeSettings(String version, File configPath, File oldConfigPath) { } @Override public String getName() { return "Account Manager"; } @Override public void onTick(Minecraft mc, float partialTicks, boolean inGame, boolean clock) { if(inGame) { if(keyGui.isPressed()) { mc.displayGuiScreen(new GuiAlts()); } } if(mc.currentScreen instanceof GuiMainMenu || mc.currentScreen instanceof GuiMultiplayer) { if(Keyboard.isKeyDown(keyGui.getKeyCode())) { mc.displayGuiScreen(new GuiAlts()); } } } public void loadAlts() { try { BufferedReader loader = new BufferedReader(new FileReader(location)); JsonObject json = (JsonObject)new JsonParser().parse(loader); loader.close(); Iterator<Entry<String, JsonElement>> itr = json.entrySet().iterator(); while(itr.hasNext()) { Entry<String, JsonElement> entry = itr.next(); JsonObject element = (JsonObject)entry.getValue(); String user = element.get("Username").getAsString(); String alias = element.get("Alias").getAsString(); String pass = element.get("Password").getAsString(); String shou = element.get("User").getAsString(); AccountInfo accData = new AccountInfo(user, shou, pass, alias); altList.add(accData); } } catch (Exception e) { e.printStackTrace(); } } public void saveAlts() { try { JsonObject json = new JsonObject(); int x = 1; for(AccountInfo accData : altList) { JsonObject jsonData = new JsonObject(); jsonData.addProperty("Alias", accData.alias); jsonData.addProperty("User", accData.disuser); jsonData.addProperty("Username", accData.user); jsonData.addProperty("Password", accData.pass); json.add("Alt #" + x, jsonData); x++; } PrintWriter save = new PrintWriter(new FileWriter(location)); save.println(gson.toJson(json)); save.close(); } catch(Exception e) { e.printStackTrace(); } } }