Added version checker
This commit is contained in:
parent
a6431776a8
commit
009bf28b95
4 changed files with 184 additions and 1 deletions
|
@ -35,6 +35,7 @@ import techreborn.packets.PacketPipeline;
|
||||||
import techreborn.proxies.CommonProxy;
|
import techreborn.proxies.CommonProxy;
|
||||||
import techreborn.tiles.idsu.IDSUManager;
|
import techreborn.tiles.idsu.IDSUManager;
|
||||||
import techreborn.util.LogHelper;
|
import techreborn.util.LogHelper;
|
||||||
|
import techreborn.util.VersionChecker;
|
||||||
import techreborn.world.TROreGen;
|
import techreborn.world.TROreGen;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
@ -51,6 +52,8 @@ public class Core {
|
||||||
|
|
||||||
public static final PacketPipeline packetPipeline = new PacketPipeline();
|
public static final PacketPipeline packetPipeline = new PacketPipeline();
|
||||||
|
|
||||||
|
public VersionChecker versionChecker;
|
||||||
|
|
||||||
@Mod.EventHandler
|
@Mod.EventHandler
|
||||||
public void preinit(FMLPreInitializationEvent event){
|
public void preinit(FMLPreInitializationEvent event){
|
||||||
INSTANCE = this;
|
INSTANCE = this;
|
||||||
|
@ -58,12 +61,15 @@ public class Core {
|
||||||
.replace(ModInfo.MOD_ID, "TechReborn");
|
.replace(ModInfo.MOD_ID, "TechReborn");
|
||||||
|
|
||||||
config = ConfigTechReborn.initialize(new File(path));
|
config = ConfigTechReborn.initialize(new File(path));
|
||||||
LogHelper.info("PreInitialization Complete");
|
|
||||||
for(ICompatModule compatModule : CompatManager.INSTANCE.compatModules){
|
for(ICompatModule compatModule : CompatManager.INSTANCE.compatModules){
|
||||||
compatModule.preInit(event);
|
compatModule.preInit(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
RecipeConfigManager.load(event.getModConfigurationDirectory());
|
RecipeConfigManager.load(event.getModConfigurationDirectory());
|
||||||
|
versionChecker = new VersionChecker("TechReborn");
|
||||||
|
versionChecker.checkVersionThreaded();
|
||||||
|
LogHelper.info("PreInitialization Complete");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Mod.EventHandler
|
@Mod.EventHandler
|
||||||
|
|
44
src/main/java/techreborn/client/VersionCheckerClient.java
Normal file
44
src/main/java/techreborn/client/VersionCheckerClient.java
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
package techreborn.client;
|
||||||
|
|
||||||
|
import cpw.mods.fml.client.GuiModList;
|
||||||
|
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import net.minecraftforge.client.event.GuiScreenEvent;
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
import techreborn.Core;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
|
public class VersionCheckerClient {
|
||||||
|
ResourceLocation texture;
|
||||||
|
|
||||||
|
public VersionCheckerClient() {
|
||||||
|
texture = new ResourceLocation("textures/gui/demo_background.png");
|
||||||
|
}
|
||||||
|
|
||||||
|
@SubscribeEvent
|
||||||
|
public void drawGui(GuiScreenEvent.DrawScreenEvent event){
|
||||||
|
if(event.gui instanceof GuiModList){
|
||||||
|
String s = "";
|
||||||
|
if(Core.INSTANCE.versionChecker.isChecking){
|
||||||
|
s = "Checking for update...";
|
||||||
|
} else if(Core.INSTANCE.versionChecker.isLatestVersion()){
|
||||||
|
s = "You have the latest version of TechReborn";
|
||||||
|
} else{
|
||||||
|
s = "There is an update for TechReborn with " + Core.INSTANCE.versionChecker.getChangeLogSinceCurrentVersion().size() + " changes.";
|
||||||
|
}
|
||||||
|
event.gui.drawString(event.gui.mc.fontRenderer, s, 10, 5, Color.white.getRGB());
|
||||||
|
}
|
||||||
|
if(!Core.INSTANCE.versionChecker.isLatestVersion()){
|
||||||
|
if(event.mouseY < 20){
|
||||||
|
GuiUtil.drawTooltipBox(5, 15, 330, Core.INSTANCE.versionChecker.getChangeLogSinceCurrentVersion().size() * 10 + 5);
|
||||||
|
int y = 20;
|
||||||
|
for(String change : Core.INSTANCE.versionChecker.getChangeLogSinceCurrentVersion()){
|
||||||
|
event.gui.drawString(event.gui.mc.fontRenderer, change, 10, y, Color.white.getRGB());
|
||||||
|
y+= 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,6 +3,7 @@ package techreborn.proxies;
|
||||||
import cpw.mods.fml.client.registry.ClientRegistry;
|
import cpw.mods.fml.client.registry.ClientRegistry;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import techreborn.client.IconSupplier;
|
import techreborn.client.IconSupplier;
|
||||||
|
import techreborn.client.VersionCheckerClient;
|
||||||
import techreborn.client.hud.ChargeHud;
|
import techreborn.client.hud.ChargeHud;
|
||||||
import techreborn.client.keybindings.KeyBindings;
|
import techreborn.client.keybindings.KeyBindings;
|
||||||
|
|
||||||
|
@ -14,6 +15,7 @@ public class ClientProxy extends CommonProxy {
|
||||||
super.init();
|
super.init();
|
||||||
MinecraftForge.EVENT_BUS.register(new IconSupplier());
|
MinecraftForge.EVENT_BUS.register(new IconSupplier());
|
||||||
MinecraftForge.EVENT_BUS.register(new ChargeHud());
|
MinecraftForge.EVENT_BUS.register(new ChargeHud());
|
||||||
|
MinecraftForge.EVENT_BUS.register(new VersionCheckerClient());
|
||||||
ClientRegistry.registerKeyBinding(KeyBindings.config);
|
ClientRegistry.registerKeyBinding(KeyBindings.config);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
131
src/main/java/techreborn/util/VersionChecker.java
Normal file
131
src/main/java/techreborn/util/VersionChecker.java
Normal file
|
@ -0,0 +1,131 @@
|
||||||
|
package techreborn.util;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
|
import techreborn.lib.ModInfo;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.URLConnection;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public class VersionChecker {
|
||||||
|
|
||||||
|
public static final String apiAddress = "http://modmuss50.me/api/v1/version.php";
|
||||||
|
|
||||||
|
public String projectName;
|
||||||
|
|
||||||
|
ArrayList<ModifacationVersionInfo> versions;
|
||||||
|
|
||||||
|
public boolean isChecking;
|
||||||
|
|
||||||
|
public VersionChecker(String projectName) {
|
||||||
|
this.projectName = projectName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void checkVersion() throws IOException {
|
||||||
|
isChecking = true;
|
||||||
|
URL url = new URL(apiAddress + "?project=" + projectName);
|
||||||
|
URLConnection con = url.openConnection();
|
||||||
|
InputStream in = con.getInputStream();
|
||||||
|
String encoding = con.getContentEncoding();
|
||||||
|
encoding = encoding == null ? "UTF-8" : encoding;
|
||||||
|
String body = IOUtils.toString(in, encoding).replaceAll("<br />", "");
|
||||||
|
|
||||||
|
Gson gson = new Gson();
|
||||||
|
versions = gson.fromJson(body,new TypeToken<ArrayList<ModifacationVersionInfo>>(){}.getType());
|
||||||
|
isChecking = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void checkVersionThreaded(){
|
||||||
|
class VersionCheckerThread extends Thread{
|
||||||
|
public void run(){
|
||||||
|
try {
|
||||||
|
checkVersion();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
VersionCheckerThread thread = new VersionCheckerThread();
|
||||||
|
thread.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isLatestVersion(){
|
||||||
|
if(versions == null || versions.isEmpty()){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return versions.get(0).version.equals(ModInfo.MOD_VERSION);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ModifacationVersionInfo getLatestVersion(){
|
||||||
|
if(versions == null || versions.isEmpty()){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return versions.get(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<String> getChangeLogSinceCurrentVersion(){
|
||||||
|
ArrayList<String> log = new ArrayList<String>();
|
||||||
|
if(!isLatestVersion()){
|
||||||
|
for(ModifacationVersionInfo version : versions){
|
||||||
|
if(version.version.equals(ModInfo.MOD_VERSION)){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
log.addAll(version.changeLog);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return log;
|
||||||
|
}
|
||||||
|
|
||||||
|
static class ModifacationVersionInfo{
|
||||||
|
public String version;
|
||||||
|
|
||||||
|
public String minecraftVersion;
|
||||||
|
|
||||||
|
public ArrayList<String> changeLog;
|
||||||
|
|
||||||
|
public String releaseDate;
|
||||||
|
|
||||||
|
public boolean recommended;
|
||||||
|
|
||||||
|
public ModifacationVersionInfo(String version, String minecraftVersion, ArrayList<String> changeLog, String releaseDate, boolean recommended) {
|
||||||
|
this.version = version;
|
||||||
|
this.minecraftVersion = minecraftVersion;
|
||||||
|
this.changeLog = changeLog;
|
||||||
|
this.releaseDate = releaseDate;
|
||||||
|
this.recommended = recommended;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ModifacationVersionInfo() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//use this to make an example json file
|
||||||
|
public static void main(String[] args) throws IOException {
|
||||||
|
System.out.println("Generating example json file");
|
||||||
|
ArrayList<ModifacationVersionInfo> infos = new ArrayList<ModifacationVersionInfo>();
|
||||||
|
ArrayList<String> changelog = new ArrayList<String>();
|
||||||
|
changelog.add("A change");
|
||||||
|
changelog.add("Another change");
|
||||||
|
|
||||||
|
|
||||||
|
infos.add(new ModifacationVersionInfo("1.1.1", "1.7.10", changelog, "12th July", true));
|
||||||
|
infos.add(new ModifacationVersionInfo("1.2.0", "1.7.10", changelog, "28th July", true));
|
||||||
|
|
||||||
|
Gson gson = new GsonBuilder().setPrettyPrinting().create();
|
||||||
|
String json = gson.toJson(infos);
|
||||||
|
try {
|
||||||
|
FileWriter writer = new FileWriter(new File("master.json"));
|
||||||
|
writer.write(json);
|
||||||
|
writer.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue