New Update Checker System & New Versioning! o/

This commit is contained in:
Ellpeck 2015-10-28 18:28:30 +01:00
parent 723b44833f
commit b1d070595b
9 changed files with 55 additions and 73 deletions

View file

@ -18,7 +18,7 @@ buildscript {
apply plugin: 'forge' apply plugin: 'forge'
apply plugin: 'maven' apply plugin: 'maven'
version = "1.7.10-0.0.9.4" version = "1.7.10-r1"
group = "ellpeck.actuallyadditions" group = "ellpeck.actuallyadditions"
archivesBaseName = "ActuallyAdditions" archivesBaseName = "ActuallyAdditions"

View file

@ -99,11 +99,6 @@ public class InitBlocks{
public static Block blockLaserRelay; public static Block blockLaserRelay;
//TODO: Plan for Laser Power Transmitters:
//TODO: When there is a block in the way, they don't render their laser and don't transmit
//TODO: They stay connected and can be connected together even though they're blocked
//TODO: If blocked, they display the block coords blocking them on right-click
public static void init(){ public static void init(){
ModUtil.LOGGER.info("Initializing Blocks..."); ModUtil.LOGGER.info("Initializing Blocks...");

View file

@ -16,10 +16,7 @@ import ellpeck.actuallyadditions.booklet.page.BookletPage;
import ellpeck.actuallyadditions.config.GuiConfiguration; import ellpeck.actuallyadditions.config.GuiConfiguration;
import ellpeck.actuallyadditions.proxy.ClientProxy; import ellpeck.actuallyadditions.proxy.ClientProxy;
import ellpeck.actuallyadditions.update.UpdateChecker; import ellpeck.actuallyadditions.update.UpdateChecker;
import ellpeck.actuallyadditions.util.AssetUtil; import ellpeck.actuallyadditions.util.*;
import ellpeck.actuallyadditions.util.ModUtil;
import ellpeck.actuallyadditions.util.StringUtil;
import ellpeck.actuallyadditions.util.Util;
import ellpeck.actuallyadditions.util.playerdata.PersistentClientData; import ellpeck.actuallyadditions.util.playerdata.PersistentClientData;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiButton;
@ -27,6 +24,7 @@ import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiTextField; import net.minecraft.client.gui.GuiTextField;
import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IChatComponent;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
@ -149,21 +147,17 @@ public class GuiBooklet extends GuiScreen{
} }
//Update Checker Hover Text //Update Checker Hover Text
if(x >= this.guiLeft-11 && x <= this.guiLeft-11+10 && y >= this.guiTop-11 && y <= this.guiTop-11+10){ if(x >= this.guiLeft-11 && x <= this.guiLeft-11+10 && y >= this.guiTop-11 && y <= this.guiTop-11+10){
if(UpdateChecker.doneChecking){
ArrayList list = new ArrayList(); ArrayList list = new ArrayList();
if(UpdateChecker.checkFailed){ if(UpdateChecker.checkFailed){
list.add(EnumChatFormatting.DARK_RED+"The Update Check failed!"); list.add(IChatComponent.Serializer.func_150699_a(StringUtil.localize("info."+ModUtil.MOD_ID_LOWER+".update.failed")).getFormattedText());
list.add("Check your log for more Information!");
} }
else if(UpdateChecker.updateVersion > UpdateChecker.clientVersion){ else if(UpdateChecker.needsUpdateNotify){
list.add(EnumChatFormatting.GOLD+"There is an Update available!"); list.add(IChatComponent.Serializer.func_150699_a(StringUtil.localize("info."+ModUtil.MOD_ID_LOWER+".update.generic")).getFormattedText());
list.add(EnumChatFormatting.ITALIC+"You have: "+ModUtil.VERSION+", Newest: "+UpdateChecker.updateVersionS); list.add(IChatComponent.Serializer.func_150699_a(StringUtil.localizeFormatted("info."+ModUtil.MOD_ID_LOWER+".update.versionCompare", ModUtil.VERSION, UpdateChecker.updateVersion)).getFormattedText());
list.addAll(this.fontRendererObj.listFormattedStringToWidth(EnumChatFormatting.ITALIC+"Updates include: "+UpdateChecker.changelog, TOOLTIP_SPLIT_LENGTH)); list.add(StringUtil.localize("info."+ModUtil.MOD_ID_LOWER+".update.buttonOptions"));
list.add(EnumChatFormatting.GRAY+"Click this button to visit the download page!");
} }
this.func_146283_a(list, x, y); this.func_146283_a(list, x, y);
} }
}
this.fontRendererObj.setUnicodeFlag(unicodeBefore); this.fontRendererObj.setUnicodeFlag(unicodeBefore);
@ -219,11 +213,16 @@ public class GuiBooklet extends GuiScreen{
} }
} }
else if(button == this.buttonUpdate){ else if(button == this.buttonUpdate){
if(UpdateChecker.doneChecking && UpdateChecker.updateVersion > UpdateChecker.clientVersion){ if(UpdateChecker.needsUpdateNotify){
try{ try{
if(Desktop.isDesktopSupported()){ if(Desktop.isDesktopSupported()){
if(KeyUtil.isShiftPressed()){
Desktop.getDesktop().browse(new URI(UpdateChecker.DOWNLOAD_LINK)); Desktop.getDesktop().browse(new URI(UpdateChecker.DOWNLOAD_LINK));
} }
else{
Desktop.getDesktop().browse(new URI(UpdateChecker.CHANGELOG_LINK));
}
}
} }
catch(Exception e){ catch(Exception e){
ModUtil.LOGGER.error("Something bad happened when trying to open a URL!", e); ModUtil.LOGGER.error("Something bad happened when trying to open a URL!", e);
@ -335,7 +334,7 @@ public class GuiBooklet extends GuiScreen{
this.buttonList.add(this.buttonPreviouslyOpenedGui); this.buttonList.add(this.buttonPreviouslyOpenedGui);
this.buttonUpdate = new TexturedButton(4, this.guiLeft-11, this.guiTop-11, 245, 0, 11, 11); this.buttonUpdate = new TexturedButton(4, this.guiLeft-11, this.guiTop-11, 245, 0, 11, 11);
this.buttonUpdate.visible = UpdateChecker.doneChecking && UpdateChecker.updateVersion > UpdateChecker.clientVersion; this.buttonUpdate.visible = UpdateChecker.needsUpdateNotify;
this.buttonList.add(this.buttonUpdate); this.buttonList.add(this.buttonUpdate);
this.buttonTwitter = new TexturedButton(5, this.guiLeft, this.guiTop, 213, 0, 8, 8); this.buttonTwitter = new TexturedButton(5, this.guiLeft, this.guiTop, 213, 0, 8, 8);
@ -385,7 +384,7 @@ public class GuiBooklet extends GuiScreen{
this.currentPage.updateScreen(this.ticksElapsed); this.currentPage.updateScreen(this.ticksElapsed);
} }
boolean buttonThere = UpdateChecker.doneChecking && UpdateChecker.updateVersion > UpdateChecker.clientVersion; boolean buttonThere = UpdateChecker.needsUpdateNotify;
this.buttonUpdate.visible = buttonThere; this.buttonUpdate.visible = buttonThere;
if(buttonThere){ if(buttonThere){
if(this.ticksElapsed%8 == 0){ if(this.ticksElapsed%8 == 0){

View file

@ -49,7 +49,6 @@ public class GuiOreMagnet extends GuiContainer{
if(x >= guiLeft+117 && y >= guiTop+6 && x <= guiLeft+132 && y <= guiTop+88){ if(x >= guiLeft+117 && y >= guiTop+6 && x <= guiLeft+132 && y <= guiTop+88){
this.func_146283_a(Collections.singletonList(text2), x, y); this.func_146283_a(Collections.singletonList(text2), x, y);
} }
//TODO Upgrade Slot Joke
if(x >= guiLeft+70 && y >= guiTop+42 && x <= guiLeft+70+18 && y <= guiTop+42+18){ if(x >= guiLeft+70 && y >= guiTop+42 && x <= guiLeft+70+18 && y <= guiTop+42+18){
this.func_146283_a(Arrays.asList("@SuppressWarnings(\"unused\")", "This slot is currently unused. Ignore it."), x, y); this.func_146283_a(Arrays.asList("@SuppressWarnings(\"unused\")", "This slot is currently unused. Ignore it."), x, y);
} }

View file

@ -30,18 +30,22 @@ public class ThreadUpdateChecker extends Thread{
try{ try{
URL newestURL = new URL("https://raw.githubusercontent.com/Ellpeck/ActuallyAdditions/master/update/newestVersion.txt"); URL newestURL = new URL("https://raw.githubusercontent.com/Ellpeck/ActuallyAdditions/master/update/newestVersion.txt");
BufferedReader newestReader = new BufferedReader(new InputStreamReader(newestURL.openStream())); BufferedReader newestReader = new BufferedReader(new InputStreamReader(newestURL.openStream()));
UpdateChecker.updateVersionS = newestReader.readLine(); UpdateChecker.updateVersion = newestReader.readLine();
newestReader.close(); newestReader.close();
URL changeURL = new URL("https://raw.githubusercontent.com/Ellpeck/ActuallyAdditions/master/update/changelog.txt"); //Legacy Versions
BufferedReader changeReader = new BufferedReader(new InputStreamReader(changeURL.openStream())); if(!ModUtil.VERSION.contains("r")){
UpdateChecker.changelog = changeReader.readLine(); UpdateChecker.needsUpdateNotify = true;
changeReader.close(); }
else{
int updateVersion = Integer.parseInt(UpdateChecker.updateVersion.replace("-", "").replace(".", "").replace("r", ""));
int clientVersion = Integer.parseInt(ModUtil.VERSION.replace("-", "").replace(".", "").replace("r", ""));
if(updateVersion > clientVersion){
UpdateChecker.needsUpdateNotify = true;
}
}
ModUtil.LOGGER.info("Update Check done!"); ModUtil.LOGGER.info("Update Check done!");
UpdateChecker.updateVersion = Integer.parseInt(UpdateChecker.updateVersionS.replace("-", "").replace(".", ""));
UpdateChecker.clientVersion = Integer.parseInt(ModUtil.VERSION.replace("-", "").replace(".", ""));
} }
catch(Exception e){ catch(Exception e){
ModUtil.LOGGER.error("Update Check failed!", e); ModUtil.LOGGER.error("Update Check failed!", e);
@ -49,18 +53,15 @@ public class ThreadUpdateChecker extends Thread{
} }
if(!UpdateChecker.checkFailed){ if(!UpdateChecker.checkFailed){
if(UpdateChecker.updateVersion > UpdateChecker.clientVersion){ if(UpdateChecker.needsUpdateNotify){
ModUtil.LOGGER.info("There is an Update for "+ModUtil.MOD_ID+" available!"); ModUtil.LOGGER.info("There is an Update for "+ModUtil.NAME+" available!");
ModUtil.LOGGER.info("The installed Version is "+ModUtil.VERSION+", but the newest Version is "+UpdateChecker.updateVersionS+"!"); ModUtil.LOGGER.info("Current Version: "+ModUtil.VERSION+", newest Version: "+UpdateChecker.updateVersion+"!");
ModUtil.LOGGER.info("The Changes are: "+UpdateChecker.changelog); ModUtil.LOGGER.info("View the Changelog at "+UpdateChecker.CHANGELOG_LINK);
ModUtil.LOGGER.info("Download the newest Version at "+UpdateChecker.DOWNLOAD_LINK); ModUtil.LOGGER.info("Download at "+UpdateChecker.DOWNLOAD_LINK);
} }
else{ else{
ModUtil.LOGGER.info("There is no new Update for "+ModUtil.MOD_ID+" available!"); ModUtil.LOGGER.info(ModUtil.NAME+" is up to date!");
ModUtil.LOGGER.info("That's cool. You're really up to date, you have all of the latest awesome Features!");
} }
} }
UpdateChecker.doneChecking = true;
} }
} }

View file

@ -17,12 +17,10 @@ import ellpeck.actuallyadditions.util.Util;
public class UpdateChecker{ public class UpdateChecker{
public static final String DOWNLOAD_LINK = "http://minecraft.curseforge.com/mc-mods/228404-actually-additions/files"; public static final String DOWNLOAD_LINK = "http://minecraft.curseforge.com/mc-mods/228404-actually-additions/files";
public static boolean doneChecking = false; public static final String CHANGELOG_LINK = "https://github.com/Ellpeck/ActuallyAdditions/blob/master/update/changelog.md";
public static boolean checkFailed = false; public static boolean checkFailed;
public static String updateVersionS; public static boolean needsUpdateNotify;
public static int updateVersion; public static String updateVersion;
public static int clientVersion;
public static String changelog;
public void init(){ public void init(){
if(ConfigBoolValues.DO_UPDATE_CHECK.isEnabled()){ if(ConfigBoolValues.DO_UPDATE_CHECK.isEnabled()){

View file

@ -16,7 +16,6 @@ import ellpeck.actuallyadditions.util.ModUtil;
import ellpeck.actuallyadditions.util.StringUtil; import ellpeck.actuallyadditions.util.StringUtil;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.IChatComponent; import net.minecraft.util.IChatComponent;
public class UpdateCheckerClientNotifier{ public class UpdateCheckerClientNotifier{
@ -26,24 +25,15 @@ public class UpdateCheckerClientNotifier{
@SubscribeEvent(receiveCanceled = true) @SubscribeEvent(receiveCanceled = true)
public void onTick(TickEvent.ClientTickEvent event){ public void onTick(TickEvent.ClientTickEvent event){
//Don't notify directly to prevent the Message getting lost in Spam on World Joining //Don't notify directly to prevent the Message getting lost in Spam on World Joining
if(Minecraft.getSystemTime()%300 == 0 && !notified && UpdateChecker.doneChecking && Minecraft.getMinecraft().thePlayer != null){ if(Minecraft.getSystemTime()%300 == 0 && !notified && Minecraft.getMinecraft().thePlayer != null){
EntityPlayer player = Minecraft.getMinecraft().thePlayer; EntityPlayer player = Minecraft.getMinecraft().thePlayer;
if(UpdateChecker.checkFailed){ if(UpdateChecker.checkFailed){
player.addChatComponentMessage(IChatComponent.Serializer.func_150699_a(StringUtil.localize("info."+ModUtil.MOD_ID_LOWER+".update.failed.desc"))); player.addChatComponentMessage(IChatComponent.Serializer.func_150699_a(StringUtil.localize("info."+ModUtil.MOD_ID_LOWER+".update.failed")));
}
else{
if(UpdateChecker.updateVersion > UpdateChecker.clientVersion){
String notice1 = "info."+ModUtil.MOD_ID_LOWER+".update.generic.desc";
String notice2 = "info."+ModUtil.MOD_ID_LOWER+".update.versionComp.desc";
String notice3 = "info."+ModUtil.MOD_ID_LOWER+".update.changelog.desc";
String notice4 = "info."+ModUtil.MOD_ID_LOWER+".update.download.desc";
player.addChatComponentMessage(new ChatComponentText(""));
player.addChatComponentMessage(IChatComponent.Serializer.func_150699_a(StringUtil.localize(notice1)));
player.addChatComponentMessage(IChatComponent.Serializer.func_150699_a(StringUtil.localizeFormatted(notice2, ModUtil.VERSION, UpdateChecker.updateVersionS)));
player.addChatComponentMessage(new ChatComponentText(StringUtil.localizeFormatted(notice3, UpdateChecker.changelog)));
player.addChatComponentMessage(IChatComponent.Serializer.func_150699_a(StringUtil.localizeFormatted(notice4, UpdateChecker.DOWNLOAD_LINK)));
player.addChatComponentMessage(new ChatComponentText(""));
} }
else if(UpdateChecker.needsUpdateNotify){
player.addChatComponentMessage(IChatComponent.Serializer.func_150699_a(StringUtil.localize("info."+ModUtil.MOD_ID_LOWER+".update.generic")));
player.addChatComponentMessage(IChatComponent.Serializer.func_150699_a(StringUtil.localizeFormatted("info."+ModUtil.MOD_ID_LOWER+".update.versionCompare", ModUtil.VERSION, UpdateChecker.updateVersion)));
player.addChatComponentMessage(IChatComponent.Serializer.func_150699_a(StringUtil.localizeFormatted("info."+ModUtil.MOD_ID_LOWER+".update.buttons", UpdateChecker.CHANGELOG_LINK, UpdateChecker.DOWNLOAD_LINK)));
} }
notified = true; notified = true;
} }

View file

@ -363,11 +363,11 @@ container.actuallyadditions.directionalBreaker.name=Long-Range Breaker
container.actuallyadditions.rangedCollector.name=Ranged Collector container.actuallyadditions.rangedCollector.name=Ranged Collector
#Update Information #Update Information
info.actuallyadditions.update.generic.desc=[{"text":"There is an "},{"text":"Update ","bold":"true"},{"text":"for ","bold":"false"},{"text":"Actually Additions ","color":"dark_green","bold":"true"},{"text":"available!","color":"none","bold":"false"}] info.actuallyadditions.update.generic=[{"text":"There is an Update for "},{"text":"Actually Additions ","color":"dark_green"},{"text":"available!","color":"none"}]
info.actuallyadditions.update.versionComp.desc=[{"text":"You have Version "},{"text":"%s","color":"dark_red","italic":"false"},{"text":", the newest one is ","color":"none","italic":"false"},{"text":"%s","color":"dark_green","underlined":"false"},{"text":"!","color":"none","underlined":"false"}] info.actuallyadditions.update.versionCompare=[{"text":"Current Version: "},{"text":"%s","color":"dark_red"},{"text":", newest Version: ","color":"none"},{"text":"%s","color":"dark_green"}]
info.actuallyadditions.update.download.desc=[{"text":"Download the newest Version "},{"text":"here! (Click me!)","color":"dark_green","underlined":"true","clickEvent":{"action":"open_url","value":"%s"},"hoverEvent":{"action":"show_text","value":{"text":"","extra":[{"text":"Click here to open your Browser and download the newest Version!"}]}}}] info.actuallyadditions.update.buttons=[{"text":"["},{"text":"Click for Changelog","color":"green","clickEvent":{"action":"open_url","value":"%s"}},{"text":"] [","color":"none"},{"text":"Click for Download","color":"green","clickEvent":{"action":"open_url","value":"%s"}},{"text":"]","color":"none"}]
info.actuallyadditions.update.failed.desc=[{"text":"The Update Check for "},{"text":"Actually Additions ","color":"dark_green","bold":"true"},{"text":"failed! Check your Internet Connection and the Logs for more Info!","color":"none"}] info.actuallyadditions.update.buttonOptions=Click for Changelog, Shift-Click for Download!
info.actuallyadditions.update.changelog.desc=Updates: %s info.actuallyadditions.update.failed=[{"text":"The Update Check for "},{"text":"Actually Additions ","color":"dark_green"},{"text":"failed! Check Logs for more Info!","color":"none"}]
#Achievements #Achievements
achievement.actuallyadditions.pickUpSolidXP=Square and yummy! achievement.actuallyadditions.pickUpSolidXP=Square and yummy!

View file

@ -1 +1 @@
1.7.10-r1 1.7.10-0.0.9.4