From a7076ce817c7f6c94aab7030aa9beac2f02ee3d6 Mon Sep 17 00:00:00 2001 From: MysteriousAges Date: Sun, 19 Apr 2015 23:43:37 -0700 Subject: [PATCH] Add back the version checker; pings Github now. Fix NPE on init. --- src/main/java/magicbees/bees/BeeSpecies.java | 3 - src/main/java/magicbees/main/Config.java | 2 +- src/main/java/magicbees/main/MagicBees.java | 3 +- .../main/utils/TickHandlerVersion.java | 164 +++++++++--------- .../magicbees/main/utils/VersionInfo.java | 49 ++---- .../main/utils/compat/BloodMagicHelper.java | 3 + .../assets/magicbees/lang/en_US.lang | 6 + 7 files changed, 108 insertions(+), 122 deletions(-) diff --git a/src/main/java/magicbees/bees/BeeSpecies.java b/src/main/java/magicbees/bees/BeeSpecies.java index 99b5a9d..b61133d 100644 --- a/src/main/java/magicbees/bees/BeeSpecies.java +++ b/src/main/java/magicbees/bees/BeeSpecies.java @@ -435,9 +435,6 @@ public enum BeeSpecies implements IAlleleBeeSpecies, IIconProvider if (BloodMagicHelper.isActive()) { - BloodMagicHelper.addAltarRecipeBee(MYSTICAL, BM_BLOODY, 1, 1000, 100, 100); - - BloodMagicHelper.addBindingRecipeBee(BM_BLOODY, BM_BOUND); } else { diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index 9aae144..0c41ca9 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -364,7 +364,7 @@ public class Config capsuleStackSizeMax = p.getInt(); p = configuration.get(section, "disableVersionNotification", false); - p.comment = "Set to true to stop ThaumicBees from notifying you when new updates are available. (Does not supress critical updates)"; + p.comment = "Set to true to stop Magic Bees from notifying you when new updates are available. (Does not supress critical updates)"; disableUpdateNotification = p.getBoolean(false); p = configuration.get(section, "areMagicPlanksFlammable", false); diff --git a/src/main/java/magicbees/main/MagicBees.java b/src/main/java/magicbees/main/MagicBees.java index a47f5b6..6826cb6 100644 --- a/src/main/java/magicbees/main/MagicBees.java +++ b/src/main/java/magicbees/main/MagicBees.java @@ -82,8 +82,7 @@ public class MagicBees CraftingManager.setupCrafting(); CraftingManager.registerLiquidContainers(); - // Version check file is MIA. - //VersionInfo.doVersionCheck(); + VersionInfo.doVersionCheck(); LogHelper.info("Postinit completed"); } diff --git a/src/main/java/magicbees/main/utils/TickHandlerVersion.java b/src/main/java/magicbees/main/utils/TickHandlerVersion.java index 48afe6c..0327892 100644 --- a/src/main/java/magicbees/main/utils/TickHandlerVersion.java +++ b/src/main/java/magicbees/main/utils/TickHandlerVersion.java @@ -1,59 +1,99 @@ -/*package magicbees.main.utils; +package magicbees.main.utils; -import java.util.ArrayList; -import java.util.EnumSet; - -import magicbees.main.MagicBees; +import magicbees.main.Config; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.ChatMessageComponent; -import cpw.mods.fml.common.IScheduledTickHandler; -import cpw.mods.fml.common.TickType; +import net.minecraft.event.ClickEvent; +import net.minecraft.event.HoverEvent; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.TickEvent.Phase; +import cpw.mods.fml.common.gameevent.TickEvent.PlayerTickEvent; -public class TickHandlerVersion implements IScheduledTickHandler -{ +public class TickHandlerVersion { + + private static int TICK_POLL_INTERVAL = 250; - public static TickHandlerVersion instance = new TickHandlerVersion(); + private static class LazyHolder { + private static final TickHandlerVersion instance = new TickHandlerVersion(); + } - private static ArrayList modVersionInfo = new ArrayList(); - private static boolean initialized; - private static boolean sent; - private static int modIndex = 0; + private int ticksToPoll; + private VersionInfo versionInfo; - public static boolean initialize() - { - if (initialized) - { - return false; - } - initialized = true; - return true; + private final ChatStyle newVersion = new ChatStyle().setColor(EnumChatFormatting.GOLD).setBold(true); + private final ChatStyle description = new ChatStyle().setColor(EnumChatFormatting.GRAY); + private final ChatStyle alert = new ChatStyle().setColor(EnumChatFormatting.RED); + + private TickHandlerVersion() { + ticksToPoll = TICK_POLL_INTERVAL; + } + + private void setVersionInfo(VersionInfo vInfo) { + versionInfo = vInfo; + } + + @SubscribeEvent + public void tickStart(PlayerTickEvent evt) { + if (evt.phase != Phase.START) { + return; + } + if (ticksToPoll > 0) { + ticksToPoll--; + return; + } + ticksToPoll = TICK_POLL_INTERVAL; + + if (versionInfo.versionCheckComplete) { + unsubscribeFromBus(); + + if (updateNotificationsEnabledOrCriticalUpdate()) { + sendNotificationToPlayer(evt.player); + } + } + } + + private void sendNotificationToPlayer(EntityPlayer player) { + if (versionInfo.isCriticalUpdate()) { + player.addChatMessage(new ChatComponentTranslation("magicbees.versioning.critical", versionInfo.getLatestVersion()).setChatStyle(alert)); + } + else { + player.addChatMessage(new ChatComponentTranslation("magicbees.versioning.newVersion", versionInfo.getLatestVersion()).setChatStyle(newVersion)); + } + ChatStyle thisDescription = description.createShallowCopy(); + thisDescription.setChatClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, VersionInfo.DownloadURL)); + thisDescription.setChatHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ChatComponentText(versionInfo.getVersionDescription()))); + player.addChatMessage(new ChatComponentTranslation("magicbees.versioning.clickDownload").setChatStyle(thisDescription)); + } + + private boolean updateNotificationsEnabledOrCriticalUpdate() { + return (!Config.disableUpdateNotification || versionInfo.isCriticalUpdate()) && versionInfo.isNewVersionAvailable(); + } + + private void subscribeToBus() { + FMLCommonHandler.instance().bus().register(this); + } + + private void unsubscribeFromBus() { + FMLCommonHandler.instance().bus().unregister(this); } - public static boolean isInitialized() - { - return initialized; - } - - public static boolean registerModVersionInfo(VersionInfo info) - { - if (modVersionInfo.contains(info)) - { - return false; - } - modVersionInfo.add(info); - return true; - } - - @Override + public static void go(VersionInfo vInfo) { + LazyHolder.instance.setVersionInfo(vInfo); + LazyHolder.instance.subscribeToBus(); + } + + /*@Override public void tickStart(EnumSet type, Object... tickData) { - if (sent) - { + if (sent) { return; } - if (modIndex < modVersionInfo.size()) - { + if (modIndex < modVersionInfo.size()) { VersionInfo anInfo = modVersionInfo.get(modIndex); if ((!Config.DisableUpdateNotification || anInfo.isCriticalUpdate()) && anInfo.isNewVersionAvailable()) @@ -64,41 +104,9 @@ public class TickHandlerVersion implements IScheduledTickHandler } modIndex += 1; } - else - { + else { sent = true; } } - - @Override - public void tickEnd(EnumSet type, Object... tickData) - { - - } - - @Override - public EnumSet ticks() - { - if (TickHandlerVersion.sent) - { - return EnumSet.noneOf(TickType.class); - } - return EnumSet.of(TickType.PLAYER); - } - - @Override - public String getLabel() - { - return "thaumicbees.version"; - } - - @Override - public int nextTickSpacing() - { - if (!sent) - { - return 200; - } - return 72000; - } -}*/ \ No newline at end of file + */ +} \ No newline at end of file diff --git a/src/main/java/magicbees/main/utils/VersionInfo.java b/src/main/java/magicbees/main/utils/VersionInfo.java index 6c85991..d96a0d4 100644 --- a/src/main/java/magicbees/main/utils/VersionInfo.java +++ b/src/main/java/magicbees/main/utils/VersionInfo.java @@ -19,7 +19,8 @@ public class VersionInfo public static final String ModName = "MagicBees"; public static final String Version = "@VERSION@"; public static final String MCVersion = "@MCVERSION@"; - public static final String VersionURL = "http://bit.ly/magicbeesVersionInfo"; + public static final String VersionURL = "https://raw.githubusercontent.com/MagicBees/MagicBees/master/etc/version-1.7.txt"; + public static final String DownloadURL = "http://minecraft.curseforge.com/mc-mods/65764-magic-bees/files"; public static final String GUI_FACTORY_CLASS = "magicbees.client.gui.GuiFactory"; public static final String Logo = "/gfx/magicbees/logo.png"; @@ -28,11 +29,9 @@ public class VersionInfo boolean criticalUpdate; boolean newVersion; - boolean newMinecraftVersion; boolean versionCheckComplete; String latestModVersion; - String latestMCVersion = MCVersion; String description = ""; String modName; @@ -68,7 +67,6 @@ public class VersionInfo return value; } - /* VERSION COMPARISON */ public static boolean beforeTargetVersion(String version, String target) { boolean result = false; @@ -129,7 +127,6 @@ public class VersionInfo modName = name; modVersion = latestModVersion = version; releaseURL = url; - //modLogger = logger; } public void checkForNewVersion() @@ -148,11 +145,6 @@ public class VersionInfo return latestModVersion; } - public String getLatestMCVersion() - { - return latestMCVersion; - } - public String getVersionDescription() { return description; @@ -168,17 +160,11 @@ public class VersionInfo return newVersion; } - public boolean isMinecraftOutdated() - { - return newMinecraftVersion; - } - public boolean isVersionCheckComplete() { return versionCheckComplete; } - /* VERSION CHECK THREAD CLASS */ private class VersionCheckThread extends Thread { @Override @@ -204,36 +190,25 @@ public class VersionInfo BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); latestModVersion = reader.readLine(); criticalUpdate = Boolean.parseBoolean(reader.readLine()); - latestMCVersion = reader.readLine(); - description = reader.readLine(); + while (reader.ready()) { + description = description + reader.readLine(); + } reader.close(); if (beforeTargetVersion(modVersion, latestModVersion)) { - FMLLog.info("An updated version of " + modName + " is available: " + latestModVersion + "."); - //modLogger.log(Level.INFO, "An updated version of " + modName + " is available: " + - // latestModVersion + "."); + FMLLog.info("An updated version of " + modName + " is available: " + latestModVersion + ". You are currently using " + Version); newVersion = true; if (criticalUpdate) { - FMLLog.info("This update has been marked as CRITICAL and will ignore notification suppression" + - "."); - //modLogger.log(Level.INFO, "This update has been marked as CRITICAL and will ignore " + - // "notification suppression."); - } - if (beforeTargetVersion(MCVersion, latestMCVersion)) - { - newMinecraftVersion = true; - //modLogger.log(Level.INFO, "This update is for Minecraft " + latestMCVersion + "."); - FMLLog.info("This update is for Minecraft " + latestMCVersion + "."); + LogHelper.info("This update has been marked as CRITICAL and will ignore notification suppression."); } } } catch (Exception e) { - //modLogger.log(Level.WARNING, "Version Check Failed: " + e.getMessage()); - FMLLog.warning("Version check Failed: " + e.getMessage()); + LogHelper.warn("Version check Failed: " + e.getMessage()); } versionCheckComplete = true; } @@ -241,12 +216,10 @@ public class VersionInfo public static void doVersionCheck() { - VersionInfo main = new VersionInfo(ModName, Version, VersionURL); - /*TickHandlerVersion.registerModVersionInfo(main); - TickHandlerVersion.initialize();*/ - //TickRegistry.registerScheduledTickHandler(TickHandlerVersion.instance, Side.CLIENT); + VersionInfo versionInfo = new VersionInfo(ModName, Version, VersionURL); + TickHandlerVersion.go(versionInfo); - VersionCheckThread thread = main.new VersionCheckThread(); + VersionCheckThread thread = versionInfo.new VersionCheckThread(); thread.start(); } } diff --git a/src/main/java/magicbees/main/utils/compat/BloodMagicHelper.java b/src/main/java/magicbees/main/utils/compat/BloodMagicHelper.java index a86ea99..8d8bbd5 100644 --- a/src/main/java/magicbees/main/utils/compat/BloodMagicHelper.java +++ b/src/main/java/magicbees/main/utils/compat/BloodMagicHelper.java @@ -40,6 +40,9 @@ public class BloodMagicHelper public static void postInit() { + BloodMagicHelper.addAltarRecipeBee(BeeSpecies.MYSTICAL, BeeSpecies.BM_BLOODY, 1, 1000, 100, 100); + + BloodMagicHelper.addBindingRecipeBee(BeeSpecies.BM_BLOODY, BeeSpecies.BM_BOUND); } public static void getBlocks() diff --git a/src/main/resources/assets/magicbees/lang/en_US.lang b/src/main/resources/assets/magicbees/lang/en_US.lang index e2a52d8..9852245 100644 --- a/src/main/resources/assets/magicbees/lang/en_US.lang +++ b/src/main/resources/assets/magicbees/lang/en_US.lang @@ -2,6 +2,12 @@ language.name=English language.region=US language.code=en_US +# Miscellaneous strings +# -- Updater strings. Please try to keep these to one line if possible. +magicbees.versioning.newVersion=A new version of Magic Bees is available: %s +magicbees.versioning.critical=Magic Bees has a critical update ready: %s - Please update! +magicbees.versioning.clickDownload=Click to open the Download page. Hover for update info. + #Items item.magicbees:jellyBabies.name=Handful of Jelly Babies item.thaumiumScoop.name=Thaumium Scoop