mirror of
https://github.com/FalsePattern/FalsePatternLib.git
synced 2026-11-11 07:57:45 +00:00
added update checks for my mods, turned fplib into a regular mod, added async lib
This commit is contained in:
8 files changed
+204
-54
No files matched your search
@@ -2,87 +2,84 @@ package com.falsepattern.lib.internal;
|
||||
|
||||
import com.falsepattern.lib.config.ConfigException;
|
||||
import com.falsepattern.lib.config.ConfigurationManager;
|
||||
import com.falsepattern.lib.internal.proxy.CommonProxy;
|
||||
import com.falsepattern.lib.text.FormattedText;
|
||||
import com.falsepattern.lib.updates.ModUpdateInfo;
|
||||
import com.falsepattern.lib.updates.UpdateChecker;
|
||||
import com.falsepattern.lib.util.ResourceUtil;
|
||||
import com.google.common.eventbus.EventBus;
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import cpw.mods.fml.common.DummyModContainer;
|
||||
import cpw.mods.fml.common.LoadController;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import cpw.mods.fml.common.MetadataCollection;
|
||||
import cpw.mods.fml.common.*;
|
||||
import cpw.mods.fml.common.event.FMLConstructionEvent;
|
||||
import cpw.mods.fml.common.event.FMLInterModComms;
|
||||
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
|
||||
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import lombok.Getter;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.val;
|
||||
import net.minecraft.client.entity.EntityPlayerSP;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.event.ClickEvent;
|
||||
import net.minecraft.launchwrapper.Launch;
|
||||
import net.minecraft.util.ChatComponentText;
|
||||
import net.minecraft.util.ChatStyle;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.IChatComponent;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
/**
|
||||
* Utility class used by FalsePatternLib's internal code. This can change between versions without notice, so do not use
|
||||
* this in your code!
|
||||
*/
|
||||
@SuppressWarnings("UnstableApiUsage")
|
||||
public class FalsePatternLib extends DummyModContainer {
|
||||
@Mod(modid = Tags.MODID,
|
||||
name = Tags.MODNAME,
|
||||
version = Tags.VERSION,
|
||||
acceptedMinecraftVersions = "[1.7.10]",
|
||||
acceptableRemoteVersions = "*")
|
||||
public class FalsePatternLib {
|
||||
@Getter private static final Logger log = LogManager.getLogger(Tags.MODNAME);
|
||||
|
||||
@Getter private static final boolean developerEnvironment =
|
||||
(boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment");
|
||||
|
||||
private Future<List<ModUpdateInfo>> updateCheckFuture;
|
||||
@Getter
|
||||
private static final ExecutorService asyncWorker = Executors.newSingleThreadExecutor((runnable) -> {
|
||||
Thread thread = new Thread(runnable);
|
||||
thread.setDaemon(true);
|
||||
thread.setName(Tags.MODNAME + " Async Worker");
|
||||
return thread;
|
||||
});
|
||||
|
||||
@SidedProxy(clientSide = Tags.GROUPNAME + ".internal.proxy.ClientProxy", serverSide = Tags.GROUPNAME + ".internal.proxy.CommonProxy")
|
||||
private static CommonProxy proxy;
|
||||
|
||||
public FalsePatternLib() {
|
||||
super(MetadataCollection.from(ResourceUtil.getResourceFromJar("/mcmod.info", FalsePatternLib.class), Tags.MODID)
|
||||
.getMetadataForId(Tags.MODID, null));
|
||||
log.info("Version " + Tags.VERSION + " initialized!");
|
||||
}
|
||||
|
||||
@SuppressWarnings("UnstableApiUsage")
|
||||
@Subscribe
|
||||
@Mod.EventHandler
|
||||
public void construct(FMLConstructionEvent e) {
|
||||
ConfigurationManager.init();
|
||||
try {
|
||||
ConfigurationManager.registerConfig(LibraryConfig.class);
|
||||
} catch (ConfigException ex) {
|
||||
getLog().error("Failed to register " + Tags.MODNAME + " config!", ex);
|
||||
}
|
||||
proxy.construct(e);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
@Mod.EventHandler
|
||||
public void preInit(FMLPreInitializationEvent e) {
|
||||
if (LibraryConfig.ENABLE_UPDATE_CHECKER) {
|
||||
getLog().info("Launching asynchronous update check. I'll check back on it during postInit.");
|
||||
updateCheckFuture = UpdateChecker.fetchUpdatesAsync("https://falsepattern.com/mc/versions.json");
|
||||
}
|
||||
proxy.preInit(e);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
@Mod.EventHandler
|
||||
public void postInit(FMLPostInitializationEvent e) {
|
||||
if (updateCheckFuture != null && !updateCheckFuture.isCancelled()) {
|
||||
try {
|
||||
val updates = updateCheckFuture.get();
|
||||
if (updates != null)
|
||||
for (val update: updates)
|
||||
update.log(getLog());
|
||||
} catch (InterruptedException | ExecutionException ex) {
|
||||
getLog().warn("Error while checking updates", ex);
|
||||
}
|
||||
|
||||
}
|
||||
proxy.postInit(e);
|
||||
}
|
||||
|
||||
@SuppressWarnings("UnstableApiUsage")
|
||||
@Override
|
||||
public boolean registerBus(EventBus bus, LoadController controller) {
|
||||
bus.register(this);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user