/******************************************************************************************************************* * Authors: SanAndreasP * Copyright: SanAndreasP * License: Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International * http://creativecommons.org/licenses/by-nc-sa/4.0/ *******************************************************************************************************************/ package de.sanandrew.core.manpack.mod; import com.google.common.eventbus.EventBus; import com.google.common.eventbus.Subscribe; import cpw.mods.fml.client.FMLFileResourcePack; import cpw.mods.fml.client.FMLFolderResourcePack; import cpw.mods.fml.common.DummyModContainer; import cpw.mods.fml.common.LoadController; import cpw.mods.fml.common.ModMetadata; import cpw.mods.fml.common.event.*; import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.relauncher.FMLInjectionData; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import de.sanandrew.core.manpack.init.ManPackLoadingPlugin; import de.sanandrew.core.manpack.managers.SAPUpdateManager; import de.sanandrew.core.manpack.managers.SAPUpdateManager.Version; import de.sanandrew.core.manpack.mod.client.ClientProxy; import de.sanandrew.core.manpack.network.NetworkManager; import de.sanandrew.core.manpack.util.MutableString; import de.sanandrew.core.manpack.util.SAPReflectionHelper; import de.sanandrew.core.manpack.util.helpers.SAPUtils; import de.sanandrew.core.manpack.util.javatuples.Triplet; import net.minecraft.nbt.NBTTagCompound; import org.apache.commons.lang3.mutable.MutableBoolean; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class ModCntManPack extends DummyModContainer { public static final String MOD_CHANNEL = "sapmanpack"; public static final Logger UPD_LOG = LogManager.getLogger("SAPUpdateMgr"); public static final int FORGE_BULD_MIN = 1448; public static CommonProxy proxy; private static final List<String> TITLES = new ArrayList<>(); static { TITLES.add("May contain nuts!"); TITLES.add("Creepers gonna creep."); TITLES.add("Super Minecraft Miner Turbo X Diamond 2015 Deluxe GOTY Edition, Episode 2 Act 5."); TITLES.add("I can swing my sword!!!"); TITLES.add("Herobrine isn't real! Get over it."); TITLES.add("PULL THE LEVER!!!"); } public ModCntManPack() { super(new ModMetadata()); ModMetadata meta = super.getMetadata(); meta.modId = ManPackLoadingPlugin.MOD_ID; meta.name = "SanAndreasPs Manager Pack CORE edition"; meta.version = ManPackLoadingPlugin.MOD_VERSION; meta.authorList = Collections.singletonList("SanAndreasP"); meta.description = "A helper coremod which is needed for all my mods."; meta.url = "http://www.minecraftforge.net/forum/index.php/topic,2828.0.html"; meta.screenshots = new String[0]; meta.logoFile = ""; } @Override public boolean registerBus(EventBus bus, LoadController controller) { bus.register(this); return true; } @Subscribe public void modConstruction(FMLConstructionEvent event) { if( Integer.parseInt(FMLInjectionData.data()[3].toString()) < FORGE_BULD_MIN ) { ManPackLoadingPlugin.MOD_LOG.log(Level.FATAL, "The installed version of Forge is outdated! Minimum build required is %d, installed is build %s. " + "Either update Forge or remove this mod, it will cause problems otherwise!", FORGE_BULD_MIN, FMLInjectionData.data()[3]); } NetworkRegistry.INSTANCE.register(this, this.getClass(), null, event.getASMHarvestedData()); } @Subscribe @SideOnly( Side.CLIENT ) public void injectClientProxy(FMLPreInitializationEvent evt) { proxy = new ClientProxy(); this.preInit(evt); } @Subscribe @SideOnly( Side.SERVER ) public void injectServerProxy(FMLPreInitializationEvent evt) { proxy = new CommonProxy(); this.preInit(evt); } public void preInit(FMLPreInitializationEvent event) { ConfigurationManager.load(event.getSuggestedConfigurationFile()); if( ConfigurationManager.enableWindowTitleMsg ) { Class<Object> dspCls = SAPReflectionHelper.getClass("org.lwjgl.opengl.Display"); if( dspCls != null ) { String currTitle = SAPReflectionHelper.invokeCachedMethod(dspCls, null, null, "getTitle", null, null); currTitle = String.format("%s: %s", currTitle, TITLES.get(SAPUtils.RNG.nextInt(TITLES.size()))); SAPReflectionHelper.invokeCachedMethod(dspCls, null, null, "setTitle", new Class[] { String.class }, new Object[] { currTitle }); } } SAPUpdateManager.createUpdateManager("SAP Manager Pack", new Version(ManPackLoadingPlugin.MOD_VERSION), "https://raw.githubusercontent.com/SanAndreasP/SAPManagerPack/master/update.json", "http://www.curseforge.com/projects/226994/", this.getSource()); } @Subscribe public void init(FMLInitializationEvent evt) { ModCntManPack.proxy.registerRenderStuff(); } @Subscribe public void postInit(FMLPostInitializationEvent evt) { NetworkManager.initPacketHandler(); if( ConfigurationManager.enableUpdater ) { for( Triplet<SAPUpdateManager, MutableBoolean, MutableString> udm : SAPUpdateManager.UPD_MANAGERS ) { udm.getValue0().checkForUpdate(); } } } @Subscribe public void imcReceive(FMLInterModComms.IMCEvent event) { for( IMCMessage msg : event.getMessages() ) { if( msg.key.equalsIgnoreCase("add-updatemgr") && msg.isNBTMessage() ) { NBTTagCompound nbt = msg.getNBTValue(); SAPUpdateManager.createUpdateManager(nbt.getString("modName"), new Version(nbt.getString("version")), nbt.getString("updateInfoUrl"), nbt.getString("projectLink"), nbt.hasKey("jarLocation") ? new File(nbt.getString("jarLocation")) : null); } } } @Subscribe public void serverStarting(FMLServerStartingEvent event) { event.registerServerCommand(new CommandSAPManPack()); } @Override public File getSource() { return ManPackLoadingPlugin.source; } @Override public Class<?> getCustomResourcePackClass() { return getSource().isDirectory() ? FMLFolderResourcePack.class : FMLFileResourcePack.class; } }