From 3a2c35cb2277ffc2b507c96345fa79e699d4e99c Mon Sep 17 00:00:00 2001 From: CrushedPixel Date: Wed, 15 Jul 2015 14:08:28 +0200 Subject: [PATCH] Added Api Call checking if the Mod has the latest version and Message in Main Menu if not up-to-date Removed unused GuiConstants Fields --- .../eu/crushedpixel/replaymod/ReplayMod.java | 11 +++++++++ .../crushedpixel/replaymod/api/ApiClient.java | 6 +++++ .../api/replay/ReplayModApiMethods.java | 1 + .../events/handlers/GuiEventHandler.java | 24 +++++++++++++++++++ .../replaymod/gui/GuiConstants.java | 15 ++---------- .../assets/replaymod/lang/en_US.lang | 2 ++ 6 files changed, 46 insertions(+), 13 deletions(-) diff --git a/src/main/java/eu/crushedpixel/replaymod/ReplayMod.java b/src/main/java/eu/crushedpixel/replaymod/ReplayMod.java index 5e2b8eca..e4f02fa3 100755 --- a/src/main/java/eu/crushedpixel/replaymod/ReplayMod.java +++ b/src/main/java/eu/crushedpixel/replaymod/ReplayMod.java @@ -26,6 +26,7 @@ import eu.crushedpixel.replaymod.utils.ReplayFile; import eu.crushedpixel.replaymod.utils.ReplayFileIO; import eu.crushedpixel.replaymod.utils.TooltipRenderer; import eu.crushedpixel.replaymod.video.frame.*; +import lombok.Getter; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.entity.RenderPlayer; import net.minecraft.client.resources.IResourcePack; @@ -89,6 +90,9 @@ public class ReplayMod { public static SoundHandler soundHandler = new SoundHandler(); public static CrosshairRenderHandler crosshairRenderHandler; + @Getter + private static boolean latestModVersion = false; + // The instance of your mod that Forge uses. @Instance(value = "ReplayModID") public static ReplayMod instance; @@ -121,6 +125,13 @@ public class ReplayMod { replayFileAppender = new ReplayFileAppender(); FMLCommonHandler.instance().bus().register(replayFileAppender); + + //check if latest mod version + try { + latestModVersion = apiClient.isVersionUpToDate(getContainer().getVersion()); + } catch(Exception e) { + e.printStackTrace(); + } } @EventHandler diff --git a/src/main/java/eu/crushedpixel/replaymod/api/ApiClient.java b/src/main/java/eu/crushedpixel/replaymod/api/ApiClient.java index 770682d3..4ff7532e 100755 --- a/src/main/java/eu/crushedpixel/replaymod/api/ApiClient.java +++ b/src/main/java/eu/crushedpixel/replaymod/api/ApiClient.java @@ -202,6 +202,12 @@ public class ApiClient { invokeAndReturn(builder, Success.class); } + public boolean isVersionUpToDate(String versionIdentifier) throws IOException, ApiException { + QueryBuilder builder = new QueryBuilder(ReplayModApiMethods.up_to_date); + builder.put("version", versionIdentifier); + return invokeAndReturn(builder, Success.class).isSuccess(); + } + private T invokeAndReturn(QueryBuilder builder, Class classOfT) throws IOException, ApiException { return invokeAndReturn(builder.toString(), classOfT); } diff --git a/src/main/java/eu/crushedpixel/replaymod/api/replay/ReplayModApiMethods.java b/src/main/java/eu/crushedpixel/replaymod/api/replay/ReplayModApiMethods.java index fc79892f..4e47f049 100755 --- a/src/main/java/eu/crushedpixel/replaymod/api/replay/ReplayModApiMethods.java +++ b/src/main/java/eu/crushedpixel/replaymod/api/replay/ReplayModApiMethods.java @@ -20,4 +20,5 @@ public class ReplayModApiMethods { public static final String check_auth = REPLAYMOD_BASE_URL+"check_auth"; public static final String get_language = REPLAYMOD_BASE_URL+"get_language"; public static final String search = REPLAYMOD_BASE_URL+"search"; + public static final String up_to_date = REPLAYMOD_BASE_URL+"up_to_date"; } diff --git a/src/main/java/eu/crushedpixel/replaymod/events/handlers/GuiEventHandler.java b/src/main/java/eu/crushedpixel/replaymod/events/handlers/GuiEventHandler.java index 1696f650..81cfc03c 100755 --- a/src/main/java/eu/crushedpixel/replaymod/events/handlers/GuiEventHandler.java +++ b/src/main/java/eu/crushedpixel/replaymod/events/handlers/GuiEventHandler.java @@ -15,6 +15,7 @@ import eu.crushedpixel.replaymod.replay.ReplayProcess; import eu.crushedpixel.replaymod.studio.VersionValidator; import eu.crushedpixel.replaymod.utils.MouseUtils; import eu.crushedpixel.replaymod.utils.ReplayFileIO; +import eu.crushedpixel.replaymod.utils.StringUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.*; import net.minecraft.client.gui.inventory.GuiInventory; @@ -81,6 +82,29 @@ public class GuiEventHandler { e.gui.drawString(mc.fontRendererObj, I18n.format("replaymod.gui.loggedout").toUpperCase(), 5, 15, DARK_RED.getRGB()); } + //if version not up to date, display info string + if(!ReplayMod.isLatestModVersion()) { + int width = Math.max(100, e.gui.width / 2 - 100 - 10); + + String[] lines = StringUtils.splitStringInMultipleRows(I18n.format("replaymod.gui.outdated"), width); + + int maxLineWidth = 0; + for(String line : lines) { + int lineWidth = mc.fontRendererObj.getStringWidth(line); + if(lineWidth > maxLineWidth) { + maxLineWidth = lineWidth; + } + } + + Gui.drawRect(2, 77, 5+maxLineWidth+3, 80+(lines.length * 10), 0x80FF0000); + + int i = 0; + for(String line : lines) { + mc.fontRendererObj.drawStringWithShadow(line, 5, 80 + (i * 10), Color.WHITE.getRGB()); + i++; + } + } + if(replayCount == 0) { if(editorButton.isMouseOver()) { Point mouse = MouseUtils.getMousePos(); diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/GuiConstants.java b/src/main/java/eu/crushedpixel/replaymod/gui/GuiConstants.java index 348e59ca..2e4df532 100755 --- a/src/main/java/eu/crushedpixel/replaymod/gui/GuiConstants.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/GuiConstants.java @@ -2,6 +2,8 @@ package eu.crushedpixel.replaymod.gui; public class GuiConstants { + public static final int MAIN_MENU_UPDATE_BUTTON = 8765; + public static final int CENTER_DOWNLOADED_REPLAYS_BUTTON = 2001; public static final int CENTER_SEARCH_BUTTON = 2002; public static final int CENTER_BACK_BUTTON = 2003; @@ -31,19 +33,6 @@ public class GuiConstants { public static final int REPLAY_EDITOR_BUTTON_ID = 9002; public static final int REPLAY_CENTER_BUTTON_ID = 9003; - public static final int LOGIN_OKAY_BUTTON = 1100; - public static final int LOGIN_CANCEL_BUTTON = 1101; - public static final int LOGIN_REGISTER_BUTTON = 1102; - public static final int LOGIN_USERNAME_FIELD = 1103; - public static final int LOGIN_PASSWORD_FIELD = 1104; - - public static final int REGISTER_USERNAME_FIELD = 2000; - public static final int REGISTER_PASSWORD_FIELD = 2001; - public static final int REGISTER_PASSWORD_CONFIRM_FIELD = 2002; - public static final int REGISTER_CANCEL_BUTTON = 2003; - public static final int REGISTER_OKAY_BUTTON = 2004; - public static final int REGISTER_MAIL_FIELD = 2005; - public static final int REPLAY_EDITOR_TRIM_TAB = 5000; public static final int REPLAY_EDITOR_CONNECT_TAB = 5001; public static final int REPLAY_EDITOR_MODIFY_TAB = 5002; diff --git a/src/main/resources/assets/replaymod/lang/en_US.lang b/src/main/resources/assets/replaymod/lang/en_US.lang index 337ecaea..713afd86 100644 --- a/src/main/resources/assets/replaymod/lang/en_US.lang +++ b/src/main/resources/assets/replaymod/lang/en_US.lang @@ -86,6 +86,8 @@ replaymod.gui.pleasewait=Please wait replaymod.gui.render=Render replaymod.gui.iphidden=Server IP Hidden +replaymod.gui.outdated=There is a newer Replay Mod version available. Please download it from replaymod.com + replaymod.gui.hours=h replaymod.gui.minutes=min replaymod.gui.seconds=sec