From 9110724bec3698467a7a82535a852323fedfbf77 Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Sun, 26 Apr 2015 21:09:25 +0200 Subject: [PATCH] Update Checker! --- build.gradle | 2 +- newestVersion.txt | 2 +- .../config/ConfigCategories.java | 3 +- .../config/values/ConfigBoolValues.java | 4 +- .../actuallyadditions/proxy/ClientProxy.java | 3 + .../update/UpdateChecker.java | 76 +++++++++++++++++++ .../waila/WailaDataProvider.java | 5 ++ .../assets/actuallyadditions/lang/en_US.lang | 5 ++ 8 files changed, 96 insertions(+), 4 deletions(-) create mode 100644 src/main/java/ellpeck/actuallyadditions/update/UpdateChecker.java diff --git a/build.gradle b/build.gradle index 5f2b81f9e..4ae778a53 100644 --- a/build.gradle +++ b/build.gradle @@ -61,7 +61,7 @@ processResources{ from(sourceSets.main.resources.srcDirs) { include 'mcmod.info' - expand 'version':project.version, 'mcversion':project.minecraft.version + expand 'update':project.version, 'mcversion':project.minecraft.version } from(sourceSets.main.resources.srcDirs) { diff --git a/newestVersion.txt b/newestVersion.txt index ce4b12ed5..f091a644d 100644 --- a/newestVersion.txt +++ b/newestVersion.txt @@ -1 +1 @@ -1.7.10-5.5.5 \ No newline at end of file +1.7.10-0.0.4 \ No newline at end of file diff --git a/src/main/java/ellpeck/actuallyadditions/config/ConfigCategories.java b/src/main/java/ellpeck/actuallyadditions/config/ConfigCategories.java index 5d6565c11..eab30ea58 100644 --- a/src/main/java/ellpeck/actuallyadditions/config/ConfigCategories.java +++ b/src/main/java/ellpeck/actuallyadditions/config/ConfigCategories.java @@ -10,7 +10,8 @@ public enum ConfigCategories{ MACHINE_VALUES("machine values"), MOB_DROPS("mob drops"), WORLD_GEN("world gen"), - POTION_RING_CRAFTING("ring crafting"); + POTION_RING_CRAFTING("ring crafting"), + OTHER("other"); public final String name; diff --git a/src/main/java/ellpeck/actuallyadditions/config/values/ConfigBoolValues.java b/src/main/java/ellpeck/actuallyadditions/config/values/ConfigBoolValues.java index 0a6ec0f91..dc0ee34ac 100644 --- a/src/main/java/ellpeck/actuallyadditions/config/values/ConfigBoolValues.java +++ b/src/main/java/ellpeck/actuallyadditions/config/values/ConfigBoolValues.java @@ -18,7 +18,9 @@ public enum ConfigBoolValues{ HEART_DROP("Heart Parts", ConfigCategories.MOB_DROPS, false, "If the Heart Parts drop from Mobs"), SUBSTANCE_DROP("Unknown Substance", ConfigCategories.MOB_DROPS, false, "If the Unknown Substance drops from Mobs"), PEARL_SHARD_DROP("Ender Pearl Shard", ConfigCategories.MOB_DROPS, true, "If the Ender Pearl Shard drops from Mobs"), - EMERALD_SHARD_CROP("Emerald Shard", ConfigCategories.MOB_DROPS, true, "If the Emerald Shard drops from Mobs"); + EMERALD_SHARD_CROP("Emerald Shard", ConfigCategories.MOB_DROPS, true, "If the Emerald Shard drops from Mobs"), + + DO_UPDATE_CHECK("Do Update Check", ConfigCategories.OTHER, true, "If Actually Additions should check for an Update on joining a World"); public final String name; public final String category; diff --git a/src/main/java/ellpeck/actuallyadditions/proxy/ClientProxy.java b/src/main/java/ellpeck/actuallyadditions/proxy/ClientProxy.java index f357546b2..0e274f86a 100644 --- a/src/main/java/ellpeck/actuallyadditions/proxy/ClientProxy.java +++ b/src/main/java/ellpeck/actuallyadditions/proxy/ClientProxy.java @@ -5,11 +5,13 @@ import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.common.registry.VillagerRegistry; import ellpeck.actuallyadditions.blocks.InitBlocks; import ellpeck.actuallyadditions.blocks.render.*; +import ellpeck.actuallyadditions.config.values.ConfigBoolValues; import ellpeck.actuallyadditions.config.values.ConfigIntValues; import ellpeck.actuallyadditions.event.RenderPlayerEventAA; import ellpeck.actuallyadditions.tile.TileEntityCompost; import ellpeck.actuallyadditions.tile.TileEntityFishingNet; import ellpeck.actuallyadditions.tile.TileEntityFurnaceSolar; +import ellpeck.actuallyadditions.update.UpdateChecker; import ellpeck.actuallyadditions.util.ModUtil; import ellpeck.actuallyadditions.util.Util; import net.minecraft.item.Item; @@ -40,6 +42,7 @@ public class ClientProxy implements IProxy{ VillagerRegistry.instance().registerVillagerSkin(ConfigIntValues.JAM_VILLAGER_ID.getValue(), new ResourceLocation(ModUtil.MOD_ID_LOWER, "textures/entity/villager/jamVillager.png")); Util.registerEvent(new RenderPlayerEventAA()); + if(ConfigBoolValues.DO_UPDATE_CHECK.isEnabled()) new UpdateChecker().init(); } @Override diff --git a/src/main/java/ellpeck/actuallyadditions/update/UpdateChecker.java b/src/main/java/ellpeck/actuallyadditions/update/UpdateChecker.java new file mode 100644 index 000000000..281abfed4 --- /dev/null +++ b/src/main/java/ellpeck/actuallyadditions/update/UpdateChecker.java @@ -0,0 +1,76 @@ +package ellpeck.actuallyadditions.update; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.TickEvent; +import ellpeck.actuallyadditions.util.ModUtil; +import ellpeck.actuallyadditions.util.Util; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.IChatComponent; +import net.minecraft.util.StatCollector; +import org.apache.logging.log4j.Level; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.URL; + +public class UpdateChecker{ + + public boolean doneChecking = false; + public boolean notified = false; + public String onlineVersion; + + public void init(){ + Util.logInfo("Initializing Update Checker..."); + Util.registerEvent(this); + new UpdateCheckThread(); + } + + @SubscribeEvent + public void onTick(TickEvent.ClientTickEvent event){ + if(doneChecking && event.phase == TickEvent.Phase.END && Minecraft.getMinecraft().thePlayer != null && !notified){ + if(onlineVersion.length() > 0){ + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + + int update = Integer.parseInt(onlineVersion.replace("-", "").replace(".", "")); + int client = Integer.parseInt(ModUtil.VERSION.replace("-", "").replace(".", "")); + + if(update > client){ + 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.download.desc"; + player.addChatComponentMessage(IChatComponent.Serializer.func_150699_a(StatCollector.translateToLocal(notice1))); + player.addChatComponentMessage(IChatComponent.Serializer.func_150699_a(StatCollector.translateToLocalFormatted(notice2, ModUtil.VERSION, this.onlineVersion))); + player.addChatComponentMessage(IChatComponent.Serializer.func_150699_a(StatCollector.translateToLocalFormatted(notice3, "http://minecraft.curseforge.com/mc-mods/228404-actually-additions/files"))); + } + + } + notified = true; + } + } + + public class UpdateCheckThread extends Thread{ + + public UpdateCheckThread(){ + this.setName(ModUtil.MOD_ID + " Update Checker"); + this.setDaemon(true); + this.start(); + } + + @Override + public void run(){ + Util.logInfo("Starting Update Check..."); + try{ + URL url = new URL("https://raw.githubusercontent.com/Ellpeck/ActuallyAdditions/master/newestVersion.txt"); + BufferedReader r = new BufferedReader(new InputStreamReader(url.openStream())); + onlineVersion = r.readLine(); + r.close(); + } + catch(Exception e){ + ModUtil.AA_LOGGER.log(Level.ERROR, "Update Check failed!"); + e.printStackTrace(); + } + doneChecking = true; + } + } +} diff --git a/src/main/java/ellpeck/actuallyadditions/waila/WailaDataProvider.java b/src/main/java/ellpeck/actuallyadditions/waila/WailaDataProvider.java index bee668455..e090464b8 100644 --- a/src/main/java/ellpeck/actuallyadditions/waila/WailaDataProvider.java +++ b/src/main/java/ellpeck/actuallyadditions/waila/WailaDataProvider.java @@ -40,6 +40,10 @@ public class WailaDataProvider implements IWailaDataProvider{ if(meta <= tile.amountNeededToConvert){ String tip1 = StatCollector.translateToLocal(WAILA_PRE_LANG + "compostAmount" + ".name") + ": " + meta + "/" + tile.amountNeededToConvert; currentTip.add(tip1); + + if(meta == tile.amountNeededToConvert){ + currentTip.add(StatCollector.translateToLocal(WAILA_PRE_LANG + "compostConverting" + ".name")); + } } if(meta == tile.amountNeededToConvert+1){ @@ -55,6 +59,7 @@ public class WailaDataProvider implements IWailaDataProvider{ return currentTip; } + @Override public NBTTagCompound getNBTData(TileEntity te, NBTTagCompound tag, World world, int x, int y, int z){ return tag; } diff --git a/src/main/resources/assets/actuallyadditions/lang/en_US.lang b/src/main/resources/assets/actuallyadditions/lang/en_US.lang index 5f65b3634..424f8fee3 100644 --- a/src/main/resources/assets/actuallyadditions/lang/en_US.lang +++ b/src/main/resources/assets/actuallyadditions/lang/en_US.lang @@ -283,6 +283,11 @@ container.actuallyadditions.nei.crushing.name=Crusher gui.actuallyadditions.waila.compostAmount.name=Amount of Mashed Food gui.actuallyadditions.waila.compostDone.name=Done! +gui.actuallyadditions.waila.compostConverting.name=Converting... + +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.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.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!"}]}}}] achievement.actuallyadditions.pickUpSolidXP=Hard and Rich and Stuff achievement.actuallyadditions.pickUpSolidXP.desc=Pick up some Solidified Experience