Skip to content

Instantly share code, notes, and snippets.

@coolsquid
Forked from Vazkii/ModLister.java
Last active August 29, 2015 14:09
Show Gist options
  • Save coolsquid/a0ea0b4fa46123c04993 to your computer and use it in GitHub Desktop.
Save coolsquid/a0ea0b4fa46123c04993 to your computer and use it in GitHub Desktop.
package vazkii.modlister;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.lwjgl.Sys;
import org.lwjgl.opengl.Display;
import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.ModContainer;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
@Mod(modid = ModLister.MOD_ID, name = ModLister.MOD_NAME, version = ModLister.VERSION, dependencies = ModLister.DEPENDENCIES)
public final class ModLister {
public static final String MOD_ID = "ModLister";
public static final String MOD_NAME = "Mod Lister";
public static final String VERSION = "1.0";
public static final String DEPENDENCIES = "after:*";
File mcDir;
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
mcDir = event.getModConfigurationDirectory().getParentFile();
}
@EventHandler
public void postInit(FMLPostInitializationEvent event) {
List<String> lines = new ArrayList<String>();
for(ModContainer mod : Loader.instance().getModList())
lines.add(createLine(mod));
try {
File file = new File(mcDir, "ModList.txt");
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
for(String s : lines)
writer.write(s);
writer.write("\r");
writer.write("Mod List generated by ModLister.\r");
writer.write("System Time: " + new SimpleDateFormat("HH:mm MM/dd/yyyy").format(new Date()) + "\r");
writer.write("Minecraft " + Display.getTitle().replaceAll("Minecraft ", "") + "\r");
writer.write("OS: " + System.getProperty("os.name") + "\r");
writer.write("Java: " + System.getProperty("java.version") + "\r");
writer.write("LWJGL: " + Sys.getVersion());
writer.close();
if(!file.exists())
file.createNewFile();
FMLLog.warning("ModLister wrote mod data properly.");
} catch(IOException e) {
FMLLog.warning("ModLister failed to write mod data!");
e.printStackTrace();
}
}
private String createLine(ModContainer container) {
StringBuilder builder = new StringBuilder();
builder.append(container.getName());
builder.append(" (");
builder.append(container.getModId());
builder.append(") | Version: ");
builder.append(container.getVersion());
builder.append(" | Loaded From ");
builder.append(container.getSource().getName());
builder.append(" on ");
builder.append(container.getSource() == null || container.getSource().getParentFile() == null ? "N/A" : container.getSource().getParentFile().getName());
builder.append(" | Website: ");
builder.append(container.getMetadata().url.isEmpty() ? "N/A" : container.getMetadata().url);
builder.append("\r");
return builder.toString();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment