From 0db017dfa40f1b668280fb1a9415173929f6c9ec Mon Sep 17 00:00:00 2001 From: xmplay <81370285+xmplay@users.noreply.github.com> Date: Fri, 22 Apr 2022 09:52:33 +0200 Subject: [PATCH 01/10] fix typos and grammar in README.md --- README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 853c37ae3..1bff62df9 100644 --- a/README.md +++ b/README.md @@ -10,20 +10,20 @@ A WIP server reimplementation for *some anime game* 2.3-2.6 * Inventory features (recieving items/characters, upgrading items/characters, etc) * Gacha system * Friends list -* Co-op *partially* work +* Co-op *partially* works # Quick setup guide ### Note -* If you update from an older version, delete `config.json` for regeneration +* If you updated from an older version, delete `config.json` to regenerate it. ### Prerequisites -* JDK-8u202 ([mirror link](https://mirrors.huaweicloud.com/java/jdk/8u202-b08/) since Oracle required an account to download old builds) +* JDK-8u202 ([mirror link](https://mirrors.huaweicloud.com/java/jdk/8u202-b08/) since Oracle requires an account to download old builds) * Mongodb (recommended 4.0+) * Proxy daemon: mitmproxy (mitmdump, recommended), Fiddler Classic, etc. ### Starting up Grasscutter server (Assuming you are on Windows) -1. Setup compile environment `gradlew.bat` +1. Setup the compile environment with `gradlew.bat` 2. Compile Grasscutter with `gradlew jar` -3. Create a folder named `resources` in your Grasscutter directory, bring your `BinOutput` and `ExcelBinOutput` folders into it *(Check the wiki for more details how to get those.)* +3. Create a folder named `resources` in your Grasscutter directory, move your `BinOutput` and `ExcelBinOutput` folders there *(Check the wiki for more details on how to get those.)* 4. Run Grasscutter with `java -jar grasscutter.jar`. Make sure mongodb service is running as well. ### Connecting with the client @@ -37,7 +37,7 @@ A WIP server reimplementation for *some anime game* 2.3-2.6 2. Set network proxy to `127.0.0.1:8080` or the proxy port you specified. 4. *yoink* -* or you can use `run.cmd` to start Server & Proxy daemon with one click +* or you can use `run.cmd` to start the Server & Proxy daemon with one click # Grasscutter commands There is a dummy user named "Server" in every player's friends list that you can message to use commands. Commands also work in other chat rooms, such as private/team chats. @@ -54,26 +54,26 @@ There is a dummy user named "Server" in every player's friends list that you can `killall` -`setworldlevel [level]` - Relog to see effects properly +`setworldlevel [level]` - Changes your world level, relog to see effects properly `godmode` - Prevents you from taking damage -`resetconst` - Resets the constellation level on your current active character, will need to relog after using the command to see any changes. +`resetconst` - Resets the constellation level on your currently selected character, will need to relog after using the command to see any changes. -`setstats [stats] [amount]` - Changes the current character's specified stat. +`setstats [stats] [amount]` - Changes the currently selected character's specified stat. -`clearartifacts` - Deletes all unequipped and unlocked level 0 artifacts, **including yellow rarity ones** from your inventory +`clearartifacts` - Deletes all unequipped and unlocked level 0 artifacts, **including 5* rarity ones** from your inventory -`pos` - Gets your current coordinate. +`pos` - Gets your current coordinates. `weather [weather id] [climate id]` - Changes the current weather. *More commands will be updated in the [wiki](https://github.com/Melledy/Grasscutter/wiki/).* ### Bonus -When you want to teleport to somewhere, use the ingame marking function on Map, click Confirm. You will see your character falling from a very high destination, exact location that you marked. +When you want to teleport somewhere, use the in-game marking function on the Map, click Confirm. You will see your character falling from a very high spot at the exact location you marked. # Quick Troubleshooting * If compiling wasn't successful, please check your JDK installation (must be JDK 8 and validated JDK's bin PATH variable) -* My client doesn't connect, doesn't login, 4206, etc... - Mostly your proxy daemon setup is *the issue*, if using Fiddler make sure it running on another port except 8888 +* My client doesn't connect, doesn't login, 4206, etc... - Mostly your proxy daemon setup is *the issue*, if you're using Fiddler make sure it's running on a port other than 8888 * Startup sequence: Mongodb > Grasscutter > Proxy daemon (mitmdump, fiddler, etc.) > Client From 13ebc4f4fcd5e57dba98c87155cfa52b3478303c Mon Sep 17 00:00:00 2001 From: xmplay <81370285+xmplay@users.noreply.github.com> Date: Fri, 22 Apr 2022 09:55:44 +0200 Subject: [PATCH 02/10] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1bff62df9..b5538b012 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ There is a dummy user named "Server" in every player's friends list that you can `setstats [stats] [amount]` - Changes the currently selected character's specified stat. -`clearartifacts` - Deletes all unequipped and unlocked level 0 artifacts, **including 5* rarity ones** from your inventory +`clearartifacts` - Deletes all unequipped and unlocked level 0 artifacts, **including 5-star rarity ones** from your inventory `pos` - Gets your current coordinates. From 3707ee54776bef5d33376f6d566ed45a70ffe28c Mon Sep 17 00:00:00 2001 From: fumbling <104180076+fumbling644o@users.noreply.github.com> Date: Fri, 22 Apr 2022 22:02:13 -0400 Subject: [PATCH 03/10] Make gradlew executable --- gradlew | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 gradlew diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 From d1d8378e15cf0d094d3ab6c2979216078cb3715e Mon Sep 17 00:00:00 2001 From: fumbling <104180076+fumbling644o@users.noreply.github.com> Date: Fri, 22 Apr 2022 22:02:41 -0400 Subject: [PATCH 04/10] Workflow: Use Ubuntu and add PR triggers --- .github/workflows/build.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8457bf7ac..26a075ccc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,9 +3,14 @@ on: push: branches: - "stable" + pull_request: + types: + - opened + - synchronize + - reopened jobs: Build-Server-Jar: - runs-on: windows-latest + runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 @@ -15,10 +20,9 @@ jobs: distribution: temurin java-version: '8' - name: Run Gradle - run: .\gradlew.bat && .\gradlew jar + run: ./gradlew && ./gradlew jar - name: Upload build uses: actions/upload-artifact@v3 with: name: Grasscutter path: grasscutter.jar - From 220f252f0fb9a4ba51572690a5a028dd666a9779 Mon Sep 17 00:00:00 2001 From: fumbling <104180076+fumbling644o@users.noreply.github.com> Date: Fri, 22 Apr 2022 22:40:19 -0400 Subject: [PATCH 05/10] Workflow: Switch from Temurin 8 to 16 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 26a075ccc..cc0193c1a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ jobs: uses: actions/setup-java@v3 with: distribution: temurin - java-version: '8' + java-version: '16' - name: Run Gradle run: ./gradlew && ./gradlew jar - name: Upload build From c77aa3ff79a274ac4cef12caf31da2309909f21a Mon Sep 17 00:00:00 2001 From: WangYneos Date: Sat, 23 Apr 2022 12:02:10 +0800 Subject: [PATCH 06/10] make mitmproxy ignore non Genshin hosts --- README.md | 2 +- start.cmd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 853c37ae3..a08da974b 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ A WIP server reimplementation for *some anime game* 2.3-2.6 ### Connecting with the client ½. Create an account using *server console command* below 1. Run a proxy daemon: (choose either one) - - mitmdump: `mitmdump -s proxy.py -k` + - mitmdump: `mitmdump -s proxy.py -k`--allow-hosts ".*\.yuanshen\.com|.*\.mihoyo\.com|.*\.hoyoverse\.com" - Fiddler Classic: Run Fiddler Classic, turn on `Decrypt https traffic` in setting and change the default port there (Tools -> Options -> Connections) to anything other than `8888`, and load [this script](https://github.lunatic.moe/fiddlerscript). - [Hosts file](https://github.com/Melledy/Grasscutter/wiki/Running#traffic-route-map) 2. Trust CA certificate: diff --git a/start.cmd b/start.cmd index 8c89f359e..48de450d1 100644 --- a/start.cmd +++ b/start.cmd @@ -75,7 +75,7 @@ for /f "tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVe @rem TODO: External proxy when ORIG_PROXY_ENABLE == 0x1 echo set ws = createobject("wscript.shell") > "%temp%\proxy.vbs" echo ws.currentdirectory = "%MITMDUMP_PATH%" >> "%temp%\proxy.vbs" -echo ws.run "cmd /c mitmdump.exe -s "^&chr(34)^&"%PROXY_SCRIPT_NAME%"^&chr(34)^&" -k",0 >> "%temp%\proxy.vbs" +echo ws.run "cmd /c mitmdump.exe -s "^&chr(34)^&"%PROXY_SCRIPT_NAME%"^&chr(34)^&" -k --allow-hosts \".*\.yuanshen\.com|.*\.mihoyo\.com|.*\.hoyoverse\.com\"",0 >> "%temp%\proxy.vbs" "%temp%\proxy.vbs" del /f /q "%temp%\proxy.vbs" >nul 2>nul From ae00eb69d67fd5b7561410f77f6426f0599fa8a3 Mon Sep 17 00:00:00 2001 From: WangYneos <42824603+WangYneos@users.noreply.github.com> Date: Sat, 23 Apr 2022 12:07:23 +0800 Subject: [PATCH 07/10] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a08da974b..370dc3c99 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ A WIP server reimplementation for *some anime game* 2.3-2.6 ### Connecting with the client ½. Create an account using *server console command* below 1. Run a proxy daemon: (choose either one) - - mitmdump: `mitmdump -s proxy.py -k`--allow-hosts ".*\.yuanshen\.com|.*\.mihoyo\.com|.*\.hoyoverse\.com" + - mitmdump: `mitmdump -s proxy.py -k --allow-hosts ".*\.yuanshen\.com|.*\.mihoyo\.com|.*\.hoyoverse\.com"` - Fiddler Classic: Run Fiddler Classic, turn on `Decrypt https traffic` in setting and change the default port there (Tools -> Options -> Connections) to anything other than `8888`, and load [this script](https://github.lunatic.moe/fiddlerscript). - [Hosts file](https://github.com/Melledy/Grasscutter/wiki/Running#traffic-route-map) 2. Trust CA certificate: From 22e5ca5545039df239bd0d6bb495c107fc206745 Mon Sep 17 00:00:00 2001 From: WangYneos <42824603+WangYneos@users.noreply.github.com> Date: Sat, 23 Apr 2022 13:57:48 +0800 Subject: [PATCH 08/10] Update start.cmd --- start.cmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/start.cmd b/start.cmd index 48de450d1..59ff78160 100644 --- a/start.cmd +++ b/start.cmd @@ -75,7 +75,7 @@ for /f "tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVe @rem TODO: External proxy when ORIG_PROXY_ENABLE == 0x1 echo set ws = createobject("wscript.shell") > "%temp%\proxy.vbs" echo ws.currentdirectory = "%MITMDUMP_PATH%" >> "%temp%\proxy.vbs" -echo ws.run "cmd /c mitmdump.exe -s "^&chr(34)^&"%PROXY_SCRIPT_NAME%"^&chr(34)^&" -k --allow-hosts \".*\.yuanshen\.com|.*\.mihoyo\.com|.*\.hoyoverse\.com\"",0 >> "%temp%\proxy.vbs" +echo ws.run "cmd /c mitmdump.exe -s "^&chr(34)^&"%PROXY_SCRIPT_NAME%"^&chr(34)^&" -k --allow-hosts ^&chr(34)^&.*\.yuanshen\.com|.*\.mihoyo\.com|.*\.hoyoverse\.com^&chr(34)^&",0 >> "%temp%\proxy.vbs" "%temp%\proxy.vbs" del /f /q "%temp%\proxy.vbs" >nul 2>nul @@ -157,4 +157,4 @@ call :LOG [INFO] See you again :) goto :EOF :LOG -echo [%time:~0,8%] %* \ No newline at end of file +echo [%time:~0,8%] %* From 39e590dfb85988aa7c6e3cdad72f1a90edf238bd Mon Sep 17 00:00:00 2001 From: WangYneos Date: Sat, 23 Apr 2022 14:28:14 +0800 Subject: [PATCH 09/10] Fix Syntax --- start.cmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start.cmd b/start.cmd index 59ff78160..c9dcc606f 100644 --- a/start.cmd +++ b/start.cmd @@ -75,7 +75,7 @@ for /f "tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVe @rem TODO: External proxy when ORIG_PROXY_ENABLE == 0x1 echo set ws = createobject("wscript.shell") > "%temp%\proxy.vbs" echo ws.currentdirectory = "%MITMDUMP_PATH%" >> "%temp%\proxy.vbs" -echo ws.run "cmd /c mitmdump.exe -s "^&chr(34)^&"%PROXY_SCRIPT_NAME%"^&chr(34)^&" -k --allow-hosts ^&chr(34)^&.*\.yuanshen\.com|.*\.mihoyo\.com|.*\.hoyoverse\.com^&chr(34)^&",0 >> "%temp%\proxy.vbs" +echo ws.run "cmd /c mitmdump.exe -s "^&chr(34)^&"%PROXY_SCRIPT_NAME%"^&chr(34)^&" -k --allow-hosts "^&chr(34)^&".*\.yuanshen\.com|.*\.mihoyo\.com|.*\.hoyoverse\.com"^&chr(34),0 >> "%temp%\proxy.vbs" "%temp%\proxy.vbs" del /f /q "%temp%\proxy.vbs" >nul 2>nul From 2dd8932144c8808af5c6aa288ed0a7e8d0e6e30b Mon Sep 17 00:00:00 2001 From: xtaodada Date: Sun, 24 Apr 2022 03:10:07 +0800 Subject: [PATCH 10/10] Add Teleport command --- .../command/commands/PositionCommand.java | 3 +- .../command/commands/TelePortCommand.java | 43 +++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 src/main/java/emu/grasscutter/command/commands/TelePortCommand.java diff --git a/src/main/java/emu/grasscutter/command/commands/PositionCommand.java b/src/main/java/emu/grasscutter/command/commands/PositionCommand.java index 639301c7f..8bdf3c754 100644 --- a/src/main/java/emu/grasscutter/command/commands/PositionCommand.java +++ b/src/main/java/emu/grasscutter/command/commands/PositionCommand.java @@ -17,6 +17,7 @@ public final class PositionCommand implements CommandHandler { return; } - sender.dropMessage(String.format("Coord: %.3f, %.3f, %.3f", sender.getPos().getX(), sender.getPos().getY(), sender.getPos().getZ())); + sender.dropMessage(String.format("Coord: %.3f, %.3f, %.3f\nScene id: %d", + sender.getPos().getX(), sender.getPos().getY(), sender.getPos().getZ(), sender.getSceneId())); } } diff --git a/src/main/java/emu/grasscutter/command/commands/TelePortCommand.java b/src/main/java/emu/grasscutter/command/commands/TelePortCommand.java new file mode 100644 index 000000000..1a9e4f87a --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/TelePortCommand.java @@ -0,0 +1,43 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.game.GenshinPlayer; +import emu.grasscutter.utils.Position; + +import java.util.List; + +@Command(label = "teleport", usage = "teleport ", aliases = {"tp"}, + description = "Change the player's position.", permission = "player.teleport") +public class TelePortCommand implements CommandHandler { + + @Override + public void execute(GenshinPlayer sender, List args) { + if (sender == null) { + CommandHandler.sendMessage(null, "Run this command in-game."); + return; + } + + if (args.size() < 3){ + CommandHandler.sendMessage(sender, "Usage: /tp [scene id]"); + return; + } + + try { + float x = Float.parseFloat(args.get(0)); + float y = Float.parseFloat(args.get(1)); + float z = Float.parseFloat(args.get(2)); + int sceneId = sender.getSceneId(); + if (args.size() == 4){ + sceneId = Integer.parseInt(args.get(3)); + } + Position target = new Position(x, y, z); + boolean result = sender.getWorld().transferPlayerToScene(sender, sceneId, target); + if (!result) { + CommandHandler.sendMessage(sender, "Invalid position."); + } + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid position."); + } + } +}