[1.7.10][Forge][Semi-Release]Mod Lister

1,087
2
Да, извините за "копирование" мода (Хотя я его писал сам, но, чтобы потом не было претензий он Дракона, типа "украл идею моего мода").
Сам мод написан на Java.
Плюс этого мода в том, что он делает CSV файл. То-есть список модов смотрится в таблице типа этого:
ItXwVp3.png

С кое-чем есть проблемы. Как видите список авторов иногда пустой. Но это не моя проблема, а проблема авторов мода если они не прописали в ModMetadata authorList. Так же пока есть 2 тупых файла (В одном нормальный конфиг, в другом пустота) в config/Mod Lister. Скоро я допилю апдейт и там не будет такого (Уберу "конфиги"). Я потерял исходники, так что просто дам декомпилированную fernflower'ом версию
Скачать
Код:
package modlister;

import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.ModContainer;
import cpw.mods.fml.common.ModMetadata;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import modlister.Config;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.lwjgl.opengl.Display;

@Mod(
   modid = "ModLister",
   name = "Mod Lister",
   version = "1.0.1710.2",
   dependencies = "after:*"
)
public final class ModLister {

   public static final String modid = "ModLister";
   public static final String name = "Mod Lister";
   public static final String version = "1.0.1710.2";
   public static final String dependencies = "after:*";
   File mcDir;
   public static final Logger log = LogManager.getLogger("Mod Lister");


   @EventHandler
   public void preInit(FMLPreInitializationEvent event) {
      Config.configurate();
      this.mcDir = event.getModConfigurationDirectory().getParentFile();
      ModInfo(event.getModMetadata());
      Config.saveConfig();
   }

   @EventHandler
   public void postInit(FMLPostInitializationEvent event) {
      ArrayList lines = new ArrayList();
      lines.add("Name,Version,Authors,Mod Site,\r");
      Iterator e = Loader.instance().getModList().iterator();

      while(e.hasNext()) {
         ModContainer writer = (ModContainer)e.next();
         lines.add(this.createLine(writer));
      }

      try {
         File e1;
         if(Config.createTXTFile) {
            e1 = new File(this.mcDir, "Mod List.txt");
         } else {
            e1 = new File(this.mcDir, "Mod List.csv");
         }

         BufferedWriter writer1 = new BufferedWriter(new FileWriter(e1));
         Iterator var5 = lines.iterator();

         while(var5.hasNext()) {
            String s = (String)var5.next();
            writer1.write(s);
         }

         writer1.write("\r");
         writer1.write("Minecraft " + Display.getTitle().replaceAll("Minecraft ", "") + "\r");
         writer1.close();
         if(!e1.exists()) {
            e1.createNewFile();
         }

         log.info("Mod Lister create mod list.");
      } catch (IOException var7) {
         log.warn("Mod Lister cannot create mod list! Check your file system!");
         var7.printStackTrace();
      }

      log.info("Mod Lister has loaded.");
   }

   private String createLine(ModContainer container) {
      StringBuilder builder = new StringBuilder();
      builder.append(container.getName() + ",");
      builder.append(container.getVersion() + ",");
      builder.append("\"").append(container.getMetadata().authorList).append("\",");
      builder.append("\"" + container.getMetadata().url).append("\"");
      builder.append("\r");
      return builder.toString();
   }

   public static void ModInfo(ModMetadata m) {
      m.autogenerated = false;
      m.modId = "ModLister";
      m.name = "Mod Lister";
      m.version = "1.0.1710.2";
      m.url = "http://minecraft.curseforge.com/projects/mod-lister-1-7-10";
      ArrayList authors = new ArrayList();
      authors.add("JakiHappyCity");
      m.authorList = authors;
   }

}
Код я ещё не проверял. Могут быть ошибки из-за маппинга.
 
329
13
Неплохо. Где его собираешься использовать?
 
1,087
2
Ну я предпочитал для создания мод пака, мне лень было делать всё самому - решил сделать мини-мод. А дальше по чуть-чуть добавлять информации.
Когда установлю IDEA тогда нормально допишу мод (Моя система крашнулась недавно).
P.S. Уберу конфиги (Ибо практика показа - нафиг не надо). Впринципе в будующих нововведениях это всё.
[merge_posts_bbcode]Добавлено: 25.11.2015 18:02:03[/merge_posts_bbcode]

Кстати код был точно не таким, ибо я помню, что вместо while был цикл for.
 
1,087
2
Agravaine написал(а):
Хоть бы название переменных изменил, глупышка)
Делать мне нефиг) Я по быстрому хотел выложить, а на код не обратил внимание) Когда установлю всё нужное - исправлю этот код по памяти.
 
2,955
12
ПЛАГИАТ!!!1!1! Ну а вообще, лучше бы мне предложил добавить CSV, вышло бы красивее и без плагиата. А ещё у меня глаза кровоточат от некоторых мест в коде, да.
 
1,087
2
Dragon2488 написал(а):
ПЛАГИАТ!!!1!1! Ну а вообще, лучше бы мне предложил добавить CSV, вышло бы красивее и без плагиата. А ещё у меня глаза кровоточат от некоторых мест в коде, да.
ну опять же это декомпилированный, неподправленный код, а так я собираюсь сделать код ещё меньше. Ну и это плагиатом не назовёшь так как тот же Vazkii (Парень-девушка), IChun тоже делал(делала) ModLister. Плюс - тебе же всё равно для своих целей :) Насчёт красивее - не понимаю, что не так с красотой в CSV файле.
 
1,087
2
Обновлено. Версия: 1.1.1710.0 final. Мод был переписан на Scala, "обучаюсь" ему. Я просто сначала делал какую-то тупую штуку, чтобы потестить то как компилируется это всё... В итоге половины методов нету, что для меня прекрасно :3 Тык сказать защита от декомпиляции. Вот решил его переписать :D
 
Сверху