BingoRufus

Language Downloader

Sep 9th, 2020
1,478
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.42 KB | None | 0 0
  1. import java.io.File;
  2. import java.io.FileReader;
  3. import java.io.FileWriter;
  4. import java.nio.file.Path;
  5. import java.nio.file.Paths;
  6.  
  7. import com.google.gson.JsonObject;
  8. import com.google.gson.JsonParser;
  9. import com.google.gson.stream.JsonReader;
  10. //To get the default english language file you have to decompile the minecraft.jar then go to assets>Minecraft>lang>en_us.json
  11. public class Downloader {
  12.     String ver;
  13.     String output;
  14.     Path assets;
  15.     JsonObject obj;
  16.  
  17.     public void download(String version, String outputLocation, String minecraftFolder) {
  18.         assets = Paths.get(minecraftFolder).resolve("assets");
  19.         Path indexes = assets.resolve("indexes");
  20.  
  21.  
  22.         ver = version;
  23.         output = outputLocation;
  24.  
  25.         obj = retrieveJson(indexes.resolve(version + ".json").toAbsolutePath().toString());
  26.  
  27.         obj = obj.get("objects").getAsJsonObject();
  28.         obj.keySet().stream().filter(key -> {
  29.             return key.startsWith("minecraft/lang/");
  30.         }).forEach(lang -> {
  31.             retreivePack(obj.get(lang).getAsJsonObject().get("hash").getAsString());
  32.         });
  33.  
  34.     }
  35.  
  36.     private void retreivePack(String key) {
  37.         String folder = key.substring(0, 2);
  38.         JsonObject jo = retrieveJson(
  39.                 assets.resolve("objects").resolve(folder).resolve(key).toAbsolutePath().toString());
  40.         String code = jo.get("language.code").getAsString();
  41.         // jo = filterJson(jo);
  42.         downloadPack(jo, code);
  43.     }
  44.  
  45.     private void downloadPack(JsonObject jo, String key) {
  46.         try {
  47.             File file = new File(File.separator + output + File.separator + key + ".json");
  48.             File filePath = new File(File.separator + output);
  49.             filePath.mkdirs();
  50.             if (!file.exists()) {
  51.                 file.createNewFile();
  52.             }
  53.             FileWriter fileWriter = new FileWriter(file);
  54.             fileWriter.write(jo.toString());
  55.             fileWriter.flush();
  56.             fileWriter.close();
  57.             System.out.println("wrote to " + file.getAbsolutePath());
  58.  
  59.         } catch (Exception e) {
  60.  
  61.         }
  62.     }
  63.  
  64.     private JsonObject filterJson(JsonObject jo) {
  65.         JsonObject items = new JsonObject();
  66.  
  67.         jo.keySet().stream().sorted().forEach(key -> {
  68.             if ((key.toString().startsWith("block.minecraft.") || key.toString().startsWith("item.minecraft."))) {
  69.                 items.add(key, jo.get(key));
  70.             }
  71.         });
  72.         return items;
  73.  
  74.     }
  75.  
  76.     private JsonObject retrieveJson(String loc) {
  77.         try {
  78.  
  79.             File file = new File(loc);
  80.             Object obj = JsonParser.parseReader(new JsonReader(new FileReader(file)));
  81.  
  82.             return (JsonObject) obj;
  83.         } catch (Exception e) {
  84.         }
  85.         return null;
  86.     }
  87.  
  88.  
  89. }
Advertisement
Add Comment
Please, Sign In to add comment