Grasscutter/src/main/java/emu/grasscutter/tools/Tools.java

97 lines
3.2 KiB
Java
Raw Normal View History

2022-04-17 12:43:07 +00:00
package emu.grasscutter.tools;
import java.io.FileInputStream;
import java.io.FileOutputStream;
2022-04-17 12:43:07 +00:00
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
2022-04-17 12:43:07 +00:00
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
2022-04-17 12:43:07 +00:00
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
2022-04-18 05:11:27 +00:00
import java.util.ArrayList;
2022-04-17 12:43:07 +00:00
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.google.gson.reflect.TypeToken;
import emu.grasscutter.GenshinConstants;
import emu.grasscutter.Grasscutter;
import emu.grasscutter.data.GenshinData;
import emu.grasscutter.data.ResourceLoader;
import emu.grasscutter.data.def.AvatarData;
import emu.grasscutter.data.def.ItemData;
import emu.grasscutter.data.def.MonsterData;
import emu.grasscutter.data.def.SceneData;
2022-04-19 18:11:48 +00:00
import emu.grasscutter.utils.Utils;
2022-04-17 12:43:07 +00:00
2022-04-18 05:11:27 +00:00
public final class Tools {
2022-04-17 12:43:07 +00:00
@SuppressWarnings("deprecation")
public static void createGmHandbook() throws Exception {
ResourceLoader.loadResources();
Map<Long, String> map;
try (InputStreamReader fileReader = new InputStreamReader(new FileInputStream(Utils.toFilePath(Grasscutter.getConfig().RESOURCE_FOLDER + "TextMap/TextMapEN.json")), StandardCharsets.UTF_8)) {
2022-04-17 12:43:07 +00:00
map = Grasscutter.getGsonFactory().fromJson(fileReader, new TypeToken<Map<Long, String>>() {}.getType());
}
List<Integer> list;
String fileName = "./GM Handbook.txt";
try (PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(fileName), StandardCharsets.UTF_8), false)) {
2022-04-17 12:43:07 +00:00
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
writer.println("// Genshin Impact " + GenshinConstants.VERSION + " GM Handbook");
writer.println("// Created " + dtf.format(now) + System.lineSeparator() + System.lineSeparator());
2022-04-18 05:11:27 +00:00
list = new ArrayList<>(GenshinData.getAvatarDataMap().keySet());
2022-04-17 12:43:07 +00:00
Collections.sort(list);
writer.println("// Avatars");
for (Integer id : list) {
AvatarData data = GenshinData.getAvatarDataMap().get(id);
writer.println(data.getId() + " : " + map.get(data.getNameTextMapHash()));
}
writer.println();
2022-04-18 05:11:27 +00:00
list = new ArrayList<>(GenshinData.getItemDataMap().keySet());
2022-04-17 12:43:07 +00:00
Collections.sort(list);
writer.println("// Items");
for (Integer id : list) {
ItemData data = GenshinData.getItemDataMap().get(id);
writer.println(data.getId() + " : " + map.get(data.getNameTextMapHash()));
}
writer.println();
writer.println("// Scenes");
list = new ArrayList<>(GenshinData.getSceneDataMap().keySet());
Collections.sort(list);
for (Integer id : list) {
SceneData data = GenshinData.getSceneDataMap().get(id);
writer.println(data.getId() + " : " + data.getScriptData());
}
writer.println();
2022-04-17 12:43:07 +00:00
writer.println("// Monsters");
2022-04-18 05:11:27 +00:00
list = new ArrayList<>(GenshinData.getMonsterDataMap().keySet());
2022-04-17 12:43:07 +00:00
Collections.sort(list);
for (Integer id : list) {
MonsterData data = GenshinData.getMonsterDataMap().get(id);
writer.println(data.getId() + " : " + map.get(data.getNameTextMapHash()));
}
}
Grasscutter.getLogger().info("GM Handbook generated!");
}
}