private void detectOptifine() { try { Class<?> optifineConfig = Class.forName("Config", false, Loader.instance().getModClassLoader()); String optifineVersion = (String) optifineConfig.getField("VERSION").get(null); Map<String,Object> dummyOptifineMeta = ImmutableMap.<String,Object>builder().put("name", "Optifine").put("version", optifineVersion).build(); ModMetadata optifineMetadata = MetadataCollection.from(getClass().getResourceAsStream("optifinemod.info"),"optifine").getMetadataForId("optifine", dummyOptifineMeta); optifineContainer = new DummyModContainer(optifineMetadata); FMLLog.info("Forge Mod Loader has detected optifine %s, enabling compatibility features",optifineContainer.getVersion()); } catch (Exception e) { optifineContainer = null; } }
/** * We must force the following load order, otherwise many things break: * - TFC * - This mod * - Anything else */ public static void doLoadOrderHaxing() { File injectedDepFile = new File(Loader.instance().getConfigDir(), "injectedDependencies.json"); JsonArray deps = new JsonArray(); JsonObject dep = new JsonObject(); dep.addProperty("type", "after"); dep.addProperty("target", TFC); deps.add(dep); for (ModContainer container : Loader.instance().getModList()) { if (container instanceof DummyModContainer || container instanceof InjectedModContainer) continue; String modid = container.getModId(); if (modid.equals(MODID) || modid.equals(TFC)) continue; dep = new JsonObject(); dep.addProperty("type", "before"); dep.addProperty("target", modid); deps.add(dep); } JsonArray root = new JsonArray(); JsonObject mod = new JsonObject(); mod.addProperty("modId", MODID); mod.add("deps", deps); root.add(mod); try { FileUtils.write(injectedDepFile, GSON.toJson(root)); } catch (IOException e) { throw new RuntimeException(e); } }
public EAPluginContainer(File file) { ModMetadata stub = new ModMetadata(); stub.modId = file.getName().toLowerCase(); stub.name = file.getName(); stub.version = "eaLua Compatible Plugin 1.0"; this.container = (ModContainer)new DummyModContainer(stub); }
public static void start(File coremodLocation) { LoadingFrame.setSystemLAF(); coreModLocation = coremodLocation; if (coreModLocation == null) coreModLocation = new File("./../bin/"); // Assume this is a dev environment, and that the build dir is in bin, and the test dir has the same parent as // the bin dir... ModMetadata md = new ModMetadata(); md.name = Lib.Mod.NAME; md.modId = Lib.Mod.ID; modContainer = new DummyModContainer(md) { @Override public Class<?> getCustomResourcePackClass() { return FMLFileResourcePack.class; } @Override public File getSource() { return coreModLocation; } @Override public String getModId() { return Lib.Mod.ID; } }; File fileOld = new File("./config/betterloadingscreen.cfg"); File fileNew = new File("./config/BetterLoadingScreen/config.cfg"); if (fileOld.exists()) cfg = new Configuration(fileOld); else cfg = new Configuration(fileNew); boolean useMinecraft = isClient(); if (useMinecraft) { String comment = "Whether or not to use minecraft's display to show the progress. This looks better, but there is a possibilty of not being "; comment += "compatible, so if you do have any strange crash reports or compatability issues, try setting this to false"; useMinecraft = cfg.getBoolean("useMinecraft", "general", true, comment); } connectExternally = cfg.getBoolean("connectExternally", "general", true, "If this is true, it will conect to drone.io to get a changelog"); playSound = cfg.getBoolean("playSound", "general", true, "Play a sound after minecraft has finished starting up"); if (useMinecraft) displayer = new MinecraftDisplayerWrapper(); else if (!GraphicsEnvironment.isHeadless()) displayer = new FrameDisplayer(); else displayer = new LoggingDisplayer(); displayer.open(cfg); cfg.save(); }