@Override protected void drawSlot(int idx, int right, int top, int height, Tessellator tess) { ModContainer mc = mods.get(idx); String name = StringUtils.stripControlCodes(mc.getName()); String version = StringUtils.stripControlCodes(mc.getDisplayVersion()); FontRenderer font = this.parent.getFontRenderer(); CheckResult vercheck = ForgeVersion.getResult(mc); if (Loader.instance().getModState(mc) == ModState.DISABLED) { font.drawString(font.trimStringToWidth(name, listWidth - 10), this.left + 3 , top + 2, 0xFF2222); font.drawString(font.trimStringToWidth(version, listWidth - (5 + height)), this.left + 3 , top + 12, 0xFF2222); font.drawString(font.trimStringToWidth("DISABLED", listWidth - 10), this.left + 3 , top + 22, 0xFF2222); } else { font.drawString(font.trimStringToWidth(name, listWidth - 10), this.left + 3 , top + 2, 0xFFFFFF); font.drawString(font.trimStringToWidth(version, listWidth - (5 + height)), this.left + 3 , top + 12, 0xCCCCCC); font.drawString(font.trimStringToWidth(mc.getMetadata() != null ? mc.getMetadata().getChildModCountString() : "Metadata not found", listWidth - 10), this.left + 3 , top + 22, 0xCCCCCC); if (vercheck.status.shouldDraw()) { //TODO: Consider adding more icons for visualization Minecraft.getMinecraft().getTextureManager().bindTexture(VERSION_CHECK_ICONS); GlStateManager.color(1, 1, 1, 1); GlStateManager.pushMatrix(); Gui.drawModalRectWithCustomSizedTexture(right - (height / 2 + 4), top + (height / 2 - 4), vercheck.status.getSheetOffset() * 8, (vercheck.status.isAnimated() && ((System.currentTimeMillis() / 800 & 1)) == 1) ? 8 : 0, 8, 8, 64, 16); GlStateManager.popMatrix(); } } }
public static void setUpdateStatus(String modId, Status status, ComparableVersion version) { try { ModContainer modContainer = FMLCommonHandler.instance().findContainerFor(modId); Map<ComparableVersion, String> changes = new HashMap<ComparableVersion, String>(); CheckResult result = ReflectionManager.newInstance(CheckResult.class, status, version, changes, ""); setUpdateStatus(modContainer, result); } catch (Exception e) { e.printStackTrace(); } }
public static void setUpdateStatus(ModContainer container, CheckResult result) { try { Map<ModContainer, CheckResult> resultMap = ReflectionManager.getField(ForgeVersion.class, Map.class, null, "results"); synchronized (resultMap) { resultMap.put(container, result); } } catch (Exception e) { e.printStackTrace(); } }
@Nullable private String getUpdateMessage(@Nonnull final String modId) { final ModContainer mod = ForgeUtils.findModContainer(modId); if (mod == null) return null; final CheckResult result = ForgeVersion.getResult(mod); if (dontPrintMessage(result)) return null; final String t = result.target.toString(); final String u = result.url.toString(); return Localization.format(this.messageId, mod.getName(), t, u); }
/** * Checks the current version against the git-hub version. */ public static void checkVersion() { // Pull the repository information. ModContainer prefabMod = null; for (ModContainer modContainer : Loader.instance().getModList()) { if (modContainer.getName().toLowerCase().equals(Prefab.MODID.toLowerCase())) { prefabMod = modContainer; break; } } if (prefabMod != null) { CheckResult result = ForgeVersion.getResult(prefabMod); if (result != null && result.status == Status.OUTDATED) { // Current version is out dated, show the message when the user is logged in. UpdateChecker.messageToShow = "[Prefab] There is a new version available! New Version: [" + result.target.toString() + "] Your Version: [" + Prefab.VERSION + "]"; UpdateChecker.showMessage = true; } } }
private static boolean dontPrintMessage(@Nonnull final CheckResult result) { return result == null || result.status == null || result.target == null || result.url == null || result.status == Status.UP_TO_DATE || result.status == Status.AHEAD || result.status == Status.PENDING || result.status == Status.FAILED; }
public static CheckResult getVersionCheckResult() { return versionCheckResult; }
public static void updateCheckResult() { CheckResult r = ForgeVersion.getResult(modContainer); if (r != null && r.status != Status.PENDING) versionCheckResult = r; }