Package cofh.asm

Source Code of cofh.asm.LoadingPlugin$CoFHDummyContainer

package cofh.asm;

import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe;
import cpw.mods.fml.common.DummyModContainer;
import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.common.LoadController;
import cpw.mods.fml.common.ModMetadata;
import cpw.mods.fml.common.discovery.ASMDataTable;
import cpw.mods.fml.common.event.FMLConstructionEvent;
import cpw.mods.fml.common.versioning.DefaultArtifactVersion;
import cpw.mods.fml.common.versioning.VersionParser;
import cpw.mods.fml.relauncher.FMLInjectionData;
import cpw.mods.fml.relauncher.IFMLCallHook;
import cpw.mods.fml.relauncher.IFMLLoadingPlugin;

import java.awt.Desktop;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import javax.swing.JEditorPane;
import javax.swing.JOptionPane;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;

import net.minecraft.launchwrapper.LaunchClassLoader;

@IFMLLoadingPlugin.TransformerExclusions({ "cofh.asm." })
public class LoadingPlugin implements IFMLLoadingPlugin {

  public static final String MC_VERSION = "[1.7.10]";
  public static ArrayList<String> transformersList = new ArrayList<String>();
  public static boolean runtimeDeobfEnabled = false;
  public static ASMDataTable ASM_DATA = null;
  public static LaunchClassLoader loader = null;

  // Initialize SubMod transformers
  static {

    versionCheck(MC_VERSION, "CoFHCore");
    attemptClassLoad("cofh.asm.TransformerCore", "Failed to find Main Transformer! Critical Issue!");
    attemptClassLoad("cofh.asm.PCCASMTransformer", "Failed to find Secondary Transformer! Critical Issue!");
  }

  public static void versionCheck(String reqVersion, String mod) {

    String mcVersion = (String) FMLInjectionData.data()[4];
    if (!VersionParser.parseRange(reqVersion).containsVersion(new DefaultArtifactVersion(mcVersion))) {
      String err = "This version of " + mod + " does not support Minecraft version " + mcVersion;
      System.err.println(err);

      JEditorPane ep = new JEditorPane("text/html", "<html>" + err
          + "<br>Remove it from your coremods folder and check <a href=\"http://teamcofh.com/\">here</a> for updates" + "</html>");

      ep.setEditable(false);
      ep.setOpaque(false);
      ep.addHyperlinkListener(new HyperlinkListener() {

        @Override
        public void hyperlinkUpdate(HyperlinkEvent event) {

          try {
            if (event.getEventType().equals(HyperlinkEvent.EventType.ACTIVATED)) {
              Desktop.getDesktop().browse(event.getURL().toURI());
            }
          } catch (Exception e) {
          }
        }
      });
      JOptionPane.showMessageDialog(null, ep, "Fatal error", JOptionPane.ERROR_MESSAGE);
      System.exit(1);
    }
  }

  public LoadingPlugin() {

    // DepLoader.load();
  }

  public static void attemptClassLoad(String className, String failMessage) {

    try {
      Class.forName(className, false, LoadingPlugin.class.getClassLoader());
      transformersList.add(className);
    } catch (Throwable e) {
      FMLLog.warning(failMessage);
    }
  }

  @Override
  public String getAccessTransformerClass() {

    return "cofh.asm.PCCAccessTransformer";
  }

  @Override
  public String[] getASMTransformerClass() {

    return transformersList.toArray(new String[2]);
  }

  @Override
  public String getModContainerClass() {

    return CoFHDummyContainer.class.getName();
  }

  @Override
  public String getSetupClass() {

    return CoFHDummyContainer.class.getName();
  }

  @Override
  public void injectData(Map<String, Object> data) {

    runtimeDeobfEnabled = (Boolean) data.get("runtimeDeobfuscationEnabled");
    if (data.containsKey("coremodLocation")) {
      myLocation = (File) data.get("coremodLocation");
    }
  }

  public File myLocation;

  public static class CoFHDummyContainer extends DummyModContainer implements IFMLCallHook {

    public CoFHDummyContainer() {

      super(new ModMetadata());
      ModMetadata md = getMetadata();
      md.autogenerated = true;
      md.authorList = Arrays.asList("skyboy026");
      md.modId = "<CoFH ASM>";
      md.name = md.description = "CoFH ASM Data Initialization";
      md.version = "000";
    }

    @Override
    public boolean registerBus(EventBus bus, LoadController controller) {

      bus.register(this);
      return true;
    }

    @Subscribe
    public void construction(FMLConstructionEvent evt) {

      ASM_DATA = evt.getASMHarvestedData();
      PCCASMTransformer.scrapeData(ASM_DATA);
    }

    @Override
    public Void call() throws Exception {

      return null;
    }

    @Override
    public void injectData(Map<String, Object> data) {

      loader = (LaunchClassLoader) data.get("classLoader");
    }
  }

}
TOP

Related Classes of cofh.asm.LoadingPlugin$CoFHDummyContainer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.