From edc15cdebf094d9030b017fad09ee547013d56a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=B1=BBC=E8=AF=AD=E8=A8=80=E6=98=AF=E4=B8=80=E5=AE=B6?= <51352133+F-Unction@users.noreply.github.com> Date: Tue, 26 Apr 2022 10:19:37 +0800 Subject: [PATCH 1/8] update org.reflections 0.9.12->0.10.2 to avoid `[INFO] Unknown command` (#148) --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 97477456a..6dc53ca61 100644 --- a/build.gradle +++ b/build.gradle @@ -33,7 +33,7 @@ dependencies { implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.8' implementation group: 'com.google.protobuf', name: 'protobuf-java', version: '3.18.1' - implementation group: 'org.reflections', name: 'reflections', version: '0.9.12' + implementation group: 'org.reflections', name: 'reflections', version: '0.10.2' implementation group: 'dev.morphia.morphia', name: 'core', version: '1.6.1' From d19bc12761f4146518880d69a1f56ca034a26aff Mon Sep 17 00:00:00 2001 From: Magix Date: Tue, 26 Apr 2022 21:37:28 -0400 Subject: [PATCH 2/8] Update Grasscutter.java why do i have to fix stable --- src/main/java/emu/grasscutter/Grasscutter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/emu/grasscutter/Grasscutter.java b/src/main/java/emu/grasscutter/Grasscutter.java index abcdc3557..ad1107e8e 100644 --- a/src/main/java/emu/grasscutter/Grasscutter.java +++ b/src/main/java/emu/grasscutter/Grasscutter.java @@ -34,7 +34,7 @@ public final class Grasscutter { private static DispatchServer dispatchServer; private static GameServer gameServer; - public static final Reflections reflector = new Reflections(); + public static final Reflections reflector = new Reflections("emu.grasscutter"); static { // Declare logback configuration. From 7de9507012731a1c4e6369b84c0000f833a50c75 Mon Sep 17 00:00:00 2001 From: memetrollsXD Date: Sat, 30 Apr 2022 23:01:28 +0200 Subject: [PATCH 3/8] Delete bug_report.md --- .github/ISSUE_TEMPLATE/bug_report.md | 38 ---------------------------- 1 file changed, 38 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index dd84ea782..000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '' -labels: '' -assignees: '' - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Smartphone (please complete the following information):** - - Device: [e.g. iPhone6] - - OS: [e.g. iOS8.1] - - Browser [e.g. stock browser, safari] - - Version [e.g. 22] - -**Additional context** -Add any other context about the problem here. From 7d7226aac19310840f10862b7fc86af11b451f2d Mon Sep 17 00:00:00 2001 From: memetrollsXD Date: Sat, 30 Apr 2022 23:01:35 +0200 Subject: [PATCH 4/8] Delete feature_request.md --- .github/ISSUE_TEMPLATE/feature_request.md | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index bbcbbe7d6..000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: '' -labels: '' -assignees: '' - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. From 6b81b888a1d8d428d76a91d347cca385548fba29 Mon Sep 17 00:00:00 2001 From: 66Leo66 <33322229+66Leo66@users.noreply.github.com> Date: Thu, 5 May 2022 21:22:29 +0800 Subject: [PATCH 5/8] Allow overriding config with ENV (#506) Allow overriding config with ENV (handy when running with docker or debugging without modifying script) Also log proxy config for easier debugging (when sharing screenshots) --- proxy_config.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/proxy_config.py b/proxy_config.py index 5025a974e..07bac1a3a 100644 --- a/proxy_config.py +++ b/proxy_config.py @@ -1,4 +1,17 @@ +import os + # This can also be replaced with another IP address. USE_SSL = True -REMOTE_HOST = "127.0.0.1" -REMOTE_PORT = 443 \ No newline at end of file +REMOTE_HOST = "localhost" +REMOTE_PORT = 443 + +if os.getenv('MITM_REMOTE_HOST') != None: + REMOTE_HOST = os.getenv('MITM_REMOTE_HOST') +if os.getenv('MITM_REMOTE_PORT') != None: + REMOTE_PORT = int(os.getenv('MITM_REMOTE_PORT')) +if os.getenv('MITM_USE_SSL') != None: + USE_SSL = bool(os.getenv('MITM_USE_SSL')) + +print('MITM Remote Host: ' + REMOTE_HOST) +print('MITM Remote Port: ' + str(REMOTE_PORT)) +print('MITM Use SSL ' + str(USE_SSL)) From 1d6fd52552f58c4414d38d3402e086a432bb849c Mon Sep 17 00:00:00 2001 From: mingjun97 Date: Thu, 5 May 2022 21:56:34 -0700 Subject: [PATCH 6/8] Prompt for user language option for the `Tools` * GM Handbook * Gacha Map --- .../java/emu/grasscutter/tools/Tools.java | 84 +++++++++++++++++-- 1 file changed, 76 insertions(+), 8 deletions(-) diff --git a/src/main/java/emu/grasscutter/tools/Tools.java b/src/main/java/emu/grasscutter/tools/Tools.java index 475649b1f..2081299d3 100644 --- a/src/main/java/emu/grasscutter/tools/Tools.java +++ b/src/main/java/emu/grasscutter/tools/Tools.java @@ -1,10 +1,12 @@ package emu.grasscutter.tools; +import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; +import java.io.FilenameFilter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; @@ -30,13 +32,73 @@ import emu.grasscutter.data.def.SceneData; import emu.grasscutter.utils.Utils; public final class Tools { - - @SuppressWarnings("deprecation") public static void createGmHandbook() throws Exception { + ToolsWithLanguageOption.createGmHandbook(getLanguageOption()); + } + + public static void createGachaMapping(String location) throws Exception { + ToolsWithLanguageOption.createGachaMapping(location, getLanguageOption()); + } + + public static List getAvailableLanguage() throws Exception { + File textMapFolder = new File(Grasscutter.getConfig().RESOURCE_FOLDER + "TextMap"); + List availableLangList = new ArrayList(); + for (String textMapFileName : textMapFolder.list(new FilenameFilter() { + @Override + public boolean accept(File dir, String name) { + if (name.startsWith("TextMap") && name.endsWith(".json")){ + return true; + } + return false; + } + })) { + availableLangList.add(textMapFileName.replace("TextMap","").replace(".json","").toLowerCase()); + } + return availableLangList; + } + + public static String getLanguageOption() throws Exception { + List availableLangList = getAvailableLanguage(); + + // Use system out for better format + if (availableLangList.size() == 1) { + return availableLangList.get(0).toUpperCase(); + } + System.out.println("The following languages mappings are available, please select one: [default: EN]"); + String groupedLangList = "> "; + int groupedLangCount = 0; + String input = ""; + for (String availableLanguage: availableLangList){ + groupedLangCount++; + groupedLangList = groupedLangList + "" + availableLanguage + "\t"; + if (groupedLangCount == 6) { + System.out.println(groupedLangList); + groupedLangCount = 0; + groupedLangList = "> "; + } + } + if (groupedLangCount > 0) { + System.out.println(groupedLangList); + } + System.out.print("\nYour choice:[EN]"); + + input = new BufferedReader(new InputStreamReader(System.in)).readLine(); + if (availableLangList.contains(input.toLowerCase())) { + return input.toUpperCase(); + } + Grasscutter.getLogger().info("Invalid option. Will use EN(English) as fallback"); + + return "EN"; + } +} + +final class ToolsWithLanguageOption { + @SuppressWarnings("deprecation") + public static void createGmHandbook(String language) throws Exception { ResourceLoader.loadResources(); Map map; - try (InputStreamReader fileReader = new InputStreamReader(new FileInputStream(Utils.toFilePath(Grasscutter.getConfig().RESOURCE_FOLDER + "TextMap/TextMapEN.json")), StandardCharsets.UTF_8)) { + try (InputStreamReader fileReader = new InputStreamReader(new FileInputStream(Utils.toFilePath(Grasscutter.getConfig().RESOURCE_FOLDER + "TextMap/TextMap"+language+".json")), StandardCharsets.UTF_8)) { map = Grasscutter.getGsonFactory().fromJson(fileReader, new TypeToken>() {}.getType()); } @@ -96,11 +158,11 @@ public final class Tools { } @SuppressWarnings("deprecation") - public static void createGachaMapping(String location) throws Exception { + public static void createGachaMapping(String location, String language) throws Exception { ResourceLoader.loadResources(); Map map; - try (InputStreamReader fileReader = new InputStreamReader(new FileInputStream(Utils.toFilePath(Grasscutter.getConfig().RESOURCE_FOLDER + "TextMap/TextMapEN.json")), StandardCharsets.UTF_8)) { + try (InputStreamReader fileReader = new InputStreamReader(new FileInputStream(Utils.toFilePath(Grasscutter.getConfig().RESOURCE_FOLDER + "TextMap/TextMap"+language+".json")), StandardCharsets.UTF_8)) { map = Grasscutter.getGsonFactory().fromJson(fileReader, new TypeToken>() {}.getType()); } @@ -113,6 +175,9 @@ public final class Tools { list = new ArrayList<>(GameData.getAvatarDataMap().keySet()); Collections.sort(list); + // if the user made choices for language, I assume it's okay to assign his/her selected language to "en-us" + // since it's the fallback language and there will be no difference in the gacha record page. + // The enduser can still modify the `gacha_mappings.js` directly to enable multilingual for the gacha record system. writer.println("mappings = {\"en-us\": {"); // Avatars @@ -140,10 +205,10 @@ public final class Tools { default: color = "blue"; } - + // Got the magic number 4233146695 from manually search in the json file writer.println( "\"" + (avatarID % 1000 + 1000) + "\" : [\"" - + map.get(data.getNameTextMapHash()) + "(Avatar)\", \"" + + map.get(data.getNameTextMapHash()) + "(" + map.get(4233146695L)+ ")\", \"" + color + "\"]"); } @@ -173,9 +238,12 @@ public final class Tools { default: continue; // skip unnecessary entries } + + // Got the magic number 4231343903 from manually search in the json file + writer.println(",\"" + data.getId() + "\" : [\"" + map.get(data.getNameTextMapHash()).replaceAll("\"", "") - + "(Weapon)\",\""+ color + "\"]"); + + "("+ map.get(4231343903L)+")\",\""+ color + "\"]"); } writer.println(",\"200\": \"Standard\", \"301\": \"Avatar Event\", \"302\": \"Weapon event\""); writer.println("}\n}"); From 1ee9cc80bbe4b1d8996e0e78fe2a26b07c429e71 Mon Sep 17 00:00:00 2001 From: mingjun97 Date: Fri, 6 May 2022 01:47:25 -0700 Subject: [PATCH 7/8] Auto fill name of the event from TextMap --- src/main/java/emu/grasscutter/tools/Tools.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/emu/grasscutter/tools/Tools.java b/src/main/java/emu/grasscutter/tools/Tools.java index 2081299d3..3cb1e07c2 100644 --- a/src/main/java/emu/grasscutter/tools/Tools.java +++ b/src/main/java/emu/grasscutter/tools/Tools.java @@ -245,7 +245,7 @@ final class ToolsWithLanguageOption { "\" : [\"" + map.get(data.getNameTextMapHash()).replaceAll("\"", "") + "("+ map.get(4231343903L)+")\",\""+ color + "\"]"); } - writer.println(",\"200\": \"Standard\", \"301\": \"Avatar Event\", \"302\": \"Weapon event\""); + writer.println(",\"200\": \""+map.get(332935371L)+"\", \"301\": \""+ map.get(2272170627L) + "\", \"302\": \""+map.get(2864268523L)+"\""); writer.println("}\n}"); } From 1ed0511cd70fdaf0fb718422943f59f5df551534 Mon Sep 17 00:00:00 2001 From: Magix Date: Fri, 6 May 2022 21:12:39 -0400 Subject: [PATCH 8/8] Update Tools.java --- src/main/java/emu/grasscutter/tools/Tools.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/emu/grasscutter/tools/Tools.java b/src/main/java/emu/grasscutter/tools/Tools.java index 3cb1e07c2..a2bee91f0 100644 --- a/src/main/java/emu/grasscutter/tools/Tools.java +++ b/src/main/java/emu/grasscutter/tools/Tools.java @@ -80,7 +80,7 @@ public final class Tools { if (groupedLangCount > 0) { System.out.println(groupedLangList); } - System.out.print("\nYour choice:[EN]"); + System.out.print("\nYour choice:[EN] "); input = new BufferedReader(new InputStreamReader(System.in)).readLine(); if (availableLangList.contains(input.toLowerCase())) {