diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 000000000..8457bf7ac --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,24 @@ +name: "Build" +on: + push: + branches: + - "stable" +jobs: + Build-Server-Jar: + runs-on: windows-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Setup Java + uses: actions/setup-java@v3 + with: + distribution: temurin + java-version: '8' + - name: Run Gradle + run: .\gradlew.bat && .\gradlew jar + - name: Upload build + uses: actions/upload-artifact@v3 + with: + name: Grasscutter + path: grasscutter.jar + diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..fbab9b375 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "Grasscutter-Protos"] + path = Grasscutter-Protos + url = https://github.com/Melledy/Grasscutter-Protos diff --git a/Grasscutter-Protos b/Grasscutter-Protos new file mode 160000 index 000000000..0537e9cc4 --- /dev/null +++ b/Grasscutter-Protos @@ -0,0 +1 @@ +Subproject commit 0537e9cc4c7856a7c6f88bbbaa908a80c4ee677e diff --git a/README.md b/README.md index 11f694599..853c37ae3 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,20 @@ # Grasscutter -A WIP server emulator for Genshin Impact 2.3-2.6 +A WIP server reimplementation for *some anime game* 2.3-2.6 +**Documentation**: [Grasscutter Wiki](https://github.com/Melledy/Grasscutter/wiki/) **Note**: For support please join the [Discord server](https://discord.gg/T5vZU6UyeG). - # Current features * Logging in -* Spawning monsters via console * Combat +* Spawning monsters via console * Inventory features (recieving items/characters, upgrading items/characters, etc) -* Co-op does work, but movement is kind of buggy and some player ults do not spawn properly -* Friends list * Gacha system - +* Friends list +* Co-op *partially* work # Quick setup guide -* For more information, we now have [Grasscutter Wiki](https://github.com/Melledy/Grasscutter/wiki/) page ! +### Note +* If you update from an older version, delete `config.json` for regeneration + ### Prerequisites * JDK-8u202 ([mirror link](https://mirrors.huaweicloud.com/java/jdk/8u202-b08/) since Oracle required an account to download old builds) * Mongodb (recommended 4.0+) @@ -22,13 +23,13 @@ A WIP server emulator for Genshin Impact 2.3-2.6 ### Starting up Grasscutter server (Assuming you are on Windows) 1. Setup compile environment `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 where to get those.)* -4. Run Grasscutter with `java -jar grasscutter.jar`. Make sure mongodb is running as well. +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.)* +4. Run Grasscutter with `java -jar grasscutter.jar`. Make sure mongodb service is running as well. ### Connecting with the client -½. Create an account using command below +½. Create an account using *server console command* below 1. Run a proxy daemon: (choose either one) - - mitmdump: `mitmdump -s proxy.py --ssl-insecure` + - mitmdump: `mitmdump -s proxy.py -k` - 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: @@ -39,35 +40,40 @@ A WIP server emulator for Genshin Impact 2.3-2.6 * or you can use `run.cmd` to start Server & Proxy daemon with one click # Grasscutter commands -### Server console 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. `account create [username] {playerid}` - Creates an account with the specified username and the in-game uid for that account. The playerid parameter is optional and will be auto generated if not set. -### In-Game 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. +`spawn [monster id] [level] [amount]` -`!spawn [monster id] [level] [amount]` +`give [item id] [amount]` -`!give [item id] [amount]` +`givechar [avatar id] [level]` -`!givechar [avatar id] [level]` +`drop [item id] [amount]` -`!drop [item id] [amount]` +`killall` -`!killall` +`setworldlevel [level]` - Relog to see effects properly -`!setworldlevel [level]` - Relog to see effects properly +`godmode` - Prevents you from taking damage -`!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 current active character, will need to relog after using the command to see any changes. +`setstats [stats] [amount]` - Changes the current character's specified stat. -`!sethp [hp]` +`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 yellow rarity ones** from your inventory +`pos` - Gets your current coordinate. + +`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. # Quick Troubleshooting -* If compiling wasnt 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 +* 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 * Startup sequence: Mongodb > Grasscutter > Proxy daemon (mitmdump, fiddler, etc.) > Client -* If `4206` error constantly prompt up, try to use [jdk-8u202-b08](https://mirrors.huaweicloud.com/java/jdk/8u202-b08/) instead of other versions of JDK diff --git a/build.gradle b/build.gradle index c7c9eae79..97477456a 100644 --- a/build.gradle +++ b/build.gradle @@ -23,19 +23,21 @@ repositories { } dependencies { - compile fileTree(dir: 'lib', include: '*.jar') + implementation fileTree(dir: 'lib', include: ['*.jar']) - compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.32' - compile group: 'ch.qos.logback', name: 'logback-core', version: '1.2.6' - compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.6' - compile group: 'io.netty', name: 'netty-all', version: '4.1.69.Final' + implementation group: 'org.slf4j', name: 'slf4j-api', version: '1.7.32' + implementation group: 'ch.qos.logback', name: 'logback-core', version: '1.2.6' + implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.6' + implementation group: 'io.netty', name: 'netty-all', version: '4.1.69.Final' - compile group: 'com.google.code.gson', name: 'gson', version: '2.8.8' - compile group: 'com.google.protobuf', name: 'protobuf-java', version: '3.18.1' + implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.8' + implementation group: 'com.google.protobuf', name: 'protobuf-java', version: '3.18.1' - compile group: 'org.reflections', name: 'reflections', version: '0.9.12' + implementation group: 'org.reflections', name: 'reflections', version: '0.9.12' - compile group: 'dev.morphia.morphia', name: 'core', version: '1.6.1' + implementation group: 'dev.morphia.morphia', name: 'core', version: '1.6.1' + + implementation group: 'org.greenrobot', name: 'eventbus-java', version: '3.3.1' } application { @@ -51,9 +53,11 @@ jar { jar.baseName = 'grasscutter' from { - configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } + configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } + duplicatesStrategy = DuplicatesStrategy.INCLUDE + from('src/main/java') { include '*.xml' } diff --git a/data/Banners.json b/data/Banners.json index 163319f5e..a4f724ac9 100644 --- a/data/Banners.json +++ b/data/Banners.json @@ -17,39 +17,24 @@ "gachaType": 301, "scheduleId": 903, "bannerType": "EVENT", - "prefabPath": "GachaShowPanel_A076", - "previewPrefabPath": "UI_Tab_GachaShowPanel_A076", - "titlePath": "UI_GACHA_SHOW_PANEL_A076_TITLE", + "prefabPath": "GachaShowPanel_A079", + "previewPrefabPath": "UI_Tab_GachaShowPanel_A079", + "titlePath": "UI_GACHA_SHOW_PANEL_A048_TITLE", "costItem": 223, "beginTime": 0, "endTime": 1924992000, "sortId": 9998, "maxItemType": 1, - "rateUpItems1": [1066], - "rateUpItems2": [1023, 1043, 1064] - }, - { - "gachaType": 400, - "scheduleId": 913, - "bannerType": "EVENT", - "prefabPath": "GachaShowPanel_A077", - "previewPrefabPath": "UI_Tab_GachaShowPanel_A077", - "titlePath": "UI_Tab_GachaShowPanel_A077", - "costItem": 223, - "beginTime": 0, - "endTime": 1924992000, - "sortId": 9998, - "maxItemType": 1, - "rateUpItems1": [1022], - "rateUpItems2": [1023, 1043, 1064] + "rateUpItems1": [1002], + "rateUpItems2": [1053, 1020, 1045] }, { "gachaType": 302, - "scheduleId": 923, + "scheduleId": 913, "bannerType": "WEAPON", - "prefabPath": "GachaShowPanel_A078", - "previewPrefabPath": "UI_Tab_GachaShowPanel_A078", - "titlePath": "UI_GACHA_SHOW_PANEL_A078_TITLE", + "prefabPath": "GachaShowPanel_A080", + "previewPrefabPath": "UI_Tab_GachaShowPanel_A080", + "titlePath": "UI_GACHA_SHOW_PANEL_A021_TITLE", "costItem": 223, "beginTime": 0, "endTime": 1924992000, @@ -58,7 +43,7 @@ "eventChance": 75, "softPity": 80, "hardPity": 80, - "rateUpItems1": [11510, 15503], - "rateUpItems2": [11402, 12403, 13401, 14402, 15405] + "rateUpItems1": [11509, 12504], + "rateUpItems2": [11401, 12402, 13407, 14401, 15401] } -] \ No newline at end of file +] diff --git a/data/query_cur_region.txt b/data/query_cur_region.txt index 427c13f45..ddef1aff6 100644 --- a/data/query_cur_region.txt +++ b/data/query_cur_region.txt @@ -1 +1 @@ -GpgdCgw0Ny44OS4xNTIuNDcQ1awBGitodHRwczovL29zdXNhb2FzZXJ2ZXIueXVhbnNoZW4uY29tL3JlY2hhcmdlOgNVU0FCOWh0dHBzOi8vYXV0b3BhdGNoaGsueXVhbnNoZW4uY29tL2NsaWVudF9nYW1lX3Jlcy8yLjZfbGl2ZUo8aHR0cHM6Ly9hdXRvcGF0Y2hoay55dWFuc2hlbi5jb20vY2xpZW50X2Rlc2lnbl9kYXRhLzIuNl9saXZlUpIBaHR0cHM6Ly93ZWJzdGF0aWMtc2VhLmhveW92ZXJzZS5jb20veXMvZXZlbnQvaW0tc2VydmljZS9pbmRleC5odG1sP2ltX291dD1mYWxzZSZzaWduX3R5cGU9MiZhdXRoX2FwcGlkPWltX2NjcyZhdXRoa2V5X3Zlcj0xJndpbl9kaXJlY3Rpb249cG9ydHJhaXRiCDIuNl9saXZlcNnsmgOQAdnsmgOaAVx7InJlbW90ZU5hbWUiOiAiZGF0YV92ZXJzaW9ucyIsICJtZDUiOiAiMWE0NDVhZTQ4ZmJkYmUwMzgzMTJiZTg2OGYyODEzZDIiLCAiZmlsZVNpemUiOiA0NDE1faIBW3sicmVtb3RlTmFtZSI6ICJkYXRhX3ZlcnNpb25zIiwgIm1kNSI6ICIxNzU0MmM3YmJhYzQ5YjkxMWRlMjlhOTYyNzU0YmQ2MSIsICJmaWxlU2l6ZSI6IDUxNH2yAYEGCL23mQMa4AV7InJlbW90ZU5hbWUiOiAicmVzX3ZlcnNpb25zX2V4dGVybmFsIiwgIm1kNSI6ICI5ZjA5MmNhMTMwNjdjYWU0MzEzNDkzZWVkM2QzZTlhZSIsICJmaWxlU2l6ZSI6IDUyNjk2Nn0NCnsicmVtb3RlTmFtZSI6ICJyZXNfdmVyc2lvbnNfbWVkaXVtIiwgIm1kNSI6ICI3Yzk0MmU3MDRhODA0YzIxMjJmYzYzZWU5MjhlNzE0OCIsICJmaWxlU2l6ZSI6IDI4NTU1MH0NCnsicmVtb3RlTmFtZSI6ICJyZXNfdmVyc2lvbnNfc3RyZWFtaW5nIiwgIm1kNSI6ICJlMzVmNmQ4NTNkMDRjZTAyMmFjN2MzNmQ0M2Y0MGU3YyIsICJmaWxlU2l6ZSI6IDEyMjAzNn0NCnsicmVtb3RlTmFtZSI6ICJyZWxlYXNlX3Jlc192ZXJzaW9uc19leHRlcm5hbCIsICJtZDUiOiAiODc2NGIwZjJlZDgxNWNkNDQzMGUwODVjNDYxYTZmNGQiLCAiZmlsZVNpemUiOiA1MjY5NjZ9DQp7InJlbW90ZU5hbWUiOiAicmVsZWFzZV9yZXNfdmVyc2lvbnNfbWVkaXVtIiwgIm1kNSI6ICIxYmJlMzc0YzE2YmZmNDU5MTU5OWMyMTk3MzQyMDM0OCIsICJmaWxlU2l6ZSI6IDI4NTU1MH0NCnsicmVtb3RlTmFtZSI6ICJyZWxlYXNlX3Jlc192ZXJzaW9uc19zdHJlYW1pbmciLCAibWQ1IjogIjcyZmE3ZmY2NmQ1MTRmY2JhMzRhZjAwN2YyYjljMmY4IiwgImZpbGVTaXplIjogMTIyMDM2fQ0KeyJyZW1vdGVOYW1lIjogImJhc2VfcmV2aXNpb24iLCAibWQ1IjogImZiZmE2ZDZlMDcwMmQxYzc5ZTA1NjRmYjI4NjdlNzM4IiwgImZpbGVTaXplIjogMTh9IgEwKgo3YTM0YTM2YTZlMggyLjZfbGl2ZboBnBBFYzJiEAAAAJGCjvgHMrTsh3MtgsH5frMACAAAw460k//m++1MxIEXUCck/33uRkbXh2qC29/AivwLhKxa+XHVSAv0dKF5drsBoAKPy4OFKI9DJhCysPt3+RKmbXVvdgaktucaz4GU7/r1wurEHHyf+edEsopDvbCea4nbJVe9+qYHXwBPLepzFNymMWVp9eSkiySwB7aXOMLuWo7utTYk1t3BV+sc7C78f/aPIfGdD/s3XcTQzzEBPYu4FBG4D6PZ8oTGGvg0mWt5q/k2qmEcF8CdzUrJ38l/TiQuNSrWG3s/ALdDwXooplsCEl92sprxZswgpfKIsoPUuVSGUAIPOHY23+Yzx/j0AaMIUbeZB6mwGqffcNtW1qSbeeJWr/2HG9jbdBlr/wnPpDFdGn4oAzsuacaCYGMO8vkU20Lpwn7I3fce3H9zfmDqmroKE5d6tiB3+e212+jgft3b24tdudYGIbFVG7a3+DQYHtSDT5BOKQgbKs4Pw4Lks8vYprrIOHwfxHALjO6YlqkMJcbYPYYUCE3aitVgMFoLztZkVYEBSx6AQOEHG/PkpuDSnmhkDxvNzX8PvmwhEGWROY5kTaDm81bmLrMbf9AYBy5g2ZKP5Vvw6nLwfVrS7gesNPT30JZPHzrZCiUHB79eoWK6hSSlQX1b7z6/qkIFV06X+pgp2lqA4mauJYUm3sx6wmgeJaxDP/I6RpU1EiRFb3TzxkTGo3Wafp2PDg0q8sjj7A+xXREjf3WgsdwPXnCDByOLTV9u4Gd+7KwRZwK/9OChKNU5xXte4VQMf3TvNjBl07AQEtyBQ2swCO7YsiWx3EIv2oqy/zl1QEnVj8BVcfATwghu9vxY2oQ2J7ejxCEtIDRKJXFg8ziB7H1NaWknzlzDOC80UqfWKFCH8fC7KB3ysuAPpN4I0i1y8dRcZdiHK3aImhSs7GXDyr5BpG35RfZk1cBqIl1L8+mWZYKxXinKzKccYXl2JZFvkr+TWDjBoVIBDQBa1RjWPHGF3OT7KWiV6zsHchzVUe7re6WU7PhzRDTB/mw+kxsmcIuuMB2cTsbk29TgScQGd1IkQnzUPUtGYoQiv0i6JbAJFc0nMLl0tMds4xAPAefL2lqfTMIMbJufiohBBMvaEnchohkmDtrGGTuLvBWYSNtlSuSmC8GOlenCUG4bXMWM+ZHwnIA/GsmNsQR1wSlaXFNGnp/Qnw/q7I3Btyayp5Cf3PGLFMdho502/NcY5puROnctNAQKf4+5zUnfnhvqUK3DAWl9Ei5CtTUJ5Vopuh0HFTk0mEjgFutDHjQlXC3F3JWVpIUn22fZHlal2l/evB9sZVJxsMcEEoOrbMmHqmYd4JIdnLMhy9uPZCUoPc+LzrYFXXprNw0XPhFkI4ZtWM95Uz4NfuFWw3d+Ijd3szFMA3WvtZ9Hs1XbdI7sHrRGRIaGn9lNyygofOZhXHQC2ojbRyUOllJQYVUvRB18IxEIHitfD+Q6pUY7FM4TsYoSkoVIjJkQcIv4dsQLyG8StWSL4b4dJZEIi8tk9BQcY52/goO/FbvjB/Rz+cZd/r6J7akGskONwtUBlqe3i+PihvIUbfTA2AwRuaTgpvLwFkOxXRj4Uj0lTExB2to89IRkJ/eADa9eawoh0xswAUxHpmsiUoxRz3UF4gEzpVq4XmmOp2baE2+Uj4rtkzvH5dyODYO39FGudvwZwf6baOlFAKxyBfaVS+W4/udYnLKqoyT7fcuxOqx8cxxLZI6KuDs3nrOe/U9yxIgpvxZSZEejyWVvvRVTzKN3QzMorVXwoPyMlthJpFbAoRt+VPOwMUOAPo3Hhy/6iP03wmUUUBUf4SSSeYoOqXzvj60founyl3ugmpvdEMS2weyTUxq7gkR7xIfAnLzYsb1eLjy0oiRbHGu1QkwhKtqMwjuDfyOcUavzczbNizQHVVORfsiZTMuzLUufVkBug9LrmYkTkUgNs0dCkKQI3RsVP90Kix+gLYmbnIRAhlJbmgzbKULA9ipT3VU3aLXV5/o097pAvpKJGHsk8ibC3yCP2vf2mPLibBHIjGM1T0+sq682kjC1vsJWXl2JVMiDQbHW/zamNixPnU7uTriojCUYLTHt3M5D5d1IxIUIzWyTY6+9zFlO3BBZUCYOaqE0B4ncMfrV9rkuKLay69dPMQLuqF5MxD8oTA1HFDPUEvpFiUhNrxm2VSl7joxjf7TwYkLgDaDKzp5Cmbj4EdCvnRuZ8S+XtzremqnQkwfcbPxkS8GyQxVex9jxrBbz2dicI1hkfvi3hu8qqFJ87/Ozeg9RWjPpLd/Ax5tE6wCh6HO8FUMKO8gKMSFqaTM4i36AN8isOVm2jbKPfWm2Cx8Fwh4VdyKPJ/33FbPTn9dC9ox1/wcDHAta6wGqk224B3QJa6s+gKT1/qb+HObz1i9yRFEcneJkpkt6kTcws1kfoPeQUAwayy9p7Fj1l30TW9oIZwDdyA9746c/bR2dZt0zQtGXsynhjom87f9T2AfvK36EoWQA4hxiZvsKn6E+V4Q229t7FgP0j1oqF7iu+hlgl6IYkmzhf/LVdQJbGslS6Tpa/TpLsFXRnCX/rWBovU01jyvM0w7f7Yyc0S6NcCULtDH2Znqd3JKYAphuWOLWLQlDJg/CRSpK1x4V+hWNuTXETafVlk5ft9do6Et9krcFyHKzATI1SaapornUYv0rgL6hN9y+IZl1CyuL/uyWy9iqLmO5tjx9gitKlCT4Hcj6QWH6Wfg+zmAVraPVjvzCAU9odHRwczovL3dlYnN0YXRpYy1zZWEuaG95b3ZlcnNlLmNvbS95cy9ldmVudC9lMjAyMDA0MTBnb19jb21tdW5pdHkvaW5kZXguaHRtbCMv0gEKYWRmZWI4YmU3MdoBCmFkZmViOGJlNzH6AR1odHRwczovL2FjY291bnQuaG95b3ZlcnNlLmNvbYICcWh0dHBzOi8vaGs0ZS1hcGktb3MuaG95b3ZlcnNlLmNvbS9jb21tb24vYXBpY2RrZXkvYXBpL2V4Y2hhbmdlQ2RrZXk/c2lnbl90eXBlPTImYXV0aF9hcHBpZD1hcGljZGtleSZhdXRoa2V5X3Zlcj0xigJMaHR0cHM6Ly9hY2NvdW50LmhveW92ZXJzZS5jb20vIy9hYm91dC9wcml2YWN5SW5HYW1lP2FwcF9pZD00JmJpej1oazRlX2dsb2JhbFqcEEVjMmIQAAAAkYKO+AcytOyHcy2Cwfl+swAIAADDjrST/+b77UzEgRdQJyT/fe5GRteHaoLb38CK/AuErFr5cdVIC/R0oXl2uwGgAo/Lg4Uoj0MmELKw+3f5EqZtdW92BqS25xrPgZTv+vXC6sQcfJ/550SyikO9sJ5ridslV736pgdfAE8t6nMU3KYxZWn15KSLJLAHtpc4wu5aju61NiTW3cFX6xzsLvx/9o8h8Z0P+zddxNDPMQE9i7gUEbgPo9nyhMYa+DSZa3mr+TaqYRwXwJ3NSsnfyX9OJC41KtYbez8At0PBeiimWwISX3aymvFmzCCl8oiyg9S5VIZQAg84djbf5jPH+PQBowhRt5kHqbAap99w21bWpJt54lav/Ycb2Nt0GWv/Cc+kMV0afigDOy5pxoJgYw7y+RTbQunCfsjd9x7cf3N+YOqaugoTl3q2IHf57bXb6OB+3dvbi1251gYhsVUbtrf4NBge1INPkE4pCBsqzg/DguSzy9imusg4fB/EcAuM7piWqQwlxtg9hhQITdqK1WAwWgvO1mRVgQFLHoBA4Qcb8+Sm4NKeaGQPG83Nfw++bCEQZZE5jmRNoObzVuYusxt/0BgHLmDZko/lW/DqcvB9WtLuB6w09PfQlk8fOtkKJQcHv16hYrqFJKVBfVvvPr+qQgVXTpf6mCnaWoDiZq4lhSbezHrCaB4lrEM/8jpGlTUSJEVvdPPGRMajdZp+nY8ODSryyOPsD7FdESN/daCx3A9ecIMHI4tNX27gZ37srBFnAr/04KEo1TnFe17hVAx/dO82MGXTsBAS3IFDazAI7tiyJbHcQi/airL/OXVASdWPwFVx8BPCCG72/FjahDYnt6PEIS0gNEolcWDzOIHsfU1paSfOXMM4LzRSp9YoUIfx8LsoHfKy4A+k3gjSLXLx1Fxl2IcrdoiaFKzsZcPKvkGkbflF9mTVwGoiXUvz6ZZlgrFeKcrMpxxheXYlkW+Sv5NYOMGhUgENAFrVGNY8cYXc5PspaJXrOwdyHNVR7ut7pZTs+HNENMH+bD6TGyZwi64wHZxOxuTb1OBJxAZ3UiRCfNQ9S0ZihCK/SLolsAkVzScwuXS0x2zjEA8B58vaWp9Mwgxsm5+KiEEEy9oSdyGiGSYO2sYZO4u8FZhI22VK5KYLwY6V6cJQbhtcxYz5kfCcgD8ayY2xBHXBKVpcU0aen9CfD+rsjcG3JrKnkJ/c8YsUx2GjnTb81xjmm5E6dy00BAp/j7nNSd+eG+pQrcMBaX0SLkK1NQnlWim6HQcVOTSYSOAW60MeNCVcLcXclZWkhSfbZ9keVqXaX968H2xlUnGwxwQSg6tsyYeqZh3gkh2csyHL249kJSg9z4vOtgVdems3DRc+EWQjhm1Yz3lTPg1+4VbDd34iN3ezMUwDda+1n0ezVdt0juwetEZEhoaf2U3LKCh85mFcdALaiNtHJQ6WUlBhVS9EHXwjEQgeK18P5DqlRjsUzhOxihKShUiMmRBwi/h2xAvIbxK1ZIvhvh0lkQiLy2T0FBxjnb+Cg78Vu+MH9HP5xl3+vontqQayQ43C1QGWp7eL4+KG8hRt9MDYDBG5pOCm8vAWQ7FdGPhSPSVMTEHa2jz0hGQn94ANr15rCiHTGzABTEemayJSjFHPdQXiATOlWrheaY6nZtoTb5SPiu2TO8fl3I4Ng7f0Ua52/BnB/pto6UUArHIF9pVL5bj+51icsqqjJPt9y7E6rHxzHEtkjoq4Ozees579T3LEiCm/FlJkR6PJZW+9FVPMo3dDMyitVfCg/IyW2EmkVsChG35U87AxQ4A+jceHL/qI/TfCZRRQFR/hJJJ5ig6pfO+PrR+i6fKXe6Cam90QxLbB7JNTGruCRHvEh8CcvNixvV4uPLSiJFsca7VCTCEq2ozCO4N/I5xRq/NzNs2LNAdVU5F+yJlMy7MtS59WQG6D0uuZiRORSA2zR0KQpAjdGxU/3QqLH6AtiZuchECGUluaDNspQsD2KlPdVTdotdXn+jT3ukC+kokYeyTyJsLfII/a9/aY8uJsEciMYzVPT6yrrzaSMLW+wlZeXYlUyINBsdb/NqY2LE+dTu5OuKiMJRgtMe3czkPl3UjEhQjNbJNjr73MWU7cEFlQJg5qoTQHidwx+tX2uS4otrLr108xAu6oXkzEPyhMDUcUM9QS+kWJSE2vGbZVKXuOjGN/tPBiQuANoMrOnkKZuPgR0K+dG5nxL5e3Ot6aqdCTB9xs/GRLwbJDFV7H2PGsFvPZ2JwjWGR++LeG7yqoUnzv87N6D1FaM+kt38DHm0TrAKHoc7wVQwo7yAoxIWppMziLfoA3yKw5WbaNso99abYLHwXCHhV3Io8n/fcVs9Of10L2jHX/BwMcC1rrAaqTbbgHdAlrqz6ApPX+pv4c5vPWL3JEURyd4mSmS3qRNzCzWR+g95BQDBrLL2nsWPWXfRNb2ghnAN3ID3vjpz9tHZ1m3TNC0ZezKeGOibzt/1PYB+8rfoShZADiHGJm+wqfoT5XhDbb23sWA/SPWioXuK76GWCXohiSbOF/8tV1AlsayVLpOlr9OkuwVdGcJf+tYGi9TTWPK8zTDt/tjJzRLo1wJQu0MfZmep3ckpgCmG5Y4tYtCUMmD8JFKkrXHhX6FY25NcRNp9WWTl+312joS32StwXIcrMBMjVJpqmiudRi/SuAvqE33L4hmXULK4v+7JbL2KouY7m2PH2CK0qUJPgdyPpBYfpZ+D7OYBWto9WO/GLVArJ6MMs9QA4I3dIIwrylWFU1xRNtPj3ZUiooCQGiArlYzrMmLb09eDW0QedOr3CPLOlcmZroIV9XmnD9YYJSBxv5L8mbNaGWcZkxZM04GrPcOeDTN2pXq/DdB2cHRC0nT6YaQhvAnvVDFhnoBHnJS9B/aGcgHo3mVzWBi2jeeXNyLZaHhkADBRCPGmTwonHJPIig0hnMvCbLB7b5qHpN8uaQBDW4T6cqIZljsbbXUY1maAcu5vmLK8Tq7Vmu74TTQzghjgxVHB6vIS8vhqWKOKyGSrDGLDnGlcHFRlH/Omz49L2EBfYyDPKUBsi+VMP+cvIrky3XqoBUtTuQwXmcCF3LxPyf8SCVwFZSgDHMND7owHO90vRS60lwsO9QkfojEmbs0MTvFrB/FM1CeHxQeSBA74JVmDRNL4efGIopyTt6SltAxc0flyQzHwW4D8oWg6Tm/Na6 \ No newline at end of file +GpgdCgo4LjIwOS42Ni4xENWsARosaHR0cHM6Ly9vc2V1cm9vYXNlcnZlci55dWFuc2hlbi5jb20vcmVjaGFyZ2U6BGV1cm9COWh0dHBzOi8vYXV0b3BhdGNoaGsueXVhbnNoZW4uY29tL2NsaWVudF9nYW1lX3Jlcy8yLjZfbGl2ZUo8aHR0cHM6Ly9hdXRvcGF0Y2hoay55dWFuc2hlbi5jb20vY2xpZW50X2Rlc2lnbl9kYXRhLzIuNl9saXZlUpIBaHR0cHM6Ly93ZWJzdGF0aWMtc2VhLmhveW92ZXJzZS5jb20veXMvZXZlbnQvaW0tc2VydmljZS9pbmRleC5odG1sP2ltX291dD1mYWxzZSZzaWduX3R5cGU9MiZhdXRoX2FwcGlkPWltX2NjcyZhdXRoa2V5X3Zlcj0xJndpbl9kaXJlY3Rpb249cG9ydHJhaXRiCDIuNl9saXZlcNnsmgOQAdnsmgOaAVx7InJlbW90ZU5hbWUiOiAiZGF0YV92ZXJzaW9ucyIsICJtZDUiOiAiMWE0NDVhZTQ4ZmJkYmUwMzgzMTJiZTg2OGYyODEzZDIiLCAiZmlsZVNpemUiOiA0NDE1faIBW3sicmVtb3RlTmFtZSI6ICJkYXRhX3ZlcnNpb25zIiwgIm1kNSI6ICIxNzU0MmM3YmJhYzQ5YjkxMWRlMjlhOTYyNzU0YmQ2MSIsICJmaWxlU2l6ZSI6IDUxNH2yAYEGCL23mQMa4AV7InJlbW90ZU5hbWUiOiAicmVzX3ZlcnNpb25zX2V4dGVybmFsIiwgIm1kNSI6ICI5ZjA5MmNhMTMwNjdjYWU0MzEzNDkzZWVkM2QzZTlhZSIsICJmaWxlU2l6ZSI6IDUyNjk2Nn0NCnsicmVtb3RlTmFtZSI6ICJyZXNfdmVyc2lvbnNfbWVkaXVtIiwgIm1kNSI6ICI3Yzk0MmU3MDRhODA0YzIxMjJmYzYzZWU5MjhlNzE0OCIsICJmaWxlU2l6ZSI6IDI4NTU1MH0NCnsicmVtb3RlTmFtZSI6ICJyZXNfdmVyc2lvbnNfc3RyZWFtaW5nIiwgIm1kNSI6ICJlMzVmNmQ4NTNkMDRjZTAyMmFjN2MzNmQ0M2Y0MGU3YyIsICJmaWxlU2l6ZSI6IDEyMjAzNn0NCnsicmVtb3RlTmFtZSI6ICJyZWxlYXNlX3Jlc192ZXJzaW9uc19leHRlcm5hbCIsICJtZDUiOiAiODc2NGIwZjJlZDgxNWNkNDQzMGUwODVjNDYxYTZmNGQiLCAiZmlsZVNpemUiOiA1MjY5NjZ9DQp7InJlbW90ZU5hbWUiOiAicmVsZWFzZV9yZXNfdmVyc2lvbnNfbWVkaXVtIiwgIm1kNSI6ICIxYmJlMzc0YzE2YmZmNDU5MTU5OWMyMTk3MzQyMDM0OCIsICJmaWxlU2l6ZSI6IDI4NTU1MH0NCnsicmVtb3RlTmFtZSI6ICJyZWxlYXNlX3Jlc192ZXJzaW9uc19zdHJlYW1pbmciLCAibWQ1IjogIjcyZmE3ZmY2NmQ1MTRmY2JhMzRhZjAwN2YyYjljMmY4IiwgImZpbGVTaXplIjogMTIyMDM2fQ0KeyJyZW1vdGVOYW1lIjogImJhc2VfcmV2aXNpb24iLCAibWQ1IjogImZiZmE2ZDZlMDcwMmQxYzc5ZTA1NjRmYjI4NjdlNzM4IiwgImZpbGVTaXplIjogMTh9IgEwKgo3YTM0YTM2YTZlMggyLjZfbGl2ZboBnBBFYzJiEAAAAJNvNOvzlkCCDSqpQ6a141IACAAA6gq2poqqrhWr1LS/wULjaiSPJIGsouCxUfY40ezmGoMU5SZZLwQ97KrlkCLKvTVycxteFwEPDxFrKxiHE1oigrAAkjc0NU12JqcQBFL8ExWeR+3QfCPnh7MWo424stJoHPADl9E6R/n3YDXAtq1gUzZu5Y4aGtd9XDyVjozcbIrtVVTGVpvRIuwGYoOCRCwDeRKphu9MoJfbi9mawLh5XSq+KLsAksjM90JJ/DEUzP2XCB/QILsiSiwbET5LUrl65OXCN4sLxZg+86qmeU28cdz4tWDewXYFO+Y7AnJAt7JfpgR/8Os7A9CDPD8WA6GBdqyplmoKRtnjjZG9ZGZIk1YF7AdGUhE8672XlWW3clJaNMBpHFkON+t7Utgu6prY/uJJLFZlGm5KMSend8u8GTMYOE5/AJsVkX/5eS8V2F6Dt6mZJgPtGAlX7Rp1a1R57FMKQLS+9nIzKDMclWFs7ebbnv+lcqckuqln19/JMrYQg9E4IiDVn5akaHZbnYBw0+HDR5kfT2xWfWVo8CJu4mPSpVR1kI4HhZXTURnHa7ezObuwHQm3NS7wHK7VO0E+qgnUgb+vK9M0cHTQE6FsCi/bk0VaHZtDxpMCTfKluJiOsxhvRePOjEVyNyLwLJaoxwwSukMfSH9G+q62ygFmmErAQfKKWLreb72UegOgmhD8T8aytvWXHkWk07QCttqgPhax8BAW2OvRJluvorBUIeHDeO6QeBaZns4EXIYUcIQlfi3yGsLKhhGLb2OgN6a6B3ElxdgXRRYMGAdDoAxEnCcWmdZx874vEvf2KFUP6aU8l4lh0XV6RU/D7A+eqWN5bH4ffS4QBQq2MU6CNA5XumMsD4zUfC6od5T7Tt7uQsgbqtIMgXKpO8lRk4pRgnpPsqM1Ou8kTb1UdQSc4yREuJlrL2Tmtf35cAw7W290LIO/GaO9Rj1CPhATMn7jbUTA6+QN7rTxIzbVl66k95wQth81TYuvw1DlGOpVDTbcCB0uvfmcAAGhj57jVBlyVIu+KJzrrx8z9Uh6scsMCgrMPJn7nsCHSXD6yElTgLrF7FVwgqsxDjgcquqkrSnknP92jb+11IJbw05Ass4hcMRGJxdAefSWDIgdi7l4GnppPdUvLkG5uvBlO85AiT2NpqNmShebfst8rQLFc1B7hAcvh9EpM9Sii0/XXfe9tEf7AwKj2SWmS79PsjEiAiv18tJ6gDlaJ0WFSchXNBRPu8ESvKlE8q7myuc2t5nnxv/hctkez5+nh9SgQ3beL34chSL4RPTH32Jqzs5p7s2n87Bv4vfQccYFAF+kKMUZzKnWKl0LCrStSd3+s+4KF/tZXEKue5KoVobNhaQrD33HjWf9Rvw0ULd4ho4A6wj/uga9o7rZ2C2v1YEDNNqZ5/v/udN3hl7tXrWv5UXcUyTtooa66sJ8oITE8+4aDWimtX6dy0CdFQj2mHppbbvRF66flDd/gFA35xQOXfYdOud3NJogglHXofOoB0LEdbao9C6Nt2v+z7C4S0l3cAMXp/yiI9qxJT9b0mQ2zp2GN5i4gvrp+6iKjqxf+IA++oB/JzbbpSVOFJmFSysv4v3Al2AVbmFycYqv0GaoiZ22wiu8Ok3+LCyKJTITtaJLAtgbpwRfa9SUkdpRwMK1vMN1s6jZU9gdejY3oLVKjFpg66c9bagpmvIG1/gfgY9yT++Y8img4aB/JDJMAS2MVGxGlyrRFGaXBWLq3SkhqDqGD5klbvYv2IFMr4BAHP2uwLb92qEhtlksiVQYk8HGxLWlU2Fo+Pxee8L1xvQOgPdY4/cb33BuJXvtyW5ea5EmVtBPo4MU1ws9BvAzLs13Nisl+/FBvBn8ktkZmE5e6nsdpGEtq4/d7MfCLXGRI5L730mIieeAvtQcb0NMWGcubHPgjY58Pv4MSdRpOQakzM2rA5UD5O57rGH5q6p3HZfZk2iPUcJRsebMKJ4l1omr5JeD95DKDKy7Cts3RajufslekL3/wHwUZbAdEWyux2w1zbiukmhTfh0nbenm8Q8KOASCDo0SWO3e9FpOz5o+phHBVYgmfxRt11OonnLt1qKB7j/a7YdufvkFSsFm4UdgsJMPIHzeBjbSSDlLeCdmdKGQtFLC73npe6efYGUupMIV9EYup1D/OoCNlz2r/FhJ7aLRtj6Q6cb161MLp+rmjbSzN+RVFwf7wAVpLQMrHwTvUzB/8M7cTjN5VFE583uhy4KKf+W3iTxzdyX2SAD9QVu6EXv4KaEFBy8Vo0sga907Fi7imkwgjY2cdnEtPMMeO2Jqj3yWPdqrlVtfAn1jd14oix7YObsJ8mVBeueiplG9d7dxcA1GV+7xX9wOyPDcfH5FBAIlglBIEhjSyNQErH+JYRbOUotXMBQa1tlRRtBSLLDCRgEpG8F+Dv5Oao9ZBnKAi0GRjPKo+OjsehWzrNXGDcoTQsGD/bmKpCdaUOuEa6rLA7tbYwqT2SPdCJzBx2J+kI1bwDWhFF9ROrh9MvmwvMBE9dH5mbQj78p2P5gar2BUcNNbSVvSgxtCa1NHsf/GwrPmTQLPxCrEBcDucxIpsqfINp48iCJGZ4NvlRIZolmaVBWlxjVl/XYcb2YOl3K48e+LsfblTU6tyneZimrS+Y0qt7lncte6NZGPnf98wNLxY39IX8gATezGXoZ03TOhy1jX3epf4Bfw5ZyvU8/XJ2BvbPpw+b8LgS0y0DkeQG4mQGlHidnCAU9odHRwczovL3dlYnN0YXRpYy1zZWEuaG95b3ZlcnNlLmNvbS95cy9ldmVudC9lMjAyMDA0MTBnb19jb21tdW5pdHkvaW5kZXguaHRtbCMv0gEKYWRmZWI4YmU3MdoBCmFkZmViOGJlNzH6AR1odHRwczovL2FjY291bnQuaG95b3ZlcnNlLmNvbYICcWh0dHBzOi8vaGs0ZS1hcGktb3MuaG95b3ZlcnNlLmNvbS9jb21tb24vYXBpY2RrZXkvYXBpL2V4Y2hhbmdlQ2RrZXk/c2lnbl90eXBlPTImYXV0aF9hcHBpZD1hcGljZGtleSZhdXRoa2V5X3Zlcj0xigJMaHR0cHM6Ly9hY2NvdW50LmhveW92ZXJzZS5jb20vIy9hYm91dC9wcml2YWN5SW5HYW1lP2FwcF9pZD00JmJpej1oazRlX2dsb2JhbFqcEEVjMmIQAAAAk2806/OWQIINKqlDprXjUgAIAADqCramiqquFavUtL/BQuNqJI8kgayi4LFR9jjR7OYagxTlJlkvBD3squWQIsq9NXJzG14XAQ8PEWsrGIcTWiKCsACSNzQ1TXYmpxAEUvwTFZ5H7dB8I+eHsxajjbiy0mgc8AOX0TpH+fdgNcC2rWBTNm7ljhoa131cPJWOjNxsiu1VVMZWm9Ei7AZig4JELAN5EqmG70ygl9uL2ZrAuHldKr4ouwCSyMz3Qkn8MRTM/ZcIH9AguyJKLBsRPktSuXrk5cI3iwvFmD7zqqZ5Tbxx3Pi1YN7BdgU75jsCckC3sl+mBH/w6zsD0IM8PxYDoYF2rKmWagpG2eONkb1kZkiTVgXsB0ZSETzrvZeVZbdyUlo0wGkcWQ4363tS2C7qmtj+4kksVmUabkoxJ6d3y7wZMxg4Tn8AmxWRf/l5LxXYXoO3qZkmA+0YCVftGnVrVHnsUwpAtL72cjMoMxyVYWzt5tue/6VypyS6qWfX38kythCD0TgiINWflqRodludgHDT4cNHmR9PbFZ9ZWjwIm7iY9KlVHWQjgeFldNRGcdrt7M5u7AdCbc1LvAcrtU7QT6qCdSBv68r0zRwdNAToWwKL9uTRVodm0PGkwJN8qW4mI6zGG9F486MRXI3IvAslqjHDBK6Qx9If0b6rrbKAWaYSsBB8opYut5vvZR6A6CaEPxPxrK29ZceRaTTtAK22qA+FrHwEBbY69EmW6+isFQh4cN47pB4FpmezgRchhRwhCV+LfIawsqGEYtvY6A3proHcSXF2BdFFgwYB0OgDEScJxaZ1nHzvi8S9/YoVQ/ppTyXiWHRdXpFT8PsD56pY3lsfh99LhAFCrYxToI0Dle6YywPjNR8Lqh3lPtO3u5CyBuq0gyBcqk7yVGTilGCek+yozU67yRNvVR1BJzjJES4mWsvZOa1/flwDDtbb3Qsg78Zo71GPUI+EBMyfuNtRMDr5A3utPEjNtWXrqT3nBC2HzVNi6/DUOUY6lUNNtwIHS69+ZwAAaGPnuNUGXJUi74onOuvHzP1SHqxywwKCsw8mfuewIdJcPrISVOAusXsVXCCqzEOOByq6qStKeSc/3aNv7XUglvDTkCyziFwxEYnF0B59JYMiB2LuXgaemk91S8uQbm68GU7zkCJPY2mo2ZKF5t+y3ytAsVzUHuEBy+H0Skz1KKLT9dd9720R/sDAqPZJaZLv0+yMSICK/Xy0nqAOVonRYVJyFc0FE+7wRK8qUTyrubK5za3mefG/+Fy2R7Pn6eH1KBDdt4vfhyFIvhE9MffYmrOzmnuzafzsG/i99BxxgUAX6QoxRnMqdYqXQsKtK1J3f6z7goX+1lcQq57kqhWhs2FpCsPfceNZ/1G/DRQt3iGjgDrCP+6Br2jutnYLa/VgQM02pnn+/+503eGXu1eta/lRdxTJO2ihrrqwnyghMTz7hoNaKa1fp3LQJ0VCPaYemltu9EXrp+UN3+AUDfnFA5d9h0653c0miCCUdeh86gHQsR1tqj0Lo23a/7PsLhLSXdwAxen/KIj2rElP1vSZDbOnYY3mLiC+un7qIqOrF/4gD76gH8nNtulJU4UmYVLKy/i/cCXYBVuYXJxiq/QZqiJnbbCK7w6Tf4sLIolMhO1oksC2BunBF9r1JSR2lHAwrW8w3WzqNlT2B16NjegtUqMWmDrpz1tqCma8gbX+B+Bj3JP75jyKaDhoH8kMkwBLYxUbEaXKtEUZpcFYurdKSGoOoYPmSVu9i/YgUyvgEAc/a7Atv3aoSG2WSyJVBiTwcbEtaVTYWj4/F57wvXG9A6A91jj9xvfcG4le+3Jbl5rkSZW0E+jgxTXCz0G8DMuzXc2KyX78UG8GfyS2RmYTl7qex2kYS2rj93sx8ItcZEjkvvfSYiJ54C+1BxvQ0xYZy5sc+CNjnw+/gxJ1Gk5BqTMzasDlQPk7nusYfmrqncdl9mTaI9RwlGx5swoniXWiavkl4P3kMoMrLsK2zdFqO5+yV6Qvf/AfBRlsB0RbK7HbDXNuK6SaFN+HSdt6ebxDwo4BIIOjRJY7d70Wk7Pmj6mEcFViCZ/FG3XU6iecu3WooHuP9rth25++QVKwWbhR2Cwkw8gfN4GNtJIOUt4J2Z0oZC0UsLveel7p59gZS6kwhX0Ri6nUP86gI2XPav8WEntotG2PpDpxvXrUwun6uaNtLM35FUXB/vABWktAysfBO9TMH/wztxOM3lUUTnze6HLgop/5beJPHN3JfZIAP1BW7oRe/gpoQUHLxWjSyBr3TsWLuKaTCCNjZx2cS08wx47YmqPfJY92quVW18CfWN3XiiLHtg5uwnyZUF656KmUb13t3FwDUZX7vFf3A7I8Nx8fkUEAiWCUEgSGNLI1ASsf4lhFs5Si1cwFBrW2VFG0FIssMJGASkbwX4O/k5qj1kGcoCLQZGM8qj46Ox6FbOs1cYNyhNCwYP9uYqkJ1pQ64RrqssDu1tjCpPZI90InMHHYn6QjVvANaEUX1E6uH0y+bC8wET10fmZtCPvynY/mBqvYFRw01tJW9KDG0JrU0ex/8bCs+ZNAs/EKsQFwO5zEimyp8g2njyIIkZng2+VEhmiWZpUFaXGNWX9dhxvZg6Xcrjx74ux9uVNTq3Kd5mKatL5jSq3uWdy17o1kY+d/3zA0vFjf0hfyABN7MZehnTdM6HLWNfd6l/gF/DlnK9Tz9cnYG9s+nD5vwuBLTLQOR5AbiZAaUeJ2WLVAtaPymwUgxn8nMUMGk2pDMbkJNLgHPcao2F2HLBdC2W3r1Qs5PtDbMuMCIPSYscVx1x66qcJw19SiQyNLxCY9ErLGDY4mChY/X5NX7Pc2ricYE7EzCSZMYQmtUVZoqn1RPGz1P9Gj65Edm70zFOfRWfR+sTboONM7W3oNk1mkI2M5GwQrQpkAiyb5zwdxpsOwtQ0s0Sin4IOonpW9KcRv8yB8rMOMu6+C6m4h2MwRPj6QrVPWd8PV22qB4iAwfV3UYpjo91Mw/V5xT1DRSrb65vYtu8E4lR3HMv37at4aV6v8RluqeAIHHDJBANaUN3eLCSHewfEb+osQ5BV7XQT5Dwdy/LLFo+hdCBp0Retgtiwsq3+EgRs9i/d9tmghRqEdD/6re752aRiyTsf7CkWY6O7cCGfvmOLE0XhNQra+tLnlJCR1y4m1LOTB3ulQnZrA2E7Mmk7 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f04d6a20a..aa991fcea 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/proto/AbilityAppliedAbility.proto b/proto/AbilityAppliedAbility.proto deleted file mode 100644 index f9fd845da..000000000 --- a/proto/AbilityAppliedAbility.proto +++ /dev/null @@ -1,13 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AbilityScalarValueEntry.proto"; -import "AbilityString.proto"; - -message AbilityAppliedAbility { - AbilityString abilityName = 1; - AbilityString abilityOverride = 2; - repeated AbilityScalarValueEntry overrideMap = 3; - uint32 instancedAbilityId = 4; -} diff --git a/proto/AbilityAppliedModifier.proto b/proto/AbilityAppliedModifier.proto deleted file mode 100644 index 857fd8cf2..000000000 --- a/proto/AbilityAppliedModifier.proto +++ /dev/null @@ -1,23 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AbilityAttachedModifier.proto"; -import "AbilityString.proto"; -import "ModifierDurability.proto"; - -message AbilityAppliedModifier { - int32 modifierLocalId = 1; - uint32 parentAbilityEntityId = 2; - AbilityString parentAbilityName = 3; - AbilityString parentAbilityOverride = 4; - uint32 instancedAbilityId = 5; - uint32 instancedModifierId = 6; - float existDuration = 7; - AbilityAttachedModifier attachedInstancedModifier = 8; - uint32 applyEntityId = 9; - bool isAttachedParentAbility = 10; - ModifierDurability modifierDurability = 11; - uint32 sbuffUid = 12; - bool isServerbuffModifier = 13; -} diff --git a/proto/AbilityAttachedModifier.proto b/proto/AbilityAttachedModifier.proto deleted file mode 100644 index c99cb84f5..000000000 --- a/proto/AbilityAttachedModifier.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AbilityAttachedModifier { - bool isInvalid = 1; - uint32 ownerEntityId = 2; - uint32 instancedModifierId = 3; - bool isServerbuffModifier = 4; - int32 attachNameHash = 5; -} diff --git a/proto/AbilityChangeNotify.proto b/proto/AbilityChangeNotify.proto deleted file mode 100644 index 4a3a63e22..000000000 --- a/proto/AbilityChangeNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AbilityControlBlock.proto"; - -message AbilityChangeNotify { - uint32 entityId = 1; - AbilityControlBlock abilityControlBlock = 2; -} diff --git a/proto/AbilityControlBlock.proto b/proto/AbilityControlBlock.proto deleted file mode 100644 index d47c3c9d8..000000000 --- a/proto/AbilityControlBlock.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AbilityEmbryo.proto"; - -message AbilityControlBlock { - repeated AbilityEmbryo abilityEmbryoList = 1; -} diff --git a/proto/AbilityEmbryo.proto b/proto/AbilityEmbryo.proto deleted file mode 100644 index edbb26b44..000000000 --- a/proto/AbilityEmbryo.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AbilityEmbryo { - uint32 abilityId = 1; - fixed32 abilityNameHash = 2; - fixed32 abilityOverrideNameHash = 3; -} diff --git a/proto/AbilityIdentifier.proto b/proto/AbilityIdentifier.proto deleted file mode 100644 index f1ddecd09..000000000 --- a/proto/AbilityIdentifier.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AbilityIdentifier { - uint32 instancedAbilityId = 1; - uint32 abilityCasterId = 2; - int32 localId = 3; - uint32 instancedModifierId = 4; - uint32 modifierOwnerId = 5; - bool isServerbuffModifier = 6; -} diff --git a/proto/AbilityInvocationsNotify.proto b/proto/AbilityInvocationsNotify.proto deleted file mode 100644 index a38535403..000000000 --- a/proto/AbilityInvocationsNotify.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AbilityInvokeEntry.proto"; - -message AbilityInvocationsNotify { - repeated AbilityInvokeEntry invokes = 1; -} diff --git a/proto/AbilityInvokeArgument.proto b/proto/AbilityInvokeArgument.proto deleted file mode 100644 index a5698323a..000000000 --- a/proto/AbilityInvokeArgument.proto +++ /dev/null @@ -1,48 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum AbilityInvokeArgument { - AbilityNone = 0; - AbilityMetaModifierChange = 1; - AbilityMetaCommandModifierChangeRequest = 2; - AbilityMetaSpecialFloatArgument = 3; - AbilityMetaOverrideParam = 4; - AbilityMetaClearOverrideParam = 5; - AbilityMetaReinitOverridemap = 6; - AbilityMetaGlobalFloatValue = 7; - AbilityMetaClearGlobalFloatValue = 8; - AbilityMetaAbilityElementStrength = 9; - AbilityMetaAddOrGetAbilityAndTrigger = 10; - AbilityMetaSetKilledSetate = 11; - AbilityMetaSetAbilityTrigger = 12; - AbilityMetaAddNewAbility = 13; - AbilityMetaRemoveAbility = 14; - AbilityMetaSetModifierApplyEntity = 15; - AbilityMetaModifierDurabilityChange = 16; - AbilityMetaElementReactionVisual = 17; - AbilityMetaSetPoseParameter = 18; - AbilityMetaUpdateBaseReactionDamage = 19; - AbilityActionTriggerAbility = 50; - AbilityActionSetCrashDamage = 51; - AbilityActionEffect = 52; - AbilityActionSummon = 53; - AbilityActionBlink = 54; - AbilityActionCreateGadget = 55; - AbilityActionApplyLevelModifier = 56; - AbilityActionGenerateElemBall = 57; - AbilityActionSetRandomOverrideMapValue = 58; - AbilityActionServerMonsterLog = 59; - AbilityMixinAvatarSteerByCamera = 100; - AbilityMixinMonsterDefend = 101; - AbilityMixinWindZone = 102; - AbilityMixinCostStamina = 103; - AbilityMixinEliteShield = 104; - AbilityMixinElementShield = 105; - AbilityMixinGlobalShield = 106; - AbilityMixinShieldBar = 107; - AbilityMixinWindSeedSpawner = 108; - AbilityMixinDoActionByElementReaction = 109; - AbilityMixinFieldEntityCountChange = 110; - AbilityMixinScenePropSync = 111; -} diff --git a/proto/AbilityInvokeEntry.proto b/proto/AbilityInvokeEntry.proto deleted file mode 100644 index 9a3104312..000000000 --- a/proto/AbilityInvokeEntry.proto +++ /dev/null @@ -1,17 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AbilityInvokeArgument.proto"; -import "AbilityInvokeEntryHead.proto"; -import "ForwardType.proto"; - -message AbilityInvokeEntry { - AbilityInvokeEntryHead head = 1; - AbilityInvokeArgument argumentType = 2; - bytes abilityData = 3; - uint32 entityId = 4; - ForwardType forwardType = 5; - uint32 forwardPeer = 6; - uint32 eventId = 7; -} diff --git a/proto/AbilityInvokeEntryHead.proto b/proto/AbilityInvokeEntryHead.proto deleted file mode 100644 index de7196cd1..000000000 --- a/proto/AbilityInvokeEntryHead.proto +++ /dev/null @@ -1,13 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AbilityInvokeEntryHead { - uint32 instancedAbilityId = 1; - uint32 instancedModifierId = 2; - int32 localId = 3; - int32 modifierConfigLocalId = 4; - uint32 targetId = 5; - bool isServerbuffModifier = 6; - uint32 serverBuffUid = 7; -} diff --git a/proto/AbilityMixinRecoverInfo.proto b/proto/AbilityMixinRecoverInfo.proto deleted file mode 100644 index a23f0d401..000000000 --- a/proto/AbilityMixinRecoverInfo.proto +++ /dev/null @@ -1,16 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "MassivePropSyncInfo.proto"; - -message AbilityMixinRecoverInfo { - oneof source { - uint32 instancedAbilityId = 1; - uint32 instancedModifierId = 2; - } - uint32 localId = 3; - repeated uint32 dataList = 4; - bool isServerbuffModifier = 5; - repeated MassivePropSyncInfo massivePropList = 6; -} diff --git a/proto/AbilityScalarType.proto b/proto/AbilityScalarType.proto deleted file mode 100644 index 9f5ce167f..000000000 --- a/proto/AbilityScalarType.proto +++ /dev/null @@ -1,13 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum AbilityScalarType { - Unknow = 0; - Float = 1; - Int = 2; - Bool = 3; - Trigger = 4; - String = 5; - Uint = 6; -} diff --git a/proto/AbilityScalarValueEntry.proto b/proto/AbilityScalarValueEntry.proto deleted file mode 100644 index 7455d9901..000000000 --- a/proto/AbilityScalarValueEntry.proto +++ /dev/null @@ -1,17 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AbilityScalarType.proto"; -import "AbilityString.proto"; - -message AbilityScalarValueEntry { - AbilityString key = 1; - AbilityScalarType valueType = 2; - oneof value { - float floatValue = 3; - string stringValue = 4; - int32 intValue = 5; - uint32 uintValue = 6; - } -} diff --git a/proto/AbilityString.proto b/proto/AbilityString.proto deleted file mode 100644 index 1e8254aa8..000000000 --- a/proto/AbilityString.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AbilityString { - oneof type { - string str = 1; - uint32 hash = 2; - } -} diff --git a/proto/AbilitySyncStateInfo.proto b/proto/AbilitySyncStateInfo.proto deleted file mode 100644 index ec103e22e..000000000 --- a/proto/AbilitySyncStateInfo.proto +++ /dev/null @@ -1,16 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AbilityAppliedAbility.proto"; -import "AbilityAppliedModifier.proto"; -import "AbilityMixinRecoverInfo.proto"; -import "AbilityScalarValueEntry.proto"; - -message AbilitySyncStateInfo { - bool isInited = 1; - repeated AbilityScalarValueEntry dynamicValueMap = 2; - repeated AbilityAppliedAbility appliedAbilities = 3; - repeated AbilityAppliedModifier appliedModifiers = 4; - repeated AbilityMixinRecoverInfo mixinRecoverInfos = 5; -} diff --git a/proto/ActionReasonType.proto b/proto/ActionReasonType.proto deleted file mode 100644 index 29f2639e4..000000000 --- a/proto/ActionReasonType.proto +++ /dev/null @@ -1,179 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum ActionReasonType { - ActionReasonNone = 0; - ActionReasonQuestItem = 1; - ActionReasonQuestReward = 2; - ActionReasonTrifle = 3; - ActionReasonShop = 4; - ActionReasonPlayerUpgradeReward = 5; - ActionReasonAddAvatar = 6; - ActionReasonGadgetEnvAnimal = 7; - ActionReasonMonsterEnvAnimal = 8; - ActionReasonCompound = 9; - ActionReasonCook = 10; - ActionReasonGather = 11; - ActionReasonMailAttachment = 12; - ActionReasonCityLevelupReturn = 15; - ActionReasonCityLevelupReward = 17; - ActionReasonAreaExploreReward = 18; - ActionReasonUnlockPointReward = 19; - ActionReasonDungeonFirstPass = 20; - ActionReasonDungeonPass = 21; - ActionReasonChangeElemType = 23; - ActionReasonFetterOpen = 25; - ActionReasonDailyTaskScore = 26; - ActionReasonDailyTaskHost = 27; - ActionReasonRandTaskHost = 28; - ActionReasonExpedition = 29; - ActionReasonGacha = 30; - ActionReasonCombine = 31; - ActionReasonRandTaskGuest = 32; - ActionReasonDailyTaskGuest = 33; - ActionReasonForgeOutput = 34; - ActionReasonForgeReturn = 35; - ActionReasonInitAvatar = 36; - ActionReasonMonsterDie = 37; - ActionReasonGm = 38; - ActionReasonOpenChest = 39; - ActionReasonGadgetDie = 40; - ActionReasonMonsterChangeHp = 41; - ActionReasonSubfieldDrop = 42; - ActionReasonPushTipsReward = 43; - ActionReasonActivityMonsterDrop = 44; - ActionReasonActivityGather = 45; - ActionReasonActivitySubfieldDrop = 46; - ActionReasonTowerScheduleReward = 47; - ActionReasonTowerFloorStarReward = 48; - ActionReasonTowerFirstPassReward = 49; - ActionReasonTowerDailyReward = 50; - ActionReasonHitClientTrivialEntity = 51; - ActionReasonOpenWorldBossChest = 52; - ActionReasonMaterialDeleteReturn = 53; - ActionReasonSignInReward = 54; - ActionReasonOpenBlossomChest = 55; - ActionReasonRecharge = 56; - ActionReasonBonusActivityReward = 57; - ActionReasonTowerCommemorativeReward = 58; - ActionReasonTowerSkipFloorReward = 59; - ActionReasonRechargeBonus = 60; - ActionReasonRechargeCard = 61; - ActionReasonRechargeCardDaily = 62; - ActionReasonRechargeCardReplace = 63; - ActionReasonRechargeCardReplaceFree = 64; - ActionReasonRechargePlayReplace = 65; - ActionReasonMpPlayTakeReward = 66; - ActionReasonActivityWatcher = 67; - ActionReasonSalesmanDeliverItem = 68; - ActionReasonSalesmanReward = 69; - ActionReasonRebate = 70; - ActionReasonMcoinExchangeHcoin = 71; - ActionReasonDailyTaskExchangeLegendaryKey = 72; - ActionReasonUnlockPersonLine = 73; - ActionReasonFetterLevelReward = 74; - ActionReasonBuyResin = 75; - ActionReasonRechargePackage = 76; - ActionReasonDeliveryDailyReward = 77; - ActionReasonCityReputationLevel = 78; - ActionReasonCityReputationQuest = 79; - ActionReasonCityReputationRequest = 80; - ActionReasonCityReputationExplore = 81; - ActionReasonOffergingLevel = 82; - ActionReasonRoutineHost = 83; - ActionReasonRoutineGuest = 84; - ActionReasonTreasureMapSpotToken = 89; - ActionReasonTreasureMapBonusLevelReward = 90; - ActionReasonTreasureMapMpReward = 91; - ActionReasonConvert = 92; - ActionReasonOverflowTransform = 93; - ActionReasonActivityAvatarSelectionReward = 96; - ActionReasonActivityWatcherBatch = 97; - ActionReasonHitTreeDrop = 98; - ActionReasonGetHomeLevelupReward = 99; - ActionReasonHomeDefaultFurniture = 100; - ActionReasonActivityCond = 101; - ActionReasonBattlePassNotify = 102; - ActionReasonPlayerUseItem = 1001; - ActionReasonDropItem = 1002; - ActionReasonWeaponUpgrade = 1011; - ActionReasonWeaponPromote = 1012; - ActionReasonWeaponAwaken = 1013; - ActionReasonRelicUpgrade = 1014; - ActionReasonAbility = 1015; - ActionReasonDungeonStatueDrop = 1016; - ActionReasonOfflineMsg = 1017; - ActionReasonAvatarUpgrade = 1018; - ActionReasonAvatarPromote = 1019; - ActionReasonQuestAction = 1021; - ActionReasonCityLevelup = 1022; - ActionReasonUpgradeSkill = 1024; - ActionReasonUnlockTalent = 1025; - ActionReasonUpgradeProudSkill = 1026; - ActionReasonPlayerLevelLimitUp = 1027; - ActionReasonDungeonDaily = 1028; - ActionReasonItemGiving = 1030; - ActionReasonForgeCost = 1031; - ActionReasonInvestigationReward = 1032; - ActionReasonInvestigationTargetReward = 1033; - ActionReasonGadgetInteract = 1034; - ActionReasonSeaLampCiMaterial = 1036; - ActionReasonSeaLampContributionReward = 1037; - ActionReasonSeaLampPhaseReward = 1038; - ActionReasonSeaLampFlyLamp = 1039; - ActionReasonAutoRecover = 1040; - ActionReasonActivityExpireItem = 1041; - ActionReasonSubCoinNegative = 1042; - ActionReasonBargainDeduct = 1043; - ActionReasonBattlePassPaidReward = 1044; - ActionReasonBattlePassLevelReward = 1045; - ActionReasonTrialAvatarActivityFirstPassReward = 1046; - ActionReasonBuyBattlePassLevel = 1047; - ActionReasonGrantBirthdayBenefit = 1048; - ActionReasonAchievementReward = 1049; - ActionReasonAchievementGoalReward = 1050; - ActionReasonFirstShareToSocialNetwork = 1051; - ActionReasonDestroyMaterial = 1052; - ActionReasonCodexLevelupReward = 1053; - ActionReasonHuntingOfferReward = 1054; - ActionReasonUseWidgetAnchorPoint = 1055; - ActionReasonUseWidgetBonfire = 1056; - ActionReasonUngradeWeaponReturnMaterial = 1057; - ActionReasonUseWidgetOneoffGatherPointDetector = 1058; - ActionReasonUseWidgetClientCollector = 1059; - ActionReasonUseWidgetClientDetector = 1060; - ActionReasonTakeGeneralReward = 1061; - ActionReasonAsterTakeSpecialReward = 1062; - ActionReasonRemoveCodexBook = 1063; - ActionReasonOfferingItem = 1064; - ActionReasonUseWidgetGadgetBuilder = 1065; - ActionReasonEffigyFirstPassReward = 1066; - ActionReasonEffigyReward = 1067; - ActionReasonReunionFirstGiftReward = 1068; - ActionReasonReunionSignInReward = 1069; - ActionReasonReunionWatcherReward = 1070; - ActionReasonSalesmanMpReward = 1071; - ActionReasionAvatarPromoteReward = 1072; - ActionReasonBlessingRedeemReward = 1073; - ActionMiracleRingReward = 1074; - ActionReasonExpeditionReward = 1075; - ActionReasonTreasureMapRemoveDetector = 1076; - ActionReasonMechanicusDungeonTicket = 1077; - ActionReasonMechanicusLevelupGear = 1078; - ActionReasonMechanicusBattleSettle = 1079; - ActionReasonRegionSearchReward = 1080; - ActionReasonUnlockCoopChapter = 1081; - ActionReasonTakeCoopReward = 1082; - ActionReasonFleurFairDungeonReward = 1083; - ActionReasonActivityScore = 1084; - ActionReasonChannellerSlabOneoffDungeonReward = 1085; - ActionReasonFurnitureMakeStart = 1086; - ActionReasonFurnitureMakeTake = 1087; - ActionReasonFurnitureMakeCancel = 1088; - ActionReasonFurnitureMakeFastFinish = 1089; - ActionReasonChannellerSlabLoopDungeonFirstPassReward = 1090; - ActionReasonChannellerSlabLoopDungeonScoreReward = 1091; - ActionReasonHomeLimitedShopBuy = 1092; - ActionReasonHomeCoinCollect = 1093; -} diff --git a/proto/ActivityInfo.proto b/proto/ActivityInfo.proto deleted file mode 100644 index 836f7d126..000000000 --- a/proto/ActivityInfo.proto +++ /dev/null @@ -1,47 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ActivityNullDetailInfo.proto"; -import "ActivityWatcherInfo.proto"; - -message ActivityInfo { - uint32 activityId = 1; - uint32 scheduleId = 2; - uint32 beginTime = 3; - uint32 endTime = 4; - uint32 activityType = 5; - bool isPlayOpenAnim = 6; - bool isFinished = 7; - bool isStarting = 8; - repeated ActivityWatcherInfo watcherInfoList = 9; - repeated uint32 meetCondList = 10; - repeated uint32 expireCondList = 15; - uint32 selectedAvatarRewardId = 17; - map activityCoinMap = 18; - uint32 scoreLimit = 19; - uint32 curScore = 20; - repeated uint32 takenRewardList = 24; - oneof detail { - ActivityNullDetailInfo samLampInfo = 11; - ActivityNullDetailInfo crucibleInfo = 12; - ActivityNullDetailInfo salesmanInfo = 13; - ActivityNullDetailInfo trialAvatarInfo = 14; - ActivityNullDetailInfo deliveryInfo = 16; - ActivityNullDetailInfo asterInfo = 21; - ActivityNullDetailInfo flightInfo = 25; - ActivityNullDetailInfo dragonSpineInfo = 31; - ActivityNullDetailInfo effigyInfo = 32; - ActivityNullDetailInfo treasureMapInfo = 35; - ActivityNullDetailInfo blessingInfo = 41; - ActivityNullDetailInfo seaLampInfo = 42; - ActivityNullDetailInfo expeditionInfo = 43; - ActivityNullDetailInfo arenaChallengeInfo = 44; - ActivityNullDetailInfo fleurFairInfo = 51; - ActivityNullDetailInfo waterSpiritInfo = 52; - ActivityNullDetailInfo challnelerSlabInfo = 61; - ActivityNullDetailInfo mistTrialActivityInfo = 62; - ActivityNullDetailInfo hideAndSeekInfo = 63; - ActivityNullDetailInfo findHilichurlInfo = 64; - } -} diff --git a/proto/ActivityNullDetailInfo.proto b/proto/ActivityNullDetailInfo.proto deleted file mode 100644 index 90ee7844e..000000000 --- a/proto/ActivityNullDetailInfo.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ActivityNullDetailInfo { - -} diff --git a/proto/ActivityWatcherInfo.proto b/proto/ActivityWatcherInfo.proto deleted file mode 100644 index eb4e0058f..000000000 --- a/proto/ActivityWatcherInfo.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ActivityWatcherInfo { - uint32 watcherId = 1; - uint32 curProgress = 2; - uint32 totalProgress = 3; - bool isTakenReward = 4; -} diff --git a/proto/AiSkillCdInfo.proto b/proto/AiSkillCdInfo.proto deleted file mode 100644 index ad5f072df..000000000 --- a/proto/AiSkillCdInfo.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AiSkillCdInfo { - map skillCdMap = 1; - map skillGroupCdMap = 2; -} diff --git a/proto/AiSyncInfo.proto b/proto/AiSyncInfo.proto deleted file mode 100644 index 1dc25b8fd..000000000 --- a/proto/AiSyncInfo.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AiSyncInfo { - uint32 entityId = 1; - bool hasPathToTarget = 2; -} diff --git a/proto/AiThreatInfo.proto b/proto/AiThreatInfo.proto deleted file mode 100644 index eb4ceeb46..000000000 --- a/proto/AiThreatInfo.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AiThreatInfo { - map aiThreatMap = 1; -} diff --git a/proto/AnimatorParameterValueInfo.proto b/proto/AnimatorParameterValueInfo.proto deleted file mode 100644 index 0735f5154..000000000 --- a/proto/AnimatorParameterValueInfo.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AnimatorParameterValueInfo { - uint32 paraType = 1; - int32 intVal = 2; - float floatVal = 3; - bool boolVal = 4; -} diff --git a/proto/AnimatorParameterValueInfoPair.proto b/proto/AnimatorParameterValueInfoPair.proto deleted file mode 100644 index 1ead0b9a7..000000000 --- a/proto/AnimatorParameterValueInfoPair.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AnimatorParameterValueInfo.proto"; - -message AnimatorParameterValueInfoPair { - int32 name = 1; - AnimatorParameterValueInfo animatorPara = 2; -} diff --git a/proto/AskAddFriendNotify.proto b/proto/AskAddFriendNotify.proto deleted file mode 100644 index ab5f6ef26..000000000 --- a/proto/AskAddFriendNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "FriendBrief.proto"; - -message AskAddFriendNotify { - uint32 targetUid = 1; - FriendBrief targetFriendBrief = 2; -} diff --git a/proto/AskAddFriendReq.proto b/proto/AskAddFriendReq.proto deleted file mode 100644 index ac8a9083e..000000000 --- a/proto/AskAddFriendReq.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AskAddFriendReq { - uint32 targetUid = 1; -} diff --git a/proto/AskAddFriendRsp.proto b/proto/AskAddFriendRsp.proto deleted file mode 100644 index 4893ea28a..000000000 --- a/proto/AskAddFriendRsp.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AskAddFriendRsp { - int32 retcode = 1; - uint32 targetUid = 2; - uint32 param = 3; -} diff --git a/proto/AttackHitEffectResult.proto b/proto/AttackHitEffectResult.proto deleted file mode 100644 index d997b7ab3..000000000 --- a/proto/AttackHitEffectResult.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AttackHitEffectResult { - uint32 hitEffLevel = 1; - float retreatStrength = 2; - float airStrength = 3; - float hitHaltTime = 4; - float hitHaltTimeScale = 5; - uint32 originalHitEffLevel = 6; -} diff --git a/proto/AttackResult.proto b/proto/AttackResult.proto deleted file mode 100644 index 9b1498718..000000000 --- a/proto/AttackResult.proto +++ /dev/null @@ -1,40 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AbilityIdentifier.proto"; -import "AttackHitEffectResult.proto"; -import "HitCollision.proto"; -import "Vector.proto"; - -message AttackResult { - uint32 attackerId = 1; - uint32 defenseId = 2; - string animEventId = 3; - AbilityIdentifier abilityIdentifier = 4; - float damage = 6; - bool isCrit = 7; - HitCollision hitCollision = 8; - uint32 hitPosType = 9; - uint32 endureBreak = 10; - Vector resolvedDir = 11; - int32 hitRetreatAngleCompat = 12; - AttackHitEffectResult hitEffResult = 13; - uint32 elementType = 14; - bool useGadgetDamageAction = 19; - uint32 gadgetDamageActionIdx = 20; - bool isResistText = 22; - uint32 criticalRand = 23; - float elementAmplifyRate = 24; - float damageShield = 26; - bool muteElementHurt = 27; - uint32 amplifyReactionType = 30; - uint32 addhurtReactionType = 31; - uint32 bulletFlyTimeMs = 32; - uint32 attackCount = 33; - uint32 hashedAnimEventId = 34; - uint32 attackTimestampMs = 36; - float endureDelta = 37; - uint32 targetType = 38; - float elementDurabilityAttenuation = 39; -} diff --git a/proto/AvatarAddNotify.proto b/proto/AvatarAddNotify.proto deleted file mode 100644 index 1bbd17d19..000000000 --- a/proto/AvatarAddNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AvatarInfo.proto"; - -message AvatarAddNotify { - AvatarInfo avatar = 1; - bool isInTeam = 2; -} diff --git a/proto/AvatarChangeCostumeNotify.proto b/proto/AvatarChangeCostumeNotify.proto deleted file mode 100644 index 86a64ad1e..000000000 --- a/proto/AvatarChangeCostumeNotify.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "SceneEntityInfo.proto"; - -message AvatarChangeCostumeNotify { - SceneEntityInfo entity = 1; -} diff --git a/proto/AvatarChangeCostumeReq.proto b/proto/AvatarChangeCostumeReq.proto deleted file mode 100644 index 6a83f9497..000000000 --- a/proto/AvatarChangeCostumeReq.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarChangeCostumeReq { - uint64 avatarGuid = 1; - uint32 costumeId = 2; -} diff --git a/proto/AvatarChangeCostumeRsp.proto b/proto/AvatarChangeCostumeRsp.proto deleted file mode 100644 index a5a3490c1..000000000 --- a/proto/AvatarChangeCostumeRsp.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarChangeCostumeRsp { - uint32 retcode = 1; - uint64 avatarGuid = 2; - uint32 costumeId = 3; -} diff --git a/proto/AvatarDataNotify.proto b/proto/AvatarDataNotify.proto deleted file mode 100644 index 356d972bc..000000000 --- a/proto/AvatarDataNotify.proto +++ /dev/null @@ -1,16 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AvatarInfo.proto"; -import "AvatarTeam.proto"; - -message AvatarDataNotify { - repeated AvatarInfo avatarList = 1; - map avatarTeamMap = 2; - uint32 curAvatarTeamId = 3; - fixed64 chooseAvatarGuid = 4; - repeated uint64 tempAvatarGuidList = 5; - repeated uint32 ownedFlycloakList = 6; - repeated uint32 ownedCostumeList = 7; -} diff --git a/proto/AvatarDieAnimationEndReq.proto b/proto/AvatarDieAnimationEndReq.proto deleted file mode 100644 index 06bb7b3a8..000000000 --- a/proto/AvatarDieAnimationEndReq.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "Vector.proto"; - -message AvatarDieAnimationEndReq { - uint64 dieGuid = 1; - uint32 skillId = 2; - Vector rebornPos = 3; -} diff --git a/proto/AvatarDieAnimationEndRsp.proto b/proto/AvatarDieAnimationEndRsp.proto deleted file mode 100644 index ac0f1eabb..000000000 --- a/proto/AvatarDieAnimationEndRsp.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarDieAnimationEndRsp { - int32 retcode = 1; - uint64 dieGuid = 2; - uint32 skillId = 3; -} diff --git a/proto/AvatarEnterSceneInfo.proto b/proto/AvatarEnterSceneInfo.proto deleted file mode 100644 index c4f15d55b..000000000 --- a/proto/AvatarEnterSceneInfo.proto +++ /dev/null @@ -1,17 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AbilitySyncStateInfo.proto"; -import "ServerBuff.proto"; - -message AvatarEnterSceneInfo { - uint64 avatarGuid = 1; - uint32 avatarEntityId = 2; - AbilitySyncStateInfo avatarAbilityInfo = 3; - repeated uint32 buffIdList = 4; - uint64 weaponGuid = 5; - uint32 weaponEntityId = 6; - AbilitySyncStateInfo weaponAbilityInfo = 7; - repeated ServerBuff serverBuffList = 8; -} diff --git a/proto/AvatarEquipAffixInfo.proto b/proto/AvatarEquipAffixInfo.proto deleted file mode 100644 index 7e05f57b2..000000000 --- a/proto/AvatarEquipAffixInfo.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarEquipAffixInfo { - uint32 equipAffixId = 1; - uint32 leftCdTime = 2; -} diff --git a/proto/AvatarEquipChangeNotify.proto b/proto/AvatarEquipChangeNotify.proto deleted file mode 100644 index bc6532fdb..000000000 --- a/proto/AvatarEquipChangeNotify.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "SceneReliquaryInfo.proto"; -import "SceneWeaponInfo.proto"; - -message AvatarEquipChangeNotify { - uint64 avatarGuid = 1; - uint32 equipType = 2; - uint32 itemId = 3; - uint64 equipGuid = 4; - SceneWeaponInfo weapon = 5; - SceneReliquaryInfo reliquary = 6; -} diff --git a/proto/AvatarExpeditionState.proto b/proto/AvatarExpeditionState.proto deleted file mode 100644 index 0753dd618..000000000 --- a/proto/AvatarExpeditionState.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum AvatarExpeditionState { - AvatarExpeditionNone = 0; - AvatarExpeditionDoing = 1; - AvatarExpeditionFinishWaitReward = 2; - AvatarExpeditionCallbackWaitReward = 3; -} diff --git a/proto/AvatarFetterInfo.proto b/proto/AvatarFetterInfo.proto deleted file mode 100644 index 408e7acc4..000000000 --- a/proto/AvatarFetterInfo.proto +++ /dev/null @@ -1,14 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "FetterData.proto"; - -message AvatarFetterInfo { - uint32 expNumber = 1; - uint32 expLevel = 2; - repeated uint32 openIdList = 3; - repeated uint32 finishIdList = 4; - repeated uint32 rewardedFetterLevelList = 5; - repeated FetterData fetterList = 6; -} diff --git a/proto/AvatarFightPropNotify.proto b/proto/AvatarFightPropNotify.proto deleted file mode 100644 index 8d24011b8..000000000 --- a/proto/AvatarFightPropNotify.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarFightPropNotify { - uint64 avatarGuid = 1; - map fightPropMap = 2; -} diff --git a/proto/AvatarFightPropUpdateNotify.proto b/proto/AvatarFightPropUpdateNotify.proto deleted file mode 100644 index 040c7d0c8..000000000 --- a/proto/AvatarFightPropUpdateNotify.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarFightPropUpdateNotify { - uint64 avatarGuid = 1; - map fightPropMap = 2; -} diff --git a/proto/AvatarFlycloakChangeNotify.proto b/proto/AvatarFlycloakChangeNotify.proto deleted file mode 100644 index 4d7d35347..000000000 --- a/proto/AvatarFlycloakChangeNotify.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarFlycloakChangeNotify { - uint64 avatarGuid = 1; - uint32 flycloakId = 2; -} diff --git a/proto/AvatarGainCostumeNotify.proto b/proto/AvatarGainCostumeNotify.proto deleted file mode 100644 index 54ef728ee..000000000 --- a/proto/AvatarGainCostumeNotify.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarGainCostumeNotify { - uint32 costumeId = 1; -} diff --git a/proto/AvatarGainFlycloakNotify.proto b/proto/AvatarGainFlycloakNotify.proto deleted file mode 100644 index d21a9cbe3..000000000 --- a/proto/AvatarGainFlycloakNotify.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarGainFlycloakNotify { - uint32 flycloakId = 1; -} diff --git a/proto/AvatarInfo.proto b/proto/AvatarInfo.proto deleted file mode 100644 index f3ab4ccc1..000000000 --- a/proto/AvatarInfo.proto +++ /dev/null @@ -1,37 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AvatarEquipAffixInfo.proto"; -import "AvatarExpeditionState.proto"; -import "AvatarFetterInfo.proto"; -import "AvatarSkillInfo.proto"; -import "PropValue.proto"; -import "TrialAvatarInfo.proto"; - -message AvatarInfo { - uint32 avatarId = 1; - uint64 guid = 2; - map propMap = 3; - uint32 lifeState = 4; - repeated uint64 equipGuidList = 5; - repeated uint32 talentIdList = 6; - map fightPropMap = 7; - TrialAvatarInfo trialAvatarInfoField = 9; - map skillMap = 10; - uint32 skillDepotId = 11; - AvatarFetterInfo fetterInfo = 12; - uint32 coreProudSkillLevel = 13; - repeated uint32 inherentProudSkillList = 14; - map skillLevelMap = 15; - AvatarExpeditionState expeditionState = 16; - map proudSkillExtraLevel = 17; - bool isFocusFieldNumber = 18; - uint32 avatarType = 19; - repeated uint32 teamResonanceList = 20; - uint32 wearingFlycloakId = 21; - repeated AvatarEquipAffixInfo equipAffixList = 22; - uint32 bornTime = 23; - repeated uint32 pendingPromoteRewardListFieldNumber = 24; - uint32 costumeId = 25; -} diff --git a/proto/AvatarLifeStateChangeNotify.proto b/proto/AvatarLifeStateChangeNotify.proto deleted file mode 100644 index 0bf816006..000000000 --- a/proto/AvatarLifeStateChangeNotify.proto +++ /dev/null @@ -1,14 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "PlayerDieType.proto"; - -message AvatarLifeStateChangeNotify { - uint64 avatarGuid = 1; - uint32 lifeState = 2; - uint32 sourceEntityId = 3; - string attackTag = 4; - PlayerDieType dieType = 5; - uint32 moveReliableSeq = 6; -} diff --git a/proto/AvatarPromoteReq.proto b/proto/AvatarPromoteReq.proto deleted file mode 100644 index 863ab835c..000000000 --- a/proto/AvatarPromoteReq.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarPromoteReq { - uint64 guid = 1; -} diff --git a/proto/AvatarPromoteRsp.proto b/proto/AvatarPromoteRsp.proto deleted file mode 100644 index e64b9c9bc..000000000 --- a/proto/AvatarPromoteRsp.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarPromoteRsp { - int32 retcode = 1; - uint64 guid = 2; -} diff --git a/proto/AvatarPropNotify.proto b/proto/AvatarPropNotify.proto deleted file mode 100644 index 231008dd6..000000000 --- a/proto/AvatarPropNotify.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarPropNotify { - uint64 avatarGuid = 1; - map propMap = 2; -} diff --git a/proto/AvatarSkillChangeNotify.proto b/proto/AvatarSkillChangeNotify.proto deleted file mode 100644 index 066412687..000000000 --- a/proto/AvatarSkillChangeNotify.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarSkillChangeNotify { - uint64 avatarGuid = 1; - uint32 entityId = 2; - uint32 skillDepotId = 3; - uint32 avatarSkillId = 4; - uint32 oldLevel = 5; - uint32 curLevel = 6; -} diff --git a/proto/AvatarSkillInfo.proto b/proto/AvatarSkillInfo.proto deleted file mode 100644 index 27417caf4..000000000 --- a/proto/AvatarSkillInfo.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarSkillInfo { - uint32 passCdTime = 1; - repeated uint32 fullCdTimeList = 2; - uint32 maxChargeCount = 3; -} diff --git a/proto/AvatarSkillUpgradeReq.proto b/proto/AvatarSkillUpgradeReq.proto deleted file mode 100644 index 01e78e2b2..000000000 --- a/proto/AvatarSkillUpgradeReq.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarSkillUpgradeReq { - uint64 avatarGuid = 1; - uint32 avatarSkillId = 2; - uint32 oldLevel = 3; -} diff --git a/proto/AvatarSkillUpgradeRsp.proto b/proto/AvatarSkillUpgradeRsp.proto deleted file mode 100644 index a7942f5dd..000000000 --- a/proto/AvatarSkillUpgradeRsp.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarSkillUpgradeRsp { - int32 retcode = 1; - uint64 avatarGuid = 2; - uint32 avatarSkillId = 3; - uint32 oldLevel = 4; - uint32 curLevel = 5; -} diff --git a/proto/AvatarTeam.proto b/proto/AvatarTeam.proto deleted file mode 100644 index 0ca666f00..000000000 --- a/proto/AvatarTeam.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarTeam { - repeated uint64 avatarGuidList = 1; - string teamName = 2; -} diff --git a/proto/AvatarTeamResonanceInfo.proto b/proto/AvatarTeamResonanceInfo.proto deleted file mode 100644 index beae1d212..000000000 --- a/proto/AvatarTeamResonanceInfo.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarTeamResonanceInfo { - uint32 entityId = 1; - uint64 avatarGuid = 2; - repeated uint32 addTeamResonanceIdList = 3; - repeated uint32 delTeamResonanceIdList = 4; -} diff --git a/proto/AvatarTeamUpdateNotify.proto b/proto/AvatarTeamUpdateNotify.proto deleted file mode 100644 index b68f7ce78..000000000 --- a/proto/AvatarTeamUpdateNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AvatarTeam.proto"; - -message AvatarTeamUpdateNotify { - map avatarTeamMap = 1; - repeated uint64 tempAvatarGuidList = 2; -} diff --git a/proto/AvatarUnlockTalentNotify.proto b/proto/AvatarUnlockTalentNotify.proto deleted file mode 100644 index 91500c3fe..000000000 --- a/proto/AvatarUnlockTalentNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarUnlockTalentNotify { - uint64 avatarGuid = 1; - uint32 entityId = 2; - uint32 talentId = 3; - uint32 skillDepotId = 4; -} diff --git a/proto/AvatarUpgradeReq.proto b/proto/AvatarUpgradeReq.proto deleted file mode 100644 index 7ad936c07..000000000 --- a/proto/AvatarUpgradeReq.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarUpgradeReq { - uint32 itemId = 1; - uint32 count = 2; - uint64 avatarGuid = 3; -} diff --git a/proto/AvatarUpgradeRsp.proto b/proto/AvatarUpgradeRsp.proto deleted file mode 100644 index 0d50cfab0..000000000 --- a/proto/AvatarUpgradeRsp.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarUpgradeRsp { - int32 retcode = 1; - uint64 avatarGuid = 2; - uint32 oldLevel = 3; - uint32 curLevel = 4; - map oldFightPropMap = 5; - map curFightPropMap = 6; -} diff --git a/proto/AvatarWearFlycloakReq.proto b/proto/AvatarWearFlycloakReq.proto deleted file mode 100644 index 92b067f98..000000000 --- a/proto/AvatarWearFlycloakReq.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarWearFlycloakReq { - uint64 avatarGuid = 1; - uint32 flycloakId = 2; -} diff --git a/proto/AvatarWearFlycloakRsp.proto b/proto/AvatarWearFlycloakRsp.proto deleted file mode 100644 index 78d179fa6..000000000 --- a/proto/AvatarWearFlycloakRsp.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message AvatarWearFlycloakRsp { - int32 retcode = 1; - uint64 avatarGuid = 2; - uint32 flycloakId = 3; -} diff --git a/proto/Birthday.proto b/proto/Birthday.proto deleted file mode 100644 index b360bcfd2..000000000 --- a/proto/Birthday.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message Birthday { - uint32 month = 1; - uint32 day = 2; -} diff --git a/proto/BlockInfo.proto b/proto/BlockInfo.proto deleted file mode 100644 index 5905e3573..000000000 --- a/proto/BlockInfo.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message BlockInfo { - uint32 blockId = 1; - uint32 dataVersion = 2; - bytes binData = 3; - bool isDirty = 4; -} diff --git a/proto/CalcWeaponUpgradeReturnItemsReq.proto b/proto/CalcWeaponUpgradeReturnItemsReq.proto deleted file mode 100644 index be6bcd98b..000000000 --- a/proto/CalcWeaponUpgradeReturnItemsReq.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ItemParam.proto"; - -message CalcWeaponUpgradeReturnItemsReq { - uint64 targetWeaponGuid = 1; - repeated uint64 foodWeaponGuidList = 2; - repeated ItemParam itemParamList = 3; -} diff --git a/proto/CalcWeaponUpgradeReturnItemsRsp.proto b/proto/CalcWeaponUpgradeReturnItemsRsp.proto deleted file mode 100644 index 5b0733d36..000000000 --- a/proto/CalcWeaponUpgradeReturnItemsRsp.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ItemParam.proto"; - -message CalcWeaponUpgradeReturnItemsRsp { - int32 retcode = 1; - uint64 targetWeaponGuid = 2; - repeated ItemParam itemParamList = 3; -} diff --git a/proto/ChangeAvatarReq.proto b/proto/ChangeAvatarReq.proto deleted file mode 100644 index 8ef593ea7..000000000 --- a/proto/ChangeAvatarReq.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "Vector.proto"; - -message ChangeAvatarReq { - uint64 guid = 1; - uint32 skillId = 2; - bool isMove = 3; - Vector movePos = 4; -} diff --git a/proto/ChangeAvatarRsp.proto b/proto/ChangeAvatarRsp.proto deleted file mode 100644 index 08281c41a..000000000 --- a/proto/ChangeAvatarRsp.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ChangeAvatarRsp { - uint32 retcode = 1; - uint64 currGuid = 2; - uint32 skillId = 3; -} diff --git a/proto/ChangeGameTimeReq.proto b/proto/ChangeGameTimeReq.proto deleted file mode 100644 index 474c964de..000000000 --- a/proto/ChangeGameTimeReq.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ChangeGameTimeReq { - uint32 gameTime = 1; - bool isForceSet = 2; -} diff --git a/proto/ChangeGameTimeRsp.proto b/proto/ChangeGameTimeRsp.proto deleted file mode 100644 index 75c94a366..000000000 --- a/proto/ChangeGameTimeRsp.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ChangeGameTimeRsp { - int32 retcode = 1; - uint32 curGameTime = 2; -} diff --git a/proto/ChangeHpReason.proto b/proto/ChangeHpReason.proto deleted file mode 100644 index e56d9acc3..000000000 --- a/proto/ChangeHpReason.proto +++ /dev/null @@ -1,31 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum ChangeHpReason { - ChangeHpNone = 0; - ChangeHpSubAvatar = 1; - ChangeHpSubMonster = 2; - ChangeHpSubGear = 3; - ChangeHpSubEnvir = 4; - ChangeHpSubFall = 5; - ChangeHpSubDrawn = 6; - ChangeHpSubAbyss = 7; - ChangeHpSubAbility = 8; - ChangeHpSubSummon = 9; - ChangeHpSubScript = 10; - ChangeHpSubGm = 11; - ChangeHpSubKillSelf = 12; - ChangeHpSubClimateCold = 13; - ChangeHpSubStormLightning = 14; - ChangeHpSubKillServerGadget = 15; - ChangeHpByLua = 51; - ChangeHpAddAbility = 101; - ChangeHpAddItem = 102; - ChangeHpAddRevive = 103; - ChangeHpAddUpgrade = 104; - ChangeHpAddStatue = 105; - ChangeHpAddBackground = 106; - ChangeHpAddGm = 107; - ChangeHpAddTrialAvatarActivity = 108; -} diff --git a/proto/ChangeMpTeamAvatarReq.proto b/proto/ChangeMpTeamAvatarReq.proto deleted file mode 100644 index 8a90c871a..000000000 --- a/proto/ChangeMpTeamAvatarReq.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ChangeMpTeamAvatarReq { - repeated uint64 avatarGuidList = 1; - uint64 curAvatarGuid = 2; -} diff --git a/proto/ChangeMpTeamAvatarRsp.proto b/proto/ChangeMpTeamAvatarRsp.proto deleted file mode 100644 index ae0b49952..000000000 --- a/proto/ChangeMpTeamAvatarRsp.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ChangeMpTeamAvatarRsp { - int32 retcode = 1; - repeated uint64 avatarGuidList = 2; - uint64 curAvatarGuid = 3; -} diff --git a/proto/ChangeTeamNameReq.proto b/proto/ChangeTeamNameReq.proto deleted file mode 100644 index 87423b3dc..000000000 --- a/proto/ChangeTeamNameReq.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ChangeTeamNameReq { - int32 teamId = 1; - string teamName = 2; -} diff --git a/proto/ChangeTeamNameRsp.proto b/proto/ChangeTeamNameRsp.proto deleted file mode 100644 index 51607c66a..000000000 --- a/proto/ChangeTeamNameRsp.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ChangeTeamNameRsp { - int32 teamId = 1; - string teamName = 2; - int32 retcode = 3; -} diff --git a/proto/ChatInfo.proto b/proto/ChatInfo.proto deleted file mode 100644 index 7b47d7f28..000000000 --- a/proto/ChatInfo.proto +++ /dev/null @@ -1,18 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "SystemHint.proto"; - -message ChatInfo { - uint32 time = 1; - uint32 uid = 2; - uint32 sequence = 3; - uint32 toUid = 4; - bool isRead = 5; - oneof content { - string text = 100; - uint32 icon = 101; - SystemHint systemHint = 102; - } -} diff --git a/proto/ChooseCurAvatarTeamReq.proto b/proto/ChooseCurAvatarTeamReq.proto deleted file mode 100644 index bc9bd84c8..000000000 --- a/proto/ChooseCurAvatarTeamReq.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ChooseCurAvatarTeamReq { - uint32 teamId = 1; -} diff --git a/proto/ChooseCurAvatarTeamRsp.proto b/proto/ChooseCurAvatarTeamRsp.proto deleted file mode 100644 index 2a168a763..000000000 --- a/proto/ChooseCurAvatarTeamRsp.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ChooseCurAvatarTeamRsp { - int32 retcode = 1; - uint32 curTeamId = 2; -} diff --git a/proto/CityInfo.proto b/proto/CityInfo.proto deleted file mode 100644 index 8d6f31bf0..000000000 --- a/proto/CityInfo.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message CityInfo { - uint32 cityId = 1; - uint32 level = 2; - uint32 crystalNum = 3; -} diff --git a/proto/ClientAbilityChangeNotify.proto b/proto/ClientAbilityChangeNotify.proto deleted file mode 100644 index 19f1fd57b..000000000 --- a/proto/ClientAbilityChangeNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AbilityInvokeEntry.proto"; - -message ClientAbilityChangeNotify { - uint32 entityId = 1; - repeated AbilityInvokeEntry invokes = 2; -} diff --git a/proto/ClientAbilityInitBeginNotify.proto b/proto/ClientAbilityInitBeginNotify.proto deleted file mode 100644 index 03bc7a630..000000000 --- a/proto/ClientAbilityInitBeginNotify.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ClientAbilityInitBeginNotify { - uint32 entityId = 1; -} diff --git a/proto/ClientAbilityInitFinishNotify.proto b/proto/ClientAbilityInitFinishNotify.proto deleted file mode 100644 index 1078434be..000000000 --- a/proto/ClientAbilityInitFinishNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AbilityInvokeEntry.proto"; - -message ClientAbilityInitFinishNotify { - uint32 entityId = 1; - repeated AbilityInvokeEntry invokes = 2; -} diff --git a/proto/CombatInvocationsNotify.proto b/proto/CombatInvocationsNotify.proto deleted file mode 100644 index 8669d1a9a..000000000 --- a/proto/CombatInvocationsNotify.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "CombatInvokeEntry.proto"; - -message CombatInvocationsNotify { - repeated CombatInvokeEntry invokeList = 1; -} diff --git a/proto/CombatInvokeEntry.proto b/proto/CombatInvokeEntry.proto deleted file mode 100644 index 43e2eedaa..000000000 --- a/proto/CombatInvokeEntry.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "CombatTypeArgument.proto"; -import "ForwardType.proto"; - -message CombatInvokeEntry { - CombatTypeArgument argumentType = 1; - ForwardType forwardType = 2; - bytes combatData = 3; -} diff --git a/proto/CombatTypeArgument.proto b/proto/CombatTypeArgument.proto deleted file mode 100644 index ab5eef088..000000000 --- a/proto/CombatTypeArgument.proto +++ /dev/null @@ -1,21 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum CombatTypeArgument { - CombatNone = 0; - CombatEvtBeingHit = 1; - CombatAnimatorStateChanged = 2; - CombatFaceToDir = 3; - CombatSetAttackTarget = 4; - CombatRushMove = 5; - CombatAnimatorParameterChanged = 6; - EntityMove = 7; - SyncEntityPosition = 8; - CombatSteerMotionInfo = 9; - CombatForceSetPosInfo = 10; - CombatCompensatePosDiff = 11; - CombatMonsterDoBlink = 12; - CombatFixedRushMove = 13; - CombatSyncTransform = 14; -} diff --git a/proto/CoopCg.proto b/proto/CoopCg.proto deleted file mode 100644 index 5702ac651..000000000 --- a/proto/CoopCg.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message CoopCg { - uint32 id = 1; - bool isUnlock = 2; -} diff --git a/proto/CoopChapter.proto b/proto/CoopChapter.proto deleted file mode 100644 index 817f23533..000000000 --- a/proto/CoopChapter.proto +++ /dev/null @@ -1,21 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "CoopCg.proto"; -import "CoopChapterState.proto"; -import "CoopPoint.proto"; -import "CoopReward.proto"; - -message CoopChapter { - uint32 id = 1; - CoopChapterState state = 2; - repeated uint32 lockReasonList = 3; - repeated CoopPoint coopPointList = 4; - repeated CoopReward coopRewardList = 5; - repeated CoopCg coopCgList = 6; - uint32 totalEndCount = 7; - uint32 finishedEndCount = 8; - map seenEndingMap = 9; - repeated uint32 finishDialogList = 10; -} diff --git a/proto/CoopChapterState.proto b/proto/CoopChapterState.proto deleted file mode 100644 index 40ae5f2bd..000000000 --- a/proto/CoopChapterState.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum CoopChapterState { - Close = 0; - CondNotMeet = 1; - CondMeet = 2; - Accept = 3; -} diff --git a/proto/CoopDataNotify.proto b/proto/CoopDataNotify.proto deleted file mode 100644 index ea1ee81e7..000000000 --- a/proto/CoopDataNotify.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "CoopChapter.proto"; - -message CoopDataNotify { - repeated CoopChapter chapterList = 1; - bool isHaveProgress = 2; - uint32 curCoopPoint = 3; - repeated uint32 viewedChapterList = 4; -} diff --git a/proto/CoopPoint.proto b/proto/CoopPoint.proto deleted file mode 100644 index f5391440d..000000000 --- a/proto/CoopPoint.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "CoopPointState.proto"; - -message CoopPoint { - uint32 id = 1; - CoopPointState state = 2; - uint32 selfConfidence = 3; -} diff --git a/proto/CoopPointState.proto b/proto/CoopPointState.proto deleted file mode 100644 index 34288e2b5..000000000 --- a/proto/CoopPointState.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum CoopPointState { - Unstarted = 0; - Started = 1; - Finished = 2; -} diff --git a/proto/CoopReward.proto b/proto/CoopReward.proto deleted file mode 100644 index 47086cc76..000000000 --- a/proto/CoopReward.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "CoopRewardState.proto"; - -message CoopReward { - uint32 id = 1; - CoopRewardState state = 2; -} diff --git a/proto/CoopRewardState.proto b/proto/CoopRewardState.proto deleted file mode 100644 index 60b60d7a7..000000000 --- a/proto/CoopRewardState.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum CoopRewardState { - Unlock = 0; - Lock = 1; - Taken = 2; -} diff --git a/proto/CountDownDelete.proto b/proto/CountDownDelete.proto deleted file mode 100644 index fd394c44d..000000000 --- a/proto/CountDownDelete.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message CountDownDelete { - -} diff --git a/proto/DateTimeDelete.proto b/proto/DateTimeDelete.proto deleted file mode 100644 index 9af357326..000000000 --- a/proto/DateTimeDelete.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message DateTimeDelete { - -} diff --git a/proto/DealAddFriendReq.proto b/proto/DealAddFriendReq.proto deleted file mode 100644 index 5a0fa0878..000000000 --- a/proto/DealAddFriendReq.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "DealAddFriendResultType.proto"; - -message DealAddFriendReq { - uint32 targetUid = 1; - DealAddFriendResultType dealAddFriendResult = 2; -} diff --git a/proto/DealAddFriendResultType.proto b/proto/DealAddFriendResultType.proto deleted file mode 100644 index d9516f5cc..000000000 --- a/proto/DealAddFriendResultType.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum DealAddFriendResultType { - DealAddFriendReject = 0; - DealAddFriendAccept = 1; -} diff --git a/proto/DealAddFriendRsp.proto b/proto/DealAddFriendRsp.proto deleted file mode 100644 index 330c3b3ed..000000000 --- a/proto/DealAddFriendRsp.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "DealAddFriendResultType.proto"; - -message DealAddFriendRsp { - int32 retcode = 1; - uint32 targetUid = 2; - DealAddFriendResultType dealAddFriendResult = 3; -} diff --git a/proto/DelTeamEntityNotify.proto b/proto/DelTeamEntityNotify.proto deleted file mode 100644 index a5fbda5c1..000000000 --- a/proto/DelTeamEntityNotify.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message DelTeamEntityNotify { - uint32 sceneId = 1; - repeated uint32 delEntityIdList = 2; -} diff --git a/proto/DelayWeekCountDownDelete.proto b/proto/DelayWeekCountDownDelete.proto deleted file mode 100644 index 52c2c007e..000000000 --- a/proto/DelayWeekCountDownDelete.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message DelayWeekCountDownDelete { - -} diff --git a/proto/DeleteFriendNotify.proto b/proto/DeleteFriendNotify.proto deleted file mode 100644 index 224e411f4..000000000 --- a/proto/DeleteFriendNotify.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message DeleteFriendNotify { - uint32 targetUid = 1; -} diff --git a/proto/DeleteFriendReq.proto b/proto/DeleteFriendReq.proto deleted file mode 100644 index fa4b371a1..000000000 --- a/proto/DeleteFriendReq.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message DeleteFriendReq { - uint32 targetUid = 1; -} diff --git a/proto/DeleteFriendRsp.proto b/proto/DeleteFriendRsp.proto deleted file mode 100644 index 666e670d1..000000000 --- a/proto/DeleteFriendRsp.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message DeleteFriendRsp { - int32 retcode = 1; - uint32 targetUid = 2; -} diff --git a/proto/DestroyMaterialReq.proto b/proto/DestroyMaterialReq.proto deleted file mode 100644 index 6dad136b3..000000000 --- a/proto/DestroyMaterialReq.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "MaterialInfo.proto"; - -message DestroyMaterialReq { - repeated MaterialInfo materialList = 1; -} diff --git a/proto/DestroyMaterialRsp.proto b/proto/DestroyMaterialRsp.proto deleted file mode 100644 index edbad052f..000000000 --- a/proto/DestroyMaterialRsp.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message DestroyMaterialRsp { - int32 retcode = 1; - repeated uint32 itemIdList = 2; - repeated uint32 itemCountList = 3; -} diff --git a/proto/DoGachaReq.proto b/proto/DoGachaReq.proto deleted file mode 100644 index b841b5358..000000000 --- a/proto/DoGachaReq.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message DoGachaReq { - uint32 gachaType = 1; - uint32 gachaTimes = 2; - uint32 gachaRandom = 3; - uint32 gachaScheduleId = 4; - string gachaTag = 5; -} diff --git a/proto/DoGachaRsp.proto b/proto/DoGachaRsp.proto deleted file mode 100644 index 3aebde56c..000000000 --- a/proto/DoGachaRsp.proto +++ /dev/null @@ -1,20 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "GachaItem.proto"; - -message DoGachaRsp { - int32 retcode = 1; - uint32 gachaType = 2; - uint32 gachaTimes = 3; - uint32 gachaScheduleId = 4; - repeated GachaItem gachaItemList = 5; - uint32 newGachaRandom = 6; - uint32 costItemId = 7; - uint32 costItemNum = 8; - uint32 tenCostItemId = 9; - uint32 tenCostItemNum = 10; - uint32 leftGachaTimes = 11; - uint32 gachaTimesLimit = 12; -} diff --git a/proto/DropHintNotify.proto b/proto/DropHintNotify.proto deleted file mode 100644 index e0d7cf515..000000000 --- a/proto/DropHintNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "Vector.proto"; - -message DropHintNotify { - repeated uint32 itemIdList = 1; - Vector position = 2; -} diff --git a/proto/DungeonEntryInfo.proto b/proto/DungeonEntryInfo.proto deleted file mode 100644 index 0af679a1e..000000000 --- a/proto/DungeonEntryInfo.proto +++ /dev/null @@ -1,17 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "WeeklyBossResinDiscountInfo.proto"; - -message DungeonEntryInfo { - uint32 dungeonId = 1; - bool isPassed = 2; - uint32 leftTimes = 3; - uint32 startTime = 4; - uint32 endTime = 5; - uint32 maxBossChestNum = 6; - uint32 bossChestNum = 7; - uint32 nextRefreshTime = 8; - WeeklyBossResinDiscountInfo weeklyBossResinDiscountInfo = 9; -} diff --git a/proto/DungeonEntryInfoReq.proto b/proto/DungeonEntryInfoReq.proto deleted file mode 100644 index 12557f4de..000000000 --- a/proto/DungeonEntryInfoReq.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message DungeonEntryInfoReq { - uint32 pointId = 1; -} diff --git a/proto/DungeonEntryInfoRsp.proto b/proto/DungeonEntryInfoRsp.proto deleted file mode 100644 index d83bcefe3..000000000 --- a/proto/DungeonEntryInfoRsp.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "DungeonEntryInfo.proto"; - -message DungeonEntryInfoRsp { - int32 retcode = 1; - uint32 pointId = 2; - repeated DungeonEntryInfo dungeonEntryList = 3; - uint32 recommendDungeonId = 4; -} diff --git a/proto/EnterSceneDoneRsp.proto b/proto/EnterSceneDoneRsp.proto deleted file mode 100644 index df1556787..000000000 --- a/proto/EnterSceneDoneRsp.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message EnterSceneDoneRsp { - int32 retcode = 1; - uint32 enterSceneToken = 2; -} diff --git a/proto/EnterScenePeerNotify.proto b/proto/EnterScenePeerNotify.proto deleted file mode 100644 index 17d5302e4..000000000 --- a/proto/EnterScenePeerNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message EnterScenePeerNotify { - uint32 destSceneId = 1; - uint32 peerId = 2; - uint32 hostPeerId = 3; - uint32 EnterSceneToken = 4; -} diff --git a/proto/EnterSceneReadyRsp.proto b/proto/EnterSceneReadyRsp.proto deleted file mode 100644 index 6cde8d190..000000000 --- a/proto/EnterSceneReadyRsp.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message EnterSceneReadyRsp { - int32 retcode = 1; - uint32 enterSceneToken = 2; -} diff --git a/proto/EnterType.proto b/proto/EnterType.proto deleted file mode 100644 index 6794046b2..000000000 --- a/proto/EnterType.proto +++ /dev/null @@ -1,17 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum EnterType { - EnterNone = 0; - EnterSelf = 1; - EnterGoto = 2; - EnterJump = 3; - EnterOther = 4; - EnterBack = 5; - EnterDungeon = 6; - EnterDungeonReplay = 7; - EnterGotoByPortal = 8; - EnterSelfHome = 9; - EnterOtherHome = 10; -} diff --git a/proto/EnterWorldAreaReq.proto b/proto/EnterWorldAreaReq.proto deleted file mode 100644 index d367117a2..000000000 --- a/proto/EnterWorldAreaReq.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message EnterWorldAreaReq { - uint32 areaType = 1; - uint32 areaId = 2; -} diff --git a/proto/EnterWorldAreaRsp.proto b/proto/EnterWorldAreaRsp.proto deleted file mode 100644 index e2cf96709..000000000 --- a/proto/EnterWorldAreaRsp.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message EnterWorldAreaRsp { - uint32 areaType = 2; - uint32 areaId = 3; -} diff --git a/proto/EntityAiSyncNotify.proto b/proto/EntityAiSyncNotify.proto deleted file mode 100644 index 3e2040d8a..000000000 --- a/proto/EntityAiSyncNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AiSyncInfo.proto"; - -message EntityAiSyncNotify { - repeated AiSyncInfo infoList = 1; - repeated uint32 localAvatarAlertedMonsterList = 2; -} diff --git a/proto/EntityAuthorityInfo.proto b/proto/EntityAuthorityInfo.proto deleted file mode 100644 index aba660f04..000000000 --- a/proto/EntityAuthorityInfo.proto +++ /dev/null @@ -1,17 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AbilitySyncStateInfo.proto"; -import "AnimatorParameterValueInfoPair.proto"; -import "EntityRendererChangedInfo.proto"; -import "SceneEntityAiInfo.proto"; -import "Vector.proto"; - -message EntityAuthorityInfo { - AbilitySyncStateInfo abilityInfo = 1; - EntityRendererChangedInfo rendererChangedInfo = 2; - SceneEntityAiInfo aiInfo = 3; - Vector bornPos = 4; - repeated AnimatorParameterValueInfoPair poseParaList = 5; -} diff --git a/proto/EntityClientData.proto b/proto/EntityClientData.proto deleted file mode 100644 index df639c9d9..000000000 --- a/proto/EntityClientData.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message EntityClientData { - uint32 windChangeSceneTime = 1; - float windmillSyncAngle = 2; - int32 windChangeTargetLevel = 3; -} diff --git a/proto/EntityEnvironmentInfo.proto b/proto/EntityEnvironmentInfo.proto deleted file mode 100644 index 37ba46781..000000000 --- a/proto/EntityEnvironmentInfo.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message EntityEnvironmentInfo { - uint32 jsonClimateType = 1; - uint32 climateAreaId = 2; -} diff --git a/proto/EntityFightPropChangeReasonNotify.proto b/proto/EntityFightPropChangeReasonNotify.proto deleted file mode 100644 index 2bbda0603..000000000 --- a/proto/EntityFightPropChangeReasonNotify.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ChangeHpReason.proto"; -import "PropChangeReason.proto"; - -message EntityFightPropChangeReasonNotify { - uint32 entityId = 1; - uint32 propType = 2; - float propDelta = 3; - PropChangeReason reason = 4; - repeated uint32 paramList = 5; - ChangeHpReason changeHpReason = 6; -} diff --git a/proto/EntityFightPropUpdateNotify.proto b/proto/EntityFightPropUpdateNotify.proto deleted file mode 100644 index d438a269a..000000000 --- a/proto/EntityFightPropUpdateNotify.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message EntityFightPropUpdateNotify { - uint32 entityId = 1; - map fightPropMap = 2; -} diff --git a/proto/EntityMoveInfo.proto b/proto/EntityMoveInfo.proto deleted file mode 100644 index 008533456..000000000 --- a/proto/EntityMoveInfo.proto +++ /dev/null @@ -1,13 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "MotionInfo.proto"; - -message EntityMoveInfo { - uint32 entityId = 1; - MotionInfo motionInfo = 2; - uint32 sceneTime = 3; - uint32 reliableSeq = 4; - bool isReliable = 5; -} diff --git a/proto/EntityPropNotify.proto b/proto/EntityPropNotify.proto deleted file mode 100644 index b2175f3b4..000000000 --- a/proto/EntityPropNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "PropValue.proto"; - -message EntityPropNotify { - uint32 entityId = 1; - map propMap = 2; -} diff --git a/proto/EntityRendererChangedInfo.proto b/proto/EntityRendererChangedInfo.proto deleted file mode 100644 index 97141d9c2..000000000 --- a/proto/EntityRendererChangedInfo.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message EntityRendererChangedInfo { - map changedRenderers = 1; - uint32 visibilityCount = 2; - bool isCached = 3; -} diff --git a/proto/Equip.proto b/proto/Equip.proto deleted file mode 100644 index 2c57f6d2c..000000000 --- a/proto/Equip.proto +++ /dev/null @@ -1,14 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "Reliquary.proto"; -import "Weapon.proto"; - -message Equip { - oneof detail { - Reliquary reliquary = 1; - Weapon weapon = 2; - } - bool isLocked = 3; -} diff --git a/proto/EvtAiSyncCombatThreatInfoNotify.proto b/proto/EvtAiSyncCombatThreatInfoNotify.proto deleted file mode 100644 index 1ae707900..000000000 --- a/proto/EvtAiSyncCombatThreatInfoNotify.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AiThreatInfo.proto"; - -message EvtAiSyncCombatThreatInfoNotify { - map combatThreatInfoMap = 1; -} diff --git a/proto/EvtAiSyncSkillCdNotify.proto b/proto/EvtAiSyncSkillCdNotify.proto deleted file mode 100644 index 2e33a7c1e..000000000 --- a/proto/EvtAiSyncSkillCdNotify.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AiSkillCdInfo.proto"; - -message EvtAiSyncSkillCdNotify { - map aiCdMap = 1; -} diff --git a/proto/EvtBeingHitInfo.proto b/proto/EvtBeingHitInfo.proto deleted file mode 100644 index cbfbf78f1..000000000 --- a/proto/EvtBeingHitInfo.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AttackResult.proto"; - -message EvtBeingHitInfo { - uint32 peerId = 1; - AttackResult attackResult = 2; -} diff --git a/proto/EvtBeingHitNotify.proto b/proto/EvtBeingHitNotify.proto deleted file mode 100644 index 5e27f02be..000000000 --- a/proto/EvtBeingHitNotify.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "EvtBeingHitInfo.proto"; -import "ForwardType.proto"; - -message EvtBeingHitNotify { - ForwardType forwardType = 1; - EvtBeingHitInfo beingHitInfo = 2; -} diff --git a/proto/EvtBeingHitsCombineNotify.proto b/proto/EvtBeingHitsCombineNotify.proto deleted file mode 100644 index 40ee6738a..000000000 --- a/proto/EvtBeingHitsCombineNotify.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "EvtBeingHitInfo.proto"; -import "ForwardType.proto"; - -message EvtBeingHitsCombineNotify { - ForwardType forwardType = 1; - repeated EvtBeingHitInfo evtBeingHitInfoList = 2; -} diff --git a/proto/EvtCreateGadgetNotify.proto b/proto/EvtCreateGadgetNotify.proto deleted file mode 100644 index ab6eeea0f..000000000 --- a/proto/EvtCreateGadgetNotify.proto +++ /dev/null @@ -1,24 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ForwardType.proto"; -import "Vector.proto"; - -message EvtCreateGadgetNotify { - ForwardType forwardType = 1; - uint32 entityId = 2; - uint32 configId = 3; - uint32 campId = 4; - uint32 campType = 5; - Vector initPos = 6; - Vector initEulerAngles = 7; - uint64 guid = 8; - uint32 ownerEntityId = 9; - uint32 targetEntityId = 10; - bool isAsyncLoad = 11; - uint32 targetLockPointIndex = 12; - uint32 roomId = 13; - uint32 propOwnerEntityId = 14; - bool sightGroupWithOwner = 15; -} diff --git a/proto/EvtDestroyGadgetNotify.proto b/proto/EvtDestroyGadgetNotify.proto deleted file mode 100644 index c1708617d..000000000 --- a/proto/EvtDestroyGadgetNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ForwardType.proto"; - -message EvtDestroyGadgetNotify { - ForwardType forwardType = 1; - uint32 entityId = 2; -} diff --git a/proto/EvtHittingOtherInfo.proto b/proto/EvtHittingOtherInfo.proto deleted file mode 100644 index f2dce261e..000000000 --- a/proto/EvtHittingOtherInfo.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AttackResult.proto"; - -message EvtHittingOtherInfo { - uint32 peerId = 1; - AttackResult attackResult = 2; -} diff --git a/proto/FeatureBlockInfo.proto b/proto/FeatureBlockInfo.proto deleted file mode 100644 index 8feafc83d..000000000 --- a/proto/FeatureBlockInfo.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message FeatureBlockInfo { - uint32 featureType = 1; - uint32 endTime = 2; -} diff --git a/proto/FetterData.proto b/proto/FetterData.proto deleted file mode 100644 index 92ea23266..000000000 --- a/proto/FetterData.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message FetterData { - uint32 fetterId = 1; - uint32 fetterState = 2; - repeated uint32 condIndexList = 3; -} diff --git a/proto/FightPropPair.proto b/proto/FightPropPair.proto deleted file mode 100644 index fb6f0e3eb..000000000 --- a/proto/FightPropPair.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message FightPropPair { - uint32 type = 1; - float propValue = 2; -} diff --git a/proto/ForwardType.proto b/proto/ForwardType.proto deleted file mode 100644 index 329e2ef6f..000000000 --- a/proto/ForwardType.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum ForwardType { - ForwardLocal = 0; - ForwardToAll = 1; - ForwardToAllExceptCur = 2; - ForwardToHost = 3; - ForwardToAllGuest = 4; - ForwardToPeer = 5; - ForwardToPeers = 6; - ForwardOnlyServer = 7; - ForwardToAllExistExceptCur = 8; -} diff --git a/proto/FriendBrief.proto b/proto/FriendBrief.proto deleted file mode 100644 index 9b1819222..000000000 --- a/proto/FriendBrief.proto +++ /dev/null @@ -1,31 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "FriendEnterHomeOption.proto"; -import "FriendOnlineState.proto"; -import "HeadImage.proto"; -import "SocialShowAvatarInfo.proto"; - -message FriendBrief { - uint32 uid = 1; - string nickname = 2; - uint32 level = 3; - uint32 worldLevel = 5; - string signature = 6; - FriendOnlineState onlineState = 7; - uint32 param = 8; - bool isMpModeAvailable = 10; - string onlineId = 11; - uint32 lastActiveTime = 12; - uint32 nameCardId = 13; - uint32 mpPlayerNum = 14; - bool isChatNoDisturb = 15; - uint32 chatSequence = 16; - string remarkName = 17; - repeated SocialShowAvatarInfo showAvatarInfoList = 22; - FriendEnterHomeOption friendEnterHomeOption = 23; - HeadImage avatar = 24; - uint32 unk1 = 25; - uint32 unk2 = 27; -} diff --git a/proto/FriendEnterHomeOption.proto b/proto/FriendEnterHomeOption.proto deleted file mode 100644 index 2e3e6af25..000000000 --- a/proto/FriendEnterHomeOption.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum FriendEnterHomeOption { - NeedConfirm = 0; - Refuse = 1; - Direct = 2; -} diff --git a/proto/FriendOnlineState.proto b/proto/FriendOnlineState.proto deleted file mode 100644 index ea1f2ba86..000000000 --- a/proto/FriendOnlineState.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum FriendOnlineState { - FRIEND_DISCONNECT = 0; - FRIEND_ONLINE = 1; -} diff --git a/proto/Furniture.proto b/proto/Furniture.proto deleted file mode 100644 index dc4a2a383..000000000 --- a/proto/Furniture.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message Furniture { - uint32 count = 1; -} diff --git a/proto/GachaInfo.proto b/proto/GachaInfo.proto deleted file mode 100644 index 5399ab709..000000000 --- a/proto/GachaInfo.proto +++ /dev/null @@ -1,29 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "GachaUpInfo.proto"; - -message GachaInfo { - uint32 gachaType = 1; - uint32 scheduleId = 2; - uint32 beginTime = 3; - uint32 endTime = 4; - uint32 costItemId = 5; - uint32 costItemNum = 6; - string gachaPrefabPath = 7; - string gachaProbUrl = 8; - string gachaRecordUrl = 9; - string gachaPreviewPrefabPath = 10; - uint32 tenCostItemId = 11; - uint32 tenCostItemNum = 12; - uint32 leftGachaTimes = 13; - uint32 gachaTimesLimit = 14; - uint32 gachaSortId = 15; - string gachaProbUrlOversea = 16; - string gachaRecordUrlOversea = 17; - repeated GachaUpInfo gachaUpInfoList = 18; - string gachaTitlePath = 19; - repeated uint32 mainNameId = 20; - repeated uint32 subNameId = 21; -} diff --git a/proto/GachaItem.proto b/proto/GachaItem.proto deleted file mode 100644 index 7b39a9905..000000000 --- a/proto/GachaItem.proto +++ /dev/null @@ -1,14 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "GachaTransferItem.proto"; -import "ItemParam.proto"; - -message GachaItem { - ItemParam gachaItem = 1; - repeated GachaTransferItem transferItems = 2; - bool isFlashCard = 3; - bool isGachaItemNew = 4; - repeated ItemParam tokenItemList = 5; -} diff --git a/proto/GachaTransferItem.proto b/proto/GachaTransferItem.proto deleted file mode 100644 index 715339da6..000000000 --- a/proto/GachaTransferItem.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ItemParam.proto"; - -message GachaTransferItem { - ItemParam item = 1; - bool isTransferItemNew = 2; -} diff --git a/proto/GachaUpInfo.proto b/proto/GachaUpInfo.proto deleted file mode 100644 index df195cf56..000000000 --- a/proto/GachaUpInfo.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message GachaUpInfo { - uint32 itemParentType = 1; - repeated uint32 itemIdList = 2; -} diff --git a/proto/GadgetBornType.proto b/proto/GadgetBornType.proto deleted file mode 100644 index beddb854a..000000000 --- a/proto/GadgetBornType.proto +++ /dev/null @@ -1,13 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum GadgetBornType { - GadgetBornNone = 0; - GadgetBornInAir = 1; - GadgetBornPlayer = 2; - GadgetBornMonsterHit = 3; - GadgetBornMonsterDie = 4; - GadgetBornGadget = 5; - GadgetBornGround = 6; -} diff --git a/proto/GadgetClientParam.proto b/proto/GadgetClientParam.proto deleted file mode 100644 index 546ef56c6..000000000 --- a/proto/GadgetClientParam.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message GadgetClientParam { - uint32 campId = 1; - uint32 campType = 2; - uint64 guid = 3; - uint32 ownerEntityId = 4; - uint32 targetEntityId = 5; - bool asyncLoad = 6; -} diff --git a/proto/GadgetCrucibleInfo.proto b/proto/GadgetCrucibleInfo.proto deleted file mode 100644 index 766e4556e..000000000 --- a/proto/GadgetCrucibleInfo.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message GadgetCrucibleInfo { - -} diff --git a/proto/GadgetInteractReq.proto b/proto/GadgetInteractReq.proto deleted file mode 100644 index fb3df4283..000000000 --- a/proto/GadgetInteractReq.proto +++ /dev/null @@ -1,14 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "InterOpType.proto"; -import "ResinCostType.proto"; - -message GadgetInteractReq { - uint32 gadgetEntityId = 1; - InterOpType opType = 2; - uint32 gadgetId = 3; - bool isUseCondenseResin = 4; - ResinCostType resinCostType = 5; -} diff --git a/proto/GadgetInteractRsp.proto b/proto/GadgetInteractRsp.proto deleted file mode 100644 index c08161b72..000000000 --- a/proto/GadgetInteractRsp.proto +++ /dev/null @@ -1,14 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "InterOpType.proto"; -import "InteractType.proto"; - -message GadgetInteractRsp { - int32 retcode = 1; - uint32 gadgetEntityId = 2; - InteractType interactType = 3; - InterOpType opType = 4; - uint32 gadgetId = 5; -} diff --git a/proto/GadgetPlayInfo.proto b/proto/GadgetPlayInfo.proto deleted file mode 100644 index 28fe9a79a..000000000 --- a/proto/GadgetPlayInfo.proto +++ /dev/null @@ -1,17 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "GadgetCrucibleInfo.proto"; - -message GadgetPlayInfo { - uint32 playType = 1; - uint32 duration = 2; - repeated uint32 progressStageList = 3; - uint32 startCd = 4; - uint32 startTime = 5; - uint32 progress = 6; - oneof playInfo { - GadgetCrucibleInfo crucibleInfo = 21; - } -} diff --git a/proto/GetActivityInfoRsp.proto b/proto/GetActivityInfoRsp.proto deleted file mode 100644 index e44903a4f..000000000 --- a/proto/GetActivityInfoRsp.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ActivityInfo.proto"; - -message GetActivityInfoRsp { - int32 retcode = 1; - repeated ActivityInfo activityInfoList = 2; - repeated uint32 activatedSaleIdList = 3; -} diff --git a/proto/GetAllUnlockNameCardRsp.proto b/proto/GetAllUnlockNameCardRsp.proto deleted file mode 100644 index 1a9335085..000000000 --- a/proto/GetAllUnlockNameCardRsp.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message GetAllUnlockNameCardRsp { - int32 retcode = 1; - repeated uint32 nameCardList = 2; -} diff --git a/proto/GetAuthkeyReq.proto b/proto/GetAuthkeyReq.proto deleted file mode 100644 index f4c212c23..000000000 --- a/proto/GetAuthkeyReq.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message GetAuthkeyReq { - string authAppid = 1; - uint32 signType = 2; - uint32 authkeyVer = 3; -} diff --git a/proto/GetAuthkeyRsp.proto b/proto/GetAuthkeyRsp.proto deleted file mode 100644 index 584251a11..000000000 --- a/proto/GetAuthkeyRsp.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message GetAuthkeyRsp { - int32 retcode = 1; - string authkey = 2; - string authAppid = 3; - uint32 signType = 4; - uint32 authkeyVer = 5; - string gameBiz = 6; -} diff --git a/proto/GetGachaInfoRsp.proto b/proto/GetGachaInfoRsp.proto deleted file mode 100644 index c275f5666..000000000 --- a/proto/GetGachaInfoRsp.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "GachaInfo.proto"; - -message GetGachaInfoRsp { - int32 retcode = 1; - repeated GachaInfo gachaInfoList = 2; - uint32 gachaRandom = 3; -} diff --git a/proto/GetPlayerAskFriendListRsp.proto b/proto/GetPlayerAskFriendListRsp.proto deleted file mode 100644 index c783f380f..000000000 --- a/proto/GetPlayerAskFriendListRsp.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "FriendBrief.proto"; - -message GetPlayerAskFriendListRsp { - int32 retcode = 1; - repeated FriendBrief askFriendList = 2; -} diff --git a/proto/GetPlayerBlacklistRsp.proto b/proto/GetPlayerBlacklistRsp.proto deleted file mode 100644 index 979e983fb..000000000 --- a/proto/GetPlayerBlacklistRsp.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "FriendBrief.proto"; - -message GetPlayerBlacklistRsp { - int32 retcode = 1; - repeated FriendBrief blacklist = 2; -} diff --git a/proto/GetPlayerFriendListRsp.proto b/proto/GetPlayerFriendListRsp.proto deleted file mode 100644 index 95f8c5e87..000000000 --- a/proto/GetPlayerFriendListRsp.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "FriendBrief.proto"; - -message GetPlayerFriendListRsp { - int32 retcode = 1; - repeated FriendBrief friendList = 2; - repeated FriendBrief askFriendList = 3; -} diff --git a/proto/GetPlayerSocialDetailReq.proto b/proto/GetPlayerSocialDetailReq.proto deleted file mode 100644 index 490542654..000000000 --- a/proto/GetPlayerSocialDetailReq.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message GetPlayerSocialDetailReq { - uint32 uid = 1; -} diff --git a/proto/GetPlayerSocialDetailRsp.proto b/proto/GetPlayerSocialDetailRsp.proto deleted file mode 100644 index 95d9e893e..000000000 --- a/proto/GetPlayerSocialDetailRsp.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "SocialDetail.proto"; - -message GetPlayerSocialDetailRsp { - int32 retcode = 1; - SocialDetail detailData = 2; -} diff --git a/proto/GetPlayerTokenReq.proto b/proto/GetPlayerTokenReq.proto deleted file mode 100644 index 083a0300b..000000000 --- a/proto/GetPlayerTokenReq.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message GetPlayerTokenReq { - uint32 accountType = 1; - string accountUid = 2; - string accountToken = 3; - uint64 platformType = 7; - uint64 schannelId = 11; -} diff --git a/proto/GetPlayerTokenRsp.proto b/proto/GetPlayerTokenRsp.proto deleted file mode 100644 index 011e50041..000000000 --- a/proto/GetPlayerTokenRsp.proto +++ /dev/null @@ -1,19 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message GetPlayerTokenRsp { - uint32 playerUid = 3; - string accountToken = 4; - int32 accountType = 6; - bool isProficientPlayer = 8; - uint32 gmUid = 10; - uint64 secretKey = 11; - bytes secretKeyBuffer = 12; - uint64 platformType = 13; - uint32 channelId = 16; - string countryCode = 19; - string unk1 = 22; - uint32 unk3 = 23; - string clientIp = 24; -} diff --git a/proto/GetSceneAreaReq.proto b/proto/GetSceneAreaReq.proto deleted file mode 100644 index c66483678..000000000 --- a/proto/GetSceneAreaReq.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message GetSceneAreaReq { - uint32 sceneId = 1; - uint32 belongUid = 2; -} diff --git a/proto/GetSceneAreaRsp.proto b/proto/GetSceneAreaRsp.proto deleted file mode 100644 index b25ae29f3..000000000 --- a/proto/GetSceneAreaRsp.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "CityInfo.proto"; - -message GetSceneAreaRsp { - int32 retcode = 1; - uint32 sceneId = 2; - repeated uint32 areaIdList = 3; - repeated CityInfo cityInfoList = 4; -} diff --git a/proto/GetScenePointReq.proto b/proto/GetScenePointReq.proto deleted file mode 100644 index 42538a417..000000000 --- a/proto/GetScenePointReq.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message GetScenePointReq { - uint32 sceneId = 1; - uint32 belongUid = 2; -} diff --git a/proto/GetScenePointRsp.proto b/proto/GetScenePointRsp.proto deleted file mode 100644 index 7973829c5..000000000 --- a/proto/GetScenePointRsp.proto +++ /dev/null @@ -1,16 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message GetScenePointRsp { - int32 retcode = 1; - uint32 sceneId = 2; - repeated uint32 unlockedPointList = 3; - uint32 belongUid = 4; - repeated uint32 unlockAreaList = 5; - repeated uint32 lockedPointList = 6; - repeated uint32 toBeExploreDungeonEntryList = 7; - repeated uint32 notExploredDungeonEntryList = 8; - repeated uint32 groupUnlimitPointList = 9; - repeated uint32 notInteractDungeonEntryList = 10; -} diff --git a/proto/GetShopReq.proto b/proto/GetShopReq.proto deleted file mode 100644 index 298e6c065..000000000 --- a/proto/GetShopReq.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message GetShopReq { - uint32 shopType = 1; -} diff --git a/proto/GetShopRsp.proto b/proto/GetShopRsp.proto deleted file mode 100644 index e7295dcdb..000000000 --- a/proto/GetShopRsp.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "Shop.proto"; - -message GetShopRsp { - int32 retcode = 1; - Shop shop = 2; -} diff --git a/proto/GetShopmallDataRsp.proto b/proto/GetShopmallDataRsp.proto deleted file mode 100644 index 6db6d68d4..000000000 --- a/proto/GetShopmallDataRsp.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message GetShopmallDataRsp { - int32 retcode = 1; - repeated uint32 shopTypeList = 2; -} diff --git a/proto/GetWorldMpInfoRsp.proto b/proto/GetWorldMpInfoRsp.proto deleted file mode 100644 index c4bebe725..000000000 --- a/proto/GetWorldMpInfoRsp.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message GetWorldMpInfoRsp { - int32 retcode = 1; - bool isInMpMode = 2; - uint32 quitMpValidTime = 3; -} diff --git a/proto/H5ActivityIdsNotify.proto b/proto/H5ActivityIdsNotify.proto deleted file mode 100644 index 59521ed66..000000000 --- a/proto/H5ActivityIdsNotify.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message H5ActivityIdsNotify { - map h5ActivityMap = 1; -} diff --git a/proto/HeadImage.proto b/proto/HeadImage.proto deleted file mode 100644 index 0aa6d697b..000000000 --- a/proto/HeadImage.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message HeadImage { - uint32 avatarId = 1; -} diff --git a/proto/HitColliderType.proto b/proto/HitColliderType.proto deleted file mode 100644 index e06448729..000000000 --- a/proto/HitColliderType.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum HitColliderType { - HitColliderInvalid = 0; - HitColliderHitBox = 1; - HitColliderWetHitBox = 2; - HitColliderHeadBox = 3; -} diff --git a/proto/HitCollision.proto b/proto/HitCollision.proto deleted file mode 100644 index b3766b047..000000000 --- a/proto/HitCollision.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "HitColliderType.proto"; -import "Vector.proto"; - -message HitCollision { - HitColliderType hitColliderType = 1; - int32 hitBoxIndex = 2; - Vector hitPoint = 3; - Vector hitDir = 4; - float attackeeHitForceAngle = 5; - float attackeeHitEntityAngle = 6; -} diff --git a/proto/HostPlayerNotify.proto b/proto/HostPlayerNotify.proto deleted file mode 100644 index 2659edc40..000000000 --- a/proto/HostPlayerNotify.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message HostPlayerNotify { - uint32 hostUid = 1; - uint32 hostPeerId = 2; -} diff --git a/proto/InterOpType.proto b/proto/InterOpType.proto deleted file mode 100644 index 9ccecdb6f..000000000 --- a/proto/InterOpType.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum InterOpType { - InterOpFinish = 0; - InterOpStart = 1; -} diff --git a/proto/InteractType.proto b/proto/InteractType.proto deleted file mode 100644 index 6883ad361..000000000 --- a/proto/InteractType.proto +++ /dev/null @@ -1,17 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum InteractType { - InteractNone = 0; - InteractPickItem = 1; - InteractGather = 2; - InteractOpenChest = 3; - InteractOpenStatue = 4; - InteractConsum = 5; - InteractMpPlayReward = 6; - InteractView = 7; - InteractGeneralReward = 8; - InteractMiracleRing = 9; - InteractFoundation = 10; -} diff --git a/proto/Item.proto b/proto/Item.proto deleted file mode 100644 index f0857bebd..000000000 --- a/proto/Item.proto +++ /dev/null @@ -1,17 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "Equip.proto"; -import "Furniture.proto"; -import "Material.proto"; - -message Item { - uint32 itemId = 1; - uint64 guid = 2; - oneof detail { - Material material = 5; - Equip equip = 6; - Furniture furniture = 7; - } -} diff --git a/proto/ItemAddHintNotify.proto b/proto/ItemAddHintNotify.proto deleted file mode 100644 index ea4db2f14..000000000 --- a/proto/ItemAddHintNotify.proto +++ /dev/null @@ -1,16 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ItemHint.proto"; -import "Vector.proto"; - -message ItemAddHintNotify { - repeated ItemHint itemList = 1; - Vector position = 2; - bool isPositionValid = 3; - uint32 reason = 4; - uint32 questId = 5; - bool isTransferedFromAvatarCard = 6; - repeated ItemHint overflowTransformedItemList = 7; -} diff --git a/proto/ItemExceedLimitNotify.proto b/proto/ItemExceedLimitNotify.proto deleted file mode 100644 index d294ba8b9..000000000 --- a/proto/ItemExceedLimitNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ItemExceedLimitNotify { - bool isMaterialExceedLimit = 1; - bool isWeaponExceedLimit = 2; - bool isReliquaryExceedLimit = 3; - repeated uint32 itemIdList = 4; -} diff --git a/proto/ItemGivingReq.proto b/proto/ItemGivingReq.proto deleted file mode 100644 index f09b8c965..000000000 --- a/proto/ItemGivingReq.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ItemParam.proto"; - -message ItemGivingReq { - uint32 givingId = 1; - repeated ItemParam itemParamList = 2; - map itemGuidCountMap = 3; -} diff --git a/proto/ItemGivingRsp.proto b/proto/ItemGivingRsp.proto deleted file mode 100644 index ea3694b78..000000000 --- a/proto/ItemGivingRsp.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ItemGivingRsp { - int32 retcode = 1; - uint32 givingId = 2; -} diff --git a/proto/ItemHint.proto b/proto/ItemHint.proto deleted file mode 100644 index 2d036175e..000000000 --- a/proto/ItemHint.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ItemHint { - uint32 itemId = 1; - uint32 count = 2; - bool isNew = 3; -} diff --git a/proto/ItemParam.proto b/proto/ItemParam.proto deleted file mode 100644 index 2e48028b3..000000000 --- a/proto/ItemParam.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ItemParam { - uint32 itemId = 1; - uint32 count = 2; -} diff --git a/proto/LifeStateChangeNotify.proto b/proto/LifeStateChangeNotify.proto deleted file mode 100644 index 4f16e936c..000000000 --- a/proto/LifeStateChangeNotify.proto +++ /dev/null @@ -1,14 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "PlayerDieType.proto"; - -message LifeStateChangeNotify { - uint32 entityId = 1; - uint32 lifeState = 2; - uint32 sourceEntityId = 3; - string attackTag = 4; - PlayerDieType dieType = 5; - uint32 moveReliableSeq = 6; -} diff --git a/proto/MPLevelEntityInfo.proto b/proto/MPLevelEntityInfo.proto deleted file mode 100644 index 810e1d372..000000000 --- a/proto/MPLevelEntityInfo.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AbilitySyncStateInfo.proto"; - -message MPLevelEntityInfo { - uint32 entityId = 1; - uint32 authorityPeerId = 2; - AbilitySyncStateInfo abilityInfo = 3; -} diff --git a/proto/MapMarkFromType.proto b/proto/MapMarkFromType.proto deleted file mode 100644 index 5d31e1af5..000000000 --- a/proto/MapMarkFromType.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum MapMarkFromType { - None = 0; - MonsterType = 1; - QuestType = 2; -} diff --git a/proto/MapMarkPoint.proto b/proto/MapMarkPoint.proto deleted file mode 100644 index fb244db4e..000000000 --- a/proto/MapMarkPoint.proto +++ /dev/null @@ -1,17 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "MapMarkFromType.proto"; -import "MapMarkPointType.proto"; -import "Vector.proto"; - -message MapMarkPoint { - uint32 sceneId = 1; - string name = 2; - Vector pos = 3; - MapMarkPointType pointType = 4; - uint32 monsterId = 5; - MapMarkFromType fromType = 6; - uint32 questId = 7; -} diff --git a/proto/MapMarkPointType.proto b/proto/MapMarkPointType.proto deleted file mode 100644 index 986d30876..000000000 --- a/proto/MapMarkPointType.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum MapMarkPointType { - Npc = 0; - Quest = 1; - Special = 2; - Mine = 3; - Collection = 4; - Monster = 5; -} diff --git a/proto/MarkMapReq.proto b/proto/MarkMapReq.proto deleted file mode 100644 index 2e57ebb55..000000000 --- a/proto/MarkMapReq.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "MapMarkPoint.proto"; -import "Operation.proto"; - -message MarkMapReq { - Operation op = 1; - MapMarkPoint old = 2; - MapMarkPoint mark = 3; -} diff --git a/proto/MassivePropParam.proto b/proto/MassivePropParam.proto deleted file mode 100644 index bd30d4597..000000000 --- a/proto/MassivePropParam.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message MassivePropParam { - int32 elementReactionType = 1; - uint32 casterId = 2; - repeated float paramList = 3; - uint32 syncFlag = 4; -} diff --git a/proto/MassivePropSyncInfo.proto b/proto/MassivePropSyncInfo.proto deleted file mode 100644 index 276f7a380..000000000 --- a/proto/MassivePropSyncInfo.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "MassivePropParam.proto"; - -message MassivePropSyncInfo { - int64 id = 1; - map propMap = 2; -} diff --git a/proto/Material.proto b/proto/Material.proto deleted file mode 100644 index 4fd76bc51..000000000 --- a/proto/Material.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "MaterialDeleteInfo.proto"; - -message Material { - uint32 count = 1; - MaterialDeleteInfo deleteInfo = 2; -} diff --git a/proto/MaterialDeleteInfo.proto b/proto/MaterialDeleteInfo.proto deleted file mode 100644 index 9e5a310c0..000000000 --- a/proto/MaterialDeleteInfo.proto +++ /dev/null @@ -1,16 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "CountDownDelete.proto"; -import "DateTimeDelete.proto"; -import "DelayWeekCountDownDelete.proto"; - -message MaterialDeleteInfo { - bool hasDeleteConfig = 1; - oneof deleteInfo { - CountDownDelete countDownDelete = 2; - DateTimeDelete dateDelete = 3; - DelayWeekCountDownDelete delayWeekCountDownDelete = 4; - } -} diff --git a/proto/MaterialInfo.proto b/proto/MaterialInfo.proto deleted file mode 100644 index ea8701dca..000000000 --- a/proto/MaterialInfo.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message MaterialInfo { - uint64 guid = 1; - uint32 count = 2; -} diff --git a/proto/MathQuaternion.proto b/proto/MathQuaternion.proto deleted file mode 100644 index a3689667a..000000000 --- a/proto/MathQuaternion.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message MathQuaternion { - float x = 1; - float y = 2; - float z = 3; - float w = 4; -} diff --git a/proto/ModifierDurability.proto b/proto/ModifierDurability.proto deleted file mode 100644 index ed8d9e76a..000000000 --- a/proto/ModifierDurability.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ModifierDurability { - float reduceRatio = 1; - float remainingDurability = 2; -} diff --git a/proto/MonsterBornType.proto b/proto/MonsterBornType.proto deleted file mode 100644 index 31aade84c..000000000 --- a/proto/MonsterBornType.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum MonsterBornType { - MonsterBornNone = 0; - MonsterBornDefault = 1; - MonsterBornRandom = 2; -} diff --git a/proto/MonsterRoute.proto b/proto/MonsterRoute.proto deleted file mode 100644 index ac98be7ce..000000000 --- a/proto/MonsterRoute.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "RoutePoint.proto"; - -message MonsterRoute { - RoutePoint routePoints = 1; - uint32 speedLevel = 2; - uint32 routeType = 3; - float arriveRange = 4; -} diff --git a/proto/MotionInfo.proto b/proto/MotionInfo.proto deleted file mode 100644 index faddc14dc..000000000 --- a/proto/MotionInfo.proto +++ /dev/null @@ -1,18 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "MotionState.proto"; -import "Vector.proto"; - -message MotionInfo { - Vector pos = 1; - Vector rot = 2; - Vector speed = 3; - MotionState state = 4; - repeated Vector params = 5; - Vector refPos = 6; - uint32 refId = 7; - uint32 sceneTime = 8; - uint32 intervalVelocity = 9; -} diff --git a/proto/MotionState.proto b/proto/MotionState.proto deleted file mode 100644 index 91102eedf..000000000 --- a/proto/MotionState.proto +++ /dev/null @@ -1,53 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum MotionState { - MotionNone = 0; - MotionReset = 1; - MotionStandby = 2; - MotionStandbyMove = 3; - MotionWalk = 4; - MotionRun = 5; - MotionDash = 6; - MotionClimb = 7; - MotionClimbJump = 8; - MotionStandbyToClimb = 9; - MotionFight = 10; - MotionJump = 11; - MotionDrop = 12; - MotionFly = 13; - MotionSwimMove = 14; - MotionSwimIdle = 15; - MotionSwimDash = 16; - MotionSwimJump = 17; - MotionSlip = 18; - MotionGoUpstairs = 19; - MotionFallOnGround = 20; - MotionJumpUpWallForStandby = 21; - MotionJumpOffWall = 22; - MotionPoweredFly = 23; - MotionLadderIdle = 24; - MotionLadderMove = 25; - MotionLadderSlip = 26; - MotionStandbyToLadder = 27; - MotionLadderToStandby = 28; - MotionDangerStandby = 29; - MotionDangerStandbyMove = 30; - MotionDangerWalk = 31; - MotionDangerRun = 32; - MotionDangerDash = 33; - MotionCrouchIdle = 34; - MotionCrouchMove = 35; - MotionCrouchRoll = 36; - MotionNotify = 37; - MotionLandSpeed = 38; - MotionMoveFailAck = 39; - MotionWaterfall = 40; - MotionDashBeforeShake = 41; - MotionSitIdle = 42; - MotionForceSetPos = 43; - MotionQuestForceDrag = 44; - MotionFollowRoute = 45; - MotionNum = 46; -} diff --git a/proto/MovingPlatformType.proto b/proto/MovingPlatformType.proto deleted file mode 100644 index f3861d117..000000000 --- a/proto/MovingPlatformType.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message MovingPlatformType { - -} diff --git a/proto/MpSettingType.proto b/proto/MpSettingType.proto deleted file mode 100644 index f24083b21..000000000 --- a/proto/MpSettingType.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum MpSettingType { - MpSettingNoEnter = 0; - MpSettingEnterFreely = 1; - MpSettingEnterAfterApply = 2; -} diff --git a/proto/OnlinePlayerInfo.proto b/proto/OnlinePlayerInfo.proto deleted file mode 100644 index 76ed24a06..000000000 --- a/proto/OnlinePlayerInfo.proto +++ /dev/null @@ -1,20 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "HeadImage.proto"; -import "MpSettingType.proto"; - -message OnlinePlayerInfo { - uint32 uid = 1; - string nickname = 2; - uint32 playerLevel = 3; - MpSettingType mpSettingType = 5; - uint32 curPlayerNumInWorld = 6; - uint32 worldLevel = 7; - string onlineId = 8; - uint32 nameCardId = 9; - repeated uint32 blacklistUidList = 10; - string signature = 11; - HeadImage avatar = 12; -} diff --git a/proto/OpenStateUpdateNotify.proto b/proto/OpenStateUpdateNotify.proto deleted file mode 100644 index 91d1d2f11..000000000 --- a/proto/OpenStateUpdateNotify.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message OpenStateUpdateNotify { - map openStateMap = 1; -} diff --git a/proto/Operation.proto b/proto/Operation.proto deleted file mode 100644 index c48819bd5..000000000 --- a/proto/Operation.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum Operation { - Add = 0; - Mod = 1; - Del = 2; - Get = 3; -} diff --git a/proto/PacketHead.proto b/proto/PacketHead.proto deleted file mode 100644 index a9e4e5201..000000000 --- a/proto/PacketHead.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message PacketHead { - uint32 clientSequenceId = 3; - uint64 timestamp = 6; -} diff --git a/proto/PingReq.proto b/proto/PingReq.proto deleted file mode 100644 index 231ece4b1..000000000 --- a/proto/PingReq.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message PingReq { - int32 seq = 1; - int32 clientTime = 2; -} diff --git a/proto/PingRsp.proto b/proto/PingRsp.proto deleted file mode 100644 index 3efd49701..000000000 --- a/proto/PingRsp.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message PingRsp { - int32 retcode = 1; - uint32 seq = 2; - uint32 clientTime = 3; -} diff --git a/proto/PlatformInfo.proto b/proto/PlatformInfo.proto deleted file mode 100644 index c78b36bfe..000000000 --- a/proto/PlatformInfo.proto +++ /dev/null @@ -1,25 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "MathQuaternion.proto"; -import "MovingPlatformType.proto"; -import "Route.proto"; -import "Vector.proto"; - -message PlatformInfo { - uint32 routeId = 1; - int32 startIndex = 2; - uint32 startRouteTime = 3; - uint32 startSceneTime = 4; - Vector startPos = 7; - bool isStarted = 8; - MathQuaternion startRot = 9; - uint32 stopSceneTime = 10; - Vector posOffset = 11; - MathQuaternion rotOffset = 12; - MovingPlatformType movingPlatformType = 13; - bool isActive = 14; - Route route = 15; - uint32 pointId = 16; -} diff --git a/proto/PlayerApplyEnterMpNotify.proto b/proto/PlayerApplyEnterMpNotify.proto deleted file mode 100644 index c5b3cc1e9..000000000 --- a/proto/PlayerApplyEnterMpNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "OnlinePlayerInfo.proto"; - -message PlayerApplyEnterMpNotify { - OnlinePlayerInfo srcPlayerInfo = 1; - uint32 srcAppId = 2; -} diff --git a/proto/PlayerApplyEnterMpReason.proto b/proto/PlayerApplyEnterMpReason.proto deleted file mode 100644 index e305e435f..000000000 --- a/proto/PlayerApplyEnterMpReason.proto +++ /dev/null @@ -1,19 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum PlayerApplyEnterMpReason { - PlayerJudge = 0; - SceneCannotEnter = 1; - PlayerCannotEnterMp = 2; - SystemJudge = 3; - AllowEnterPlayerFull = 4; - WorldLevelLowerThanHost = 5; - HostInMatch = 6; - PlayerInBlacklist = 7; - PsPlayerNotAcceptOthers = 8; - HostIsBlocked = 9; - OtherDataVersionNotLatest = 10; - DataVersionNotLatest = 11; - PlayerNotInPlayerWorld = 12; -} diff --git a/proto/PlayerApplyEnterMpReq.proto b/proto/PlayerApplyEnterMpReq.proto deleted file mode 100644 index b4fc37221..000000000 --- a/proto/PlayerApplyEnterMpReq.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message PlayerApplyEnterMpReq { - uint32 targetUid = 1; -} diff --git a/proto/PlayerApplyEnterMpResultNotify.proto b/proto/PlayerApplyEnterMpResultNotify.proto deleted file mode 100644 index 2befeaf2e..000000000 --- a/proto/PlayerApplyEnterMpResultNotify.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "PlayerApplyEnterMpReason.proto"; - -message PlayerApplyEnterMpResultNotify { - uint32 targetUid = 1; - bool isAgreed = 2; - PlayerApplyEnterMpReason reason = 3; - string targetNickname = 4; -} diff --git a/proto/PlayerApplyEnterMpResultReq.proto b/proto/PlayerApplyEnterMpResultReq.proto deleted file mode 100644 index 6e151c968..000000000 --- a/proto/PlayerApplyEnterMpResultReq.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message PlayerApplyEnterMpResultReq { - uint32 applyUid = 1; - bool isAgreed = 2; -} diff --git a/proto/PlayerApplyEnterMpResultRsp.proto b/proto/PlayerApplyEnterMpResultRsp.proto deleted file mode 100644 index b38555633..000000000 --- a/proto/PlayerApplyEnterMpResultRsp.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message PlayerApplyEnterMpResultRsp { - int32 retcode = 1; - uint32 applyUid = 2; - bool isAgreed = 3; - uint32 param = 4; -} diff --git a/proto/PlayerApplyEnterMpRsp.proto b/proto/PlayerApplyEnterMpRsp.proto deleted file mode 100644 index 29148a025..000000000 --- a/proto/PlayerApplyEnterMpRsp.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message PlayerApplyEnterMpRsp { - int32 retcode = 1; - uint32 targetUid = 2; - uint32 param = 3; -} diff --git a/proto/PlayerChatNotify.proto b/proto/PlayerChatNotify.proto deleted file mode 100644 index e6844e8f4..000000000 --- a/proto/PlayerChatNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ChatInfo.proto"; - -message PlayerChatNotify { - uint32 channelId = 1; - ChatInfo chatInfo = 2; -} diff --git a/proto/PlayerChatReq.proto b/proto/PlayerChatReq.proto deleted file mode 100644 index 37e37a17d..000000000 --- a/proto/PlayerChatReq.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ChatInfo.proto"; - -message PlayerChatReq { - uint32 channelId = 1; - ChatInfo chatInfo = 2; -} diff --git a/proto/PlayerChatRsp.proto b/proto/PlayerChatRsp.proto deleted file mode 100644 index 01d9b31c1..000000000 --- a/proto/PlayerChatRsp.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message PlayerChatRsp { - int32 retcode = 1; - uint32 chatForbiddenEndtime = 2; -} diff --git a/proto/PlayerDataNotify.proto b/proto/PlayerDataNotify.proto deleted file mode 100644 index 817cc4cb9..000000000 --- a/proto/PlayerDataNotify.proto +++ /dev/null @@ -1,13 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "PropValue.proto"; - -message PlayerDataNotify { - string nickName = 1; - uint64 clientTime = 2; - bool isFirstLoginToday = 3; - uint32 regionId = 4; - map propMap = 6; -} diff --git a/proto/PlayerDieType.proto b/proto/PlayerDieType.proto deleted file mode 100644 index d26a55575..000000000 --- a/proto/PlayerDieType.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum PlayerDieType { - PlayerDieNone = 0; - PlayerDieKillByMonster = 1; - PlayerDieKillByGear = 2; - PlayerDieFall = 3; - PlayerDieDrawn = 4; - PlayerDieAbyss = 5; - PlayerDieGm = 6; - PlayerDieClimateCold = 7; - PlayerDieStormLighting = 8; -} diff --git a/proto/PlayerEnterSceneInfoNotify.proto b/proto/PlayerEnterSceneInfoNotify.proto deleted file mode 100644 index 77e952eca..000000000 --- a/proto/PlayerEnterSceneInfoNotify.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AvatarEnterSceneInfo.proto"; -import "MPLevelEntityInfo.proto"; -import "TeamEnterSceneInfo.proto"; - -message PlayerEnterSceneInfoNotify { - uint32 curAvatarEntityId = 1; - repeated AvatarEnterSceneInfo avatarEnterInfo = 2; - TeamEnterSceneInfo teamEnterInfo = 3; - MPLevelEntityInfo mpLevelEntityInfo = 4; - uint32 enterSceneToken = 5; -} diff --git a/proto/PlayerEnterSceneNotify.proto b/proto/PlayerEnterSceneNotify.proto deleted file mode 100644 index 1302e05a9..000000000 --- a/proto/PlayerEnterSceneNotify.proto +++ /dev/null @@ -1,25 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "EnterType.proto"; -import "Vector.proto"; - -message PlayerEnterSceneNotify { - uint32 sceneId = 1; - Vector pos = 2; - uint64 sceneBeginTime = 3; - EnterType type = 4; - uint32 targetUid = 6; - uint32 prevSceneId = 9; - Vector prevPos = 10; - uint32 dungeonId = 11; - uint32 worldLevel = 12; - uint32 enterSceneToken = 13; - bool isFirstLoginEnterScene = 14; - repeated uint32 sceneTagIdList = 15; - bool isSkipUi = 16; - uint32 enterReason = 17; - uint32 unk1 = 18; - string unk2 = 19; -} diff --git a/proto/PlayerGameTimeNotify.proto b/proto/PlayerGameTimeNotify.proto deleted file mode 100644 index c8292aab0..000000000 --- a/proto/PlayerGameTimeNotify.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message PlayerGameTimeNotify { - uint32 gameTime = 1; - uint32 uid = 2; -} diff --git a/proto/PlayerGetForceQuitBanInfoRsp.proto b/proto/PlayerGetForceQuitBanInfoRsp.proto deleted file mode 100644 index 35de4f448..000000000 --- a/proto/PlayerGetForceQuitBanInfoRsp.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message PlayerGetForceQuitBanInfoRsp { - int32 retcode = 1; - uint32 matchId = 2; - uint32 expireTime = 3; -} diff --git a/proto/PlayerLocationInfo.proto b/proto/PlayerLocationInfo.proto deleted file mode 100644 index 9816560ee..000000000 --- a/proto/PlayerLocationInfo.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "Vector.proto"; - -message PlayerLocationInfo { - uint32 uid = 1; - Vector pos = 2; - Vector rot = 3; -} diff --git a/proto/PlayerLoginReq.proto b/proto/PlayerLoginReq.proto deleted file mode 100644 index 9d206ed5c..000000000 --- a/proto/PlayerLoginReq.proto +++ /dev/null @@ -1,41 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "TrackingIOInfo.proto"; - -message PlayerLoginReq { - string token = 1; - string clientVersion = 2; - string systemVersion = 3; - string deviceName = 4; - string deviceUuid = 5; - uint32 targetUid = 6; - uint64 loginRand = 7; - bool isEditor = 8; - uint32 languageType = 9; - uint32 accountType = 10; - string accountUid = 11; - string platform = 12; - string deviceInfo = 13; - uint32 platformType = 14; - bool isGuest = 15; - uint32 cloudClientIp = 16; - uint32 gmUid = 17; - string checksum = 18; - string onlineId = 19; - uint32 clientToken = 20; - bytes securityCmdReply = 21; - bytes extraBinData = 22; - string cps = 23; - uint32 channelId = 24; - uint32 subChannelId = 25; - string checksumClientVersion = 26; - uint32 tag = 27; - TrackingIOInfo trackingIoInfo = 28; - string countryCode = 29; - uint32 clientDataVersion = 30; - bytes environmentErrorCode = 31; - uint32 targetHomeOwnerUid = 32; - string psnId = 33; -} diff --git a/proto/PlayerLoginRsp.proto b/proto/PlayerLoginRsp.proto deleted file mode 100644 index d11fd44f0..000000000 --- a/proto/PlayerLoginRsp.proto +++ /dev/null @@ -1,41 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "BlockInfo.proto"; -import "FeatureBlockInfo.proto"; -import "ResVersionConfig.proto"; -import "ShortAbilityHashPair.proto"; - -message PlayerLoginRsp { - int32 retcode = 1; - bytes playerData = 2; - bool isNewPlayer = 3; - uint32 targetUid = 4; - uint64 loginRand = 5; - bool isUseAbilityHash = 6; - int32 abilityHashCode = 7; - map abilityHashMap = 8; - uint32 clientDataVersion = 9; - bool isRelogin = 11; - uint32 clientSilenceDataVersion = 13; - string gameBiz = 14; - uint32 playerDataVersion = 15; - string clientMd5 = 16; - string clientSilenceMd5 = 17; - ResVersionConfig resVersionConfig = 20; - map blockInfoMap = 21; - string clientVersionSuffix = 24; - string clientSilenceVersionSuffix = 25; - repeated ShortAbilityHashPair shortAbilityHashMap = 27; - bytes scInfo = 28; - bool isAudit = 29; - bool isScOpen = 30; - string registerCps = 31; - repeated FeatureBlockInfo featureBlockInfoList = 32; - bool isDataNeedRelogin = 33; - string countryCode = 34; - ResVersionConfig nextResVersionConfig = 35; - string nextResourceUrl = 36; - uint32 targetHomeOwnerUid = 37; -} diff --git a/proto/PlayerPropNotify.proto b/proto/PlayerPropNotify.proto deleted file mode 100644 index 7341b4df1..000000000 --- a/proto/PlayerPropNotify.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "PropValue.proto"; - -message PlayerPropNotify { - map propMap = 1; -} diff --git a/proto/PlayerRTTInfo.proto b/proto/PlayerRTTInfo.proto deleted file mode 100644 index 2ed543319..000000000 --- a/proto/PlayerRTTInfo.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message PlayerRTTInfo { - uint32 uid = 1; - uint32 rtt = 2; -} diff --git a/proto/PlayerSetPauseReq.proto b/proto/PlayerSetPauseReq.proto deleted file mode 100644 index 984c2f863..000000000 --- a/proto/PlayerSetPauseReq.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message PlayerSetPauseReq { - bool isPaused = 1; -} diff --git a/proto/PlayerStoreNotify.proto b/proto/PlayerStoreNotify.proto deleted file mode 100644 index 0202dcd93..000000000 --- a/proto/PlayerStoreNotify.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "Item.proto"; -import "StoreType.proto"; - -message PlayerStoreNotify { - StoreType storeType = 1; - repeated Item itemList = 2; - uint32 weightLimit = 3; -} diff --git a/proto/PlayerTimeNotify.proto b/proto/PlayerTimeNotify.proto deleted file mode 100644 index 5085127e8..000000000 --- a/proto/PlayerTimeNotify.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message PlayerTimeNotify { - bool isPaused = 1; - uint64 playerTime = 2; - uint64 serverTime = 3; -} diff --git a/proto/PostEnterSceneRsp.proto b/proto/PostEnterSceneRsp.proto deleted file mode 100644 index ec362f0fa..000000000 --- a/proto/PostEnterSceneRsp.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message PostEnterSceneRsp { - int32 retcode = 1; - uint32 enterSceneToken = 2; -} diff --git a/proto/PrivateChatNotify.proto b/proto/PrivateChatNotify.proto deleted file mode 100644 index 84457efac..000000000 --- a/proto/PrivateChatNotify.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ChatInfo.proto"; - -message PrivateChatNotify { - ChatInfo chatInfo = 1; -} diff --git a/proto/PrivateChatReq.proto b/proto/PrivateChatReq.proto deleted file mode 100644 index 356aee67e..000000000 --- a/proto/PrivateChatReq.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message PrivateChatReq { - uint32 targetUid = 1; - oneof content { - string text = 2; - uint32 icon = 3; - } -} diff --git a/proto/PrivateChatRsp.proto b/proto/PrivateChatRsp.proto deleted file mode 100644 index 09e427ae8..000000000 --- a/proto/PrivateChatRsp.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message PrivateChatRsp { - int32 retcode = 1; - uint32 chatForbiddenEndtime = 2; -} diff --git a/proto/PropChangeReason.proto b/proto/PropChangeReason.proto deleted file mode 100644 index 123b1d6a7..000000000 --- a/proto/PropChangeReason.proto +++ /dev/null @@ -1,20 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum PropChangeReason { - PropChangeNone = 0; - PropChangeStatueRecover = 1; - PropChangeEnergyBall = 2; - PropChangeAbility = 3; - PropChangeLevelup = 4; - PropChangeItem = 5; - PropChangeAvatarCard = 6; - PropChangeCityLevelup = 7; - PropChangeAvatarUpgrade = 8; - PropChangeAvatarPromote = 9; - PropChangePlayerAddExp = 10; - PropChangeFinishQuest = 11; - PropChangeGm = 12; - PropChangeManualAdjustWorldLevel = 13; -} diff --git a/proto/PropPair.proto b/proto/PropPair.proto deleted file mode 100644 index 4a5ac0ee7..000000000 --- a/proto/PropPair.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "PropValue.proto"; - -message PropPair { - uint32 type = 1; - PropValue propValue = 2; -} diff --git a/proto/PropValue.proto b/proto/PropValue.proto deleted file mode 100644 index 6d905517d..000000000 --- a/proto/PropValue.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message PropValue { - uint32 type = 1; - oneof value { - uint32 ival = 2; - float fval = 3; - } - uint32 val = 4; -} diff --git a/proto/ProtEntityType.proto b/proto/ProtEntityType.proto deleted file mode 100644 index 9512f7d35..000000000 --- a/proto/ProtEntityType.proto +++ /dev/null @@ -1,21 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum ProtEntityType { - ProtEntityNone = 0; - ProtEntityAvatar = 1; - ProtEntityMonster = 2; - ProtEntityNpc = 3; - ProtEntityGadget = 4; - ProtEntityRegion = 5; - ProtEntityWeapon = 6; - ProtEntityWeather = 7; - ProtEntityScene = 8; - ProtEntityTeam = 9; - ProtEntityMassiveEntity = 10; - ProtEntityMpLevel = 11; - ProtEntityPlayTeamEntity = 12; - ProtEntityEyePoint = 13; - ProtEntityMax = 14; -} diff --git a/proto/ProudSkillChangeNotify.proto b/proto/ProudSkillChangeNotify.proto deleted file mode 100644 index fa5ca0bf5..000000000 --- a/proto/ProudSkillChangeNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ProudSkillChangeNotify { - uint64 avatarGuid = 1; - uint32 entityId = 2; - uint32 skillDepotId = 3; - repeated uint32 proudSkillList = 4; -} diff --git a/proto/ProudSkillExtraLevelNotify.proto b/proto/ProudSkillExtraLevelNotify.proto deleted file mode 100644 index 4d612d33b..000000000 --- a/proto/ProudSkillExtraLevelNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ProudSkillExtraLevelNotify { - uint64 avatarGuid = 1; - uint32 talentType = 2; - uint32 talentIndex = 3; - uint32 extraLevel = 4; -} diff --git a/proto/PullPrivateChatReq.proto b/proto/PullPrivateChatReq.proto deleted file mode 100644 index e7d48092b..000000000 --- a/proto/PullPrivateChatReq.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message PullPrivateChatReq { - uint32 targetUid = 1; - uint32 fromSequence = 2; - uint32 pullNum = 3; -} diff --git a/proto/PullPrivateChatRsp.proto b/proto/PullPrivateChatRsp.proto deleted file mode 100644 index 076ef87cf..000000000 --- a/proto/PullPrivateChatRsp.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ChatInfo.proto"; - -message PullPrivateChatRsp { - int32 retcode = 1; - repeated ChatInfo chatInfo = 2; -} diff --git a/proto/PullRecentChatRsp.proto b/proto/PullRecentChatRsp.proto deleted file mode 100644 index 1aafd001d..000000000 --- a/proto/PullRecentChatRsp.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ChatInfo.proto"; - -message PullRecentChatRsp { - int32 retcode = 1; - repeated ChatInfo chatInfo = 2; -} diff --git a/proto/QueryCurrRegionHttpRsp.proto b/proto/QueryCurrRegionHttpRsp.proto deleted file mode 100644 index 58c2c8be6..000000000 --- a/proto/QueryCurrRegionHttpRsp.proto +++ /dev/null @@ -1,14 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "RegionInfo.proto"; - -message QueryCurrRegionHttpRsp { - int32 retcode = 1; - string message = 2; - RegionInfo regionInfo = 3; - bytes clientSecretKey = 11; - bytes regionCustomConfigEncrypted = 12; - bytes clientRegionCustomConfigEncrypted = 13; -} diff --git a/proto/QueryRegionListHttpRsp.proto b/proto/QueryRegionListHttpRsp.proto deleted file mode 100644 index 934634f5d..000000000 --- a/proto/QueryRegionListHttpRsp.proto +++ /dev/null @@ -1,13 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "RegionSimpleInfo.proto"; - -message QueryRegionListHttpRsp { - uint32 retcode = 1; - repeated RegionSimpleInfo servers = 2; - bytes clientSecretKey = 5; - bytes clientCustomConfigEncrypted = 6; - bool enableLoginPc = 7; -} diff --git a/proto/RegionInfo.proto b/proto/RegionInfo.proto deleted file mode 100644 index 6cad3cb23..000000000 --- a/proto/RegionInfo.proto +++ /dev/null @@ -1,29 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ResVersionConfig.proto"; - -message RegionInfo { - string ip = 1; - int32 port = 2; - string payCallbackUrl = 3; - string areaType = 7; - string resourceUrl = 8; - string dataUrl = 9; - string feedbackUrl = 10; - string bulletinUrl = 11; - string version = 12; - int32 clientDataVersion = 14; - int32 clientSilenceDataVersion = 18; - string clientDataMd5 = 19; - string clientSilenceDataMd5 = 20; - ResVersionConfig config = 22; - bytes secretKey = 23; - string communityUrl = 24; - string clientVersionSuffix = 26; - string clientSilenceVersionSuffix = 27; - string accountUrl = 31; - string cdkeyUrl = 32; - string privacyUrl = 33; - } diff --git a/proto/RegionSimpleInfo.proto b/proto/RegionSimpleInfo.proto deleted file mode 100644 index 093818fbc..000000000 --- a/proto/RegionSimpleInfo.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message RegionSimpleInfo { - string name = 1; - string title = 2; - string type = 3; - string dispatchUrl = 4; -} diff --git a/proto/Reliquary.proto b/proto/Reliquary.proto deleted file mode 100644 index 2801a5e42..000000000 --- a/proto/Reliquary.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message Reliquary { - uint32 level = 1; - uint32 exp = 2; - uint32 promoteLevel = 3; - uint32 mainPropId = 4; - repeated uint32 appendPropIdList = 5; -} diff --git a/proto/ReliquaryPromoteReq.proto b/proto/ReliquaryPromoteReq.proto deleted file mode 100644 index 1841ed866..000000000 --- a/proto/ReliquaryPromoteReq.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ReliquaryPromoteReq { - uint64 targetGuid = 1; - uint64 itemGuid = 2; -} diff --git a/proto/ReliquaryPromoteRsp.proto b/proto/ReliquaryPromoteRsp.proto deleted file mode 100644 index 053b51e83..000000000 --- a/proto/ReliquaryPromoteRsp.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ReliquaryPromoteRsp { - int32 retcode = 1; - uint64 targetReliquaryGuid = 2; - uint32 oldPromoteLevel = 3; - uint32 curPromoteLevel = 4; - repeated uint32 oldAppendPropList = 5; - repeated uint32 curAppendPropList = 6; -} diff --git a/proto/ReliquaryUpgradeReq.proto b/proto/ReliquaryUpgradeReq.proto deleted file mode 100644 index 468eeb98a..000000000 --- a/proto/ReliquaryUpgradeReq.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ItemParam.proto"; - -message ReliquaryUpgradeReq { - uint64 targetReliquaryGuid = 1; - repeated uint64 foodReliquaryGuidList = 2; - repeated ItemParam itemParamList = 3; -} diff --git a/proto/ReliquaryUpgradeRsp.proto b/proto/ReliquaryUpgradeRsp.proto deleted file mode 100644 index 4bcdbed46..000000000 --- a/proto/ReliquaryUpgradeRsp.proto +++ /dev/null @@ -1,13 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ReliquaryUpgradeRsp { - int32 retcode = 1; - uint64 targetReliquaryGuid = 2; - uint32 oldLevel = 3; - uint32 curLevel = 4; - uint32 powerUpRate = 5; - repeated uint32 oldAppendPropList = 6; - repeated uint32 curAppendPropList = 7; -} diff --git a/proto/ResVersionConfig.proto b/proto/ResVersionConfig.proto deleted file mode 100644 index 71c053f3f..000000000 --- a/proto/ResVersionConfig.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ResVersionConfig { - int32 version = 1; - string md5 = 2; - string size = 3; - string versionSuffix = 4; - string branch = 5; -} diff --git a/proto/ResinCard.proto b/proto/ResinCard.proto deleted file mode 100644 index 66db1bad8..000000000 --- a/proto/ResinCard.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ItemParam.proto"; - -message ResinCard { - repeated ItemParam baseItemList = 1; - repeated ItemParam perDayItemList = 2; -} diff --git a/proto/ResinChangeNotify.proto b/proto/ResinChangeNotify.proto deleted file mode 100644 index bf938b424..000000000 --- a/proto/ResinChangeNotify.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ResinChangeNotify { - int32 currValue = 1; - int32 nextAddTimestamp = 2; - int32 curBuyCount = 3; -} diff --git a/proto/ResinCostType.proto b/proto/ResinCostType.proto deleted file mode 100644 index 1c9ac3ff3..000000000 --- a/proto/ResinCostType.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum ResinCostType { - CostNone = 0; - CostNormal = 1; - CostCondense = 2; - CostReunionPrivilege = 3; - CostOpActivity = 4; - CostMaterial = 5; -} diff --git a/proto/Route.proto b/proto/Route.proto deleted file mode 100644 index 3394a9970..000000000 --- a/proto/Route.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "RoutePoint.proto"; - -message Route { - repeated RoutePoint routePoints = 1; - uint32 routeType = 2; -} diff --git a/proto/RoutePoint.proto b/proto/RoutePoint.proto deleted file mode 100644 index f4cb198be..000000000 --- a/proto/RoutePoint.proto +++ /dev/null @@ -1,19 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "MathQuaternion.proto"; -import "Vector.proto"; - -message RoutePoint { - Vector position = 1; - oneof moveParams { - float velocity = 11; - float time = 12; - } - oneof rotateParams { - Vector rotation = 21; - MathQuaternion rotationSpeed = 22; - MathQuaternion axisSpeed = 23; - } -} diff --git a/proto/SceneAreaWeatherNotify.proto b/proto/SceneAreaWeatherNotify.proto deleted file mode 100644 index 4d26db635..000000000 --- a/proto/SceneAreaWeatherNotify.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SceneAreaWeatherNotify { - uint32 weatherGadgetId = 1; - map weatherValueMap = 2; - uint32 weatherAreaId = 3; - uint32 climateType = 4; - float transDuration = 5; -} diff --git a/proto/SceneAvatarInfo.proto b/proto/SceneAvatarInfo.proto deleted file mode 100644 index 5ce71c9f5..000000000 --- a/proto/SceneAvatarInfo.proto +++ /dev/null @@ -1,28 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "SceneReliquaryInfo.proto"; -import "SceneWeaponInfo.proto"; -import "ServerBuff.proto"; - -message SceneAvatarInfo { - uint32 playerId = 1; - uint32 avatarId = 2; - uint64 guid = 3; - uint32 peerId = 4; - repeated uint32 equipIdList = 5; - uint32 skillDepotId = 6; - repeated uint32 talentIdList = 7; - SceneWeaponInfo weapon = 8; - repeated SceneReliquaryInfo reliquaryList = 9; - uint32 coreProudSkillLevel = 11; - repeated uint32 inherentProudSkillList = 12; - map skillLevelMap = 13; - map proudSkillExtraLevelMap = 14; - repeated ServerBuff serverBuffList = 15; - repeated uint32 teamResonanceList = 16; - uint32 wearingFlycloakId = 17; - uint32 bornTime = 18; - uint32 costumeId = 19; -} diff --git a/proto/SceneEntityAiInfo.proto b/proto/SceneEntityAiInfo.proto deleted file mode 100644 index b4754bd11..000000000 --- a/proto/SceneEntityAiInfo.proto +++ /dev/null @@ -1,16 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ServantInfo.proto"; -import "Vector.proto"; - -message SceneEntityAiInfo { - bool isAiOpen = 1; - Vector bornPos = 2; - map skillCdMap = 3; - ServantInfo servantInfo = 4; - map aiThreatMap = 5; - map skillGroupCdMap = 6; - uint32 curTactic = 7; -} diff --git a/proto/SceneEntityAppearNotify.proto b/proto/SceneEntityAppearNotify.proto deleted file mode 100644 index 0694f1676..000000000 --- a/proto/SceneEntityAppearNotify.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "SceneEntityInfo.proto"; -import "VisionType.proto"; - -message SceneEntityAppearNotify { - repeated SceneEntityInfo entityList = 1; - VisionType appearType = 2; - uint32 param = 3; -} diff --git a/proto/SceneEntityDisappearNotify.proto b/proto/SceneEntityDisappearNotify.proto deleted file mode 100644 index 02871b5a4..000000000 --- a/proto/SceneEntityDisappearNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "VisionType.proto"; - -message SceneEntityDisappearNotify { - repeated uint32 entityList = 1; - VisionType disappearType = 2; -} diff --git a/proto/SceneEntityInfo.proto b/proto/SceneEntityInfo.proto deleted file mode 100644 index d79fe4f58..000000000 --- a/proto/SceneEntityInfo.proto +++ /dev/null @@ -1,39 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AnimatorParameterValueInfoPair.proto"; -import "EntityAuthorityInfo.proto"; -import "EntityClientData.proto"; -import "EntityEnvironmentInfo.proto"; -import "FightPropPair.proto"; -import "MotionInfo.proto"; -import "PropPair.proto"; -import "ProtEntityType.proto"; -import "SceneAvatarInfo.proto"; -import "SceneGadgetInfo.proto"; -import "SceneMonsterInfo.proto"; -import "SceneNpcInfo.proto"; - -message SceneEntityInfo { - ProtEntityType entityType = 1; - uint32 entityId = 2; - string name = 3; - MotionInfo motionInfo = 4; - repeated PropPair propList = 5; - repeated FightPropPair fightPropList = 6; - uint32 lifeState = 7; - repeated AnimatorParameterValueInfoPair animatorParaList = 9; - oneof entity { - SceneAvatarInfo avatar = 10; - SceneMonsterInfo monster = 11; - SceneNpcInfo npc = 12; - SceneGadgetInfo gadget = 13; - } - uint32 lastMoveSceneTimeMs = 17; - uint32 lastMoveReliableSeq = 18; - EntityClientData entityClientData = 19; - repeated EntityEnvironmentInfo entityEnvironmentInfoList = 20; - EntityAuthorityInfo entityAuthorityInfo = 21; - repeated string tagList = 22; -} diff --git a/proto/SceneEntityMoveNotify.proto b/proto/SceneEntityMoveNotify.proto deleted file mode 100644 index 8e5016d75..000000000 --- a/proto/SceneEntityMoveNotify.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "MotionInfo.proto"; - -message SceneEntityMoveNotify { - uint32 entityId = 1; - MotionInfo motionInfo = 2; - uint32 sceneTime = 3; - uint32 reliableSeq = 4; -} diff --git a/proto/SceneForceUnlockNotify.proto b/proto/SceneForceUnlockNotify.proto deleted file mode 100644 index c78e2dd61..000000000 --- a/proto/SceneForceUnlockNotify.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SceneForceUnlockNotify { - repeated uint32 forceIdList = 1; - bool isAdd = 2; -} diff --git a/proto/SceneGadgetInfo.proto b/proto/SceneGadgetInfo.proto deleted file mode 100644 index b4430fa0c..000000000 --- a/proto/SceneGadgetInfo.proto +++ /dev/null @@ -1,43 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "GadgetBornType.proto"; -import "GadgetClientParam.proto"; -import "GadgetPlayInfo.proto"; -import "Item.proto"; -import "PlatformInfo.proto"; - -message SceneGadgetInfo { - uint32 gadgetId = 1; - uint32 groupId = 2; - uint32 configId = 3; - uint32 ownerEntityId = 4; - GadgetBornType bornType = 5; - uint32 gadgetState = 6; - uint32 gadgetType = 7; - bool isShowCutscene = 8; - uint32 authorityPeerId = 9; - bool isEnableInteract = 10; - uint32 interactId = 11; - Item trifleItem = 12; - uint32 gatherGadget = 13; - uint32 worktop = 14; - GadgetClientParam clientGadget = 15; - uint32 weather = 17; - uint32 abilityGadget = 18; - uint32 statueGadget = 19; - uint32 bossChest = 20; - uint32 blossomChest = 41; - uint32 mpPlayReward = 42; - uint32 generalReward = 43; - uint32 offeringInfo = 44; - uint32 foundationInfo = 45; - uint32 markFlag = 21; - uint32 propOwnerEntityId = 22; - PlatformInfo platform = 23; - repeated uint32 interactUidList = 24; - uint32 draftId = 25; - uint32 gadgetTalkState = 26; - GadgetPlayInfo playInfo = 100; -} diff --git a/proto/SceneInitFinishRsp.proto b/proto/SceneInitFinishRsp.proto deleted file mode 100644 index 1dfc6a2a9..000000000 --- a/proto/SceneInitFinishRsp.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SceneInitFinishRsp { - int32 retcode = 1; - uint32 enterSceneToken = 2; -} diff --git a/proto/SceneKickPlayerNotify.proto b/proto/SceneKickPlayerNotify.proto deleted file mode 100644 index 6a400ae6f..000000000 --- a/proto/SceneKickPlayerNotify.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SceneKickPlayerNotify { - uint32 kickerUid = 1; - uint32 targetUid = 2; -} diff --git a/proto/SceneKickPlayerReq.proto b/proto/SceneKickPlayerReq.proto deleted file mode 100644 index fe7e371b7..000000000 --- a/proto/SceneKickPlayerReq.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SceneKickPlayerReq { - uint32 targetUid = 1; -} diff --git a/proto/SceneKickPlayerRsp.proto b/proto/SceneKickPlayerRsp.proto deleted file mode 100644 index 81100890d..000000000 --- a/proto/SceneKickPlayerRsp.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SceneKickPlayerRsp { - int32 retcode = 1; - uint32 targetUid = 2; -} diff --git a/proto/SceneMonsterInfo.proto b/proto/SceneMonsterInfo.proto deleted file mode 100644 index f96c6c202..000000000 --- a/proto/SceneMonsterInfo.proto +++ /dev/null @@ -1,30 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "MonsterBornType.proto"; -import "MonsterRoute.proto"; -import "SceneWeaponInfo.proto"; - -message SceneMonsterInfo { - uint32 monsterId = 1; - uint32 groupId = 2; - uint32 configId = 3; - SceneWeaponInfo weaponList = 4; - uint32 authorityPeerId = 5; - repeated uint32 affixList = 6; - bool isElite = 7; - uint32 ownerEntityId = 8; - uint32 summonedTag = 9; - map summonTagMap = 10; - uint32 poseId = 11; - MonsterBornType bornType = 12; - uint32 blockId = 13; - uint32 markFlag = 14; - uint32 titleId = 15; - uint32 specialNameId = 16; - uint32 attackTargetId = 17; - MonsterRoute monsterRoute = 18; - uint32 aiConfigId = 19; - uint32 unk1 = 21; -} diff --git a/proto/SceneNpcInfo.proto b/proto/SceneNpcInfo.proto deleted file mode 100644 index 22e811801..000000000 --- a/proto/SceneNpcInfo.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SceneNpcInfo { - uint32 npcId = 1; - uint32 roomId = 2; - uint32 parentQuestId = 3; - uint32 blockId = 4; -} diff --git a/proto/ScenePlayerInfo.proto b/proto/ScenePlayerInfo.proto deleted file mode 100644 index d1dae174f..000000000 --- a/proto/ScenePlayerInfo.proto +++ /dev/null @@ -1,14 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "OnlinePlayerInfo.proto"; - -message ScenePlayerInfo { - uint32 uid = 1; - uint32 peerId = 2; - string name = 3; - bool isConnected = 4; - uint32 sceneId = 5; - OnlinePlayerInfo onlinePlayerInfo = 6; -} diff --git a/proto/ScenePlayerInfoNotify.proto b/proto/ScenePlayerInfoNotify.proto deleted file mode 100644 index 2c10873a5..000000000 --- a/proto/ScenePlayerInfoNotify.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ScenePlayerInfo.proto"; - -message ScenePlayerInfoNotify { - repeated ScenePlayerInfo playerInfoList = 1; -} diff --git a/proto/ScenePlayerLocationNotify.proto b/proto/ScenePlayerLocationNotify.proto deleted file mode 100644 index 6eccf373b..000000000 --- a/proto/ScenePlayerLocationNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "PlayerLocationInfo.proto"; - -message ScenePlayerLocationNotify { - uint32 sceneId = 1; - repeated PlayerLocationInfo playerLocList = 2; -} diff --git a/proto/SceneReliquaryInfo.proto b/proto/SceneReliquaryInfo.proto deleted file mode 100644 index 122ca88b2..000000000 --- a/proto/SceneReliquaryInfo.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SceneReliquaryInfo { - uint32 itemId = 1; - uint64 guid = 2; - uint32 level = 3; - uint32 promoteLevel = 4; -} diff --git a/proto/SceneTeamAvatar.proto b/proto/SceneTeamAvatar.proto deleted file mode 100644 index 0b4683910..000000000 --- a/proto/SceneTeamAvatar.proto +++ /dev/null @@ -1,29 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AbilityControlBlock.proto"; -import "AbilitySyncStateInfo.proto"; -import "AvatarInfo.proto"; -import "SceneAvatarInfo.proto"; -import "SceneEntityInfo.proto"; -import "ServerBuff.proto"; - -message SceneTeamAvatar { - uint32 playerId = 1; - uint64 avatarGuid = 2; - uint32 sceneId = 3; - uint32 entityId = 4; - AvatarInfo avatarInfo = 5; - SceneAvatarInfo sceneAvatarInfo = 6; - AbilitySyncStateInfo avatarAbilityInfo = 7; - repeated ServerBuff serverBuffList = 8; - SceneEntityInfo sceneEntityInfo = 9; - uint64 weaponGuid = 10; - uint32 weaponEntityId = 11; - AbilitySyncStateInfo weaponAbilityInfo = 12; - AbilityControlBlock abilityControlBlock = 13; - bool isReconnect = 14; - bool isPlayerCurAvatar = 15; - bool isOnScene = 16; -} diff --git a/proto/SceneTeamUpdateNotify.proto b/proto/SceneTeamUpdateNotify.proto deleted file mode 100644 index 6aa586ccc..000000000 --- a/proto/SceneTeamUpdateNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "SceneTeamAvatar.proto"; - -message SceneTeamUpdateNotify { - repeated SceneTeamAvatar sceneTeamAvatarList = 1; - bool isInMp = 3; -} diff --git a/proto/SceneTimeNotify.proto b/proto/SceneTimeNotify.proto deleted file mode 100644 index cafe00ad7..000000000 --- a/proto/SceneTimeNotify.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SceneTimeNotify { - uint32 sceneId = 1; - bool isPaused = 2; - uint64 sceneTime = 3; -} diff --git a/proto/SceneUnlockInfo.proto b/proto/SceneUnlockInfo.proto deleted file mode 100644 index d4dfa2f4f..000000000 --- a/proto/SceneUnlockInfo.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SceneUnlockInfo { - uint32 sceneId = 1; - bool isLocked = 2; - repeated uint32 sceneTagIdList = 3; -} diff --git a/proto/SceneUnlockInfoNotify.proto b/proto/SceneUnlockInfoNotify.proto deleted file mode 100644 index 28be03d6c..000000000 --- a/proto/SceneUnlockInfoNotify.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "SceneUnlockInfo.proto"; - -message SceneUnlockInfoNotify { - repeated SceneUnlockInfo unlockInfos = 1; -} diff --git a/proto/SceneWeaponInfo.proto b/proto/SceneWeaponInfo.proto deleted file mode 100644 index 5b823b9f5..000000000 --- a/proto/SceneWeaponInfo.proto +++ /dev/null @@ -1,16 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AbilitySyncStateInfo.proto"; - -message SceneWeaponInfo { - uint32 entityId = 1; - uint32 gadgetId = 2; - uint32 itemId = 3; - uint64 guid = 4; - uint32 level = 5; - uint32 promoteLevel = 6; - AbilitySyncStateInfo abilityInfo = 7; - map affixMap = 8; -} diff --git a/proto/ServantInfo.proto b/proto/ServantInfo.proto deleted file mode 100644 index e4c04e33f..000000000 --- a/proto/ServantInfo.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ServantInfo { - uint32 masterEntityId = 1; - uint32 bornSlotIndex = 2; -} diff --git a/proto/ServerBuff.proto b/proto/ServerBuff.proto deleted file mode 100644 index 0de4768e2..000000000 --- a/proto/ServerBuff.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ServerBuff { - uint32 serverBuffUid = 1; - uint32 serverBuffId = 2; - uint32 serverBuffType = 3; - uint32 instancedModifierId = 4; - repeated uint32 doneOnaddedActionList = 5; - bool isOnaddedActionAllow = 6; -} diff --git a/proto/ServerTimeNotify.proto b/proto/ServerTimeNotify.proto deleted file mode 100644 index 9452ef804..000000000 --- a/proto/ServerTimeNotify.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ServerTimeNotify { - uint64 serverTime = 1; -} diff --git a/proto/SetEquipLockStateReq.proto b/proto/SetEquipLockStateReq.proto deleted file mode 100644 index 55f3f9373..000000000 --- a/proto/SetEquipLockStateReq.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SetEquipLockStateReq { - uint64 targetEquipGuid = 1; - bool isLocked = 2; -} diff --git a/proto/SetEquipLockStateRsp.proto b/proto/SetEquipLockStateRsp.proto deleted file mode 100644 index fe70b22dd..000000000 --- a/proto/SetEquipLockStateRsp.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SetEquipLockStateRsp { - int32 retcode = 1; - uint64 targetEquipGuid = 2; - bool isLocked = 3; -} diff --git a/proto/SetNameCardReq.proto b/proto/SetNameCardReq.proto deleted file mode 100644 index 4452d3bf6..000000000 --- a/proto/SetNameCardReq.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SetNameCardReq { - uint32 nameCardId = 1; -} diff --git a/proto/SetNameCardRsp.proto b/proto/SetNameCardRsp.proto deleted file mode 100644 index 821c019cd..000000000 --- a/proto/SetNameCardRsp.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SetNameCardRsp { - int32 retcode = 1; - uint32 nameCardId = 2; -} diff --git a/proto/SetPlayerBornDataReq.proto b/proto/SetPlayerBornDataReq.proto deleted file mode 100644 index 56b6fd3cf..000000000 --- a/proto/SetPlayerBornDataReq.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SetPlayerBornDataReq { - uint32 avatarId = 1; - string nickName = 2; -} diff --git a/proto/SetPlayerHeadImageReq.proto b/proto/SetPlayerHeadImageReq.proto deleted file mode 100644 index 90016ced6..000000000 --- a/proto/SetPlayerHeadImageReq.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SetPlayerHeadImageReq { - uint32 avatarId = 1; -} diff --git a/proto/SetPlayerHeadImageRsp.proto b/proto/SetPlayerHeadImageRsp.proto deleted file mode 100644 index 6a2ea445f..000000000 --- a/proto/SetPlayerHeadImageRsp.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "HeadImage.proto"; - -message SetPlayerHeadImageRsp { - int32 retcode = 1; - HeadImage avatar = 3; -} diff --git a/proto/SetPlayerNameReq.proto b/proto/SetPlayerNameReq.proto deleted file mode 100644 index 558eb0fbd..000000000 --- a/proto/SetPlayerNameReq.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SetPlayerNameReq { - string nickName = 1; -} diff --git a/proto/SetPlayerNameRsp.proto b/proto/SetPlayerNameRsp.proto deleted file mode 100644 index b4b02e63f..000000000 --- a/proto/SetPlayerNameRsp.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SetPlayerNameRsp { - int32 retcode = 1; - string nickName = 2; -} diff --git a/proto/SetPlayerPropReq.proto b/proto/SetPlayerPropReq.proto deleted file mode 100644 index d08c2a50f..000000000 --- a/proto/SetPlayerPropReq.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "PropValue.proto"; - -message SetPlayerPropReq { - repeated PropValue propList = 1; -} diff --git a/proto/SetPlayerPropRsp.proto b/proto/SetPlayerPropRsp.proto deleted file mode 100644 index 62d231e96..000000000 --- a/proto/SetPlayerPropRsp.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SetPlayerPropRsp { - int32 retcode = 1; -} diff --git a/proto/SetPlayerSignatureReq.proto b/proto/SetPlayerSignatureReq.proto deleted file mode 100644 index 595345bcd..000000000 --- a/proto/SetPlayerSignatureReq.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SetPlayerSignatureReq { - string signature = 1; -} diff --git a/proto/SetPlayerSignatureRsp.proto b/proto/SetPlayerSignatureRsp.proto deleted file mode 100644 index ca09cd1b2..000000000 --- a/proto/SetPlayerSignatureRsp.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SetPlayerSignatureRsp { - int32 retcode = 1; - string signature = 2; -} diff --git a/proto/SetUpAvatarTeamReq.proto b/proto/SetUpAvatarTeamReq.proto deleted file mode 100644 index b950cb25a..000000000 --- a/proto/SetUpAvatarTeamReq.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SetUpAvatarTeamReq { - uint32 teamId = 1; - repeated uint64 avatarTeamGuidList = 2; - uint64 curAvatarGuid = 3; -} diff --git a/proto/SetUpAvatarTeamRsp.proto b/proto/SetUpAvatarTeamRsp.proto deleted file mode 100644 index fdb634b8d..000000000 --- a/proto/SetUpAvatarTeamRsp.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SetUpAvatarTeamRsp { - int32 retcode = 1; - uint32 teamId = 2; - repeated uint64 avatarTeamGuidList = 3; - uint64 curAvatarGuid = 4; -} diff --git a/proto/Shop.proto b/proto/Shop.proto deleted file mode 100644 index 2172757b8..000000000 --- a/proto/Shop.proto +++ /dev/null @@ -1,17 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ShopCardProduct.proto"; -import "ShopGoods.proto"; -import "ShopMcoinProduct.proto"; - -message Shop { - uint32 shopType = 1; - repeated ShopGoods goodsList = 2; - repeated ShopMcoinProduct mcoinProductList = 3; - repeated ShopCardProduct cardProductList = 4; - uint32 nextRefreshTime = 6; - uint32 cityId = 7; - uint32 cityReputationLevel = 8; -} diff --git a/proto/ShopCardProduct.proto b/proto/ShopCardProduct.proto deleted file mode 100644 index 88b95f7b6..000000000 --- a/proto/ShopCardProduct.proto +++ /dev/null @@ -1,18 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ResinCard.proto"; - -message ShopCardProduct { - string productId = 1; - string priceTier = 2; - uint32 mcoinBase = 3; - uint32 hcoinPerDay = 4; - uint32 days = 5; - uint32 remainRewardDays = 6; - uint32 cardProductType = 7; - oneof extraCardData { - ResinCard resinCard = 101; - } -} diff --git a/proto/ShopGoods.proto b/proto/ShopGoods.proto deleted file mode 100644 index 672578c54..000000000 --- a/proto/ShopGoods.proto +++ /dev/null @@ -1,24 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ItemParam.proto"; - -message ShopGoods { - uint32 goodsId = 1; - ItemParam goodsItem = 2; - uint32 scoin = 3; - uint32 hcoin = 4; - repeated ItemParam costItemList = 5; - uint32 boughtNum = 6; - uint32 buyLimit = 7; - uint32 beginTime = 8; - uint32 endTime = 9; - uint32 nextRefreshTime = 10; - uint32 minLevel = 11; - uint32 maxLevel = 12; - repeated uint32 preGoodsIdList = 13; - uint32 mcoin = 14; - uint32 disableType = 15; - uint32 secondarySheetId = 16; -} diff --git a/proto/ShopGoodsDisableType.proto b/proto/ShopGoodsDisableType.proto deleted file mode 100644 index 2c1b19bd0..000000000 --- a/proto/ShopGoodsDisableType.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum ShopGoodsDisableType { - ShopGoodsDisableNone = 0; - ShopGoodsDisableTalentFull = 1; - ShopGoodsDisableFurnitureFormulaUnlocked = 2; -} diff --git a/proto/ShopMcoinProduct.proto b/proto/ShopMcoinProduct.proto deleted file mode 100644 index 53f3dcbf3..000000000 --- a/proto/ShopMcoinProduct.proto +++ /dev/null @@ -1,13 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ShopMcoinProduct { - string productId = 1; - string priceTier = 2; - uint32 mcoinBase = 3; - uint32 mcoinNonFirst = 4; - uint32 mcoinFirst = 5; - uint32 boughtNum = 6; - bool isAudit = 7; -} diff --git a/proto/ShortAbilityHashPair.proto b/proto/ShortAbilityHashPair.proto deleted file mode 100644 index 0eaf10422..000000000 --- a/proto/ShortAbilityHashPair.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message ShortAbilityHashPair { - int32 abilityNameHash = 1; - int32 abilityConfigHash = 2; -} diff --git a/proto/SocialDetail.proto b/proto/SocialDetail.proto deleted file mode 100644 index bc97aa184..000000000 --- a/proto/SocialDetail.proto +++ /dev/null @@ -1,34 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "Birthday.proto"; -import "FriendEnterHomeOption.proto"; -import "HeadImage.proto"; -import "SocialShowAvatarInfo.proto"; - -message SocialDetail { - uint32 uid = 1; - string nickname = 2; - uint32 level = 3; - string signature = 5; - Birthday birthday = 6; - uint32 worldLevel = 7; - uint32 unk1 = 9; - //FriendOnlineState onlineState = 10; - //bool isMpModeAvailable = 10; - bool isFriend = 11; - uint32 unk3 = 12; - uint32 lastActiveTime = 13; - uint32 nameCardId = 14; - bool isInBlacklist = 15; - bool isChatNoDisturb = 16; - string remarkName = 17; - uint32 finishAchievementNum = 18; - uint32 towerFloorIndex = 19; - uint32 towerLevelIndex = 20; - bool isShowAvatar = 21; - repeated SocialShowAvatarInfo showAvatarInfoList = 22; - FriendEnterHomeOption friendEnterHomeOption = 23; - HeadImage avatar = 25; -} diff --git a/proto/SocialShowAvatarInfo.proto b/proto/SocialShowAvatarInfo.proto deleted file mode 100644 index 921cb298a..000000000 --- a/proto/SocialShowAvatarInfo.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SocialShowAvatarInfo { - uint32 avatarId = 1; - uint32 level = 2; -} diff --git a/proto/StoreItemChangeNotify.proto b/proto/StoreItemChangeNotify.proto deleted file mode 100644 index 270d5e46f..000000000 --- a/proto/StoreItemChangeNotify.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "Item.proto"; -import "StoreType.proto"; - -message StoreItemChangeNotify { - StoreType storeType = 1; - repeated Item itemList = 2; -} diff --git a/proto/StoreItemDelNotify.proto b/proto/StoreItemDelNotify.proto deleted file mode 100644 index 69a70a8e7..000000000 --- a/proto/StoreItemDelNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "StoreType.proto"; - -message StoreItemDelNotify { - StoreType storeType = 1; - repeated uint64 guidList = 2; -} diff --git a/proto/StoreType.proto b/proto/StoreType.proto deleted file mode 100644 index 78e35b4c1..000000000 --- a/proto/StoreType.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum StoreType { - StoreNone = 0; - StorePack = 1; - StoreDepot = 2; -} diff --git a/proto/StoreWeightLimitNotify.proto b/proto/StoreWeightLimitNotify.proto deleted file mode 100644 index 236bacd59..000000000 --- a/proto/StoreWeightLimitNotify.proto +++ /dev/null @@ -1,14 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "StoreType.proto"; - -message StoreWeightLimitNotify { - StoreType storeType = 1; - uint32 weightLimit = 3; - uint32 materialCountLimit = 4; - uint32 weaponCountLimit = 5; - uint32 reliquaryCountLimit = 6; - uint32 furnitureCountLimit = 7; -} diff --git a/proto/SyncScenePlayTeamEntityNotify.proto b/proto/SyncScenePlayTeamEntityNotify.proto deleted file mode 100644 index 1ffe7be6a..000000000 --- a/proto/SyncScenePlayTeamEntityNotify.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SyncScenePlayTeamEntityNotify { - uint32 sceneId = 1; - //repeated PlayTeamEntityInfo entityInfoList = 2; -} diff --git a/proto/SyncTeamEntityNotify.proto b/proto/SyncTeamEntityNotify.proto deleted file mode 100644 index 1555e37e9..000000000 --- a/proto/SyncTeamEntityNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "TeamEntityInfo.proto"; - -message SyncTeamEntityNotify { - uint32 sceneId = 1; - repeated TeamEntityInfo teamEntityInfoList = 2; -} diff --git a/proto/SystemHint.proto b/proto/SystemHint.proto deleted file mode 100644 index 2bc1f19ef..000000000 --- a/proto/SystemHint.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message SystemHint { - uint32 type = 1; -} diff --git a/proto/TakeoffEquipReq.proto b/proto/TakeoffEquipReq.proto deleted file mode 100644 index bcd6278af..000000000 --- a/proto/TakeoffEquipReq.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message TakeoffEquipReq { - uint64 avatarGuid = 1; - uint32 slot = 2; -} diff --git a/proto/TakeoffEquipRsp.proto b/proto/TakeoffEquipRsp.proto deleted file mode 100644 index ded14965d..000000000 --- a/proto/TakeoffEquipRsp.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message TakeoffEquipRsp { - int32 retcode = 1; - uint64 avatarGuid = 2; - uint32 slot = 3; -} diff --git a/proto/TeamEnterSceneInfo.proto b/proto/TeamEnterSceneInfo.proto deleted file mode 100644 index d0144a81e..000000000 --- a/proto/TeamEnterSceneInfo.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AbilitySyncStateInfo.proto"; - -message TeamEnterSceneInfo { - uint32 teamEntityId = 1; - AbilitySyncStateInfo teamAbilityInfo = 2; - AbilitySyncStateInfo unk = 3; -} diff --git a/proto/TeamEntityInfo.proto b/proto/TeamEntityInfo.proto deleted file mode 100644 index 5f0240ae5..000000000 --- a/proto/TeamEntityInfo.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AbilitySyncStateInfo.proto"; - -message TeamEntityInfo { - uint32 teamEntityId = 1; - uint32 authorityPeerId = 2; - AbilitySyncStateInfo teamAbilityInfo = 3; -} diff --git a/proto/TeamResonanceChangeNotify.proto b/proto/TeamResonanceChangeNotify.proto deleted file mode 100644 index 592fc8a98..000000000 --- a/proto/TeamResonanceChangeNotify.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "AvatarTeamResonanceInfo.proto"; - -message TeamResonanceChangeNotify { - repeated AvatarTeamResonanceInfo infoList = 1; -} diff --git a/proto/TowerAllDataRsp.proto b/proto/TowerAllDataRsp.proto deleted file mode 100644 index 7fde18c16..000000000 --- a/proto/TowerAllDataRsp.proto +++ /dev/null @@ -1,27 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "TowerCurLevelRecord.proto"; -import "TowerFloorRecord.proto"; -import "TowerMonthlyBrief.proto"; - -message TowerAllDataRsp { - uint32 towerScheduleId = 1; - repeated TowerFloorRecord towerFloorRecordList = 2; - uint32 dailyFloorId = 3; - uint32 dailyLevelIndex = 4; - TowerCurLevelRecord curLevelRecord = 5; - uint32 nextScheduleChangeTime = 6; - map floorOpenTimeMap = 7; - bool isFirstInteract = 8; - TowerMonthlyBrief monthlyBrief = 9; - uint32 skipToFloorIndex = 10; - uint32 commemorativeRewardId = 11; - map skipFloorGrantedRewardItemMap = 12; - uint32 validTowerRecordNum = 13; - int32 retcode = 14; - bool isFinishedEntranceFloor = 15; - uint32 scheduleStartTime = 16; - TowerMonthlyBrief lastScheduleMonthlyBrief = 17; -} diff --git a/proto/TowerCurLevelRecord.proto b/proto/TowerCurLevelRecord.proto deleted file mode 100644 index 6c4a282f5..000000000 --- a/proto/TowerCurLevelRecord.proto +++ /dev/null @@ -1,13 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "TowerTeam.proto"; - -message TowerCurLevelRecord { - uint32 curFloorId = 1; - uint32 curLevelIndex = 2; - repeated TowerTeam towerTeamList = 3; - repeated uint32 buffIdList = 4; - bool isEmpty = 5; -} diff --git a/proto/TowerFloorRecord.proto b/proto/TowerFloorRecord.proto deleted file mode 100644 index 7096d2b29..000000000 --- a/proto/TowerFloorRecord.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "TowerLevelRecord.proto"; - -message TowerFloorRecord { - uint32 floorId = 1; - map passedLevelMap = 2; - uint32 floorStarRewardProgress = 3; - repeated TowerLevelRecord passedLevelRecordList = 4; -} diff --git a/proto/TowerLevelRecord.proto b/proto/TowerLevelRecord.proto deleted file mode 100644 index e0e5d95c1..000000000 --- a/proto/TowerLevelRecord.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message TowerLevelRecord { - uint32 levelId = 1; - repeated uint32 satisfiedCondList = 2; -} diff --git a/proto/TowerMonthlyBrief.proto b/proto/TowerMonthlyBrief.proto deleted file mode 100644 index 69b0b90de..000000000 --- a/proto/TowerMonthlyBrief.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message TowerMonthlyBrief { - uint32 towerScheduleId = 1; - uint32 bestFloorIndex = 2; - uint32 bestLevelIndex = 3; - uint32 totalStarCount = 4; -} diff --git a/proto/TowerTeam.proto b/proto/TowerTeam.proto deleted file mode 100644 index a478afe7e..000000000 --- a/proto/TowerTeam.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message TowerTeam { - uint32 towerTeamId = 1; - repeated uint64 avatarGuidList = 2; -} diff --git a/proto/TrackingIOInfo.proto b/proto/TrackingIOInfo.proto deleted file mode 100644 index 0b618cb99..000000000 --- a/proto/TrackingIOInfo.proto +++ /dev/null @@ -1,13 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message TrackingIOInfo { - string appid = 1; - string deviceid = 2; - string mac = 3; - string rydevicetype = 4; - string clientTz = 5; - string currentCaid = 6; - string cachedCaid = 7; -} diff --git a/proto/TrialAvatarGrantRecord.proto b/proto/TrialAvatarGrantRecord.proto deleted file mode 100644 index 45dd737c4..000000000 --- a/proto/TrialAvatarGrantRecord.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message TrialAvatarGrantRecord { - uint32 grantReason = 1; - uint32 fromParentQuestId = 2; -} diff --git a/proto/TrialAvatarInfo.proto b/proto/TrialAvatarInfo.proto deleted file mode 100644 index 867c72369..000000000 --- a/proto/TrialAvatarInfo.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "Item.proto"; -import "TrialAvatarGrantRecord.proto"; - -message TrialAvatarInfo { - uint32 trialAvatarId = 1; - repeated Item trialEquipList = 2; - TrialAvatarGrantRecord grantRecord = 3; -} diff --git a/proto/UnionCmd.proto b/proto/UnionCmd.proto deleted file mode 100644 index ed4747651..000000000 --- a/proto/UnionCmd.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message UnionCmd { - uint32 messageId = 1; - bytes body = 2; -} diff --git a/proto/UnionCmdNotify.proto b/proto/UnionCmdNotify.proto deleted file mode 100644 index 04ff8d910..000000000 --- a/proto/UnionCmdNotify.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "UnionCmd.proto"; - -message UnionCmdNotify { - repeated UnionCmd cmdList = 1; -} diff --git a/proto/UnlockAvatarTalentReq.proto b/proto/UnlockAvatarTalentReq.proto deleted file mode 100644 index b0cc42086..000000000 --- a/proto/UnlockAvatarTalentReq.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message UnlockAvatarTalentReq { - uint64 avatarGuid = 1; - uint32 talentId = 2; -} diff --git a/proto/UnlockAvatarTalentRsp.proto b/proto/UnlockAvatarTalentRsp.proto deleted file mode 100644 index 8bb323484..000000000 --- a/proto/UnlockAvatarTalentRsp.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message UnlockAvatarTalentRsp { - int32 retcode = 1; - uint64 avatarGuid = 2; - uint32 talentId = 3; -} diff --git a/proto/UnlockNameCardNotify.proto b/proto/UnlockNameCardNotify.proto deleted file mode 100644 index 193be0551..000000000 --- a/proto/UnlockNameCardNotify.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message UnlockNameCardNotify { - uint32 nameCardId = 1; -} diff --git a/proto/UseItemReq.proto b/proto/UseItemReq.proto deleted file mode 100644 index 227697ddb..000000000 --- a/proto/UseItemReq.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message UseItemReq { - uint64 guid = 1; - uint32 count = 2; - uint64 targetGuid = 3; - uint32 optionIdx = 4; - bool isEnterMpDungeonTeam = 5; -} diff --git a/proto/UseItemRsp.proto b/proto/UseItemRsp.proto deleted file mode 100644 index 03add18fd..000000000 --- a/proto/UseItemRsp.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message UseItemRsp { - int32 retcode = 1; - uint64 guid = 2; - uint32 itemId = 3; - uint64 targetGuid = 4; - uint32 optionIdx = 5; -} diff --git a/proto/Vector.proto b/proto/Vector.proto deleted file mode 100644 index 562e7436a..000000000 --- a/proto/Vector.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message Vector { - float x = 1; - float y = 2; - float z = 3; -} diff --git a/proto/VisionType.proto b/proto/VisionType.proto deleted file mode 100644 index c3c30492d..000000000 --- a/proto/VisionType.proto +++ /dev/null @@ -1,21 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -enum VisionType { - VisionNone = 0; - VisionMeet = 1; - VisionReborn = 2; - VisionReplace = 3; - VisionWaypointReborn = 4; - VisionMiss = 5; - VisionDie = 6; - VisionGatherEscape = 7; - VisionRefresh = 8; - VisionTransport = 9; - VisionReplaceDie = 10; - VisionReplaceNoNotify = 11; - VisionBorn = 12; - VisionPickup = 13; - VisionRemove = 14; -} diff --git a/proto/Weapon.proto b/proto/Weapon.proto deleted file mode 100644 index e199f58d6..000000000 --- a/proto/Weapon.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message Weapon { - uint32 level = 1; - uint32 exp = 2; - uint32 promoteLevel = 3; - map affixMap = 4; -} diff --git a/proto/WeaponAwakenReq.proto b/proto/WeaponAwakenReq.proto deleted file mode 100644 index 2775c8dbb..000000000 --- a/proto/WeaponAwakenReq.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message WeaponAwakenReq { - uint64 targetWeaponGuid = 1; - uint64 itemGuid = 2; - map affixLevelMap = 3; -} diff --git a/proto/WeaponAwakenRsp.proto b/proto/WeaponAwakenRsp.proto deleted file mode 100644 index 2400cabb2..000000000 --- a/proto/WeaponAwakenRsp.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message WeaponAwakenRsp { - int32 retcode = 1; - uint64 targetWeaponGuid = 2; - uint32 targetWeaponAwakenLevel = 3; - map oldAffixLevelMap = 4; - map curAffixLevelMap = 5; - uint64 avatarGuid = 6; -} diff --git a/proto/WeaponPromoteReq.proto b/proto/WeaponPromoteReq.proto deleted file mode 100644 index dc47477fc..000000000 --- a/proto/WeaponPromoteReq.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message WeaponPromoteReq { - uint64 targetWeaponGuid = 1; -} diff --git a/proto/WeaponPromoteRsp.proto b/proto/WeaponPromoteRsp.proto deleted file mode 100644 index efd7bfb5d..000000000 --- a/proto/WeaponPromoteRsp.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message WeaponPromoteRsp { - int32 retcode = 1; - uint64 targetWeaponGuid = 2; - uint32 oldPromoteLevel = 3; - uint32 curPromoteLevel = 4; -} diff --git a/proto/WeaponUpgradeReq.proto b/proto/WeaponUpgradeReq.proto deleted file mode 100644 index 93e69622b..000000000 --- a/proto/WeaponUpgradeReq.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ItemParam.proto"; - -message WeaponUpgradeReq { - uint64 targetWeaponGuid = 1; - repeated uint64 foodWeaponGuidList = 2; - repeated ItemParam itemParamList = 3; -} diff --git a/proto/WeaponUpgradeRsp.proto b/proto/WeaponUpgradeRsp.proto deleted file mode 100644 index 77a71f24b..000000000 --- a/proto/WeaponUpgradeRsp.proto +++ /dev/null @@ -1,13 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "ItemParam.proto"; - -message WeaponUpgradeRsp { - int32 retcode = 1; - uint64 targetWeaponGuid = 2; - uint32 oldLevel = 3; - uint32 curLevel = 4; - repeated ItemParam itemParamList = 5; -} diff --git a/proto/WearEquipReq.proto b/proto/WearEquipReq.proto deleted file mode 100644 index 805377d4d..000000000 --- a/proto/WearEquipReq.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message WearEquipReq { - uint64 avatarGuid = 1; - uint64 equipGuid = 2; -} diff --git a/proto/WearEquipRsp.proto b/proto/WearEquipRsp.proto deleted file mode 100644 index 61bb36666..000000000 --- a/proto/WearEquipRsp.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message WearEquipRsp { - int32 retcode = 1; - uint64 avatarGuid = 2; - uint64 equipGuid = 3; -} diff --git a/proto/WeeklyBossResinDiscountInfo.proto b/proto/WeeklyBossResinDiscountInfo.proto deleted file mode 100644 index 2c9a85e04..000000000 --- a/proto/WeeklyBossResinDiscountInfo.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message WeeklyBossResinDiscountInfo { - uint32 discountNum = 1; - uint32 discountNumLimit = 2; - uint32 resinCost = 3; - uint32 originalResinCost = 4; -} diff --git a/proto/WorldDataNotify.proto b/proto/WorldDataNotify.proto deleted file mode 100644 index 9bb4e73be..000000000 --- a/proto/WorldDataNotify.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "PropValue.proto"; - -message WorldDataNotify { - map worldPropMap = 1; -} diff --git a/proto/WorldPlayerDieNotify.proto b/proto/WorldPlayerDieNotify.proto deleted file mode 100644 index 36ecf0425..000000000 --- a/proto/WorldPlayerDieNotify.proto +++ /dev/null @@ -1,14 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "PlayerDieType.proto"; - -message WorldPlayerDieNotify { - PlayerDieType dieType = 1; - uint32 murdererEntityId = 2; - oneof entity { - uint32 monsterId = 3; - uint32 gadgetId = 4; - } -} diff --git a/proto/WorldPlayerInfoNotify.proto b/proto/WorldPlayerInfoNotify.proto deleted file mode 100644 index e9266b666..000000000 --- a/proto/WorldPlayerInfoNotify.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "OnlinePlayerInfo.proto"; - -message WorldPlayerInfoNotify { - repeated OnlinePlayerInfo playerInfoList = 1; - repeated uint32 playerUidList = 2; -} diff --git a/proto/WorldPlayerLocationNotify.proto b/proto/WorldPlayerLocationNotify.proto deleted file mode 100644 index d43efba0c..000000000 --- a/proto/WorldPlayerLocationNotify.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "PlayerLocationInfo.proto"; - -message WorldPlayerLocationNotify { - repeated PlayerLocationInfo playerLocList = 1; -} diff --git a/proto/WorldPlayerRTTNotify.proto b/proto/WorldPlayerRTTNotify.proto deleted file mode 100644 index 56474c13e..000000000 --- a/proto/WorldPlayerRTTNotify.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -import "PlayerRTTInfo.proto"; - -message WorldPlayerRTTNotify { - repeated PlayerRTTInfo playerRttList = 1; -} diff --git a/proto/WorldPlayerReviveRsp.proto b/proto/WorldPlayerReviveRsp.proto deleted file mode 100644 index 1c823e8b6..000000000 --- a/proto/WorldPlayerReviveRsp.proto +++ /dev/null @@ -1,7 +0,0 @@ -syntax = "proto3"; - -option java_package = "emu.grasscutter.net.proto"; - -message WorldPlayerReviveRsp { - int32 retcode = 1; -} diff --git a/proxy.py b/proxy.py index 1961c90dc..86145cde6 100644 --- a/proxy.py +++ b/proxy.py @@ -16,53 +16,59 @@ # - mitmdump from mitmproxy # # @author MlgmXyysd -# @version 1.0 +# @version 1.1 # ## -from mitmproxy import ctx, http +from mitmproxy import http +from proxy_config import USE_SSL +from proxy_config import REMOTE_HOST +from proxy_config import REMOTE_PORT class MlgmXyysd_Genshin_Impact_Proxy: + LIST_DOMAINS = [ + "api-os-takumi.mihoyo.com", + "hk4e-api-os-static.mihoyo.com", + "hk4e-sdk-os.mihoyo.com", + "dispatchosglobal.yuanshen.com", + "osusadispatch.yuanshen.com", + "account.mihoyo.com", + "log-upload-os.mihoyo.com", + "dispatchcntest.yuanshen.com", + "devlog-upload.mihoyo.com", + "webstatic.mihoyo.com", + "log-upload.mihoyo.com", + "hk4e-sdk.mihoyo.com", + "api-beta-sdk.mihoyo.com", + "api-beta-sdk-os.mihoyo.com", + "cnbeta01dispatch.yuanshen.com", + "dispatchcnglobal.yuanshen.com", + "cnbeta02dispatch.yuanshen.com", + "sdk-os-static.mihoyo.com", + "webstatic-sea.mihoyo.com", + "webstatic-sea.hoyoverse.com", + "hk4e-sdk-os-static.hoyoverse.com", + "sdk-os-static.hoyoverse.com", + "api-account-os.hoyoverse.com", + "hk4e-sdk-os.hoyoverse.com", + "overseauspider.yuanshen.com", + "gameapi-account.mihoyo.com", + "minor-api.mihoyo.com", + "public-data-api.mihoyo.com", + "uspider.yuanshen.com", + "sdk-static.mihoyo.com" + ] + def request(self, flow: http.HTTPFlow) -> None: - - # This can also be replaced with another IP address. - REMOTE_HOST = "localhost" - - LIST_DOMAINS = [ - "api-os-takumi.mihoyo.com", - "hk4e-api-os-static.mihoyo.com", - "hk4e-sdk-os.mihoyo.com", - "dispatchosglobal.yuanshen.com", - "osusadispatch.yuanshen.com", - "account.mihoyo.com", - "log-upload-os.mihoyo.com", - "dispatchcntest.yuanshen.com", - "devlog-upload.mihoyo.com", - "webstatic.mihoyo.com", - "log-upload.mihoyo.com", - "hk4e-sdk.mihoyo.com", - "api-beta-sdk.mihoyo.com", - "api-beta-sdk-os.mihoyo.com", - "cnbeta01dispatch.yuanshen.com", - "dispatchcnglobal.yuanshen.com", - "cnbeta02dispatch.yuanshen.com", - "sdk-os-static.mihoyo.com", - "webstatic-sea.mihoyo.com", - "webstatic-sea.hoyoverse.com", - "hk4e-sdk-os-static.hoyoverse.com", - "sdk-os-static.hoyoverse.com", - "api-account-os.hoyoverse.com", - "hk4e-sdk-os.hoyoverse.com" - ] - - if flow.request.url.startswith("http://overseauspider.yuanshen.com:8888/log"): - ctx.log.info("Block overseauspider.yuanshen.com") - flow.response = http.HTTPResponse.make(404) - elif flow.request.host in LIST_DOMAINS: - ctx.log.info("Redirect " + flow.request.host) + if flow.request.host in self.LIST_DOMAINS: + if USE_SSL: + flow.request.scheme = "https" + else: + flow.request.scheme = "http" flow.request.host = REMOTE_HOST + flow.request.port = REMOTE_PORT addons = [ MlgmXyysd_Genshin_Impact_Proxy() -] \ No newline at end of file +] diff --git a/proxy_config.py b/proxy_config.py new file mode 100644 index 000000000..5025a974e --- /dev/null +++ b/proxy_config.py @@ -0,0 +1,4 @@ +# 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 diff --git a/run.bat b/run.bat deleted file mode 100644 index 36530cf77..000000000 --- a/run.bat +++ /dev/null @@ -1,7 +0,0 @@ -@echo off - - - -::This will not work if your java is in a different location, plugin as necessary -::this just saves you from changing your PATH -"C:\Program Files\Java\jdk1.8.0_202\bin\java.exe" -jar ./grasscutter.jar \ No newline at end of file diff --git a/src/deprecated/java/emu/grasscutter/commands/PlayerCommands.java b/src/deprecated/java/emu/grasscutter/commands/PlayerCommands.java deleted file mode 100644 index 2e8be354d..000000000 --- a/src/deprecated/java/emu/grasscutter/commands/PlayerCommands.java +++ /dev/null @@ -1,307 +0,0 @@ -package emu.grasscutter.commands; - -import java.lang.reflect.Modifier; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; - -import emu.grasscutter.data.GenshinData; -import emu.grasscutter.data.def.ItemData; -import emu.grasscutter.data.def.MonsterData; -import emu.grasscutter.game.GenshinPlayer; -import emu.grasscutter.game.avatar.GenshinAvatar; -import emu.grasscutter.game.entity.EntityAvatar; -import emu.grasscutter.game.entity.EntityItem; -import emu.grasscutter.game.entity.EntityMonster; -import emu.grasscutter.game.entity.GenshinEntity; -import emu.grasscutter.game.inventory.GenshinItem; -import emu.grasscutter.game.inventory.ItemType; -import emu.grasscutter.game.props.ActionReason; -import emu.grasscutter.game.props.FightProperty; -import emu.grasscutter.server.packet.send.PacketEntityFightPropUpdateNotify; -import emu.grasscutter.server.packet.send.PacketItemAddHintNotify; -import emu.grasscutter.utils.Position; - -public class PlayerCommands { - private static HashMap list = new HashMap<>(); - - static { - try { - // Look for classes - for (Class cls : PlayerCommands.class.getDeclaredClasses()) { - // Get non abstract classes - if (!Modifier.isAbstract(cls.getModifiers())) { - Command commandAnnotation = cls.getAnnotation(Command.class); - PlayerCommand command = (PlayerCommand) cls.newInstance(); - - if (commandAnnotation != null) { - command.setLevel(commandAnnotation.gmLevel()); - for (String alias : commandAnnotation.aliases()) { - if (alias.length() == 0) { - continue; - } - - String commandName = "!" + alias; - list.put(commandName, command); - commandName = "/" + alias; - list.put(commandName, command); - } - } - - String commandName = "!" + cls.getSimpleName().toLowerCase(); - list.put(commandName, command); - commandName = "/" + cls.getSimpleName().toLowerCase(); - list.put(commandName, command); - } - - } - } catch (Exception e) { - - } - } - - public static void handle(GenshinPlayer player, String msg) { - String[] split = msg.split(" "); - - // End if invalid - if (split.length == 0) { - return; - } - - // - String first = split[0].toLowerCase(); - PlayerCommand c = PlayerCommands.list.get(first); - - if (c != null) { - // Level check - if (player.getGmLevel() < c.getLevel()) { - return; - } - // Execute - int len = Math.min(first.length() + 1, msg.length()); - c.execute(player, msg.substring(len)); - } - } - - public static abstract class PlayerCommand { - // GM level required to use this command - private int level; - protected int getLevel() { return this.level; } - protected void setLevel(int minLevel) { this.level = minLevel; } - - // Main - public abstract void execute(GenshinPlayer player, String raw); - } - - // ================ Commands ================ - - @Command(aliases = {"g", "item", "additem"}, helpText = "/give [item id] [count] - Gives {count} amount of {item id}") - public static class Give extends PlayerCommand { - @Override - public void execute(GenshinPlayer player, String raw) { - String[] split = raw.split(" "); - int itemId = 0, count = 1; - - try { - itemId = Integer.parseInt(split[0]); - } catch (Exception e) { - itemId = 0; - } - - try { - count = Math.max(Math.min(Integer.parseInt(split[1]), Integer.MAX_VALUE), 1); - } catch (Exception e) { - count = 1; - } - - // Give - ItemData itemData = GenshinData.getItemDataMap().get(itemId); - GenshinItem item; - - if (itemData == null) { - player.dropMessage("Error: Item data not found"); - return; - } - - if (itemData.isEquip()) { - List items = new LinkedList<>(); - for (int i = 0; i < count; i++) { - item = new GenshinItem(itemData); - items.add(item); - } - player.getInventory().addItems(items); - player.sendPacket(new PacketItemAddHintNotify(items, ActionReason.SubfieldDrop)); - } else { - item = new GenshinItem(itemData, count); - player.getInventory().addItem(item); - player.sendPacket(new PacketItemAddHintNotify(item, ActionReason.SubfieldDrop)); - } - } - } - - @Command(aliases = {"d"}, helpText = "/drop [item id] [count] - Drops {count} amount of {item id}") - public static class Drop extends PlayerCommand { - @Override - public void execute(GenshinPlayer player, String raw) { - String[] split = raw.split(" "); - int itemId = 0, count = 1; - - try { - itemId = Integer.parseInt(split[0]); - } catch (Exception e) { - itemId = 0; - } - - try { - count = Math.max(Math.min(Integer.parseInt(split[1]), Integer.MAX_VALUE), 1); - } catch (Exception e) { - count = 1; - } - - // Give - ItemData itemData = GenshinData.getItemDataMap().get(itemId); - - if (itemData == null) { - player.dropMessage("Error: Item data not found"); - return; - } - - if (itemData.isEquip()) { - float range = (5f + (.1f * count)); - for (int i = 0; i < count; i++) { - Position pos = player.getPos().clone().addX((float) (Math.random() * range) - (range / 2)).addY(3f).addZ((float) (Math.random() * range) - (range / 2)); - EntityItem entity = new EntityItem(player.getWorld(), player, itemData, pos, 1); - player.getWorld().addEntity(entity); - } - } else { - EntityItem entity = new EntityItem(player.getWorld(), player, itemData, player.getPos().clone().addY(3f), count); - player.getWorld().addEntity(entity); - } - } - } - - @Command(helpText = "/spawn [monster id] [count] - Creates {count} amount of {item id}") - public static class Spawn extends PlayerCommand { - @Override - public void execute(GenshinPlayer player, String raw) { - String[] split = raw.split(" "); - int monsterId = 0, count = 1, level = 1; - - try { - monsterId = Integer.parseInt(split[0]); - } catch (Exception e) { - monsterId = 0; - } - - try { - level = Math.max(Math.min(Integer.parseInt(split[1]), 200), 1); - } catch (Exception e) { - level = 1; - } - - try { - count = Math.max(Math.min(Integer.parseInt(split[2]), 1000), 1); - } catch (Exception e) { - count = 1; - } - - // Give - MonsterData monsterData = GenshinData.getMonsterDataMap().get(monsterId); - - if (monsterData == null) { - player.dropMessage("Error: Monster data not found"); - return; - } - - float range = (5f + (.1f * count)); - for (int i = 0; i < count; i++) { - Position pos = player.getPos().clone().addX((float) (Math.random() * range) - (range / 2)).addY(3f).addZ((float) (Math.random() * range) - (range / 2)); - EntityMonster entity = new EntityMonster(player.getWorld(), monsterData, pos, level); - player.getWorld().addEntity(entity); - } - } - } - - @Command(helpText = "/killall") - public static class KillAll extends PlayerCommand { - @Override - public void execute(GenshinPlayer player, String raw) { - List toRemove = new LinkedList<>(); - for (GenshinEntity entity : player.getWorld().getEntities().values()) { - if (entity instanceof EntityMonster) { - toRemove.add(entity); - } - } - toRemove.forEach(e -> player.getWorld().killEntity(e, 0)); - } - } - - @Command(helpText = "/resetconst - Resets all constellations for the currently active character") - public static class ResetConst extends PlayerCommand { - @Override - public void execute(GenshinPlayer player, String raw) { - EntityAvatar entity = player.getTeamManager().getCurrentAvatarEntity(); - - if (entity == null) { - return; - } - - GenshinAvatar avatar = entity.getAvatar(); - - avatar.getTalentIdList().clear(); - avatar.setCoreProudSkillLevel(0); - avatar.recalcStats(); - avatar.save(); - - player.dropMessage("Constellations for " + entity.getAvatar().getAvatarData().getName() + " have been reset. Please relogin to see changes."); - } - } - - @Command(helpText = "/godmode - Prevents you from taking damage") - public static class Godmode extends PlayerCommand { - @Override - public void execute(GenshinPlayer player, String raw) { - player.setGodmode(!player.hasGodmode()); - player.dropMessage("Godmode is now " + (player.hasGodmode() ? "ON" : "OFF")); - } - } - - @Command(helpText = "/sethp [hp]") - public static class Sethp extends PlayerCommand { - @Override - public void execute(GenshinPlayer player, String raw) { - String[] split = raw.split(" "); - int hp = 0; - - try { - hp = Math.max(Integer.parseInt(split[0]), 1); - } catch (Exception e) { - hp = 1; - } - - EntityAvatar entity = player.getTeamManager().getCurrentAvatarEntity(); - - if (entity == null) { - return; - } - - entity.setFightProperty(FightProperty.FIGHT_PROP_CUR_HP, hp); - entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CUR_HP)); - } - } - - @Command(aliases = {"clearart"}, helpText = "/clearartifacts") - public static class ClearArtifacts extends PlayerCommand { - @Override - public void execute(GenshinPlayer player, String raw) { - List toRemove = new LinkedList<>(); - for (GenshinItem item : player.getInventory().getItems().values()) { - if (item.getItemType() == ItemType.ITEM_RELIQUARY && item.getLevel() == 1 && item.getExp() == 0 && !item.isLocked() && !item.isEquipped()) { - toRemove.add(item); - } - } - - player.getInventory().removeItems(toRemove); - } - } -} diff --git a/src/deprecated/java/emu/grasscutter/commands/ServerCommands.java b/src/deprecated/java/emu/grasscutter/commands/ServerCommands.java deleted file mode 100644 index 2039d5227..000000000 --- a/src/deprecated/java/emu/grasscutter/commands/ServerCommands.java +++ /dev/null @@ -1,171 +0,0 @@ -package emu.grasscutter.commands; - -import java.lang.reflect.Modifier; -import java.util.Arrays; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.stream.Collectors; - -import emu.grasscutter.Grasscutter; -import emu.grasscutter.data.GenshinData; -import emu.grasscutter.data.def.ItemData; -import emu.grasscutter.database.DatabaseHelper; -import emu.grasscutter.game.GenshinPlayer; -import emu.grasscutter.game.inventory.GenshinItem; -import emu.grasscutter.utils.Crypto; -import emu.grasscutter.utils.Utils; - -public class ServerCommands { - private static HashMap list = new HashMap<>(); - - static { - try { - // Look for classes - for (Class cls : ServerCommands.class.getDeclaredClasses()) { - // Get non abstract classes - if (!Modifier.isAbstract(cls.getModifiers())) { - String commandName = cls.getSimpleName().toLowerCase(); - list.put(commandName, (ServerCommand) cls.newInstance()); - } - - } - } catch (Exception e) { - - } - } - - public static void handle(String msg) { - String[] split = msg.split(" "); - - // End if invalid - if (split.length == 0) { - return; - } - - // - String first = split[0].toLowerCase(); - ServerCommand c = ServerCommands.list.get(first); - - if (c != null) { - // Execute - int len = Math.min(first.length() + 1, msg.length()); - c.execute(msg.substring(len)); - } - } - - public static abstract class ServerCommand { - public abstract void execute(String raw); - } - - // ================ Commands ================ - - public static class Reload extends ServerCommand { - @Override - public void execute(String raw) { - Grasscutter.getLogger().info("Reloading config."); - Grasscutter.loadConfig(); - Grasscutter.getDispatchServer().loadQueries(); - Grasscutter.getLogger().info("Reload complete."); - } - } - - public static class sendMsg extends ServerCommand { - @Override - public void execute(String raw) { - List split = Arrays.asList(raw.split(" ")); - - if (split.size() < 2) { - Grasscutter.getLogger().error("Invalid amount of args"); - return; - } - - String playerID = split.get(0); - String message = split.stream().skip(1).collect(Collectors.joining(" ")); - - - emu.grasscutter.game.Account account = DatabaseHelper.getAccountByPlayerId(Integer.parseInt(playerID)); - if (account != null) { - GenshinPlayer player = Grasscutter.getGameServer().getPlayerById(Integer.parseInt(playerID)); - if(player != null) { - player.dropMessage(message); - Grasscutter.getLogger().info(String.format("Successfully sent message to %s: %s", playerID, message)); - } else { - Grasscutter.getLogger().error("Player not online"); - } - } else { - Grasscutter.getLogger().error(String.format("Player %s does not exist", playerID)); - } - } - } - - public static class Account extends ServerCommand { - @Override - public void execute(String raw) { - String[] split = raw.split(" "); - - if (split.length < 2) { - Grasscutter.getLogger().error("Invalid amount of args"); - return; - } - - String command = split[0].toLowerCase(); - String username = split[1]; - - switch (command) { - case "create": - if (split.length < 2) { - Grasscutter.getLogger().error("Invalid amount of args"); - return; - } - - int reservedId = 0; - try { - reservedId = Integer.parseInt(split[2]); - } catch (Exception e) { - reservedId = 0; - } - - emu.grasscutter.game.Account account = DatabaseHelper.createAccountWithId(username, reservedId); - if (account != null) { - Grasscutter.getLogger().info("Account created" + (reservedId > 0 ? " with an id of " + reservedId : "")); - } else { - Grasscutter.getLogger().error("Account already exists"); - } - break; - case "delete": - boolean success = DatabaseHelper.deleteAccount(username); - - if (success) { - Grasscutter.getLogger().info("Account deleted"); - } - break; - /* - case "setpw": - case "setpass": - case "setpassword": - if (split.length < 3) { - Grasscutter.getLogger().error("Invalid amount of args"); - return; - } - - account = DatabaseHelper.getAccountByName(username); - - if (account == null) { - Grasscutter.getLogger().error("No account found!"); - return; - } - - token = split[2]; - token = PasswordHelper.hashPassword(token); - - account.setPassword(token); - DatabaseHelper.saveAccount(account); - - Grasscutter.getLogger().info("Password set"); - break; - */ - } - } - } -} diff --git a/src/main/java/emu/grasscutter/Config.java b/src/main/java/emu/grasscutter/Config.java index 983524223..267ab67f2 100644 --- a/src/main/java/emu/grasscutter/Config.java +++ b/src/main/java/emu/grasscutter/Config.java @@ -1,48 +1,63 @@ package emu.grasscutter; +import java.util.ArrayList; + public final class Config { - public String DispatchServerIp = "127.0.0.1"; - public String DispatchServerPublicIp = ""; - public int DispatchServerPort = 443; - public String DispatchServerKeystorePath = "./keystore.p12"; - public String DispatchServerKeystorePassword = ""; - public Boolean UseSSL = true; - - public String GameServerName = "Test"; - public String GameServerIp = "127.0.0.1"; - public String GameServerPublicIp = ""; - public int GameServerPort = 22102; - - public int UploadLogPort = 80; - + public String DatabaseUrl = "mongodb://localhost:27017"; public String DatabaseCollection = "grasscutter"; - + public String RESOURCE_FOLDER = "./resources/"; public String DATA_FOLDER = "./data/"; public String PACKETS_FOLDER = "./packets/"; public String DUMPS_FOLDER = "./dumps/"; public String KEY_FOLDER = "./keys/"; - public boolean LOG_PACKETS = false; - - public GameRates Game = new GameRates(); - public ServerOptions ServerOptions = new ServerOptions(); - - public GameRates getGameRates() { - return Game; + + public String RunMode = "HYBRID"; // HYBRID, DISPATCH_ONLY, GAME_ONLY + public GameServerOptions GameServer = new GameServerOptions(); + public DispatchServerOptions DispatchServer = new DispatchServerOptions(); + + public GameServerOptions getGameServerOptions() { + return GameServer; + } + + public DispatchServerOptions getDispatchOptions() { return DispatchServer; } + + public static class DispatchServerOptions { + public String Ip = "0.0.0.0"; + public String PublicIp = "127.0.0.1"; + public int Port = 443; + public String KeystorePath = "./keystore.p12"; + public String KeystorePassword = ""; + public Boolean UseSSL = true; + + public boolean AutomaticallyCreateAccounts = false; + + public RegionInfo[] GameServers = {}; + + public RegionInfo[] getGameServers() { + return GameServers; + } + + public static class RegionInfo { + public String Name = "os_usa"; + public String Title = "Test"; + public String Ip = "127.0.0.1"; + public int Port = 22102; + } } - public ServerOptions getServerOptions() { - return ServerOptions; - } - - public static class GameRates { - public float ADVENTURE_EXP_RATE = 1.0f; - public float MORA_RATE = 1.0f; - public float DOMAIN_DROP_RATE = 1.0f; - } - - public static class ServerOptions { + public static class GameServerOptions { + public String Name = "Test"; + public String Ip = "0.0.0.0"; + public String PublicIp = "127.0.0.1"; + public int Port = 22102; + + public String DispatchServerDatabaseUrl = "mongodb://localhost:27017"; + public String DispatchServerDatabaseCollection = "grasscutter"; + + public boolean LOG_PACKETS = false; + public int InventoryLimitWeapon = 2000; public int InventoryLimitRelic = 2000; public int InventoryLimitMaterial = 2000; @@ -51,7 +66,18 @@ public final class Config { public int MaxAvatarsInTeam = 4; public int MaxAvatarsInTeamMultiplayer = 4; public int MaxEntityLimit = 1000; // Max entity limit per world. // TODO: Enforce later. + public boolean WatchGacha = false; public int[] WelcomeEmotes = {2007, 1002, 4010}; public String WelcomeMotd = "Welcome to Grasscutter emu"; + + public GameRates Game = new GameRates(); + + public GameRates getGameRates() { return Game; } + + public static class GameRates { + public float ADVENTURE_EXP_RATE = 1.0f; + public float MORA_RATE = 1.0f; + public float DOMAIN_DROP_RATE = 1.0f; + } } } diff --git a/src/main/java/emu/grasscutter/Grasscutter.java b/src/main/java/emu/grasscutter/Grasscutter.java index c9ccb551c..abcdc3557 100644 --- a/src/main/java/emu/grasscutter/Grasscutter.java +++ b/src/main/java/emu/grasscutter/Grasscutter.java @@ -7,7 +7,7 @@ import java.io.FileWriter; import java.io.InputStreamReader; import java.net.InetSocketAddress; -import emu.grasscutter.commands.CommandMap; +import emu.grasscutter.command.CommandMap; import emu.grasscutter.utils.Utils; import org.reflections.Reflections; import org.slf4j.LoggerFactory; @@ -73,11 +73,26 @@ public final class Grasscutter { DatabaseManager.initialize(); // Start servers. - dispatchServer = new DispatchServer(); - dispatchServer.start(); - - gameServer = new GameServer(new InetSocketAddress(getConfig().GameServerIp, getConfig().GameServerPort)); - gameServer.start(); + if(getConfig().RunMode.equalsIgnoreCase("HYBRID")) { + dispatchServer = new DispatchServer(); + dispatchServer.start(); + + gameServer = new GameServer(new InetSocketAddress(getConfig().getGameServerOptions().Ip, getConfig().getGameServerOptions().Port)); + gameServer.start(); + } else if(getConfig().RunMode.equalsIgnoreCase("DISPATCH_ONLY")) { + dispatchServer = new DispatchServer(); + dispatchServer.start(); + } else if(getConfig().RunMode.equalsIgnoreCase("GAME_ONLY")) { + gameServer = new GameServer(new InetSocketAddress(getConfig().getGameServerOptions().Ip, getConfig().getGameServerOptions().Port)); + gameServer.start(); + } else { + getLogger().error("Invalid server run mode. " + getConfig().RunMode); + getLogger().error("Server run mode must be 'HYBRID', 'DISPATCH_ONLY', or 'GAME_ONLY'. Unable to start Grasscutter..."); + getLogger().error("Shutting down..."); + System.exit(1); + } + + // Open console. startConsole(); @@ -86,8 +101,10 @@ public final class Grasscutter { public static void loadConfig() { try (FileReader file = new FileReader(configFile)) { config = gson.fromJson(file, Config.class); + saveConfig(); } catch (Exception e) { - Grasscutter.config = new Config(); saveConfig(); + Grasscutter.config = new Config(); + saveConfig(); } } @@ -104,9 +121,14 @@ public final class Grasscutter { try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) { while ((input = br.readLine()) != null) { try { + if(getConfig().RunMode.equalsIgnoreCase("DISPATCH_ONLY")) { + getLogger().error("Commands are not supported in dispatch only mode"); + return; + } CommandMap.getInstance().invoke(null, input); } catch (Exception e) { - Grasscutter.getLogger().error("Command error: " + e.getMessage()); + Grasscutter.getLogger().error("Command error: "); + e.printStackTrace(); } } } catch (Exception e) { diff --git a/src/main/java/emu/grasscutter/command/Command.java b/src/main/java/emu/grasscutter/command/Command.java new file mode 100644 index 000000000..d8a57e1a8 --- /dev/null +++ b/src/main/java/emu/grasscutter/command/Command.java @@ -0,0 +1,17 @@ +package emu.grasscutter.command; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Retention(RetentionPolicy.RUNTIME) +public @interface Command { + String label() default ""; + + String usage() default "No usage specified"; + + String description() default "No description specified"; + + String[] aliases() default {}; + + String permission() default ""; +} diff --git a/src/main/java/emu/grasscutter/command/CommandHandler.java b/src/main/java/emu/grasscutter/command/CommandHandler.java new file mode 100644 index 000000000..037e1ed9d --- /dev/null +++ b/src/main/java/emu/grasscutter/command/CommandHandler.java @@ -0,0 +1,30 @@ +package emu.grasscutter.command; + +import emu.grasscutter.Grasscutter; +import emu.grasscutter.game.GenshinPlayer; + +import java.util.List; + +public interface CommandHandler { + /** + * Send a message to the target. + * + * @param player The player to send the message to, or null for the server console. + * @param message The message to send. + */ + static void sendMessage(GenshinPlayer player, String message) { + if (player == null) { + Grasscutter.getLogger().info(message); + } else { + player.dropMessage(message); + } + } + + /** + * Called when a player/console invokes a command. + * @param sender The player/console that invoked the command. + * @param args The arguments to the command. + */ + default void execute(GenshinPlayer sender, List args) { + } +} diff --git a/src/main/java/emu/grasscutter/commands/CommandMap.java b/src/main/java/emu/grasscutter/command/CommandMap.java similarity index 75% rename from src/main/java/emu/grasscutter/commands/CommandMap.java rename to src/main/java/emu/grasscutter/command/CommandMap.java index e9ca260e7..007fafe17 100644 --- a/src/main/java/emu/grasscutter/commands/CommandMap.java +++ b/src/main/java/emu/grasscutter/command/CommandMap.java @@ -1,4 +1,4 @@ -package emu.grasscutter.commands; +package emu.grasscutter.command; import emu.grasscutter.Grasscutter; import emu.grasscutter.game.Account; @@ -7,73 +7,89 @@ import org.reflections.Reflections; import java.util.*; -@SuppressWarnings("UnusedReturnValue") +@SuppressWarnings({"UnusedReturnValue", "unused"}) public final class CommandMap { + private final Map commands = new HashMap<>(); + private final Map annotations = new HashMap<>(); + public CommandMap() { + this(false); + } + + public CommandMap(boolean scan) { + if (scan) this.scan(); + } + public static CommandMap getInstance() { return Grasscutter.getGameServer().getCommandMap(); } - - private final Map commands = new HashMap<>(); - private final Map annotations = new HashMap<>(); /** * Register a command handler. - * @param label The command label. + * + * @param label The command label. * @param command The command handler. * @return Instance chaining. */ public CommandMap registerCommand(String label, CommandHandler command) { Grasscutter.getLogger().debug("Registered command: " + label); - + // Get command data. Command annotation = command.getClass().getAnnotation(Command.class); this.annotations.put(label, annotation); this.commands.put(label, command); - + // Register aliases. - if(annotation.aliases().length > 0) { + if (annotation.aliases().length > 0) { for (String alias : annotation.aliases()) { this.commands.put(alias, command); this.annotations.put(alias, annotation); } - } return this; + } + return this; } /** * Removes a registered command handler. + * * @param label The command label. * @return Instance chaining. */ public CommandMap unregisterCommand(String label) { Grasscutter.getLogger().debug("Unregistered command: " + label); CommandHandler handler = this.commands.get(label); - if(handler == null) return this; - + if (handler == null) return this; + Command annotation = handler.getClass().getAnnotation(Command.class); this.annotations.remove(label); this.commands.remove(label); - + // Unregister aliases. - if(annotation.aliases().length > 0) { + if (annotation.aliases().length > 0) { for (String alias : annotation.aliases()) { this.commands.remove(alias); this.annotations.remove(alias); } } - + return this; } /** * Returns a list of all registered commands. + * * @return All command handlers as a list. */ - public List getHandlers() { + public List getHandlersAsList() { return new LinkedList<>(this.commands.values()); } + public HashMap getHandlers() { + return new LinkedHashMap<>(this.commands); + } + /** * Returns a handler by label/alias. + * * @param label The command label. * @return The command handler. */ @@ -83,59 +99,44 @@ public final class CommandMap { /** * Invoke a command handler with the given arguments. - * @param player The player invoking the command or null for the server console. + * + * @param player The player invoking the command or null for the server console. * @param rawMessage The messaged used to invoke the command. */ public void invoke(GenshinPlayer player, String rawMessage) { rawMessage = rawMessage.trim(); if(rawMessage.length() == 0) { - CommandHandler.sendMessage(player, "No command specified."); + CommandHandler.sendMessage(player, "No command specified."); return; } - + // Remove prefix if present. - if(!Character.isLetter(rawMessage.charAt(0))) + if (!Character.isLetter(rawMessage.charAt(0))) rawMessage = rawMessage.substring(1); - + // Parse message. String[] split = rawMessage.split(" "); List args = new LinkedList<>(Arrays.asList(split)); String label = args.remove(0); - + // Get command handler. CommandHandler handler = this.commands.get(label); - if(handler == null) { - CommandHandler.sendMessage(player, "Unknown command: " + label); return; + if (handler == null) { + CommandHandler.sendMessage(player, "Unknown command: " + label); + return; } - + // Check for permission. - if(player != null) { + if (player != null) { String permissionNode = this.annotations.get(label).permission(); Account account = player.getAccount(); - List permissions = account.getPermissions(); - if(!permissions.contains("*") && !permissions.contains(permissionNode)) { - CommandHandler.sendMessage(player, "You do not have permission to run this command."); return; + if(!permissionNode.isEmpty() && !account.hasPermission(permissionNode)) { + CommandHandler.sendMessage(player, "You do not have permission to run this command."); + return; } } - - // Execution power check. - Command.Execution executionPower = this.annotations.get(label).execution(); - if(player == null && executionPower == Command.Execution.PLAYER) { - CommandHandler.sendMessage(null, "Run this command in-game."); return; - } else if (player != null && executionPower == Command.Execution.CONSOLE) { - CommandHandler.sendMessage(player, "This command can only be run from the console."); return; - } - + // Invoke execute method for handler. - if(player == null) handler.execute(args); - else handler.execute(player, args); - } - - public CommandMap() { - this(false); - } - - public CommandMap(boolean scan) { - if(scan) this.scan(); + handler.execute(player, args); } /** diff --git a/src/main/java/emu/grasscutter/command/commands/AccountCommand.java b/src/main/java/emu/grasscutter/command/commands/AccountCommand.java new file mode 100644 index 000000000..26570e0e8 --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/AccountCommand.java @@ -0,0 +1,62 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.database.DatabaseHelper; +import emu.grasscutter.game.GenshinPlayer; + +import java.util.List; + +@Command(label = "account", usage = "account [uid]", + description = "Modify user accounts") +public final class AccountCommand implements CommandHandler { + + @Override + public void execute(GenshinPlayer sender, List args) { + if (sender != null) { + CommandHandler.sendMessage(sender, "This command can only be run from the console."); + return; + } + + if (args.size() < 2) { + CommandHandler.sendMessage(null, "Usage: account [uid]"); + return; + } + + String action = args.get(0); + String username = args.get(1); + + switch (action) { + default: + CommandHandler.sendMessage(null, "Usage: account [uid]"); + return; + case "create": + int uid = 0; + if (args.size() > 2) { + try { + uid = Integer.parseInt(args.get(2)); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(null, "Invalid UID."); + return; + } + } + + emu.grasscutter.game.Account account = DatabaseHelper.createAccountWithId(username, uid); + if (account == null) { + CommandHandler.sendMessage(null, "Account already exists."); + return; + } else { + CommandHandler.sendMessage(null, "Account created with UID " + account.getPlayerUid() + "."); + account.addPermission("*"); // Grant the player superuser permissions. + account.save(); // Save account to database. + } + return; + case "delete": + if (DatabaseHelper.deleteAccount(username)) { + CommandHandler.sendMessage(null, "Account deleted."); + } else { + CommandHandler.sendMessage(null, "Account not found."); + } + } + } +} diff --git a/src/main/java/emu/grasscutter/command/commands/BroadcastCommand.java b/src/main/java/emu/grasscutter/command/commands/BroadcastCommand.java new file mode 100644 index 000000000..4922f16f8 --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/BroadcastCommand.java @@ -0,0 +1,29 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.Grasscutter; +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.game.GenshinPlayer; + +import java.util.List; + +@Command(label = "broadcast", usage = "broadcast ", + description = "Sends a message to all the players", aliases = {"b"}, permission = "server.broadcast") +public final class BroadcastCommand implements CommandHandler { + + @Override + public void execute(GenshinPlayer sender, List args) { + if (args.size() < 1) { + CommandHandler.sendMessage(sender, "Usage: broadcast "); + return; + } + + String message = String.join(" ", args.subList(0, args.size())); + + for (GenshinPlayer p : Grasscutter.getGameServer().getPlayers().values()) { + CommandHandler.sendMessage(p, message); + } + + CommandHandler.sendMessage(sender, "Message sent."); + } +} diff --git a/src/main/java/emu/grasscutter/command/commands/ChangeSceneCommand.java b/src/main/java/emu/grasscutter/command/commands/ChangeSceneCommand.java new file mode 100644 index 000000000..eb2e998f2 --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/ChangeSceneCommand.java @@ -0,0 +1,42 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.game.GenshinPlayer; + +import java.util.List; + +@Command(label = "changescene", usage = "changescene ", + description = "Changes your scene", aliases = {"scene"}, permission = "player.changescene") +public final class ChangeSceneCommand 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() < 1) { + CommandHandler.sendMessage(sender, "Usage: changescene "); + return; + } + + try { + int sceneId = Integer.parseInt(args.get(0)); + + if (sceneId == sender.getSceneId()) { + CommandHandler.sendMessage(sender, "You are already in that scene"); + return; + } + + boolean result = sender.getWorld().transferPlayerToScene(sender, sceneId, sender.getPos()); + CommandHandler.sendMessage(sender, "Changed to scene " + sceneId); + + if (!result) { + CommandHandler.sendMessage(sender, "Scene does not exist"); + } + } catch (Exception e) { + CommandHandler.sendMessage(sender, "Usage: changescene "); + } + } +} diff --git a/src/main/java/emu/grasscutter/command/commands/ClearArtifactsCommand.java b/src/main/java/emu/grasscutter/command/commands/ClearArtifactsCommand.java new file mode 100644 index 000000000..258e1e1d5 --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/ClearArtifactsCommand.java @@ -0,0 +1,30 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.game.GenshinPlayer; +import emu.grasscutter.game.inventory.Inventory; +import emu.grasscutter.game.inventory.ItemType; + +import java.util.List; + +@Command(label = "clearartifacts", usage = "clearartifacts", + description = "Deletes all unequipped and unlocked level 0 artifacts, including yellow rarity ones from your inventory", + aliases = {"clearart"}, permission = "player.clearartifacts") +public final class ClearArtifactsCommand implements CommandHandler { + + @Override + public void execute(GenshinPlayer sender, List args) { + if (sender == null) { + CommandHandler.sendMessage(null, "Run this command in-game."); + return; // TODO: clear player's artifacts from console or other players + } + + Inventory playerInventory = sender.getInventory(); + playerInventory.getItems().values().stream() + .filter(item -> item.getItemType() == ItemType.ITEM_RELIQUARY) + .filter(item -> item.getLevel() == 1 && item.getExp() == 0) + .filter(item -> !item.isLocked() && !item.isEquipped()) + .forEach(item -> playerInventory.removeItem(item, item.getCount())); + } +} diff --git a/src/main/java/emu/grasscutter/command/commands/DropCommand.java b/src/main/java/emu/grasscutter/command/commands/DropCommand.java new file mode 100644 index 000000000..e2d7644a0 --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/DropCommand.java @@ -0,0 +1,56 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.data.GenshinData; +import emu.grasscutter.data.def.ItemData; +import emu.grasscutter.game.GenshinPlayer; +import emu.grasscutter.game.entity.EntityItem; +import emu.grasscutter.utils.Position; + +import java.util.List; + +@Command(label = "drop", usage = "drop [amount]", + description = "Drops an item near you", aliases = {"d", "dropitem"}, permission = "server.drop") +public final class DropCommand 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() < 1) { + CommandHandler.sendMessage(sender, "Usage: drop [amount]"); + return; + } + + try { + int item = Integer.parseInt(args.get(0)); + int amount = 1; + if (args.size() > 1) amount = Integer.parseInt(args.get(1)); + + ItemData itemData = GenshinData.getItemDataMap().get(item); + if (itemData == null) { + CommandHandler.sendMessage(sender, "Invalid item id."); + return; + } + + if (itemData.isEquip()) { + float range = (5f + (.1f * amount)); + for (int i = 0; i < amount; i++) { + Position pos = sender.getPos().clone().addX((float) (Math.random() * range) - (range / 2)).addY(3f).addZ((float) (Math.random() * range) - (range / 2)); + EntityItem entity = new EntityItem(sender.getScene(), sender, itemData, pos, 1); + sender.getScene().addEntity(entity); + } + } else { + EntityItem entity = new EntityItem(sender.getScene(), sender, itemData, sender.getPos().clone().addY(3f), amount); + sender.getScene().addEntity(entity); + } + CommandHandler.sendMessage(sender, String.format("Dropped %s of %s.", amount, item)); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid item or player ID."); + } + } +} \ No newline at end of file diff --git a/src/main/java/emu/grasscutter/command/commands/GiveCharCommand.java b/src/main/java/emu/grasscutter/command/commands/GiveCharCommand.java new file mode 100644 index 000000000..bfe0f51c0 --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/GiveCharCommand.java @@ -0,0 +1,93 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.Grasscutter; +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.data.GenshinData; +import emu.grasscutter.data.def.AvatarData; +import emu.grasscutter.game.GenshinPlayer; +import emu.grasscutter.game.avatar.GenshinAvatar; + +import java.util.List; + +@Command(label = "givechar", usage = "givechar [level]", + description = "Gives the player a specified character", aliases = {"givec"}, permission = "player.givechar") +public final class GiveCharCommand implements CommandHandler { + + @Override + public void execute(GenshinPlayer sender, List args) { + int target, avatarId, level = 1, ascension; + + if (sender == null && args.size() < 2) { + CommandHandler.sendMessage(null, "Usage: givechar [amount]"); + return; + } + + switch (args.size()) { + default: + CommandHandler.sendMessage(sender, "Usage: givechar [level]"); + return; + case 2: + try { + target = Integer.parseInt(args.get(0)); + if (Grasscutter.getGameServer().getPlayerByUid(target) == null && sender != null) { + target = sender.getUid(); + level = Integer.parseInt(args.get(1)); + avatarId = Integer.parseInt(args.get(0)); + } else { + avatarId = Integer.parseInt(args.get(1)); + } + } catch (NumberFormatException ignored) { + // TODO: Parse from avatar name using GM Handbook. + CommandHandler.sendMessage(sender, "Invalid avatar or player ID."); + return; + } + break; + case 3: + try { + target = Integer.parseInt(args.get(0)); + if (Grasscutter.getGameServer().getPlayerByUid(target) == null) { + CommandHandler.sendMessage(sender, "Invalid player ID."); + return; + } + + avatarId = Integer.parseInt(args.get(1)); + level = Integer.parseInt(args.get(2)); + } catch (NumberFormatException ignored) { + // TODO: Parse from avatar name using GM Handbook. + CommandHandler.sendMessage(sender, "Invalid avatar or player ID."); + return; + } + break; + } + + GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target); + if (targetPlayer == null) { + CommandHandler.sendMessage(sender, "Player not found."); + return; + } + + AvatarData avatarData = GenshinData.getAvatarDataMap().get(avatarId); + if (avatarData == null) { + CommandHandler.sendMessage(sender, "Invalid avatar id."); + return; + } + + // Calculate ascension level. + if (level <= 40) { + ascension = (int) Math.ceil(level / 20f); + } else { + ascension = (int) Math.ceil(level / 10f) - 3; + } + + GenshinAvatar avatar = new GenshinAvatar(avatarId); + avatar.setLevel(level); + avatar.setPromoteLevel(ascension); + + // This will handle stats and talents + avatar.recalcStats(); + + targetPlayer.addAvatar(avatar); + CommandHandler.sendMessage(sender, String.format("Given %s to %s.", avatarId, target)); + } +} diff --git a/src/main/java/emu/grasscutter/command/commands/GiveCommand.java b/src/main/java/emu/grasscutter/command/commands/GiveCommand.java new file mode 100644 index 000000000..a533130bc --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/GiveCommand.java @@ -0,0 +1,113 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.Grasscutter; +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.data.GenshinData; +import emu.grasscutter.data.def.ItemData; +import emu.grasscutter.game.GenshinPlayer; +import emu.grasscutter.game.inventory.GenshinItem; +import emu.grasscutter.game.props.ActionReason; +import emu.grasscutter.server.packet.send.PacketItemAddHintNotify; + +import java.util.LinkedList; +import java.util.List; + +@Command(label = "give", usage = "give [player] [amount]", + description = "Gives an item to you or the specified player", aliases = {"g", "item", "giveitem"}, permission = "player.give") +public final class GiveCommand implements CommandHandler { + + @Override + public void execute(GenshinPlayer sender, List args) { + int target, item, amount = 1; + + if (sender == null && args.size() < 2) { + CommandHandler.sendMessage(null, "Usage: give [amount]"); + return; + } + + switch (args.size()) { + default: // *No args* + CommandHandler.sendMessage(sender, "Usage: give [player] [amount]"); + return; + case 1: // + try { + item = Integer.parseInt(args.get(0)); + target = sender.getUid(); + } catch (NumberFormatException ignored) { + // TODO: Parse from item name using GM Handbook. + CommandHandler.sendMessage(sender, "Invalid item id."); + return; + } + break; + case 2: // [amount] | [player] + try { + target = Integer.parseInt(args.get(0)); + + if (Grasscutter.getGameServer().getPlayerByUid(target) == null && sender != null) { + target = sender.getUid(); + item = Integer.parseInt(args.get(0)); + amount = Integer.parseInt(args.get(1)); + } else { + item = Integer.parseInt(args.get(1)); + } + } catch (NumberFormatException ignored) { + // TODO: Parse from item name using GM Handbook. + CommandHandler.sendMessage(sender, "Invalid item or player ID."); + return; + } + break; + case 3: // [player] [amount] + try { + target = Integer.parseInt(args.get(0)); + + if (Grasscutter.getGameServer().getPlayerByUid(target) == null) { + CommandHandler.sendMessage(sender, "Invalid player ID."); + return; + } + + item = Integer.parseInt(args.get(1)); + amount = Integer.parseInt(args.get(2)); + } catch (NumberFormatException ignored) { + // TODO: Parse from item name using GM Handbook. + CommandHandler.sendMessage(sender, "Invalid item or player ID."); + return; + } + break; + } + + GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target); + + if (targetPlayer == null) { + CommandHandler.sendMessage(sender, "Player not found."); + return; + } + + ItemData itemData = GenshinData.getItemDataMap().get(item); + if (itemData == null) { + CommandHandler.sendMessage(sender, "Invalid item id."); + return; + } + + this.item(targetPlayer, itemData, amount); + + CommandHandler.sendMessage(sender, String.format("Given %s of %s to %s.", amount, item, target)); + } + + private void item(GenshinPlayer player, ItemData itemData, int amount) { + if (itemData.isEquip()) { + List items = new LinkedList<>(); + for (int i = 0; i < amount; i++) { + items.add(new GenshinItem(itemData)); + } + player.getInventory().addItems(items); + player.sendPacket(new PacketItemAddHintNotify(items, ActionReason.SubfieldDrop)); + } else { + GenshinItem genshinItem = new GenshinItem(itemData); + genshinItem.setCount(amount); + player.getInventory().addItem(genshinItem); + player.sendPacket(new PacketItemAddHintNotify(genshinItem, ActionReason.SubfieldDrop)); + } + } +} + diff --git a/src/main/java/emu/grasscutter/command/commands/GodModeCommand.java b/src/main/java/emu/grasscutter/command/commands/GodModeCommand.java new file mode 100644 index 000000000..e5635dc9f --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/GodModeCommand.java @@ -0,0 +1,22 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.game.GenshinPlayer; + +import java.util.List; + +@Command(label = "godmode", usage = "godmode [playerId]", + description = "Prevents you from taking damage", permission = "player.godmode") +public final class GodModeCommand implements CommandHandler { + + @Override + public void execute(GenshinPlayer sender, List args) { + if (sender == null) { + CommandHandler.sendMessage(null, "Run this command in-game."); + return; // TODO: toggle player's godmode statue from console or other players + } + sender.setGodmode(!sender.inGodmode()); + sender.dropMessage("Godmode is now " + (sender.inGodmode() ? "enabled" : "disabled") + "."); + } +} diff --git a/src/main/java/emu/grasscutter/command/commands/HealCommand.java b/src/main/java/emu/grasscutter/command/commands/HealCommand.java new file mode 100644 index 000000000..511e52812 --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/HealCommand.java @@ -0,0 +1,36 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.game.GenshinPlayer; +import emu.grasscutter.game.props.FightProperty; +import emu.grasscutter.server.packet.send.PacketAvatarFightPropUpdateNotify; +import emu.grasscutter.server.packet.send.PacketAvatarLifeStateChangeNotify; +import emu.grasscutter.server.packet.send.PacketEntityFightPropUpdateNotify; +import emu.grasscutter.server.packet.send.PacketLifeStateChangeNotify; + +import java.util.List; + +@Command(label = "heal", usage = "heal|h", + description = "Heal all characters in your current team.", aliases = {"h"}, permission = "player.heal") +public class HealCommand implements CommandHandler { + @Override + public void execute(GenshinPlayer sender, List args) { + if (sender == null) { + CommandHandler.sendMessage(null, "Run this command in-game."); + return; + } + sender.getTeamManager().getActiveTeam().forEach(entity -> { + boolean isAlive = entity.isAlive(); + entity.setFightProperty( + FightProperty.FIGHT_PROP_CUR_HP, + entity.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP) + ); + entity.getWorld().broadcastPacket(new PacketAvatarFightPropUpdateNotify(entity.getAvatar(), FightProperty.FIGHT_PROP_CUR_HP)); + if (!isAlive) { + entity.getWorld().broadcastPacket(new PacketAvatarLifeStateChangeNotify(entity.getAvatar())); + } + }); + CommandHandler.sendMessage(sender, "All characters are healed."); + } +} diff --git a/src/main/java/emu/grasscutter/command/commands/HelpCommand.java b/src/main/java/emu/grasscutter/command/commands/HelpCommand.java new file mode 100644 index 000000000..abe78e7d3 --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/HelpCommand.java @@ -0,0 +1,91 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.command.CommandMap; +import emu.grasscutter.game.GenshinPlayer; + +import java.util.*; + +@Command(label = "help", usage = "help [command]", + description = "Sends the help message or shows information about a specified command") +public final class HelpCommand implements CommandHandler { + + @Override + public void execute(GenshinPlayer player, List args) { + if (args.size() < 1) { + HashMap handlers = CommandMap.getInstance().getHandlers(); + List annotations = new ArrayList<>(); + for (String key : handlers.keySet()) { + Command annotation = handlers.get(key).getClass().getAnnotation(Command.class); + + if (!Arrays.asList(annotation.aliases()).contains(key)) { + if (player != null && !Objects.equals(annotation.permission(), "") && !player.getAccount().hasPermission(annotation.permission())) + continue; + annotations.add(annotation); + } + } + + SendAllHelpMessage(player, annotations); + } else { + String command = args.get(0); + CommandHandler handler = CommandMap.getInstance().getHandler(command); + StringBuilder builder = new StringBuilder(player == null ? "\nHelp - " : "Help - ").append(command).append(": \n"); + if (handler == null) { + builder.append("No command found."); + } else { + Command annotation = handler.getClass().getAnnotation(Command.class); + + builder.append(" ").append(annotation.description()).append("\n"); + builder.append(" Usage: ").append(annotation.usage()); + if (annotation.aliases().length >= 1) { + builder.append("\n").append(" Aliases: "); + for (String alias : annotation.aliases()) { + builder.append(alias).append(" "); + } + } + if (player != null && !Objects.equals(annotation.permission(), "") && !player.getAccount().hasPermission(annotation.permission())) { + builder.append("\n Warning: You do not have permission to run this command."); + } + } + + CommandHandler.sendMessage(player, builder.toString()); + } + } + + void SendAllHelpMessage(GenshinPlayer player, List annotations) { + if (player == null) { + StringBuilder builder = new StringBuilder("\nAvailable commands:\n"); + annotations.forEach(annotation -> { + builder.append(annotation.label()).append("\n"); + builder.append(" ").append(annotation.description()).append("\n"); + builder.append(" Usage: ").append(annotation.usage()); + if (annotation.aliases().length >= 1) { + builder.append("\n").append(" Aliases: "); + for (String alias : annotation.aliases()) { + builder.append(alias).append(" "); + } + } + + builder.append("\n"); + }); + + CommandHandler.sendMessage(null, builder.toString()); + } else { + CommandHandler.sendMessage(player, "Available commands:"); + annotations.forEach(annotation -> { + StringBuilder builder = new StringBuilder(annotation.label()).append("\n"); + builder.append(" ").append(annotation.description()).append("\n"); + builder.append(" Usage: ").append(annotation.usage()); + if (annotation.aliases().length >= 1) { + builder.append("\n").append(" Aliases: "); + for (String alias : annotation.aliases()) { + builder.append(alias).append(" "); + } + } + + CommandHandler.sendMessage(player, builder.toString()); + }); + } + } +} diff --git a/src/main/java/emu/grasscutter/command/commands/KickCommand.java b/src/main/java/emu/grasscutter/command/commands/KickCommand.java new file mode 100644 index 000000000..61e9d759b --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/KickCommand.java @@ -0,0 +1,31 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.Grasscutter; +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.game.GenshinPlayer; + +import java.util.List; + +@Command(label = "kick", usage = "kick ", + description = "Kicks the specified player from the server (WIP)", permission = "server.kick") +public final class KickCommand implements CommandHandler { + + @Override + public void execute(GenshinPlayer sender, List args) { + int target = Integer.parseInt(args.get(0)); + + GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target); + if (targetPlayer == null) { + CommandHandler.sendMessage(sender, "Player not found."); + return; + } + + if (sender != null) { + CommandHandler.sendMessage(sender, String.format("Player [%s:%s] has kicked player [%s:%s]", sender.getAccount().getPlayerUid(), sender.getAccount().getUsername(), target, targetPlayer.getAccount().getUsername())); + } + CommandHandler.sendMessage(sender, String.format("Kicking player [%s:%s]", target, targetPlayer.getAccount().getUsername())); + + targetPlayer.getSession().close(); + } +} diff --git a/src/main/java/emu/grasscutter/command/commands/KillAllCommand.java b/src/main/java/emu/grasscutter/command/commands/KillAllCommand.java new file mode 100644 index 000000000..436691b57 --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/KillAllCommand.java @@ -0,0 +1,64 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.Grasscutter; +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.game.GenshinPlayer; +import emu.grasscutter.game.GenshinScene; +import emu.grasscutter.game.entity.EntityMonster; + +import java.util.List; + +@Command(label = "killall", usage = "killall [playerUid] [sceneId]", + description = "Kill all entities", permission = "server.killall") +public final class KillAllCommand implements CommandHandler { + + @Override + public void execute(GenshinPlayer sender, List args) { + GenshinScene scene; + GenshinPlayer genshinPlayer; + + try { + switch (args.size()) { + case 0: // *No args* + if (sender == null) { + CommandHandler.sendMessage(null, "Usage: killall [playerUid] [sceneId]"); + return; + } + scene = sender.getScene(); + break; + case 1: // [playerUid] + genshinPlayer = Grasscutter.getGameServer().getPlayerByUid(Integer.parseInt(args.get(0))); + if (genshinPlayer == null) { + CommandHandler.sendMessage(sender, "Player not found or offline."); + return; + } + scene = genshinPlayer.getScene(); + break; + case 2: // [playerUid] [sceneId] + genshinPlayer = Grasscutter.getGameServer().getPlayerByUid(Integer.parseInt(args.get(0))); + if (genshinPlayer == null) { + CommandHandler.sendMessage(sender, "Player not found or offline."); + return; + } + GenshinScene genshinScene = sender.getWorld().getSceneById(Integer.parseInt(args.get(1))); + if (genshinScene == null) { + CommandHandler.sendMessage(sender, "Scene not found in player world"); + return; + } + scene = genshinScene; + break; + default: + CommandHandler.sendMessage(sender, "Usage: killall [playerUid] [sceneId]"); + return; + } + + scene.getEntities().values().stream() + .filter(entity -> entity instanceof EntityMonster) + .forEach(entity -> scene.killEntity(entity, 0)); + CommandHandler.sendMessage(sender, "Killing all monsters in scene " + scene.getId()); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid arguments."); + } + } +} diff --git a/src/main/java/emu/grasscutter/command/commands/ListCommand.java b/src/main/java/emu/grasscutter/command/commands/ListCommand.java new file mode 100644 index 000000000..6afca4a6d --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/ListCommand.java @@ -0,0 +1,33 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.Grasscutter; +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.game.GenshinPlayer; + +import java.util.List; +import java.util.Map; + +@Command(label = "list", description = "List online players") +public class ListCommand implements CommandHandler { + + @Override + public void execute(GenshinPlayer sender, List args) { + Map playersMap = Grasscutter.getGameServer().getPlayers(); + + CommandHandler.sendMessage(sender, String.format("There are %s player(s) online:", playersMap.size())); + + if (playersMap.size() != 0) { + StringBuilder playerSet = new StringBuilder(); + + for (Map.Entry entry : playersMap.entrySet()) { + playerSet.append(entry.getValue().getNickname()); + playerSet.append(", "); + } + + String players = playerSet.toString(); + + CommandHandler.sendMessage(sender, players.substring(0, players.length() - 2)); + } + } +} diff --git a/src/main/java/emu/grasscutter/command/commands/PermissionCommand.java b/src/main/java/emu/grasscutter/command/commands/PermissionCommand.java new file mode 100644 index 000000000..7218bf2cd --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/PermissionCommand.java @@ -0,0 +1,50 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.Grasscutter; +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.game.Account; +import emu.grasscutter.game.GenshinPlayer; + +import java.util.List; + +@Command(label = "permission", usage = "permission ", + description = "Grants or removes a permission for a user", permission = "*") +public final class PermissionCommand implements CommandHandler { + + @Override + public void execute(GenshinPlayer sender, List args) { + if (args.size() < 3) { + CommandHandler.sendMessage(sender, "Usage: permission "); + return; + } + + String action = args.get(0); + String username = args.get(1); + String permission = args.get(2); + + Account account = Grasscutter.getGameServer().getAccountByName(username); + if (account == null) { + CommandHandler.sendMessage(sender, "Account not found."); + return; + } + + switch (action) { + default: + CommandHandler.sendMessage(sender, "Usage: permission "); + break; + case "add": + if (account.addPermission(permission)) { + CommandHandler.sendMessage(sender, "Permission added."); + } else CommandHandler.sendMessage(sender, "They already have this permission!"); + break; + case "remove": + if (account.removePermission(permission)) { + CommandHandler.sendMessage(sender, "Permission removed."); + } else CommandHandler.sendMessage(sender, "They don't have this permission!"); + break; + } + + account.save(); + } +} \ No newline at end of file diff --git a/src/main/java/emu/grasscutter/command/commands/PositionCommand.java b/src/main/java/emu/grasscutter/command/commands/PositionCommand.java new file mode 100644 index 000000000..639301c7f --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/PositionCommand.java @@ -0,0 +1,22 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.game.GenshinPlayer; + +import java.util.List; + +@Command(label = "position", usage = "position", aliases = {"pos"}, + description = "Get coordinates.") +public final class PositionCommand implements CommandHandler { + + @Override + public void execute(GenshinPlayer sender, List args) { + if (sender == null) { + CommandHandler.sendMessage(null, "Run this command in-game."); + return; + } + + sender.dropMessage(String.format("Coord: %.3f, %.3f, %.3f", sender.getPos().getX(), sender.getPos().getY(), sender.getPos().getZ())); + } +} diff --git a/src/main/java/emu/grasscutter/command/commands/ReloadCommand.java b/src/main/java/emu/grasscutter/command/commands/ReloadCommand.java new file mode 100644 index 000000000..b145aaf94 --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/ReloadCommand.java @@ -0,0 +1,22 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.Grasscutter; +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.game.GenshinPlayer; + +import java.util.List; + +@Command(label = "reload", usage = "reload", + description = "Reload server config", permission = "server.reload") +public final class ReloadCommand implements CommandHandler { + + @Override + public void execute(GenshinPlayer sender, List args) { + CommandHandler.sendMessage(sender, "Reloading config."); + Grasscutter.loadConfig(); + Grasscutter.getGameServer().getGachaManager().load(); + Grasscutter.getDispatchServer().loadQueries(); + CommandHandler.sendMessage(sender, "Reload complete."); + } +} diff --git a/src/main/java/emu/grasscutter/command/commands/ResetConstCommand.java b/src/main/java/emu/grasscutter/command/commands/ResetConstCommand.java new file mode 100644 index 000000000..77f16f9b8 --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/ResetConstCommand.java @@ -0,0 +1,45 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.game.GenshinPlayer; +import emu.grasscutter.game.avatar.GenshinAvatar; +import emu.grasscutter.game.entity.EntityAvatar; + +import java.util.List; + +@Command(label = "resetconst", usage = "resetconst [all]", + description = "Resets the constellation level on your current active character, will need to relog after using the command to see any changes.", + aliases = {"resetconstellation"}, permission = "player.resetconstellation") +public final class ResetConstCommand 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() > 0 && args.get(0).equalsIgnoreCase("all")) { + sender.getAvatars().forEach(this::resetConstellation); + sender.dropMessage("Reset all avatars' constellations."); + } else { + EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity(); + if (entity == null) { + return; + } + + GenshinAvatar avatar = entity.getAvatar(); + this.resetConstellation(avatar); + + sender.dropMessage("Constellations for " + avatar.getAvatarData().getName() + " have been reset. Please relog to see changes."); + } + } + + private void resetConstellation(GenshinAvatar avatar) { + avatar.getTalentIdList().clear(); + avatar.setCoreProudSkillLevel(0); + avatar.recalcStats(); + avatar.save(); + } +} \ No newline at end of file diff --git a/src/main/java/emu/grasscutter/command/commands/RestartCommand.java b/src/main/java/emu/grasscutter/command/commands/RestartCommand.java new file mode 100644 index 000000000..cf40fa9bd --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/RestartCommand.java @@ -0,0 +1,16 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.game.GenshinPlayer; + +import java.util.List; + +@Command(label = "restart", usage = "restart - Restarts the current session") +public final class RestartCommand implements CommandHandler { + + @Override + public void execute(GenshinPlayer sender, List args) { + sender.getSession().close(); + } +} diff --git a/src/main/java/emu/grasscutter/command/commands/SendMessageCommand.java b/src/main/java/emu/grasscutter/command/commands/SendMessageCommand.java new file mode 100644 index 000000000..061009c19 --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/SendMessageCommand.java @@ -0,0 +1,37 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.Grasscutter; +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.game.GenshinPlayer; + +import java.util.List; + +@Command(label = "say", usage = "say ", description = "Sends a message to a player as the server", + aliases = {"sendservmsg", "sendservermessage", "sendmessage"}, permission = "server.sendmessage") +public final class SendMessageCommand implements CommandHandler { + + @Override + public void execute(GenshinPlayer sender, List args) { + if (args.size() < 2) { + CommandHandler.sendMessage(null, "Usage: sendmessage "); + return; + } + + try { + int target = Integer.parseInt(args.get(0)); + String message = String.join(" ", args.subList(1, args.size())); + + GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target); + if (targetPlayer == null) { + CommandHandler.sendMessage(sender, "Player not found."); + return; + } + + CommandHandler.sendMessage(targetPlayer, message); + CommandHandler.sendMessage(sender, "Message sent."); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid player ID."); + } + } +} \ No newline at end of file diff --git a/src/main/java/emu/grasscutter/command/commands/SetStatsCommand.java b/src/main/java/emu/grasscutter/command/commands/SetStatsCommand.java new file mode 100644 index 000000000..e3efdb0d5 --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/SetStatsCommand.java @@ -0,0 +1,239 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.game.GenshinPlayer; +import emu.grasscutter.game.entity.EntityAvatar; +import emu.grasscutter.game.props.FightProperty; +import emu.grasscutter.server.packet.send.PacketEntityFightPropUpdateNotify; + +import java.util.List; + +@Command(label = "setstats", usage = "setstats|stats ", + description = "Set fight property for your current active character", aliases = {"stats"}, permission = "player.setstats") +public final class SetStatsCommand 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() < 2){ + CommandHandler.sendMessage(sender, "Usage: setstats|stats "); + return; + } + + String stat = args.get(0); + switch (stat) { + default: + CommandHandler.sendMessage(sender, "Usage: /setstats|stats for basic stats"); + CommandHandler.sendMessage(sender, "Usage: /stats for elemental bonus"); + return; + case "hp": + try { + int health = Integer.parseInt(args.get(1)); + EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity(); + entity.setFightProperty(FightProperty.FIGHT_PROP_CUR_HP, health); + entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CUR_HP)); + CommandHandler.sendMessage(sender, "HP set to " + health + "."); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid HP value."); + return; + } + break; + case "def": + try { + int def = Integer.parseInt(args.get(1)); + EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity(); + entity.setFightProperty(FightProperty.FIGHT_PROP_CUR_DEFENSE, def); + entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CUR_DEFENSE)); + CommandHandler.sendMessage(sender, "DEF set to " + def + "."); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid DEF value."); + return; + } + break; + case "atk": + try { + int atk = Integer.parseInt(args.get(1)); + EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity(); + entity.setFightProperty(FightProperty.FIGHT_PROP_CUR_ATTACK, atk); + entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CUR_ATTACK)); + CommandHandler.sendMessage(sender, "ATK set to " + atk + "."); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid ATK value."); + return; + } + break; + case "em": + try { + int em = Integer.parseInt(args.get(1)); + EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity(); + entity.setFightProperty(FightProperty.FIGHT_PROP_ELEMENT_MASTERY, em); + entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_ELEMENT_MASTERY)); + CommandHandler.sendMessage(sender, "Elemental Mastery set to " + em + "."); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid EM value."); + return; + } + break; + case "er": + try { + float er = Integer.parseInt(args.get(1)); + EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity(); + float erecharge = er / 10000; + entity.setFightProperty(FightProperty.FIGHT_PROP_CHARGE_EFFICIENCY, erecharge); + entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CHARGE_EFFICIENCY)); + float iger = erecharge * 100; + CommandHandler.sendMessage(sender, "Energy recharge set to " + iger + "%."); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid ER value."); + return; + } + break; + case "crate": + try { + float cr = Integer.parseInt(args.get(1)); + EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity(); + float crate = cr / 10000; + entity.setFightProperty(FightProperty.FIGHT_PROP_CRITICAL, crate); + entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CRITICAL)); + float igcrate = crate * 100; + CommandHandler.sendMessage(sender, "Crit Rate set to " + igcrate + "%."); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid Crit Rate value."); + return; + } + break; + case "cdmg": + try { + float cdmg = Integer.parseInt(args.get(1)); + EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity(); + float cdamage = cdmg / 10000; + entity.setFightProperty(FightProperty.FIGHT_PROP_CRITICAL_HURT, cdamage); + entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CRITICAL_HURT)); + float igcdmg = cdamage * 100; + CommandHandler.sendMessage(sender, "Crit DMG set to " + igcdmg + "%"); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid Crit DMG value."); + return; + } + break; + case "epyro": + try { + float epyro = Integer.parseInt(args.get(1)); + EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity(); + float pyro = epyro / 10000; + entity.setFightProperty(FightProperty.FIGHT_PROP_FIRE_ADD_HURT, pyro); + entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_FIRE_ADD_HURT)); + float igpyro = pyro * 100; + CommandHandler.sendMessage(sender, "Pyro DMG Bonus set to " + igpyro + "%"); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid Pyro DMG Bonus value."); + return; + } + break; + case "ecryo": + try { + float ecryo = Integer.parseInt(args.get(1)); + EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity(); + float cryo = ecryo / 10000; + entity.setFightProperty(FightProperty.FIGHT_PROP_ICE_ADD_HURT, cryo); + entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_ICE_ADD_HURT)); + float igcyro = cryo * 100; + CommandHandler.sendMessage(sender, "Cyro DMG Bonus set to " + igcyro + "%"); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid Cryo DMG Bonus value."); + return; + } + break; + case "ehydro": + try { + float ehydro = Integer.parseInt(args.get(1)); + EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity(); + float hydro = ehydro / 10000; + entity.setFightProperty(FightProperty.FIGHT_PROP_WATER_ADD_HURT, hydro); + entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_WATER_ADD_HURT)); + float ighydro = hydro * 100; + CommandHandler.sendMessage(sender, "Hydro DMG Bonus set to " + ighydro + "%"); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid Hydro DMG Bonus value."); + return; + } + break; + case "eanemo": + try { + float eanemo = Integer.parseInt(args.get(1)); + EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity(); + float anemo = eanemo / 10000; + entity.setFightProperty(FightProperty.FIGHT_PROP_WIND_ADD_HURT, anemo); + entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_WIND_ADD_HURT)); + float iganemo = anemo * 100; + CommandHandler.sendMessage(sender, "Anemo DMG Bonus set to " + iganemo + "%"); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid Anemo DMG Bonus value."); + return; + } + break; + case "egeo": + try { + float egeo = Integer.parseInt(args.get(1)); + EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity(); + float geo = egeo / 10000; + entity.setFightProperty(FightProperty.FIGHT_PROP_ROCK_ADD_HURT, geo); + entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_ROCK_ADD_HURT)); + float iggeo = geo * 100; + CommandHandler.sendMessage(sender, "Geo DMG Bonus set to " + iggeo + "%"); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid Geo DMG Bonus value."); + return; + } + break; + case "ethunder": + case "eelec": + try { + float eelec = Integer.parseInt(args.get(1)); + EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity(); + float elec = eelec / 10000; + entity.setFightProperty(FightProperty.FIGHT_PROP_CRITICAL_HURT, elec); + entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CRITICAL_HURT)); + float igelec = elec * 100; + CommandHandler.sendMessage(sender, "Electro DMG Bonus set to " + igelec + "%"); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid Electro DMG Bonus value."); + return; + } + break; + case "ephys": + try { + float ephys = Integer.parseInt(args.get(1)); + EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity(); + float phys = ephys / 10000; + entity.setFightProperty(FightProperty.FIGHT_PROP_PHYSICAL_ADD_HURT, phys); + entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_PHYSICAL_ADD_HURT)); + float igphys = phys * 100; + CommandHandler.sendMessage(sender, "Physical DMG Bonus set to " + igphys + "%"); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid Physical DMG Bonus value."); + return; + } + break; + case "edend": + try { + float edend = Integer.parseInt(args.get(1)); + EntityAvatar entity = sender.getTeamManager().getCurrentAvatarEntity(); + float dend = edend / 10000; + entity.setFightProperty(FightProperty.FIGHT_PROP_GRASS_ADD_HURT, dend); + entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_GRASS_ADD_HURT)); + float igdend = dend * 100; + CommandHandler.sendMessage(sender, "Dendro DMG Bonus set to " + igdend + "%"); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid Dendro DMG Bonus value."); + return; + } + break; + } + } +} diff --git a/src/main/java/emu/grasscutter/command/commands/SetWorldLevelCommand.java b/src/main/java/emu/grasscutter/command/commands/SetWorldLevelCommand.java new file mode 100644 index 000000000..146837523 --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/SetWorldLevelCommand.java @@ -0,0 +1,39 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.game.GenshinPlayer; +import emu.grasscutter.game.props.PlayerProperty; + +import java.util.List; + +@Command(label = "setworldlevel", usage = "setworldlevel ", + description = "Sets your world level (Relog to see proper effects)", + aliases = {"setworldlvl"}, permission = "player.setworldlevel") +public final class SetWorldLevelCommand implements CommandHandler { + + @Override + public void execute(GenshinPlayer sender, List args) { + if (sender == null) { + CommandHandler.sendMessage(null, "Run this command in-game."); + return; // TODO: set player's world level from console or other players + } + + if (args.size() < 1) { + CommandHandler.sendMessage(sender, "Usage: setworldlevel "); + return; + } + + try { + int level = Integer.parseInt(args.get(0)); + + // Set in both world and player props + sender.getWorld().setWorldLevel(level); + sender.setProperty(PlayerProperty.PROP_PLAYER_WORLD_LEVEL, level); + + sender.dropMessage("World level set to " + level + "."); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(null, "Invalid world level."); + } + } +} diff --git a/src/main/java/emu/grasscutter/command/commands/SpawnCommand.java b/src/main/java/emu/grasscutter/command/commands/SpawnCommand.java new file mode 100644 index 000000000..969872119 --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/SpawnCommand.java @@ -0,0 +1,51 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.data.GenshinData; +import emu.grasscutter.data.def.MonsterData; +import emu.grasscutter.game.GenshinPlayer; +import emu.grasscutter.game.entity.EntityMonster; +import emu.grasscutter.utils.Position; + +import java.util.List; + +@Command(label = "spawn", usage = "spawn [level] [amount]", + description = "Spawns an entity near you", permission = "server.spawn") +public final class SpawnCommand 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() < 1) { + CommandHandler.sendMessage(sender, "Usage: spawn [amount]"); + return; + } + + try { + int entity = Integer.parseInt(args.get(0)); + int level = args.size() > 1 ? Integer.parseInt(args.get(1)) : 1; + int amount = args.size() > 2 ? Integer.parseInt(args.get(2)) : 1; + + MonsterData entityData = GenshinData.getMonsterDataMap().get(entity); + if (entityData == null) { + CommandHandler.sendMessage(sender, "Invalid entity id."); + return; + } + + float range = (5f + (.1f * amount)); + for (int i = 0; i < amount; i++) { + Position pos = sender.getPos().clone().addX((float) (Math.random() * range) - (range / 2)).addY(3f).addZ((float) (Math.random() * range) - (range / 2)); + EntityMonster monster = new EntityMonster(sender.getScene(), entityData, pos, level); + sender.getScene().addEntity(monster); + } + CommandHandler.sendMessage(sender, String.format("Spawned %s of %s.", amount, entity)); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid item or player ID."); + } + } +} diff --git a/src/main/java/emu/grasscutter/command/commands/StopCommand.java b/src/main/java/emu/grasscutter/command/commands/StopCommand.java new file mode 100644 index 000000000..4b63cd44e --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/StopCommand.java @@ -0,0 +1,23 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.Grasscutter; +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.game.GenshinPlayer; + +import java.util.List; + +@Command(label = "stop", usage = "stop", + description = "Stops the server", permission = "server.stop") +public final class StopCommand implements CommandHandler { + + @Override + public void execute(GenshinPlayer sender, List args) { + CommandHandler.sendMessage(null, "Server shutting down..."); + for (GenshinPlayer p : Grasscutter.getGameServer().getPlayers().values()) { + CommandHandler.sendMessage(p, "Server shutting down..."); + } + + System.exit(1); + } +} diff --git a/src/main/java/emu/grasscutter/command/commands/WeatherCommand.java b/src/main/java/emu/grasscutter/command/commands/WeatherCommand.java new file mode 100644 index 000000000..bb9ae4a42 --- /dev/null +++ b/src/main/java/emu/grasscutter/command/commands/WeatherCommand.java @@ -0,0 +1,41 @@ +package emu.grasscutter.command.commands; + +import emu.grasscutter.command.Command; +import emu.grasscutter.command.CommandHandler; +import emu.grasscutter.game.GenshinPlayer; +import emu.grasscutter.game.props.ClimateType; +import emu.grasscutter.server.packet.send.PacketSceneAreaWeatherNotify; + +import java.util.List; + +@Command(label = "weather", usage = "weather [climateId]", + description = "Changes the weather.", aliases = {"w"}, permission = "player.weather") +public final class WeatherCommand 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() < 1) { + CommandHandler.sendMessage(sender, "Usage: weather [climateId]"); + return; + } + + try { + int weatherId = Integer.parseInt(args.get(0)); + int climateId = args.size() > 1 ? Integer.parseInt(args.get(1)) : 1; + + ClimateType climate = ClimateType.getTypeByValue(climateId); + + sender.getScene().setWeather(weatherId); + sender.getScene().setClimate(climate); + sender.getScene().broadcastPacket(new PacketSceneAreaWeatherNotify(sender)); + CommandHandler.sendMessage(sender, "Changed weather to " + weatherId + " with climate " + climateId); + } catch (NumberFormatException ignored) { + CommandHandler.sendMessage(sender, "Invalid ID."); + } + } +} diff --git a/src/main/java/emu/grasscutter/commands/Command.java b/src/main/java/emu/grasscutter/commands/Command.java deleted file mode 100644 index d1e181e20..000000000 --- a/src/main/java/emu/grasscutter/commands/Command.java +++ /dev/null @@ -1,23 +0,0 @@ -package emu.grasscutter.commands; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -@Retention(RetentionPolicy.RUNTIME) -public @interface Command { - String label() default ""; - - String usage() default ""; - - String[] aliases() default {""}; - - Execution execution() default Execution.ALL; - - String permission() default ""; - - enum Execution { - ALL, - CONSOLE, - PLAYER - } -} diff --git a/src/main/java/emu/grasscutter/commands/CommandHandler.java b/src/main/java/emu/grasscutter/commands/CommandHandler.java deleted file mode 100644 index 97bd8c81f..000000000 --- a/src/main/java/emu/grasscutter/commands/CommandHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package emu.grasscutter.commands; - -import emu.grasscutter.Grasscutter; -import emu.grasscutter.game.GenshinPlayer; - -import java.util.List; - -public interface CommandHandler { - /* Invoked on player execution. */ - default void execute(GenshinPlayer player, List args) { } - /* Invoked on server execution. */ - default void execute(List args) { } - - /* - * Utilities. - */ - - /** - * Send a message to the target. - * @param player The player to send the message to, or null for the server console. - * @param message The message to send. - */ - static void sendMessage(GenshinPlayer player, String message) { - if(player == null) { - Grasscutter.getLogger().info(message); - } else player.dropMessage(message); - } -} diff --git a/src/main/java/emu/grasscutter/commands/PlayerCommands.java b/src/main/java/emu/grasscutter/commands/PlayerCommands.java deleted file mode 100644 index b6401740d..000000000 --- a/src/main/java/emu/grasscutter/commands/PlayerCommands.java +++ /dev/null @@ -1,508 +0,0 @@ -package emu.grasscutter.commands; - -import emu.grasscutter.Grasscutter; -import emu.grasscutter.data.GenshinData; -import emu.grasscutter.data.def.ItemData; -import emu.grasscutter.data.def.AvatarData; -import emu.grasscutter.data.def.AvatarSkillDepotData; -import emu.grasscutter.data.def.MonsterData; -import emu.grasscutter.game.GenshinPlayer; -import emu.grasscutter.game.GenshinScene; -import emu.grasscutter.game.World; -import emu.grasscutter.game.avatar.GenshinAvatar; -import emu.grasscutter.game.entity.EntityAvatar; -import emu.grasscutter.game.entity.EntityItem; -import emu.grasscutter.game.entity.EntityMonster; -import emu.grasscutter.game.inventory.GenshinItem; -import emu.grasscutter.game.inventory.Inventory; -import emu.grasscutter.game.inventory.ItemType; -import emu.grasscutter.game.props.ActionReason; -import emu.grasscutter.game.props.FightProperty; -import emu.grasscutter.game.props.PlayerProperty; -import emu.grasscutter.server.packet.send.PacketEntityFightPropUpdateNotify; -import emu.grasscutter.server.packet.send.PacketItemAddHintNotify; -import emu.grasscutter.utils.Position; - -import java.util.LinkedList; -import java.util.List; - -/** - * A container for player-related commands. - */ -public final class PlayerCommands { - @Command(label = "give", aliases = {"g", "item", "giveitem"}, - usage = "Usage: give [player] [amount]") - public static class GiveCommand implements CommandHandler { - - @Override - public void execute(GenshinPlayer player, List args) { - int target, item, amount = 1; - - switch(args.size()) { - default: - CommandHandler.sendMessage(player, "Usage: give [amount]"); - return; - case 1: - try { - item = Integer.parseInt(args.get(0)); - target = player.getAccount().getPlayerId(); - } catch (NumberFormatException ignored) { - // TODO: Parse from item name using GM Handbook. - CommandHandler.sendMessage(player, "Invalid item id."); - return; - } - break; - case 2: - try { - target = Integer.parseInt(args.get(0)); - - if(Grasscutter.getGameServer().getPlayerByUid(target) == null) { - target = player.getUid(); amount = Integer.parseInt(args.get(1)); - item = Integer.parseInt(args.get(0)); - } else { - item = Integer.parseInt(args.get(1)); - } - } catch (NumberFormatException ignored) { - // TODO: Parse from item name using GM Handbook. - CommandHandler.sendMessage(player, "Invalid item or player ID."); - return; - } - break; - case 3: - try { - target = Integer.parseInt(args.get(0)); - - if(Grasscutter.getGameServer().getPlayerByUid(target) == null) { - CommandHandler.sendMessage(player, "Invalid player ID."); return; - } - - item = Integer.parseInt(args.get(1)); - amount = Integer.parseInt(args.get(2)); - } catch (NumberFormatException ignored) { - // TODO: Parse from item name using GM Handbook. - CommandHandler.sendMessage(player, "Invalid item or player ID."); - return; - } - break; - } - - GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target); - - if(targetPlayer == null) { - CommandHandler.sendMessage(player, "Player not found."); return; - } - - ItemData itemData = GenshinData.getItemDataMap().get(item); - if(itemData == null) { - CommandHandler.sendMessage(player, "Invalid item id."); return; - } - - this.item(targetPlayer, itemData, amount); - } - - /** - * give [player] [itemId|itemName] [amount] - */ - @Override public void execute(List args) { - if(args.size() < 2) { - CommandHandler.sendMessage(null, "Usage: give [amount]"); - return; - } - - try { - int target = Integer.parseInt(args.get(0)); - int item = Integer.parseInt(args.get(1)); - int amount = 1; if(args.size() > 2) amount = Integer.parseInt(args.get(2)); - - GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target); - - if(targetPlayer == null) { - CommandHandler.sendMessage(null, "Player not found."); return; - } - - ItemData itemData = GenshinData.getItemDataMap().get(item); - if(itemData == null) { - CommandHandler.sendMessage(null, "Invalid item id."); return; - } - - this.item(targetPlayer, itemData, amount); - } catch (NumberFormatException ignored) { - CommandHandler.sendMessage(null, "Invalid item or player ID."); - } - } - - private void item(GenshinPlayer player, ItemData itemData, int amount) { - GenshinItem genshinItem = new GenshinItem(itemData); - if(itemData.isEquip()) { - List items = new LinkedList<>(); - for(int i = 0; i < amount; i++) { - items.add(genshinItem); - } player.getInventory().addItems(items); - player.sendPacket(new PacketItemAddHintNotify(items, ActionReason.SubfieldDrop)); - } else { - genshinItem.setCount(amount); - player.getInventory().addItem(genshinItem); - player.sendPacket(new PacketItemAddHintNotify(genshinItem, ActionReason.SubfieldDrop)); - } - } - } - - @Command(label = "drop", aliases = {"d", "dropitem"}, - usage = "Usage: drop [amount]", - execution = Command.Execution.PLAYER) - public static class DropCommand implements CommandHandler { - - @Override - public void execute(GenshinPlayer player, List args) { - if(args.size() < 1) { - CommandHandler.sendMessage(player, "Usage: drop [amount]"); - return; - } - - try { - int item = Integer.parseInt(args.get(0)); - int amount = 1; if(args.size() > 1) amount = Integer.parseInt(args.get(1)); - - ItemData itemData = GenshinData.getItemDataMap().get(item); - if(itemData == null) { - CommandHandler.sendMessage(player, "Invalid item id."); return; - } - - if (itemData.isEquip()) { - float range = (5f + (.1f * amount)); - for (int i = 0; i < amount; i++) { - Position pos = player.getPos().clone().addX((float) (Math.random() * range) - (range / 2)).addY(3f).addZ((float) (Math.random() * range) - (range / 2)); - EntityItem entity = new EntityItem(player.getScene(), player, itemData, pos, 1); - player.getScene().addEntity(entity); - } - } else { - EntityItem entity = new EntityItem(player.getScene(), player, itemData, player.getPos().clone().addY(3f), amount); - player.getScene().addEntity(entity); - } - } catch (NumberFormatException ignored) { - CommandHandler.sendMessage(player, "Invalid item or player ID."); - } - } - } - - @Command(label = "givechar", aliases = {"givec"}, - usage = "Usage: givechar [level|avatarId] [level]") - public static class GiveCharCommand implements CommandHandler { - @Override public void execute(GenshinPlayer player, List args) { - int target, avatarId, level = 1, ascension = 1; - - if(args.size() < 1) { - CommandHandler.sendMessage(player, "Usage: givechar [level]"); - return; - } - - switch(args.size()) { - default: - CommandHandler.sendMessage(player, "Usage: givechar [level]"); - return; - case 2: - try { - target = Integer.parseInt(args.get(0)); - if(Grasscutter.getGameServer().getPlayerByUid(target) == null) { - target = player.getUid(); - level = Integer.parseInt(args.get(1)); - avatarId = Integer.parseInt(args.get(0)); - } else { - avatarId = Integer.parseInt(args.get(1)); - } - } catch (NumberFormatException ignored) { - // TODO: Parse from avatar name using GM Handbook. - CommandHandler.sendMessage(player, "Invalid avatar or player ID."); - return; - } - break; - case 3: - try { - target = Integer.parseInt(args.get(0)); - if(Grasscutter.getGameServer().getPlayerByUid(target) == null) { - CommandHandler.sendMessage(player, "Invalid player ID."); return; - } - - avatarId = Integer.parseInt(args.get(1)); - level = Integer.parseInt(args.get(2)); - } catch (NumberFormatException ignored) { - // TODO: Parse from avatar name using GM Handbook. - CommandHandler.sendMessage(player, "Invalid avatar or player ID."); - return; - } - break; - } - - GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target); - if(targetPlayer == null) { - CommandHandler.sendMessage(player, "Player not found."); return; - } - - AvatarData avatarData = GenshinData.getAvatarDataMap().get(avatarId); - if(avatarData == null) { - CommandHandler.sendMessage(player, "Invalid avatar id."); return; - } - - // Calculate ascension level. - if (level <= 40) { - ascension = (int) Math.ceil(level / 20f); - } else { - ascension = (int) Math.ceil(level / 10f) - 3; - } - - GenshinAvatar avatar = new GenshinAvatar(avatarId); - avatar.setLevel(level); - avatar.setPromoteLevel(ascension); - - // This will handle stats and talents - avatar.recalcStats(); - - targetPlayer.addAvatar(avatar); - } - - @Override - public void execute(List args) { - if(args.size() < 2) { - CommandHandler.sendMessage(null, "Usage: givechar [amount]"); - return; - } - - try { - int target = Integer.parseInt(args.get(0)); - int avatarID = Integer.parseInt(args.get(1)); - int level = 1; if(args.size() > 2) level = Integer.parseInt(args.get(2)); - int ascension; - - GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target); - if(targetPlayer == null) { - CommandHandler.sendMessage(null, "Player not found."); return; - } - - AvatarData avatarData = GenshinData.getAvatarDataMap().get(avatarID); - if(avatarData == null) { - CommandHandler.sendMessage(null, "Invalid avatar id."); return; - } - - // Calculate ascension level. - if (level <= 40) { - ascension = (int) Math.ceil(level / 20f); - } else { - ascension = (int) Math.ceil(level / 10f) - 3; - } - - GenshinAvatar avatar = new GenshinAvatar(avatarID); - avatar.setLevel(level); - avatar.setPromoteLevel(ascension); - - // This will handle stats and talents - avatar.recalcStats(); - - targetPlayer.addAvatar(avatar); - } catch (NumberFormatException ignored) { - CommandHandler.sendMessage(null, "Invalid item or player ID."); - } - } - } - - @Command(label = "spawn", execution = Command.Execution.PLAYER, - usage = "Usage: spawn [level] [amount]") - public static class SpawnCommand implements CommandHandler { - - @Override - public void execute(GenshinPlayer player, List args) { - if(args.size() < 1) { - CommandHandler.sendMessage(null, "Usage: spawn [amount]"); - return; - } - - try { - int entity = Integer.parseInt(args.get(0)); - int level = 1; if(args.size() > 1) level = Integer.parseInt(args.get(1)); - int amount = 1; if(args.size() > 2) amount = Integer.parseInt(args.get(2)); - - MonsterData entityData = GenshinData.getMonsterDataMap().get(entity); - if(entityData == null) { - CommandHandler.sendMessage(null, "Invalid entity id."); return; - } - - float range = (5f + (.1f * amount)); - for (int i = 0; i < amount; i++) { - Position pos = player.getPos().clone().addX((float) (Math.random() * range) - (range / 2)).addY(3f).addZ((float) (Math.random() * range) - (range / 2)); - EntityMonster monster = new EntityMonster(player.getScene(), entityData, pos, level); - player.getScene().addEntity(monster); - } - } catch (NumberFormatException ignored) { - CommandHandler.sendMessage(null, "Invalid item or player ID."); - } - } - } - - @Command(label = "killall", - usage = "Usage: killall [playerUid] [sceneId]") - public static class KillAllCommand implements CommandHandler { - - @Override - public void execute(GenshinPlayer player, List args) { - GenshinScene scene = player.getScene(); - scene.getEntities().values().stream() - .filter(entity -> entity instanceof EntityMonster) - .forEach(entity -> scene.killEntity(entity, 0)); - CommandHandler.sendMessage(null, "Killing all monsters in scene " + scene.getId()); - } - - @Override - public void execute(List args) { - if(args.size() < 2) { - CommandHandler.sendMessage(null, "Usage: killall [playerUid] [sceneId]"); return; - } - - try { - int playerUid = Integer.parseInt(args.get(0)); - int sceneId = Integer.parseInt(args.get(1)); - - GenshinPlayer player = Grasscutter.getGameServer().getPlayerByUid(playerUid); - if (player == null) { - CommandHandler.sendMessage(null, "Player not found or offline."); - return; - } - - GenshinScene scene = player.getWorld().getSceneById(sceneId); - if (scene == null) { - CommandHandler.sendMessage(null, "Scene not found in player world"); - return; - } - - scene.getEntities().values().stream() - .filter(entity -> entity instanceof EntityMonster) - .forEach(entity -> scene.killEntity(entity, 0)); - CommandHandler.sendMessage(null, "Killing all monsters in scene " + scene.getId()); - } catch (NumberFormatException ignored) { - CommandHandler.sendMessage(null, "Invalid arguments."); - } - } - } - - @Command(label = "resetconst", aliases = {"resetconstellation"}, - usage = "Usage: resetconst [all]", execution = Command.Execution.PLAYER) - public static class ResetConstellationCommand implements CommandHandler { - - @Override - public void execute(GenshinPlayer player, List args) { - if(args.size() > 0 && args.get(0).equalsIgnoreCase("all")) { - player.getAvatars().forEach(this::resetConstellation); - player.dropMessage("Reset all avatars' constellations."); - } else { - EntityAvatar entity = player.getTeamManager().getCurrentAvatarEntity(); - if(entity == null) - return; - - GenshinAvatar avatar = entity.getAvatar(); - this.resetConstellation(avatar); - - player.dropMessage("Constellations for " + avatar.getAvatarData().getName() + " have been reset. Please relog to see changes."); - } - } - - private void resetConstellation(GenshinAvatar avatar) { - avatar.getTalentIdList().clear(); - avatar.setCoreProudSkillLevel(0); - avatar.recalcStats(); - avatar.save(); - } - } - - @Command(label = "godmode", - usage = "Usage: godmode", execution = Command.Execution.PLAYER) - public static class GodModeCommand implements CommandHandler { - - @Override - public void execute(GenshinPlayer player, List args) { - player.setGodmode(!player.inGodmode()); - player.dropMessage("Godmode is now " + (player.inGodmode() ? "enabled" : "disabled") + "."); - } - } - - @Command(label = "sethealth", aliases = {"sethp"}, - usage = "Usage: sethealth ", execution = Command.Execution.PLAYER) - public static class SetHealthCommand implements CommandHandler { - - @Override - public void execute(GenshinPlayer player, List args) { - if(args.size() < 1) { - CommandHandler.sendMessage(null, "Usage: sethealth "); return; - } - - try { - int health = Integer.parseInt(args.get(0)); - EntityAvatar entity = player.getTeamManager().getCurrentAvatarEntity(); - if(entity == null) - return; - - entity.setFightProperty(FightProperty.FIGHT_PROP_CUR_HP, health); - entity.getWorld().broadcastPacket(new PacketEntityFightPropUpdateNotify(entity, FightProperty.FIGHT_PROP_CUR_HP)); - player.dropMessage("Health set to " + health + "."); - } catch (NumberFormatException ignored) { - CommandHandler.sendMessage(null, "Invalid health value."); - } - } - } - - @Command(label = "setworldlevel", aliases = {"setworldlvl"}, - usage = "Usage: setworldlevel ", execution = Command.Execution.PLAYER) - public static class SetWorldLevelCommand implements CommandHandler { - @Override - public void execute(GenshinPlayer player, List args) { - if(args.size() < 1) { - CommandHandler.sendMessage(player, "Usage: setworldlevel "); return; - } - - try { - int level = Integer.parseInt(args.get(0)); - - // Set in both world and player props - player.getWorld().setWorldLevel(level); - player.setProperty(PlayerProperty.PROP_PLAYER_WORLD_LEVEL, level); - - player.dropMessage("World level set to " + level + "."); - } catch (NumberFormatException ignored) { - CommandHandler.sendMessage(null, "Invalid world level."); - } - } - } - - @Command(label = "clearartifacts", aliases = {"clearart"}, - usage = "Usage: clearartifacts", execution = Command.Execution.PLAYER) - public static class ClearArtifactsCommand implements CommandHandler { - @Override - public void execute(GenshinPlayer player, List args) { - Inventory playerInventory = player.getInventory(); - playerInventory.getItems().values().stream() - .filter(item -> item.getItemType() == ItemType.ITEM_RELIQUARY) - .filter(item -> item.getLevel() == 1 && item.getExp() == 0) - .filter(item -> !item.isLocked() && !item.isEquipped()) - .forEach(item -> playerInventory.removeItem(item, item.getCount())); - } - } - - @Command(label = "changescene", aliases = {"scene"}, - usage = "Usage: changescene ", execution = Command.Execution.PLAYER) - public static class ChangeSceneCommand implements CommandHandler { - @Override - public void execute(GenshinPlayer player, List args) { - if(args.size() < 1) { - CommandHandler.sendMessage(player, "Usage: changescene "); return; - } - - try { - int sceneId = Integer.parseInt(args.get(0)); - boolean result = player.getWorld().transferPlayerToScene(player, sceneId, player.getPos()); - - if (!result) { - CommandHandler.sendMessage(null, "Scene does not exist or you are already in it"); - } - } catch (Exception e) { - CommandHandler.sendMessage(player, "Usage: changescene "); return; - } - } - } -} diff --git a/src/main/java/emu/grasscutter/commands/ServerCommands.java b/src/main/java/emu/grasscutter/commands/ServerCommands.java deleted file mode 100644 index 0faf0e7f9..000000000 --- a/src/main/java/emu/grasscutter/commands/ServerCommands.java +++ /dev/null @@ -1,216 +0,0 @@ -package emu.grasscutter.commands; - -import emu.grasscutter.Grasscutter; -import emu.grasscutter.database.DatabaseHelper; -import emu.grasscutter.game.Account; -import emu.grasscutter.game.GenshinPlayer; - -import java.util.List; -import java.util.stream.Collectors; - -/** - * A container for server-related commands. - */ -public final class ServerCommands { - @Command(label = "reload", usage = "Usage: reload") - public static class ReloadCommand implements CommandHandler { - - @Override - public void execute(List args) { - Grasscutter.getLogger().info("Reloading config."); - Grasscutter.loadConfig(); - Grasscutter.getDispatchServer().loadQueries(); - Grasscutter.getLogger().info("Reload complete."); - } - - @Override - public void execute(GenshinPlayer player, List args) { - this.execute(args); - } - } - - @Command(label = "sendmessage", aliases = {"sendmsg", "msg"}, - usage = "Usage: sendmessage ") - public static class SendMessageCommand implements CommandHandler { - - @Override - public void execute(List args) { - if(args.size() < 2) { - CommandHandler.sendMessage(null, "Usage: sendmessage "); return; - } - - try { - int target = Integer.parseInt(args.get(0)); - String message = String.join(" ", args.subList(1, args.size())); - - GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target); - - if(targetPlayer == null) { - CommandHandler.sendMessage(null, "Player not found."); return; - } - - targetPlayer.dropMessage(message); - CommandHandler.sendMessage(null, "Message sent."); - } catch (NumberFormatException ignored) { - CommandHandler.sendMessage(null, "Invalid player ID."); - } - } - - @Override - public void execute(GenshinPlayer player, List args) { - if(args.size() < 2) { - CommandHandler.sendMessage(player, "Usage: sendmessage "); return; - } - - try { - int target = Integer.parseInt(args.get(0)); - String message = String.join(" ", args.subList(1, args.size())); - - GenshinPlayer targetPlayer = Grasscutter.getGameServer().getPlayerByUid(target); - - if(targetPlayer == null) { - CommandHandler.sendMessage(player, "Player not found."); return; - } - - targetPlayer.sendMessage(player, message); - CommandHandler.sendMessage(player, "Message sent."); - } catch (NumberFormatException ignored) { - CommandHandler.sendMessage(player, "Invalid player ID."); - } - } - } - - @Command(label = "account", - usage = "Usage: account [uid]", - execution = Command.Execution.CONSOLE) - public static class AccountCommand implements CommandHandler { - - @Override - public void execute(List args) { - if(args.size() < 2) { - CommandHandler.sendMessage(null, "Usage: account [uid]"); return; - } - - String action = args.get(0); - String username = args.get(1); - - switch(action) { - default: - CommandHandler.sendMessage(null, "Usage: account [uid]"); - return; - case "create": - int uid = 0; - if(args.size() > 2) { - try { - uid = Integer.parseInt(args.get(2)); - } catch (NumberFormatException ignored) { - CommandHandler.sendMessage(null, "Invalid UID."); return; - } - } - - Account account = DatabaseHelper.createAccountWithId(username, uid); - if(account == null) { - CommandHandler.sendMessage(null, "Account already exists."); return; - } else { - CommandHandler.sendMessage(null, "Account created with UID " + account.getPlayerId() + "."); - account.addPermission("*"); // Grant the player superuser permissions. - } - return; - case "delete": - if(DatabaseHelper.deleteAccount(username)) { - CommandHandler.sendMessage(null, "Account deleted."); return; - } else CommandHandler.sendMessage(null, "Account not found."); - return; - } - } - } - - @Command(label = "permission", - usage = "Usage: permission ", - execution = Command.Execution.CONSOLE) - public static class PermissionCommand implements CommandHandler { - - @Override - public void execute(List args) { - if(args.size() < 3) { - CommandHandler.sendMessage(null, "Usage: permission "); return; - } - - String action = args.get(0); - String username = args.get(1); - String permission = args.get(2); - - Account account = Grasscutter.getGameServer().getAccountByName(username); - if(account == null) { - CommandHandler.sendMessage(null, "Account not found."); return; - } - - switch(action) { - default: - CommandHandler.sendMessage(null, "Usage: permission "); - break; - case "add": - if(account.addPermission(permission)) { - CommandHandler.sendMessage(null, "Permission added."); - } else CommandHandler.sendMessage(null, "They already have this permission!"); - break; - case "remove": - if(account.removePermission(permission)) { - CommandHandler.sendMessage(null, "Permission removed."); - } else CommandHandler.sendMessage(null, "They don't have this permission!"); - break; - } - - account.save(); - } - } - - @Command(label = "help", - usage = "Usage: help [command]") - public static class HelpCommand implements CommandHandler { - - @Override - public void execute(List args) { - List handlers = CommandMap.getInstance().getHandlers(); - List annotations = handlers.stream() - .map(handler -> handler.getClass().getAnnotation(Command.class)) - .collect(Collectors.toList()); - - if(args.size() < 1) { - StringBuilder builder = new StringBuilder("Available commands:\n"); - annotations.forEach(annotation -> builder.append(annotation.usage()).append("\n")); - CommandHandler.sendMessage(null, builder.toString()); - } else { - String command = args.get(0); - CommandHandler handler = CommandMap.getInstance().getHandler(command); - if(handler == null) { - CommandHandler.sendMessage(null, "Command not found."); return; - } - - Command annotation = handler.getClass().getAnnotation(Command.class); - CommandHandler.sendMessage(null, annotation.usage()); - } - } - - @Override - public void execute(GenshinPlayer player, List args) { - List handlers = CommandMap.getInstance().getHandlers(); - List annotations = handlers.stream() - .map(handler -> handler.getClass().getAnnotation(Command.class)) - .collect(Collectors.toList()); - - if(args.size() < 1) { - annotations.forEach(annotation -> player.dropMessage(annotation.usage())); - } else { - String command = args.get(0); - CommandHandler handler = CommandMap.getInstance().getHandler(command); - if(handler == null) { - CommandHandler.sendMessage(player, "Command not found."); return; - } - - Command annotation = handler.getClass().getAnnotation(Command.class); - CommandHandler.sendMessage(player, annotation.usage()); - } - } - } -} diff --git a/src/main/java/emu/grasscutter/data/GenshinData.java b/src/main/java/emu/grasscutter/data/GenshinData.java index bb2709108..7e14b1b46 100644 --- a/src/main/java/emu/grasscutter/data/GenshinData.java +++ b/src/main/java/emu/grasscutter/data/GenshinData.java @@ -1,13 +1,16 @@ package emu.grasscutter.data; import java.lang.reflect.Field; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import emu.grasscutter.Grasscutter; import emu.grasscutter.utils.Utils; import emu.grasscutter.data.custom.AbilityEmbryoEntry; import emu.grasscutter.data.custom.OpenConfigEntry; +import emu.grasscutter.data.custom.ScenePointEntry; import emu.grasscutter.data.def.*; import it.unimi.dsi.fastutil.ints.Int2ObjectLinkedOpenHashMap; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; @@ -18,6 +21,7 @@ public class GenshinData { private static final Int2ObjectMap abilityHashes = new Int2ObjectOpenHashMap<>(); private static final Map abilityEmbryos = new HashMap<>(); private static final Map openConfigEntries = new HashMap<>(); + private static final Map scenePointEntries = new HashMap<>(); // ExcelConfigs private static final Int2ObjectMap playerLevelDataMap = new Int2ObjectOpenHashMap<>(); @@ -52,6 +56,10 @@ public class GenshinData { private static final Int2ObjectMap avatarCostumeDataItemIdMap = new Int2ObjectLinkedOpenHashMap<>(); private static final Int2ObjectMap sceneDataMap = new Int2ObjectLinkedOpenHashMap<>(); + private static final Int2ObjectMap fetterDataMap = new Int2ObjectOpenHashMap<>(); + + // Cache + private static Map> fetters = new HashMap<>(); public static Int2ObjectMap getMapByResourceDef(Class resourceDefinition) { Int2ObjectMap map = null; @@ -82,6 +90,10 @@ public class GenshinData { return openConfigEntries; } + public static Map getScenePointEntries() { + return scenePointEntries; + } + public static Int2ObjectMap getAvatarDataMap() { return avatarDataMap; } @@ -215,4 +227,17 @@ public class GenshinData { public static Int2ObjectMap getSceneDataMap() { return sceneDataMap; } + + public static Map> getFetterDataEntries() { + if (fetters.isEmpty()) { + fetterDataMap.forEach((k, v) -> { + if (!fetters.containsKey(v.getAvatarId())) { + fetters.put(v.getAvatarId(), new ArrayList<>()); + } + fetters.get(v.getAvatarId()).add(k); + }); + } + + return fetters; + } } diff --git a/src/main/java/emu/grasscutter/data/ResourceLoader.java b/src/main/java/emu/grasscutter/data/ResourceLoader.java index f5b9f4f72..bb95d70e9 100644 --- a/src/main/java/emu/grasscutter/data/ResourceLoader.java +++ b/src/main/java/emu/grasscutter/data/ResourceLoader.java @@ -10,11 +10,15 @@ import java.util.regex.Pattern; import emu.grasscutter.utils.Utils; import org.reflections.Reflections; +import com.google.gson.JsonElement; import com.google.gson.reflect.TypeToken; import emu.grasscutter.Grasscutter; +import emu.grasscutter.data.common.PointData; +import emu.grasscutter.data.common.ScenePointConfig; import emu.grasscutter.data.custom.AbilityEmbryoEntry; import emu.grasscutter.data.custom.OpenConfigEntry; +import emu.grasscutter.data.custom.ScenePointEntry; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; public class ResourceLoader { @@ -42,6 +46,7 @@ public class ResourceLoader { loadOpenConfig(); // Load resources loadResources(); + loadScenePoints(); // Process into depots GenshinDepot.load(); // Custom - TODO move this somewhere else @@ -121,6 +126,51 @@ public class ResourceLoader { } } + private static void loadScenePoints() { + Pattern pattern = Pattern.compile("(?<=scene)(.*?)(?=_point.json)"); + File folder = new File(Grasscutter.getConfig().RESOURCE_FOLDER + "BinOutput/Scene/Point"); + + if (!folder.isDirectory() || !folder.exists() || folder.listFiles() == null) { + Grasscutter.getLogger().error("Scene point files cannot be found, you cannot use teleport waypoints!"); + return; + } + + List scenePointList = new ArrayList<>(); + for (File file : folder.listFiles()) { + ScenePointConfig config = null; + Integer sceneId = null; + + Matcher matcher = pattern.matcher(file.getName()); + if (matcher.find()) { + sceneId = Integer.parseInt(matcher.group(1)); + } else { + continue; + } + + try (FileReader fileReader = new FileReader(file)) { + config = Grasscutter.getGsonFactory().fromJson(fileReader, ScenePointConfig.class); + } catch (Exception e) { + e.printStackTrace(); + continue; + } + + if (config.points == null) { + continue; + } + + for (Map.Entry entry : config.points.entrySet()) { + PointData pointData = Grasscutter.getGsonFactory().fromJson(entry.getValue(), PointData.class); + + ScenePointEntry sl = new ScenePointEntry(sceneId + "_" + entry.getKey(), pointData); + scenePointList.add(sl); + } + + for (ScenePointEntry entry : scenePointList) { + GenshinData.getScenePointEntries().put(entry.getName(), entry); + } + } + } + private static void loadAbilityEmbryos() { // Read from cached file if exists File embryoCache = new File(Grasscutter.getConfig().DATA_FOLDER + "AbilityEmbryos.json"); @@ -197,7 +247,7 @@ public class ResourceLoader { } else { Map map = new TreeMap<>(); java.lang.reflect.Type type = new TypeToken>() {}.getType(); - String[] folderNames = {"BinOutput\\Talent\\EquipTalents\\", "BinOutput\\Talent\\AvatarTalents\\"}; + String[] folderNames = {"BinOutput/Talent/EquipTalents/", "BinOutput/Talent/AvatarTalents/"}; for (String name : folderNames) { File folder = new File(Utils.toFilePath(Grasscutter.getConfig().RESOURCE_FOLDER + name)); diff --git a/src/main/java/emu/grasscutter/data/common/PointData.java b/src/main/java/emu/grasscutter/data/common/PointData.java new file mode 100644 index 000000000..7c31d2f06 --- /dev/null +++ b/src/main/java/emu/grasscutter/data/common/PointData.java @@ -0,0 +1,43 @@ +package emu.grasscutter.data.common; + +public class PointData { + private pos tranPos; + + public pos getTranPos() { + return tranPos; + } + + public void setTranPos(pos tranPos) { + this.tranPos = tranPos; + } + + public class pos { + private float x; + private float y; + private float z; + + public float getX() { + return x; + } + + public void setX(float x) { + this.x = x; + } + + public float getY() { + return y; + } + + public void setY(float y) { + this.y = y; + } + + public float getZ() { + return z; + } + + public void setZ(float z) { + this.z = z; + } + } +} diff --git a/src/main/java/emu/grasscutter/data/common/ScenePointConfig.java b/src/main/java/emu/grasscutter/data/common/ScenePointConfig.java new file mode 100644 index 000000000..340f7476f --- /dev/null +++ b/src/main/java/emu/grasscutter/data/common/ScenePointConfig.java @@ -0,0 +1,15 @@ +package emu.grasscutter.data.common; + +import com.google.gson.JsonObject; + +public class ScenePointConfig { + public JsonObject points; + + public JsonObject getPoints() { + return points; + } + + public void setPoints(JsonObject Points) { + points = Points; + } +} diff --git a/src/main/java/emu/grasscutter/data/custom/ScenePointEntry.java b/src/main/java/emu/grasscutter/data/custom/ScenePointEntry.java new file mode 100644 index 000000000..3e904f5c8 --- /dev/null +++ b/src/main/java/emu/grasscutter/data/custom/ScenePointEntry.java @@ -0,0 +1,21 @@ +package emu.grasscutter.data.custom; + +import emu.grasscutter.data.common.PointData; + +public class ScenePointEntry { + private String name; + private PointData pointData; + + public ScenePointEntry(String name, PointData pointData) { + this.name = name; + this.pointData = pointData; + } + + public String getName() { + return name; + } + + public PointData getPointData() { + return pointData; + } +} diff --git a/src/main/java/emu/grasscutter/data/def/AvatarData.java b/src/main/java/emu/grasscutter/data/def/AvatarData.java index dcc503994..8097e04a7 100644 --- a/src/main/java/emu/grasscutter/data/def/AvatarData.java +++ b/src/main/java/emu/grasscutter/data/def/AvatarData.java @@ -55,6 +55,8 @@ public class AvatarData extends GenshinResource { private float[] defenseGrowthCurve; private AvatarSkillDepotData skillDepot; private IntList abilities; + + private List fetters; @Override public int getId(){ @@ -193,9 +195,16 @@ public class AvatarData extends GenshinResource { return abilities; } + public List getFetters() { + return fetters; + } + @Override public void onLoad() { this.skillDepot = GenshinData.getAvatarSkillDepotDataMap().get(this.SkillDepotId); + + // Get fetters from GenshinData + this.fetters = GenshinData.getFetterDataEntries().get(this.Id); int size = GenshinData.getAvatarCurveDataMap().size(); this.hpGrowthCurve = new float[size]; diff --git a/src/main/java/emu/grasscutter/data/def/FetterData.java b/src/main/java/emu/grasscutter/data/def/FetterData.java new file mode 100644 index 000000000..d17c940d1 --- /dev/null +++ b/src/main/java/emu/grasscutter/data/def/FetterData.java @@ -0,0 +1,24 @@ +package emu.grasscutter.data.def; + +import emu.grasscutter.data.GenshinResource; +import emu.grasscutter.data.ResourceType; +import emu.grasscutter.data.ResourceType.LoadPriority; + +@ResourceType(name = {"FetterInfoExcelConfigData.json", "FettersExcelConfigData.json", "FetterStoryExcelConfigData.json"}, loadPriority = LoadPriority.HIGHEST) +public class FetterData extends GenshinResource { + private int AvatarId; + private int FetterId; + + @Override + public int getId() { + return FetterId; + } + + public int getAvatarId() { + return AvatarId; + } + + @Override + public void onLoad() { + } +} diff --git a/src/main/java/emu/grasscutter/database/DatabaseHelper.java b/src/main/java/emu/grasscutter/database/DatabaseHelper.java index 0289c3e71..ed092e976 100644 --- a/src/main/java/emu/grasscutter/database/DatabaseHelper.java +++ b/src/main/java/emu/grasscutter/database/DatabaseHelper.java @@ -74,36 +74,36 @@ public class DatabaseHelper { } public static void saveAccount(Account account) { - DatabaseManager.getDatastore().save(account); + DatabaseManager.getAccountDatastore().save(account); } public static Account getAccountByName(String username) { - MorphiaCursor cursor = DatabaseManager.getDatastore().createQuery(Account.class).field("username").equalIgnoreCase(username).find(FIND_ONE); + MorphiaCursor cursor = DatabaseManager.getAccountDatastore().createQuery(Account.class).field("username").equalIgnoreCase(username).find(FIND_ONE); if (!cursor.hasNext()) return null; return cursor.next(); } public static Account getAccountByToken(String token) { if (token == null) return null; - MorphiaCursor cursor = DatabaseManager.getDatastore().createQuery(Account.class).field("token").equal(token).find(FIND_ONE); + MorphiaCursor cursor = DatabaseManager.getAccountDatastore().createQuery(Account.class).field("token").equal(token).find(FIND_ONE); if (!cursor.hasNext()) return null; return cursor.next(); } public static Account getAccountById(String uid) { - MorphiaCursor cursor = DatabaseManager.getDatastore().createQuery(Account.class).field("_id").equal(uid).find(FIND_ONE); + MorphiaCursor cursor = DatabaseManager.getAccountDatastore().createQuery(Account.class).field("_id").equal(uid).find(FIND_ONE); if (!cursor.hasNext()) return null; return cursor.next(); } public static Account getAccountByPlayerId(int playerId) { - MorphiaCursor cursor = DatabaseManager.getDatastore().createQuery(Account.class).field("playerId").equal(playerId).find(FIND_ONE); + MorphiaCursor cursor = DatabaseManager.getAccountDatastore().createQuery(Account.class).field("playerId").equal(playerId).find(FIND_ONE); if (!cursor.hasNext()) return null; return cursor.next(); } public static boolean deleteAccount(String username) { - Query q = DatabaseManager.getDatastore().createQuery(Account.class).field("username").equalIgnoreCase(username); + Query q = DatabaseManager.getAccountDatastore().createQuery(Account.class).field("username").equalIgnoreCase(username); return DatabaseManager.getDatastore().findAndDelete(q) != null; } diff --git a/src/main/java/emu/grasscutter/database/DatabaseManager.java b/src/main/java/emu/grasscutter/database/DatabaseManager.java index 97e27a81a..46dad537d 100644 --- a/src/main/java/emu/grasscutter/database/DatabaseManager.java +++ b/src/main/java/emu/grasscutter/database/DatabaseManager.java @@ -17,7 +17,10 @@ import emu.grasscutter.game.inventory.GenshinItem; public final class DatabaseManager { private static MongoClient mongoClient; + private static MongoClient dispatchMongoClient; + private static Datastore datastore; + private static Datastore dispatchDatastore; private static final Class[] mappedClasses = new Class[] { DatabaseCounter.class, Account.class, GenshinPlayer.class, GenshinAvatar.class, GenshinItem.class, Friendship.class @@ -26,14 +29,24 @@ public final class DatabaseManager { public static MongoClient getMongoClient() { return mongoClient; } - - public static Datastore getDatastore() { - return datastore; - } - - public static MongoDatabase getDatabase() { + + public static Datastore getDatastore() { + return datastore; + } + + public static MongoDatabase getDatabase() { return getDatastore().getDatabase(); } + + // Yes. I very dislike this method. However, this will be good for now. + // TODO: Add dispatch routes for player account management + public static Datastore getAccountDatastore() { + if(Grasscutter.getConfig().RunMode.equalsIgnoreCase("GAME_ONLY")) { + return dispatchDatastore; + } else { + return datastore; + } + } public static void initialize() { // Initialize @@ -67,6 +80,28 @@ public final class DatabaseManager { datastore.ensureIndexes(); } } + + if(Grasscutter.getConfig().RunMode.equalsIgnoreCase("GAME_ONLY")) { + dispatchMongoClient = new MongoClient(new MongoClientURI(Grasscutter.getConfig().getGameServerOptions().DispatchServerDatabaseUrl)); + dispatchDatastore = morphia.createDatastore(dispatchMongoClient, Grasscutter.getConfig().getGameServerOptions().DispatchServerDatabaseCollection); + + // Ensure indexes for dispatch server + try { + dispatchDatastore.ensureIndexes(); + } catch (MongoCommandException e) { + Grasscutter.getLogger().info("Mongo index error: ", e); + // Duplicate index error + if (e.getCode() == 85) { + // Drop all indexes and re add them + MongoIterable collections = dispatchDatastore.getDatabase().listCollectionNames(); + for (String name : collections) { + dispatchDatastore.getDatabase().getCollection(name).dropIndexes(); + } + // Add back indexes + dispatchDatastore.ensureIndexes(); + } + } + } } public static synchronized int getNextId(Class c) { diff --git a/src/main/java/emu/grasscutter/game/Account.java b/src/main/java/emu/grasscutter/game/Account.java index dffbb0d86..dfb1e2829 100644 --- a/src/main/java/emu/grasscutter/game/Account.java +++ b/src/main/java/emu/grasscutter/game/Account.java @@ -1,5 +1,6 @@ package emu.grasscutter.game; +import dev.morphia.annotations.AlsoLoad; import dev.morphia.annotations.Collation; import dev.morphia.annotations.Entity; import dev.morphia.annotations.Id; @@ -24,7 +25,7 @@ public class Account { private String username; private String password; // Unused for now - private int playerId; + @AlsoLoad("playerUid") private int playerId; private String email; private String token; @@ -68,7 +69,7 @@ public class Account { this.token = token; } - public int getPlayerId() { + public int getPlayerUid() { return this.playerId; } @@ -105,6 +106,10 @@ public class Account { if(this.permissions.contains(permission)) return false; this.permissions.add(permission); return true; } + + public boolean hasPermission(String permission) { + return this.permissions.contains(permission) || this.permissions.contains("*") ? true : false; + } public boolean removePermission(String permission) { return this.permissions.remove(permission); diff --git a/src/main/java/emu/grasscutter/game/GenshinPlayer.java b/src/main/java/emu/grasscutter/game/GenshinPlayer.java index 70fea04f0..44f960198 100644 --- a/src/main/java/emu/grasscutter/game/GenshinPlayer.java +++ b/src/main/java/emu/grasscutter/game/GenshinPlayer.java @@ -31,6 +31,7 @@ import emu.grasscutter.net.proto.OnlinePlayerInfoOuterClass.OnlinePlayerInfo; import emu.grasscutter.net.proto.PlayerApplyEnterMpReasonOuterClass.PlayerApplyEnterMpReason; import emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo; import emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail; +import emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo; import emu.grasscutter.server.game.GameServer; import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.PacketAbilityInvocationsNotify; @@ -38,6 +39,7 @@ import emu.grasscutter.server.packet.send.PacketAvatarAddNotify; import emu.grasscutter.server.packet.send.PacketAvatarDataNotify; import emu.grasscutter.server.packet.send.PacketAvatarGainCostumeNotify; import emu.grasscutter.server.packet.send.PacketAvatarGainFlycloakNotify; +import emu.grasscutter.server.packet.send.PacketClientAbilityInitFinishNotify; import emu.grasscutter.server.packet.send.PacketCombatInvocationsNotify; import emu.grasscutter.server.packet.send.PacketGadgetInteractRsp; import emu.grasscutter.server.packet.send.PacketItemAddHintNotify; @@ -48,9 +50,11 @@ import emu.grasscutter.server.packet.send.PacketPlayerEnterSceneNotify; import emu.grasscutter.server.packet.send.PacketPlayerPropNotify; import emu.grasscutter.server.packet.send.PacketPlayerStoreNotify; import emu.grasscutter.server.packet.send.PacketPrivateChatNotify; +import emu.grasscutter.server.packet.send.PacketScenePlayerLocationNotify; import emu.grasscutter.server.packet.send.PacketSetNameCardRsp; import emu.grasscutter.server.packet.send.PacketStoreWeightLimitNotify; import emu.grasscutter.server.packet.send.PacketUnlockNameCardNotify; +import emu.grasscutter.server.packet.send.PacketWorldPlayerLocationNotify; import emu.grasscutter.server.packet.send.PacketWorldPlayerRTTNotify; import emu.grasscutter.utils.Position; @@ -100,10 +104,12 @@ public class GenshinPlayer { @Transient private int enterSceneToken; @Transient private SceneLoadState sceneState; @Transient private boolean hasSentAvatarDataNotify; + @Transient private long nextSendPlayerLocTime = 0; @Transient private final Int2ObjectMap coopRequests; @Transient private final InvokeHandler combatInvokeHandler; @Transient private final InvokeHandler abilityInvokeHandler; + @Transient private final InvokeHandler clientAbilityInitFinishHandler; @Deprecated @SuppressWarnings({ "rawtypes", "unchecked" }) // Morphia only! public GenshinPlayer() { @@ -119,6 +125,12 @@ public class GenshinPlayer { } this.properties.put(prop.getId(), 0); } + + this.gachaInfo = new PlayerGachaInfo(); + this.nameCardList = new HashSet<>(); + this.flyCloakList = new HashSet<>(); + this.costumeList = new HashSet<>(); + this.setSceneId(3); this.setRegionId(1); this.sceneState = SceneLoadState.NONE; @@ -126,6 +138,7 @@ public class GenshinPlayer { this.coopRequests = new Int2ObjectOpenHashMap<>(); this.combatInvokeHandler = new InvokeHandler(PacketCombatInvocationsNotify.class); this.abilityInvokeHandler = new InvokeHandler(PacketAbilityInvocationsNotify.class); + this.clientAbilityInitFinishHandler = new InvokeHandler(PacketClientAbilityInitFinishNotify.class); } // On player creation @@ -137,11 +150,6 @@ public class GenshinPlayer { this.nickname = "Traveler"; this.signature = ""; this.teamManager = new TeamManager(this); - this.gachaInfo = new PlayerGachaInfo(); - this.playerProfile = new PlayerProfile(this); - this.nameCardList = new HashSet<>(); - this.flyCloakList = new HashSet<>(); - this.costumeList = new HashSet<>(); this.setProperty(PlayerProperty.PROP_PLAYER_LEVEL, 1); this.setProperty(PlayerProperty.PROP_IS_SPRING_AUTO_USE, 1); this.setProperty(PlayerProperty.PROP_SPRING_AUTO_USE_PERCENT, 50); @@ -285,7 +293,7 @@ public class GenshinPlayer { } private float getExpModifier() { - return Grasscutter.getConfig().getGameRates().ADVENTURE_EXP_RATE; + return Grasscutter.getConfig().getGameServerOptions().getGameRates().ADVENTURE_EXP_RATE; } // Affected by exp rate @@ -344,7 +352,6 @@ public class GenshinPlayer { public PlayerProfile getProfile() { if (this.playerProfile == null) { this.playerProfile = new PlayerProfile(this); - this.save(); } return playerProfile; } @@ -389,6 +396,10 @@ public class GenshinPlayer { return this.abilityInvokeHandler; } + public InvokeHandler getClientAbilityInitFinishHandler() { + return clientAbilityInitFinishHandler; + } + public void setMpSetting(MpSettingType mpSetting) { this.mpSetting = mpSetting; } @@ -647,6 +658,13 @@ public class GenshinPlayer { return social; } + public WorldPlayerLocationInfo getWorldPlayerLocationInfo() { + return WorldPlayerLocationInfo.newBuilder() + .setSceneId(this.getSceneId()) + .setPlayerLoc(this.getPlayerLocationInfo()) + .build(); + } + public PlayerLocationInfo getPlayerLocationInfo() { return PlayerLocationInfo.newBuilder() .setUid(this.getUid()) @@ -672,9 +690,22 @@ public class GenshinPlayer { } // Ping if (this.getWorld() != null) { - this.sendPacket(new PacketWorldPlayerRTTNotify(this.getWorld())); // Player ping + // RTT notify - very important to send this often + this.sendPacket(new PacketWorldPlayerRTTNotify(this.getWorld())); + + // Update player locations if in multiplayer every 5 seconds + long time = System.currentTimeMillis(); + if (this.getWorld().isMultiplayer() && this.getScene() != null && time > nextSendPlayerLocTime) { + this.sendPacket(new PacketWorldPlayerLocationNotify(this.getWorld())); + this.sendPacket(new PacketScenePlayerLocationNotify(this.getScene())); + this.resetSendPlayerLocTime(); + } } } + + public void resetSendPlayerLocTime() { + this.nextSendPlayerLocTime = System.currentTimeMillis() + 5000; + } @PostLoad private void onLoad() { @@ -689,12 +720,8 @@ public class GenshinPlayer { // Make sure these exist if (this.getTeamManager() == null) { this.teamManager = new TeamManager(this); - } if (this.getGachaInfo() == null) { - this.gachaInfo = new PlayerGachaInfo(); - } if (this.nameCardList == null) { - this.nameCardList = new HashSet<>(); - } if (this.costumeList == null) { - this.costumeList = new HashSet<>(); + } if (this.getProfile().getUid() == 0) { + this.getProfile().syncWithCharacter(this); } // Check if player object exists in server diff --git a/src/main/java/emu/grasscutter/game/GenshinScene.java b/src/main/java/emu/grasscutter/game/GenshinScene.java index 668902d87..ea462fcdb 100644 --- a/src/main/java/emu/grasscutter/game/GenshinScene.java +++ b/src/main/java/emu/grasscutter/game/GenshinScene.java @@ -34,7 +34,8 @@ public class GenshinScene { private int time; private ClimateType climate; - + private int weather; + public GenshinScene(World world, SceneData sceneData) { this.world = world; this.sceneData = sceneData; @@ -89,10 +90,18 @@ public class GenshinScene { return climate; } + public int getWeather() { + return weather; + } + public void setClimate(ClimateType climate) { this.climate = climate; } + public void setWeather(int weather) { + this.weather = weather; + } + public boolean isInScene(GenshinEntity entity) { return this.entities.containsKey(entity.getId()); } diff --git a/src/main/java/emu/grasscutter/game/TeamInfo.java b/src/main/java/emu/grasscutter/game/TeamInfo.java index 0a12b1d2c..c60ce8cc0 100644 --- a/src/main/java/emu/grasscutter/game/TeamInfo.java +++ b/src/main/java/emu/grasscutter/game/TeamInfo.java @@ -13,7 +13,7 @@ public class TeamInfo { public TeamInfo() { this.name = ""; - this.avatars = new ArrayList<>(Grasscutter.getConfig().getServerOptions().MaxAvatarsInTeam); + this.avatars = new ArrayList<>(Grasscutter.getConfig().getGameServerOptions().MaxAvatarsInTeam); } public String getName() { @@ -37,7 +37,7 @@ public class TeamInfo { } public boolean addAvatar(GenshinAvatar avatar) { - if (size() >= Grasscutter.getConfig().getServerOptions().MaxAvatarsInTeam || contains(avatar)) { + if (size() >= Grasscutter.getConfig().getGameServerOptions().MaxAvatarsInTeam || contains(avatar)) { return false; } @@ -57,7 +57,7 @@ public class TeamInfo { } public void copyFrom(TeamInfo team) { - copyFrom(team, Grasscutter.getConfig().getServerOptions().MaxAvatarsInTeam); + copyFrom(team, Grasscutter.getConfig().getGameServerOptions().MaxAvatarsInTeam); } public void copyFrom(TeamInfo team, int maxTeamSize) { diff --git a/src/main/java/emu/grasscutter/game/TeamManager.java b/src/main/java/emu/grasscutter/game/TeamManager.java index 4cd7bfcdf..065c3bd28 100644 --- a/src/main/java/emu/grasscutter/game/TeamManager.java +++ b/src/main/java/emu/grasscutter/game/TeamManager.java @@ -164,13 +164,13 @@ public class TeamManager { public int getMaxTeamSize() { if (getPlayer().isInMultiplayer()) { - int max = Grasscutter.getConfig().getServerOptions().MaxAvatarsInTeamMultiplayer; + int max = Grasscutter.getConfig().getGameServerOptions().MaxAvatarsInTeamMultiplayer; if (getPlayer().getWorld().getHost() == this.getPlayer()) { return Math.max(1, (int) Math.ceil(max / (double) getWorld().getPlayerCount())); } return Math.max(1, (int) Math.floor(max / (double) getWorld().getPlayerCount())); } - return Grasscutter.getConfig().getServerOptions().MaxAvatarsInTeam; + return Grasscutter.getConfig().getGameServerOptions().MaxAvatarsInTeam; } // Methods diff --git a/src/main/java/emu/grasscutter/game/World.java b/src/main/java/emu/grasscutter/game/World.java index 02c0df63a..ffffb1e53 100644 --- a/src/main/java/emu/grasscutter/game/World.java +++ b/src/main/java/emu/grasscutter/game/World.java @@ -208,11 +208,14 @@ public class World implements Iterable { } public boolean transferPlayerToScene(GenshinPlayer player, int sceneId, Position pos) { - if (player.getScene().getId() == sceneId || GenshinData.getSceneDataMap().get(sceneId) == null) { + if (GenshinData.getSceneDataMap().get(sceneId) == null) { return false; } + Integer oldSceneId = null; + if (player.getScene() != null) { + oldSceneId = player.getScene().getId(); player.getScene().removePlayer(player); } @@ -221,7 +224,11 @@ public class World implements Iterable { player.getPos().set(pos); // Teleport packet - player.sendPacket(new PacketPlayerEnterSceneNotify(player, EnterType.EnterSelf, EnterReason.TransPoint, sceneId, pos)); + if (oldSceneId.equals(sceneId)) { + player.sendPacket(new PacketPlayerEnterSceneNotify(player, EnterType.EnterGoto, EnterReason.TransPoint, sceneId, pos)); + } else { + player.sendPacket(new PacketPlayerEnterSceneNotify(player, EnterType.EnterJump, EnterReason.TransPoint, sceneId, pos)); + } return true; } diff --git a/src/main/java/emu/grasscutter/game/avatar/GenshinAvatar.java b/src/main/java/emu/grasscutter/game/avatar/GenshinAvatar.java index a5dcb3ee8..6906d3896 100644 --- a/src/main/java/emu/grasscutter/game/avatar/GenshinAvatar.java +++ b/src/main/java/emu/grasscutter/game/avatar/GenshinAvatar.java @@ -1,7 +1,9 @@ package emu.grasscutter.game.avatar; +import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -13,6 +15,7 @@ import dev.morphia.annotations.Indexed; import dev.morphia.annotations.PostLoad; import dev.morphia.annotations.PrePersist; import dev.morphia.annotations.Transient; +import emu.grasscutter.Grasscutter; import emu.grasscutter.data.GenshinData; import emu.grasscutter.data.common.FightPropData; import emu.grasscutter.data.custom.OpenConfigEntry; @@ -38,10 +41,13 @@ import emu.grasscutter.game.inventory.EquipType; import emu.grasscutter.game.inventory.GenshinItem; import emu.grasscutter.game.props.ElementType; import emu.grasscutter.game.props.EntityIdType; +import emu.grasscutter.game.props.FetterState; import emu.grasscutter.game.props.FightProperty; import emu.grasscutter.game.props.PlayerProperty; import emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo; +import emu.grasscutter.net.proto.FetterDataOuterClass.FetterData; import emu.grasscutter.net.proto.AvatarInfoOuterClass.AvatarInfo; +import emu.grasscutter.server.packet.send.PacketAbilityChangeNotify; import emu.grasscutter.server.packet.send.PacketAvatarEquipChangeNotify; import emu.grasscutter.server.packet.send.PacketAvatarFightPropNotify; import emu.grasscutter.utils.ProtoHelper; @@ -69,8 +75,10 @@ public class GenshinAvatar { @Transient private final Int2ObjectMap equips; @Transient private final Int2FloatOpenHashMap fightProp; - @Transient private final Set bonusAbilityList; + @Transient private Set extraAbilityEmbryos; + private List fetters; + private Map skillLevelMap; // Talent levels private Map proudSkillBonusMap; // Talent bonus levels (from const) private int skillDepotId; @@ -86,8 +94,9 @@ public class GenshinAvatar { // Morhpia only! this.equips = new Int2ObjectOpenHashMap<>(); this.fightProp = new Int2FloatOpenHashMap(); - this.bonusAbilityList = new HashSet<>(); - this.proudSkillBonusMap = new HashMap<>(); // TODO Move to genshin avatar + this.extraAbilityEmbryos = new HashSet<>(); + this.proudSkillBonusMap = new HashMap<>(); + this.fetters = new ArrayList<>(); // TODO Move to genshin avatar } // On creation @@ -260,8 +269,16 @@ public class GenshinAvatar { return proudSkillBonusMap; } - public Set getBonusAbilityList() { - return bonusAbilityList; + public Set getExtraAbilityEmbryos() { + return extraAbilityEmbryos; + } + + public void setFetterList(List fetterList) { + this.fetters = fetterList; + } + + public List getFetterList() { + return fetters; } public float getCurrentHp() { @@ -347,14 +364,14 @@ public class GenshinAvatar { item.setEquipCharacter(this.getAvatarId()); item.save(); + if (this.getPlayer().hasSentAvatarDataNotify()) { + this.getPlayer().sendPacket(new PacketAvatarEquipChangeNotify(this, item)); + } + if (shouldRecalc) { this.recalcStats(); } - if (this.getPlayer().hasSentAvatarDataNotify()) { - this.getPlayer().sendPacket(new PacketAvatarEquipChangeNotify(this, item)); - } - return true; } @@ -371,11 +388,21 @@ public class GenshinAvatar { } public void recalcStats() { + recalcStats(false); + } + + public void recalcStats(boolean forceSendAbilityChange) { // Setup AvatarData data = this.getAvatarData(); AvatarPromoteData promoteData = GenshinData.getAvatarPromoteData(data.getAvatarPromoteId(), this.getPromoteLevel()); Int2IntOpenHashMap setMap = new Int2IntOpenHashMap(); - this.getBonusAbilityList().clear(); + + // Extra ability embryos + Set prevExtraAbilityEmbryos = this.getExtraAbilityEmbryos(); + this.extraAbilityEmbryos = new HashSet<>(); + + // Fetters + this.setFetterList(data.getFetters()); // Get hp percent, set to 100% if none float hpPercent = this.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP) <= 0 ? 1f : this.getFightProperty(FightProperty.FIGHT_PROP_CUR_HP) / this.getFightProperty(FightProperty.FIGHT_PROP_MAX_HP); @@ -458,7 +485,7 @@ public class GenshinAvatar { } // Add any skill strings from this affix - this.addToAbilityList(affix.getOpenConfig(), true); + this.addToExtraAbilityEmbryos(affix.getOpenConfig(), true); } else { break; } @@ -505,7 +532,7 @@ public class GenshinAvatar { } // Add any skill strings from this affix - this.addToAbilityList(affix.getOpenConfig(), true); + this.addToExtraAbilityEmbryos(affix.getOpenConfig(), true); } } } @@ -538,7 +565,7 @@ public class GenshinAvatar { } // Add any skill strings from this proud skill - this.addToAbilityList(proudSkillData.getOpenConfig(), true); + this.addToExtraAbilityEmbryos(proudSkillData.getOpenConfig(), true); } // Constellations @@ -550,7 +577,7 @@ public class GenshinAvatar { } // Add any skill strings from this constellation - this.addToAbilityList(avatarTalentData.getOpenConfig(), false); + this.addToExtraAbilityEmbryos(avatarTalentData.getOpenConfig(), false); } } @@ -573,11 +600,17 @@ public class GenshinAvatar { // Packet if (getPlayer() != null && getPlayer().hasSentAvatarDataNotify()) { + // Update stats for client getPlayer().sendPacket(new PacketAvatarFightPropNotify(this)); + // Update client abilities + EntityAvatar entity = this.getAsEntity(); + if (entity != null && (!this.getExtraAbilityEmbryos().equals(prevExtraAbilityEmbryos) || forceSendAbilityChange)) { + getPlayer().sendPacket(new PacketAbilityChangeNotify(entity)); + } } } - public void addToAbilityList(String openConfig, boolean forceAdd) { + public void addToExtraAbilityEmbryos(String openConfig, boolean forceAdd) { if (openConfig == null || openConfig.length() == 0) { return; } @@ -586,14 +619,14 @@ public class GenshinAvatar { if (entry == null) { if (forceAdd) { // Add config string to ability skill list anyways - this.getBonusAbilityList().add(openConfig); + this.getExtraAbilityEmbryos().add(openConfig); } return; } if (entry.getAddAbilities() != null) { for (String ability : entry.getAddAbilities()) { - this.getBonusAbilityList().add(ability); + this.getExtraAbilityEmbryos().add(ability); } } } @@ -668,6 +701,20 @@ public class GenshinAvatar { } public AvatarInfo toProto() { + AvatarFetterInfo.Builder avatarFetter = AvatarFetterInfo.newBuilder() + .setExpLevel(10) + .setExpNumber(6325); // Highest Level + + if (this.getFetterList() != null) { + for (int i = 0; i < this.getFetterList().size(); i++) { + avatarFetter.addFetterList( + FetterData.newBuilder() + .setFetterId(this.getFetterList().get(i)) + .setFetterState(FetterState.FINISH.getValue()) + ); + } + } + AvatarInfo.Builder avatarInfo = AvatarInfo.newBuilder() .setAvatarId(this.getAvatarId()) .setGuid(this.getGuid()) @@ -681,7 +728,7 @@ public class GenshinAvatar { .putAllProudSkillExtraLevel(getProudSkillBonusMap()) .setAvatarType(1) .setBornTime(this.getBornTime()) - .setFetterInfo(AvatarFetterInfo.newBuilder().setExpLevel(1)) + .setFetterInfo(avatarFetter) .setWearingFlycloakId(this.getFlyCloak()) .setCostumeId(this.getCostume()); diff --git a/src/main/java/emu/grasscutter/game/entity/EntityAvatar.java b/src/main/java/emu/grasscutter/game/entity/EntityAvatar.java index 86e8ea458..233da5288 100644 --- a/src/main/java/emu/grasscutter/game/entity/EntityAvatar.java +++ b/src/main/java/emu/grasscutter/game/entity/EntityAvatar.java @@ -223,8 +223,8 @@ public class EntityAvatar extends GenshinEntity { } } // Add equip abilities - if (this.getAvatar().getBonusAbilityList().size() > 0) { - for (String skill : this.getAvatar().getBonusAbilityList()) { + if (this.getAvatar().getExtraAbilityEmbryos().size() > 0) { + for (String skill : this.getAvatar().getExtraAbilityEmbryos()) { AbilityEmbryo emb = AbilityEmbryo.newBuilder() .setAbilityId(++embryoId) .setAbilityNameHash(Utils.abilityHash(skill)) diff --git a/src/main/java/emu/grasscutter/game/friends/FriendsList.java b/src/main/java/emu/grasscutter/game/friends/FriendsList.java index 582a10efd..45a11fb1c 100644 --- a/src/main/java/emu/grasscutter/game/friends/FriendsList.java +++ b/src/main/java/emu/grasscutter/game/friends/FriendsList.java @@ -220,7 +220,7 @@ public class FriendsList { friendship.setOwner(getPlayer()); // Check if friend is online - GenshinPlayer friend = getPlayer().getSession().getServer().getPlayerByUid(friendship.getFriendProfile().getId()); + GenshinPlayer friend = getPlayer().getSession().getServer().getPlayerByUid(friendship.getFriendProfile().getUid()); if (friend != null) { // Set friend to online mode friendship.setFriendProfile(friend); diff --git a/src/main/java/emu/grasscutter/game/friends/Friendship.java b/src/main/java/emu/grasscutter/game/friends/Friendship.java index 2be7d1fce..172d1bd43 100644 --- a/src/main/java/emu/grasscutter/game/friends/Friendship.java +++ b/src/main/java/emu/grasscutter/game/friends/Friendship.java @@ -88,7 +88,7 @@ public class Friendship { public FriendBrief toProto() { FriendBrief proto = FriendBrief.newBuilder() - .setUid(getFriendProfile().getId()) + .setUid(getFriendProfile().getUid()) .setNickname(getFriendProfile().getName()) .setLevel(getFriendProfile().getPlayerLevel()) .setAvatar(HeadImage.newBuilder().setAvatarId(getFriendProfile().getAvatarId())) diff --git a/src/main/java/emu/grasscutter/game/friends/PlayerProfile.java b/src/main/java/emu/grasscutter/game/friends/PlayerProfile.java index cc7408aa6..b9381c901 100644 --- a/src/main/java/emu/grasscutter/game/friends/PlayerProfile.java +++ b/src/main/java/emu/grasscutter/game/friends/PlayerProfile.java @@ -7,7 +7,7 @@ import emu.grasscutter.utils.Utils; public class PlayerProfile { @Transient private GenshinPlayer player; - private int id; + @AlsoLoad("id") private int uid; private int nameCard; private int avatarId; private String name; @@ -22,12 +22,12 @@ public class PlayerProfile { public PlayerProfile() { } public PlayerProfile(GenshinPlayer player) { - this.id = player.getUid(); + this.uid = player.getUid(); this.syncWithCharacter(player); } - public int getId() { - return id; + public int getUid() { + return uid; } public GenshinPlayer getPlayer() { @@ -87,6 +87,7 @@ public class PlayerProfile { return; } + this.uid = player.getUid(); this.name = player.getNickname(); this.avatarId = player.getHeadImage(); this.signature = player.getSignature(); diff --git a/src/main/java/emu/grasscutter/game/gacha/GachaBanner.java b/src/main/java/emu/grasscutter/game/gacha/GachaBanner.java index 3e6bcdf7e..ed5492b62 100644 --- a/src/main/java/emu/grasscutter/game/gacha/GachaBanner.java +++ b/src/main/java/emu/grasscutter/game/gacha/GachaBanner.java @@ -92,7 +92,7 @@ public class GachaBanner { } public GachaInfo toProto() { - String record = "http://" + (Grasscutter.getConfig().DispatchServerPublicIp.isEmpty() ? Grasscutter.getConfig().DispatchServerIp : Grasscutter.getConfig().DispatchServerPublicIp) + "/gacha"; + String record = "http://" + (Grasscutter.getConfig().getDispatchOptions().PublicIp.isEmpty() ? Grasscutter.getConfig().getDispatchOptions().Ip : Grasscutter.getConfig().getDispatchOptions().PublicIp) + "/gacha"; GachaInfo.Builder info = GachaInfo.newBuilder() .setGachaType(this.getGachaType()) diff --git a/src/main/java/emu/grasscutter/game/gacha/GachaManager.java b/src/main/java/emu/grasscutter/game/gacha/GachaManager.java index 692e09264..079f0dda3 100644 --- a/src/main/java/emu/grasscutter/game/gacha/GachaManager.java +++ b/src/main/java/emu/grasscutter/game/gacha/GachaManager.java @@ -1,6 +1,8 @@ package emu.grasscutter.game.gacha; +import java.io.File; import java.io.FileReader; +import java.nio.file.*; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -8,6 +10,7 @@ import java.util.concurrent.ThreadLocalRandom; import com.google.gson.reflect.TypeToken; +import com.sun.nio.file.SensitivityWatchEventModifier; import emu.grasscutter.Grasscutter; import emu.grasscutter.data.GenshinData; import emu.grasscutter.data.def.ItemData; @@ -21,17 +24,20 @@ import emu.grasscutter.net.proto.GachaTransferItemOuterClass.GachaTransferItem; import emu.grasscutter.net.proto.GetGachaInfoRspOuterClass.GetGachaInfoRsp; import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam; import emu.grasscutter.server.game.GameServer; +import emu.grasscutter.server.game.GameServerTickEvent; import emu.grasscutter.server.packet.send.PacketDoGachaRsp; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import it.unimi.dsi.fastutil.ints.IntArrayList; import it.unimi.dsi.fastutil.ints.IntList; +import org.greenrobot.eventbus.Subscribe; public class GachaManager { private final GameServer server; private final Int2ObjectMap gachaBanners; private GetGachaInfoRsp cachedProto; - + WatchService watchService; + private int[] yellowAvatars = new int[] {1003, 1016, 1042, 1035, 1041}; private int[] yellowWeapons = new int[] {11501, 11502, 12501, 12502, 13502, 13505, 14501, 14502, 15501, 15502}; private int[] purpleAvatars = new int[] {1006, 1014, 1015, 1020, 1021, 1023, 1024, 1025, 1027, 1031, 1032, 1034, 1036, 1039, 1043, 1044, 1045, 1048, 1053, 1055, 1056, 1064}; @@ -40,11 +46,12 @@ public class GachaManager { private static int starglitterId = 221; private static int stardustId = 222; - + public GachaManager(GameServer server) { this.server = server; this.gachaBanners = new Int2ObjectOpenHashMap<>(); this.load(); + this.startWatcher(server); } public GameServer getServer() { @@ -65,9 +72,16 @@ public class GachaManager { public synchronized void load() { try (FileReader fileReader = new FileReader(Grasscutter.getConfig().DATA_FOLDER + "Banners.json")) { + getGachaBanners().clear(); List banners = Grasscutter.getGsonFactory().fromJson(fileReader, TypeToken.getParameterized(Collection.class, GachaBanner.class).getType()); - for (GachaBanner banner : banners) { - getGachaBanners().put(banner.getGachaType(), banner); + if(banners.size() > 0) { + for (GachaBanner banner : banners) { + getGachaBanners().put(banner.getGachaType(), banner); + } + Grasscutter.getLogger().info("Banners successfully loaded."); + this.cachedProto = createProto(); + } else { + Grasscutter.getLogger().error("Unable to load banners. Banners size is 0."); } } catch (Exception e) { // TODO Auto-generated catch block @@ -204,7 +218,6 @@ public class GachaManager { addStarglitter = 2; // Add 1 const gachaItem.addTransferItems(GachaTransferItem.newBuilder().setItem(ItemParam.newBuilder().setItemId(constItemId).setCount(1)).setIsTransferItemNew(constItem == null)); - gachaItem.addTokenItemList(ItemParam.newBuilder().setItemId(constItemId).setCount(1)); player.getInventory().addItem(constItemId, 1); } else { // Is max const @@ -266,6 +279,48 @@ public class GachaManager { // Packets player.sendPacket(new PacketDoGachaRsp(banner, list)); } + + private synchronized void startWatcher(GameServer server) { + if(this.watchService == null) { + try { + this.watchService = FileSystems.getDefault().newWatchService(); + Path path = new File(Grasscutter.getConfig().DATA_FOLDER).toPath(); + path.register(watchService, new WatchEvent.Kind[]{StandardWatchEventKinds.ENTRY_MODIFY}, SensitivityWatchEventModifier.HIGH); + + server.OnGameServerTick.register(this); + } catch (Exception e) { + Grasscutter.getLogger().error("Unable to load the Gacha Manager Watch Service. If ServerOptions.watchGacha is true it will not auto-reload"); + e.printStackTrace(); + } + } else { + Grasscutter.getLogger().error("Cannot reinitialise watcher "); + } + } + + @Subscribe + public synchronized void watchBannerJson(GameServerTickEvent tickEvent) { + if(Grasscutter.getConfig().getGameServerOptions().WatchGacha) { + try { + WatchKey watchKey = watchService.take(); + + for (WatchEvent event : watchKey.pollEvents()) { + final Path changed = (Path) event.context(); + if (changed.endsWith("Banners.json")) { + Grasscutter.getLogger().info("Change detected with banners.json. Reloading gacha config"); + this.load(); + } + } + + boolean valid = watchKey.reset(); + if (!valid) { + Grasscutter.getLogger().error("Unable to reset Gacha Manager Watch Key. Auto-reload of banners.json will no longer work."); + return; + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } private synchronized GetGachaInfoRsp createProto() { GetGachaInfoRsp.Builder proto = GetGachaInfoRsp.newBuilder().setGachaRandom(12345); diff --git a/src/main/java/emu/grasscutter/game/inventory/Inventory.java b/src/main/java/emu/grasscutter/game/inventory/Inventory.java index 19bdcc525..8954b1031 100644 --- a/src/main/java/emu/grasscutter/game/inventory/Inventory.java +++ b/src/main/java/emu/grasscutter/game/inventory/Inventory.java @@ -37,10 +37,10 @@ public class Inventory implements Iterable { this.store = new Long2ObjectOpenHashMap<>(); this.inventoryTypes = new Int2ObjectOpenHashMap<>(); - this.createInventoryTab(ItemType.ITEM_WEAPON, new EquipInventoryTab(Grasscutter.getConfig().getServerOptions().InventoryLimitWeapon)); - this.createInventoryTab(ItemType.ITEM_RELIQUARY, new EquipInventoryTab(Grasscutter.getConfig().getServerOptions().InventoryLimitRelic)); - this.createInventoryTab(ItemType.ITEM_MATERIAL, new MaterialInventoryTab(Grasscutter.getConfig().getServerOptions().InventoryLimitMaterial)); - this.createInventoryTab(ItemType.ITEM_FURNITURE, new MaterialInventoryTab(Grasscutter.getConfig().getServerOptions().InventoryLimitFurniture)); + this.createInventoryTab(ItemType.ITEM_WEAPON, new EquipInventoryTab(Grasscutter.getConfig().getGameServerOptions().InventoryLimitWeapon)); + this.createInventoryTab(ItemType.ITEM_RELIQUARY, new EquipInventoryTab(Grasscutter.getConfig().getGameServerOptions().InventoryLimitRelic)); + this.createInventoryTab(ItemType.ITEM_MATERIAL, new MaterialInventoryTab(Grasscutter.getConfig().getGameServerOptions().InventoryLimitMaterial)); + this.createInventoryTab(ItemType.ITEM_FURNITURE, new MaterialInventoryTab(Grasscutter.getConfig().getGameServerOptions().InventoryLimitFurniture)); } public GenshinPlayer getPlayer() { diff --git a/src/main/java/emu/grasscutter/game/managers/ChatManager.java b/src/main/java/emu/grasscutter/game/managers/ChatManager.java index 40b1a55b5..d9867e875 100644 --- a/src/main/java/emu/grasscutter/game/managers/ChatManager.java +++ b/src/main/java/emu/grasscutter/game/managers/ChatManager.java @@ -1,6 +1,6 @@ package emu.grasscutter.game.managers; -import emu.grasscutter.commands.CommandMap; +import emu.grasscutter.command.CommandMap; import emu.grasscutter.game.GenshinPlayer; import emu.grasscutter.net.packet.GenshinPacket; import emu.grasscutter.server.game.GameServer; diff --git a/src/main/java/emu/grasscutter/game/managers/InventoryManager.java b/src/main/java/emu/grasscutter/game/managers/InventoryManager.java index 3d56dfad2..532155db1 100644 --- a/src/main/java/emu/grasscutter/game/managers/InventoryManager.java +++ b/src/main/java/emu/grasscutter/game/managers/InventoryManager.java @@ -471,7 +471,7 @@ public class InventoryManager { } // Consume weapon - player.getInventory().removeItem(feed); + player.getInventory().removeItem(feed, 1); // Get weapon.setRefinement(targetRefineLevel); @@ -589,7 +589,6 @@ public class InventoryManager { // Update proud skills AvatarSkillDepotData skillDepot = GenshinData.getAvatarSkillDepotDataMap().get(avatar.getSkillDepotId()); - boolean hasAddedProudSkill = false; if (skillDepot != null && skillDepot.getInherentProudSkillOpens() != null) { for (InherentProudSkillOpens openData : skillDepot.getInherentProudSkillOpens()) { @@ -599,7 +598,6 @@ public class InventoryManager { if (openData.getNeedAvatarPromoteLevel() == avatar.getPromoteLevel()) { int proudSkillId = (openData.getProudSkillGroupId() * 100) + 1; if (GenshinData.getProudSkillDataMap().containsKey(proudSkillId)) { - hasAddedProudSkill = true; avatar.getProudSkillList().add(proudSkillId); player.sendPacket(new PacketProudSkillChangeNotify(avatar)); } @@ -607,20 +605,13 @@ public class InventoryManager { } } - // Racalc stats and save avatar - avatar.recalcStats(); - avatar.save(); - - // Resend ability embryos if proud skill has been added - if (hasAddedProudSkill && avatar.getAsEntity() != null) { - player.sendPacket(new PacketAbilityChangeNotify(avatar.getAsEntity())); - } - - // TODO Send entity prop update packet to world - // Packets player.sendPacket(new PacketAvatarPropNotify(avatar)); player.sendPacket(new PacketAvatarPromoteRsp(avatar)); + + // TODO Send entity prop update packet to world + avatar.recalcStats(true); + avatar.save(); } public void upgradeAvatar(GenshinPlayer player, long guid, int itemId, int count) { @@ -804,6 +795,12 @@ public class InventoryManager { // Get talent int currentTalentLevel = avatar.getCoreProudSkillLevel(); int nextTalentId = ((avatar.getAvatarId() % 10000000) * 10) + currentTalentLevel + 1; + + if (avatar.getAvatarId() == 10000006) { + // Lisa is special in that her talentId starts with 4 instead of 6. + nextTalentId = 40 + currentTalentLevel + 1; + } + AvatarTalentData talentData = GenshinData.getAvatarTalentDataMap().get(nextTalentId); if (talentData == null) { @@ -821,25 +818,20 @@ public class InventoryManager { // Apply + recalc avatar.getTalentIdList().add(talentData.getId()); avatar.setCoreProudSkillLevel(currentTalentLevel + 1); - avatar.recalcStats(); // Packet player.sendPacket(new PacketAvatarUnlockTalentNotify(avatar, nextTalentId)); player.sendPacket(new PacketUnlockAvatarTalentRsp(avatar, nextTalentId)); - // Proud skill bonus map + // Proud skill bonus map (Extra skills) OpenConfigEntry entry = GenshinData.getOpenConfigEntries().get(talentData.getOpenConfig()); if (entry != null && entry.getExtraTalentIndex() > 0) { avatar.recalcProudSkillBonusMap(); player.sendPacket(new PacketProudSkillExtraLevelNotify(avatar, entry.getExtraTalentIndex())); } - // Resend ability embryos - if (avatar.getAsEntity() != null) { - player.sendPacket(new PacketAbilityChangeNotify(avatar.getAsEntity())); - } - - // Save avatar + // Recalc + save avatar + avatar.recalcStats(true); avatar.save(); } diff --git a/src/main/java/emu/grasscutter/game/props/FetterState.java b/src/main/java/emu/grasscutter/game/props/FetterState.java new file mode 100644 index 000000000..346060e19 --- /dev/null +++ b/src/main/java/emu/grasscutter/game/props/FetterState.java @@ -0,0 +1,42 @@ +package emu.grasscutter.game.props; + +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Stream; + +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; + +public enum FetterState { + NONE(0), + NOT_OPEN(1), + OPEN(1), + FINISH(3); + + private final int value; + private static final Int2ObjectMap map = new Int2ObjectOpenHashMap<>(); + private static final Map stringMap = new HashMap<>(); + + static { + Stream.of(values()).forEach(e -> { + map.put(e.getValue(), e); + stringMap.put(e.name(), e); + }); + } + + private FetterState(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + + public static FetterState getTypeByValue(int value) { + return map.getOrDefault(value, NONE); + } + + public static FetterState getTypeByName(String name) { + return stringMap.getOrDefault(name, NONE); + } +} diff --git a/src/main/java/emu/grasscutter/net/proto/AvatarFetterDataNotifyOuterClass.java b/src/main/java/emu/grasscutter/net/proto/AvatarFetterDataNotifyOuterClass.java new file mode 100644 index 000000000..08eb7158d --- /dev/null +++ b/src/main/java/emu/grasscutter/net/proto/AvatarFetterDataNotifyOuterClass.java @@ -0,0 +1,810 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: AvatarFetterDataNotify.proto + +package emu.grasscutter.net.proto; + +public final class AvatarFetterDataNotifyOuterClass { + private AvatarFetterDataNotifyOuterClass() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface AvatarFetterDataNotifyOrBuilder extends + // @@protoc_insertion_point(interface_extends:AvatarFetterDataNotify) + com.google.protobuf.MessageOrBuilder { + + /** + * map<uint64, .AvatarFetterInfo> fetterInfoMap = 1; + */ + int getFetterInfoMapCount(); + /** + * map<uint64, .AvatarFetterInfo> fetterInfoMap = 1; + */ + boolean containsFetterInfoMap( + long key); + /** + * Use {@link #getFetterInfoMapMap()} instead. + */ + @java.lang.Deprecated + java.util.Map + getFetterInfoMap(); + /** + * map<uint64, .AvatarFetterInfo> fetterInfoMap = 1; + */ + java.util.Map + getFetterInfoMapMap(); + /** + * map<uint64, .AvatarFetterInfo> fetterInfoMap = 1; + */ + + /* nullable */ +emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo getFetterInfoMapOrDefault( + long key, + /* nullable */ +emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo defaultValue); + /** + * map<uint64, .AvatarFetterInfo> fetterInfoMap = 1; + */ + + emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo getFetterInfoMapOrThrow( + long key); + } + /** + * Protobuf type {@code AvatarFetterDataNotify} + */ + public static final class AvatarFetterDataNotify extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:AvatarFetterDataNotify) + AvatarFetterDataNotifyOrBuilder { + private static final long serialVersionUID = 0L; + // Use AvatarFetterDataNotify.newBuilder() to construct. + private AvatarFetterDataNotify(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private AvatarFetterDataNotify() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new AvatarFetterDataNotify(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private AvatarFetterDataNotify( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + int mutable_bitField0_ = 0; + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + if (!((mutable_bitField0_ & 0x00000001) != 0)) { + fetterInfoMap_ = com.google.protobuf.MapField.newMapField( + FetterInfoMapDefaultEntryHolder.defaultEntry); + mutable_bitField0_ |= 0x00000001; + } + com.google.protobuf.MapEntry + fetterInfoMap__ = input.readMessage( + FetterInfoMapDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry); + fetterInfoMap_.getMutableMap().put( + fetterInfoMap__.getKey(), fetterInfoMap__.getValue()); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.internal_static_AvatarFetterDataNotify_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + @java.lang.Override + protected com.google.protobuf.MapField internalGetMapField( + int number) { + switch (number) { + case 1: + return internalGetFetterInfoMap(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.internal_static_AvatarFetterDataNotify_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify.class, emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify.Builder.class); + } + + public static final int FETTERINFOMAP_FIELD_NUMBER = 1; + private static final class FetterInfoMapDefaultEntryHolder { + static final com.google.protobuf.MapEntry< + java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo> defaultEntry = + com.google.protobuf.MapEntry + .newDefaultInstance( + emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.internal_static_AvatarFetterDataNotify_FetterInfoMapEntry_descriptor, + com.google.protobuf.WireFormat.FieldType.UINT64, + 0L, + com.google.protobuf.WireFormat.FieldType.MESSAGE, + emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo.getDefaultInstance()); + } + private com.google.protobuf.MapField< + java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo> fetterInfoMap_; + private com.google.protobuf.MapField + internalGetFetterInfoMap() { + if (fetterInfoMap_ == null) { + return com.google.protobuf.MapField.emptyMapField( + FetterInfoMapDefaultEntryHolder.defaultEntry); + } + return fetterInfoMap_; + } + + public int getFetterInfoMapCount() { + return internalGetFetterInfoMap().getMap().size(); + } + /** + * map<uint64, .AvatarFetterInfo> fetterInfoMap = 1; + */ + + @java.lang.Override + public boolean containsFetterInfoMap( + long key) { + + return internalGetFetterInfoMap().getMap().containsKey(key); + } + /** + * Use {@link #getFetterInfoMapMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getFetterInfoMap() { + return getFetterInfoMapMap(); + } + /** + * map<uint64, .AvatarFetterInfo> fetterInfoMap = 1; + */ + @java.lang.Override + + public java.util.Map getFetterInfoMapMap() { + return internalGetFetterInfoMap().getMap(); + } + /** + * map<uint64, .AvatarFetterInfo> fetterInfoMap = 1; + */ + @java.lang.Override + + public emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo getFetterInfoMapOrDefault( + long key, + emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo defaultValue) { + + java.util.Map map = + internalGetFetterInfoMap().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * map<uint64, .AvatarFetterInfo> fetterInfoMap = 1; + */ + @java.lang.Override + + public emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo getFetterInfoMapOrThrow( + long key) { + + java.util.Map map = + internalGetFetterInfoMap().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + com.google.protobuf.GeneratedMessageV3 + .serializeLongMapTo( + output, + internalGetFetterInfoMap(), + FetterInfoMapDefaultEntryHolder.defaultEntry, + 1); + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + for (java.util.Map.Entry entry + : internalGetFetterInfoMap().getMap().entrySet()) { + com.google.protobuf.MapEntry + fetterInfoMap__ = FetterInfoMapDefaultEntryHolder.defaultEntry.newBuilderForType() + .setKey(entry.getKey()) + .setValue(entry.getValue()) + .build(); + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, fetterInfoMap__); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify)) { + return super.equals(obj); + } + emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify other = (emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify) obj; + + if (!internalGetFetterInfoMap().equals( + other.internalGetFetterInfoMap())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (!internalGetFetterInfoMap().getMap().isEmpty()) { + hash = (37 * hash) + FETTERINFOMAP_FIELD_NUMBER; + hash = (53 * hash) + internalGetFetterInfoMap().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code AvatarFetterDataNotify} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:AvatarFetterDataNotify) + emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotifyOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.internal_static_AvatarFetterDataNotify_descriptor; + } + + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMapField( + int number) { + switch (number) { + case 1: + return internalGetFetterInfoMap(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @SuppressWarnings({"rawtypes"}) + protected com.google.protobuf.MapField internalGetMutableMapField( + int number) { + switch (number) { + case 1: + return internalGetMutableFetterInfoMap(); + default: + throw new RuntimeException( + "Invalid map field number: " + number); + } + } + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.internal_static_AvatarFetterDataNotify_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify.class, emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify.Builder.class); + } + + // Construct using emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + internalGetMutableFetterInfoMap().clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.internal_static_AvatarFetterDataNotify_descriptor; + } + + @java.lang.Override + public emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify getDefaultInstanceForType() { + return emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify.getDefaultInstance(); + } + + @java.lang.Override + public emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify build() { + emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify buildPartial() { + emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify result = new emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify(this); + int from_bitField0_ = bitField0_; + result.fetterInfoMap_ = internalGetFetterInfoMap(); + result.fetterInfoMap_.makeImmutable(); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify) { + return mergeFrom((emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify other) { + if (other == emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify.getDefaultInstance()) return this; + internalGetMutableFetterInfoMap().mergeFrom( + other.internalGetFetterInfoMap()); + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + private com.google.protobuf.MapField< + java.lang.Long, emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo> fetterInfoMap_; + private com.google.protobuf.MapField + internalGetFetterInfoMap() { + if (fetterInfoMap_ == null) { + return com.google.protobuf.MapField.emptyMapField( + FetterInfoMapDefaultEntryHolder.defaultEntry); + } + return fetterInfoMap_; + } + private com.google.protobuf.MapField + internalGetMutableFetterInfoMap() { + onChanged();; + if (fetterInfoMap_ == null) { + fetterInfoMap_ = com.google.protobuf.MapField.newMapField( + FetterInfoMapDefaultEntryHolder.defaultEntry); + } + if (!fetterInfoMap_.isMutable()) { + fetterInfoMap_ = fetterInfoMap_.copy(); + } + return fetterInfoMap_; + } + + public int getFetterInfoMapCount() { + return internalGetFetterInfoMap().getMap().size(); + } + /** + * map<uint64, .AvatarFetterInfo> fetterInfoMap = 1; + */ + + @java.lang.Override + public boolean containsFetterInfoMap( + long key) { + + return internalGetFetterInfoMap().getMap().containsKey(key); + } + /** + * Use {@link #getFetterInfoMapMap()} instead. + */ + @java.lang.Override + @java.lang.Deprecated + public java.util.Map getFetterInfoMap() { + return getFetterInfoMapMap(); + } + /** + * map<uint64, .AvatarFetterInfo> fetterInfoMap = 1; + */ + @java.lang.Override + + public java.util.Map getFetterInfoMapMap() { + return internalGetFetterInfoMap().getMap(); + } + /** + * map<uint64, .AvatarFetterInfo> fetterInfoMap = 1; + */ + @java.lang.Override + + public emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo getFetterInfoMapOrDefault( + long key, + emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo defaultValue) { + + java.util.Map map = + internalGetFetterInfoMap().getMap(); + return map.containsKey(key) ? map.get(key) : defaultValue; + } + /** + * map<uint64, .AvatarFetterInfo> fetterInfoMap = 1; + */ + @java.lang.Override + + public emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo getFetterInfoMapOrThrow( + long key) { + + java.util.Map map = + internalGetFetterInfoMap().getMap(); + if (!map.containsKey(key)) { + throw new java.lang.IllegalArgumentException(); + } + return map.get(key); + } + + public Builder clearFetterInfoMap() { + internalGetMutableFetterInfoMap().getMutableMap() + .clear(); + return this; + } + /** + * map<uint64, .AvatarFetterInfo> fetterInfoMap = 1; + */ + + public Builder removeFetterInfoMap( + long key) { + + internalGetMutableFetterInfoMap().getMutableMap() + .remove(key); + return this; + } + /** + * Use alternate mutation accessors instead. + */ + @java.lang.Deprecated + public java.util.Map + getMutableFetterInfoMap() { + return internalGetMutableFetterInfoMap().getMutableMap(); + } + /** + * map<uint64, .AvatarFetterInfo> fetterInfoMap = 1; + */ + public Builder putFetterInfoMap( + long key, + emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.AvatarFetterInfo value) { + + if (value == null) { + throw new NullPointerException("map value"); +} + + internalGetMutableFetterInfoMap().getMutableMap() + .put(key, value); + return this; + } + /** + * map<uint64, .AvatarFetterInfo> fetterInfoMap = 1; + */ + + public Builder putAllFetterInfoMap( + java.util.Map values) { + internalGetMutableFetterInfoMap().getMutableMap() + .putAll(values); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:AvatarFetterDataNotify) + } + + // @@protoc_insertion_point(class_scope:AvatarFetterDataNotify) + private static final emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify(); + } + + public static emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public AvatarFetterDataNotify parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AvatarFetterDataNotify(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public emu.grasscutter.net.proto.AvatarFetterDataNotifyOuterClass.AvatarFetterDataNotify getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_AvatarFetterDataNotify_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_AvatarFetterDataNotify_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_AvatarFetterDataNotify_FetterInfoMapEntry_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_AvatarFetterDataNotify_FetterInfoMapEntry_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\034AvatarFetterDataNotify.proto\032\026AvatarFe" + + "tterInfo.proto\"\244\001\n\026AvatarFetterDataNotif" + + "y\022A\n\rfetterInfoMap\030\001 \003(\0132*.AvatarFetterD" + + "ataNotify.FetterInfoMapEntry\032G\n\022FetterIn" + + "foMapEntry\022\013\n\003key\030\001 \001(\004\022 \n\005value\030\002 \001(\0132\021" + + ".AvatarFetterInfo:\0028\001B\033\n\031emu.grasscutter" + + ".net.protob\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.getDescriptor(), + }); + internal_static_AvatarFetterDataNotify_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_AvatarFetterDataNotify_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_AvatarFetterDataNotify_descriptor, + new java.lang.String[] { "FetterInfoMap", }); + internal_static_AvatarFetterDataNotify_FetterInfoMapEntry_descriptor = + internal_static_AvatarFetterDataNotify_descriptor.getNestedTypes().get(0); + internal_static_AvatarFetterDataNotify_FetterInfoMapEntry_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_AvatarFetterDataNotify_FetterInfoMapEntry_descriptor, + new java.lang.String[] { "Key", "Value", }); + emu.grasscutter.net.proto.AvatarFetterInfoOuterClass.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/src/main/java/emu/grasscutter/net/proto/AvatarFetterLevelRewardReqOuterClass.java b/src/main/java/emu/grasscutter/net/proto/AvatarFetterLevelRewardReqOuterClass.java new file mode 100644 index 000000000..be66bde26 --- /dev/null +++ b/src/main/java/emu/grasscutter/net/proto/AvatarFetterLevelRewardReqOuterClass.java @@ -0,0 +1,610 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: AvatarFetterLevelRewardReq.proto + +package emu.grasscutter.net.proto; + +public final class AvatarFetterLevelRewardReqOuterClass { + private AvatarFetterLevelRewardReqOuterClass() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface AvatarFetterLevelRewardReqOrBuilder extends + // @@protoc_insertion_point(interface_extends:AvatarFetterLevelRewardReq) + com.google.protobuf.MessageOrBuilder { + + /** + * uint64 avatarGuid = 1; + * @return The avatarGuid. + */ + long getAvatarGuid(); + + /** + * uint32 fetterLevel = 2; + * @return The fetterLevel. + */ + int getFetterLevel(); + } + /** + * Protobuf type {@code AvatarFetterLevelRewardReq} + */ + public static final class AvatarFetterLevelRewardReq extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:AvatarFetterLevelRewardReq) + AvatarFetterLevelRewardReqOrBuilder { + private static final long serialVersionUID = 0L; + // Use AvatarFetterLevelRewardReq.newBuilder() to construct. + private AvatarFetterLevelRewardReq(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private AvatarFetterLevelRewardReq() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new AvatarFetterLevelRewardReq(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private AvatarFetterLevelRewardReq( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + + avatarGuid_ = input.readUInt64(); + break; + } + case 16: { + + fetterLevel_ = input.readUInt32(); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.internal_static_AvatarFetterLevelRewardReq_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.internal_static_AvatarFetterLevelRewardReq_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq.class, emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq.Builder.class); + } + + public static final int AVATARGUID_FIELD_NUMBER = 1; + private long avatarGuid_; + /** + * uint64 avatarGuid = 1; + * @return The avatarGuid. + */ + @java.lang.Override + public long getAvatarGuid() { + return avatarGuid_; + } + + public static final int FETTERLEVEL_FIELD_NUMBER = 2; + private int fetterLevel_; + /** + * uint32 fetterLevel = 2; + * @return The fetterLevel. + */ + @java.lang.Override + public int getFetterLevel() { + return fetterLevel_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (avatarGuid_ != 0L) { + output.writeUInt64(1, avatarGuid_); + } + if (fetterLevel_ != 0) { + output.writeUInt32(2, fetterLevel_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (avatarGuid_ != 0L) { + size += com.google.protobuf.CodedOutputStream + .computeUInt64Size(1, avatarGuid_); + } + if (fetterLevel_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, fetterLevel_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq)) { + return super.equals(obj); + } + emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq other = (emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq) obj; + + if (getAvatarGuid() + != other.getAvatarGuid()) return false; + if (getFetterLevel() + != other.getFetterLevel()) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + AVATARGUID_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getAvatarGuid()); + hash = (37 * hash) + FETTERLEVEL_FIELD_NUMBER; + hash = (53 * hash) + getFetterLevel(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code AvatarFetterLevelRewardReq} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:AvatarFetterLevelRewardReq) + emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReqOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.internal_static_AvatarFetterLevelRewardReq_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.internal_static_AvatarFetterLevelRewardReq_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq.class, emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq.Builder.class); + } + + // Construct using emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + avatarGuid_ = 0L; + + fetterLevel_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.internal_static_AvatarFetterLevelRewardReq_descriptor; + } + + @java.lang.Override + public emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq getDefaultInstanceForType() { + return emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq.getDefaultInstance(); + } + + @java.lang.Override + public emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq build() { + emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq buildPartial() { + emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq result = new emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq(this); + result.avatarGuid_ = avatarGuid_; + result.fetterLevel_ = fetterLevel_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq) { + return mergeFrom((emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq other) { + if (other == emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq.getDefaultInstance()) return this; + if (other.getAvatarGuid() != 0L) { + setAvatarGuid(other.getAvatarGuid()); + } + if (other.getFetterLevel() != 0) { + setFetterLevel(other.getFetterLevel()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private long avatarGuid_ ; + /** + * uint64 avatarGuid = 1; + * @return The avatarGuid. + */ + @java.lang.Override + public long getAvatarGuid() { + return avatarGuid_; + } + /** + * uint64 avatarGuid = 1; + * @param value The avatarGuid to set. + * @return This builder for chaining. + */ + public Builder setAvatarGuid(long value) { + + avatarGuid_ = value; + onChanged(); + return this; + } + /** + * uint64 avatarGuid = 1; + * @return This builder for chaining. + */ + public Builder clearAvatarGuid() { + + avatarGuid_ = 0L; + onChanged(); + return this; + } + + private int fetterLevel_ ; + /** + * uint32 fetterLevel = 2; + * @return The fetterLevel. + */ + @java.lang.Override + public int getFetterLevel() { + return fetterLevel_; + } + /** + * uint32 fetterLevel = 2; + * @param value The fetterLevel to set. + * @return This builder for chaining. + */ + public Builder setFetterLevel(int value) { + + fetterLevel_ = value; + onChanged(); + return this; + } + /** + * uint32 fetterLevel = 2; + * @return This builder for chaining. + */ + public Builder clearFetterLevel() { + + fetterLevel_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:AvatarFetterLevelRewardReq) + } + + // @@protoc_insertion_point(class_scope:AvatarFetterLevelRewardReq) + private static final emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq(); + } + + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public AvatarFetterLevelRewardReq parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AvatarFetterLevelRewardReq(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public emu.grasscutter.net.proto.AvatarFetterLevelRewardReqOuterClass.AvatarFetterLevelRewardReq getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_AvatarFetterLevelRewardReq_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_AvatarFetterLevelRewardReq_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n AvatarFetterLevelRewardReq.proto\"E\n\032Av" + + "atarFetterLevelRewardReq\022\022\n\navatarGuid\030\001" + + " \001(\004\022\023\n\013fetterLevel\030\002 \001(\rB\033\n\031emu.grasscu" + + "tter.net.protob\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + }); + internal_static_AvatarFetterLevelRewardReq_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_AvatarFetterLevelRewardReq_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_AvatarFetterLevelRewardReq_descriptor, + new java.lang.String[] { "AvatarGuid", "FetterLevel", }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/src/main/java/emu/grasscutter/net/proto/AvatarFetterLevelRewardRspOuterClass.java b/src/main/java/emu/grasscutter/net/proto/AvatarFetterLevelRewardRspOuterClass.java new file mode 100644 index 000000000..6801ce7ec --- /dev/null +++ b/src/main/java/emu/grasscutter/net/proto/AvatarFetterLevelRewardRspOuterClass.java @@ -0,0 +1,751 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: AvatarFetterLevelRewardRsp.proto + +package emu.grasscutter.net.proto; + +public final class AvatarFetterLevelRewardRspOuterClass { + private AvatarFetterLevelRewardRspOuterClass() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface AvatarFetterLevelRewardRspOrBuilder extends + // @@protoc_insertion_point(interface_extends:AvatarFetterLevelRewardRsp) + com.google.protobuf.MessageOrBuilder { + + /** + * int32 retcode = 1; + * @return The retcode. + */ + int getRetcode(); + + /** + * uint64 avatarGuid = 2; + * @return The avatarGuid. + */ + long getAvatarGuid(); + + /** + * uint32 fetterLevel = 3; + * @return The fetterLevel. + */ + int getFetterLevel(); + + /** + * uint32 rewardId = 4; + * @return The rewardId. + */ + int getRewardId(); + } + /** + * Protobuf type {@code AvatarFetterLevelRewardRsp} + */ + public static final class AvatarFetterLevelRewardRsp extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:AvatarFetterLevelRewardRsp) + AvatarFetterLevelRewardRspOrBuilder { + private static final long serialVersionUID = 0L; + // Use AvatarFetterLevelRewardRsp.newBuilder() to construct. + private AvatarFetterLevelRewardRsp(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private AvatarFetterLevelRewardRsp() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new AvatarFetterLevelRewardRsp(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private AvatarFetterLevelRewardRsp( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + + retcode_ = input.readInt32(); + break; + } + case 16: { + + avatarGuid_ = input.readUInt64(); + break; + } + case 24: { + + fetterLevel_ = input.readUInt32(); + break; + } + case 32: { + + rewardId_ = input.readUInt32(); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.internal_static_AvatarFetterLevelRewardRsp_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.internal_static_AvatarFetterLevelRewardRsp_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp.class, emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp.Builder.class); + } + + public static final int RETCODE_FIELD_NUMBER = 1; + private int retcode_; + /** + * int32 retcode = 1; + * @return The retcode. + */ + @java.lang.Override + public int getRetcode() { + return retcode_; + } + + public static final int AVATARGUID_FIELD_NUMBER = 2; + private long avatarGuid_; + /** + * uint64 avatarGuid = 2; + * @return The avatarGuid. + */ + @java.lang.Override + public long getAvatarGuid() { + return avatarGuid_; + } + + public static final int FETTERLEVEL_FIELD_NUMBER = 3; + private int fetterLevel_; + /** + * uint32 fetterLevel = 3; + * @return The fetterLevel. + */ + @java.lang.Override + public int getFetterLevel() { + return fetterLevel_; + } + + public static final int REWARDID_FIELD_NUMBER = 4; + private int rewardId_; + /** + * uint32 rewardId = 4; + * @return The rewardId. + */ + @java.lang.Override + public int getRewardId() { + return rewardId_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (retcode_ != 0) { + output.writeInt32(1, retcode_); + } + if (avatarGuid_ != 0L) { + output.writeUInt64(2, avatarGuid_); + } + if (fetterLevel_ != 0) { + output.writeUInt32(3, fetterLevel_); + } + if (rewardId_ != 0) { + output.writeUInt32(4, rewardId_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (retcode_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, retcode_); + } + if (avatarGuid_ != 0L) { + size += com.google.protobuf.CodedOutputStream + .computeUInt64Size(2, avatarGuid_); + } + if (fetterLevel_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(3, fetterLevel_); + } + if (rewardId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(4, rewardId_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp)) { + return super.equals(obj); + } + emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp other = (emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp) obj; + + if (getRetcode() + != other.getRetcode()) return false; + if (getAvatarGuid() + != other.getAvatarGuid()) return false; + if (getFetterLevel() + != other.getFetterLevel()) return false; + if (getRewardId() + != other.getRewardId()) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + RETCODE_FIELD_NUMBER; + hash = (53 * hash) + getRetcode(); + hash = (37 * hash) + AVATARGUID_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + getAvatarGuid()); + hash = (37 * hash) + FETTERLEVEL_FIELD_NUMBER; + hash = (53 * hash) + getFetterLevel(); + hash = (37 * hash) + REWARDID_FIELD_NUMBER; + hash = (53 * hash) + getRewardId(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code AvatarFetterLevelRewardRsp} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:AvatarFetterLevelRewardRsp) + emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRspOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.internal_static_AvatarFetterLevelRewardRsp_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.internal_static_AvatarFetterLevelRewardRsp_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp.class, emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp.Builder.class); + } + + // Construct using emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + retcode_ = 0; + + avatarGuid_ = 0L; + + fetterLevel_ = 0; + + rewardId_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.internal_static_AvatarFetterLevelRewardRsp_descriptor; + } + + @java.lang.Override + public emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp getDefaultInstanceForType() { + return emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp.getDefaultInstance(); + } + + @java.lang.Override + public emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp build() { + emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp buildPartial() { + emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp result = new emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp(this); + result.retcode_ = retcode_; + result.avatarGuid_ = avatarGuid_; + result.fetterLevel_ = fetterLevel_; + result.rewardId_ = rewardId_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp) { + return mergeFrom((emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp other) { + if (other == emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp.getDefaultInstance()) return this; + if (other.getRetcode() != 0) { + setRetcode(other.getRetcode()); + } + if (other.getAvatarGuid() != 0L) { + setAvatarGuid(other.getAvatarGuid()); + } + if (other.getFetterLevel() != 0) { + setFetterLevel(other.getFetterLevel()); + } + if (other.getRewardId() != 0) { + setRewardId(other.getRewardId()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int retcode_ ; + /** + * int32 retcode = 1; + * @return The retcode. + */ + @java.lang.Override + public int getRetcode() { + return retcode_; + } + /** + * int32 retcode = 1; + * @param value The retcode to set. + * @return This builder for chaining. + */ + public Builder setRetcode(int value) { + + retcode_ = value; + onChanged(); + return this; + } + /** + * int32 retcode = 1; + * @return This builder for chaining. + */ + public Builder clearRetcode() { + + retcode_ = 0; + onChanged(); + return this; + } + + private long avatarGuid_ ; + /** + * uint64 avatarGuid = 2; + * @return The avatarGuid. + */ + @java.lang.Override + public long getAvatarGuid() { + return avatarGuid_; + } + /** + * uint64 avatarGuid = 2; + * @param value The avatarGuid to set. + * @return This builder for chaining. + */ + public Builder setAvatarGuid(long value) { + + avatarGuid_ = value; + onChanged(); + return this; + } + /** + * uint64 avatarGuid = 2; + * @return This builder for chaining. + */ + public Builder clearAvatarGuid() { + + avatarGuid_ = 0L; + onChanged(); + return this; + } + + private int fetterLevel_ ; + /** + * uint32 fetterLevel = 3; + * @return The fetterLevel. + */ + @java.lang.Override + public int getFetterLevel() { + return fetterLevel_; + } + /** + * uint32 fetterLevel = 3; + * @param value The fetterLevel to set. + * @return This builder for chaining. + */ + public Builder setFetterLevel(int value) { + + fetterLevel_ = value; + onChanged(); + return this; + } + /** + * uint32 fetterLevel = 3; + * @return This builder for chaining. + */ + public Builder clearFetterLevel() { + + fetterLevel_ = 0; + onChanged(); + return this; + } + + private int rewardId_ ; + /** + * uint32 rewardId = 4; + * @return The rewardId. + */ + @java.lang.Override + public int getRewardId() { + return rewardId_; + } + /** + * uint32 rewardId = 4; + * @param value The rewardId to set. + * @return This builder for chaining. + */ + public Builder setRewardId(int value) { + + rewardId_ = value; + onChanged(); + return this; + } + /** + * uint32 rewardId = 4; + * @return This builder for chaining. + */ + public Builder clearRewardId() { + + rewardId_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:AvatarFetterLevelRewardRsp) + } + + // @@protoc_insertion_point(class_scope:AvatarFetterLevelRewardRsp) + private static final emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp(); + } + + public static emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public AvatarFetterLevelRewardRsp parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AvatarFetterLevelRewardRsp(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public emu.grasscutter.net.proto.AvatarFetterLevelRewardRspOuterClass.AvatarFetterLevelRewardRsp getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_AvatarFetterLevelRewardRsp_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_AvatarFetterLevelRewardRsp_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n AvatarFetterLevelRewardRsp.proto\"h\n\032Av" + + "atarFetterLevelRewardRsp\022\017\n\007retcode\030\001 \001(" + + "\005\022\022\n\navatarGuid\030\002 \001(\004\022\023\n\013fetterLevel\030\003 \001" + + "(\r\022\020\n\010rewardId\030\004 \001(\rB\033\n\031emu.grasscutter." + + "net.protob\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + }); + internal_static_AvatarFetterLevelRewardRsp_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_AvatarFetterLevelRewardRsp_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_AvatarFetterLevelRewardRsp_descriptor, + new java.lang.String[] { "Retcode", "AvatarGuid", "FetterLevel", "RewardId", }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/src/main/java/emu/grasscutter/net/proto/EvtDoSkillSuccNotifyOuterClass.java b/src/main/java/emu/grasscutter/net/proto/EvtDoSkillSuccNotifyOuterClass.java new file mode 100644 index 000000000..61edb141d --- /dev/null +++ b/src/main/java/emu/grasscutter/net/proto/EvtDoSkillSuccNotifyOuterClass.java @@ -0,0 +1,923 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: EvtDoSkillSuccNotify.proto + +package emu.grasscutter.net.proto; + +public final class EvtDoSkillSuccNotifyOuterClass { + private EvtDoSkillSuccNotifyOuterClass() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface EvtDoSkillSuccNotifyOrBuilder extends + // @@protoc_insertion_point(interface_extends:EvtDoSkillSuccNotify) + com.google.protobuf.MessageOrBuilder { + + /** + * .ForwardType forwardType = 1; + * @return The enum numeric value on the wire for forwardType. + */ + int getForwardTypeValue(); + /** + * .ForwardType forwardType = 1; + * @return The forwardType. + */ + emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType getForwardType(); + + /** + * uint32 casterId = 2; + * @return The casterId. + */ + int getCasterId(); + + /** + * uint32 skillId = 3; + * @return The skillId. + */ + int getSkillId(); + + /** + * .Vector forward = 4; + * @return Whether the forward field is set. + */ + boolean hasForward(); + /** + * .Vector forward = 4; + * @return The forward. + */ + emu.grasscutter.net.proto.VectorOuterClass.Vector getForward(); + /** + * .Vector forward = 4; + */ + emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder getForwardOrBuilder(); + } + /** + * Protobuf type {@code EvtDoSkillSuccNotify} + */ + public static final class EvtDoSkillSuccNotify extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:EvtDoSkillSuccNotify) + EvtDoSkillSuccNotifyOrBuilder { + private static final long serialVersionUID = 0L; + // Use EvtDoSkillSuccNotify.newBuilder() to construct. + private EvtDoSkillSuccNotify(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private EvtDoSkillSuccNotify() { + forwardType_ = 0; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new EvtDoSkillSuccNotify(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private EvtDoSkillSuccNotify( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + int rawValue = input.readEnum(); + + forwardType_ = rawValue; + break; + } + case 16: { + + casterId_ = input.readUInt32(); + break; + } + case 24: { + + skillId_ = input.readUInt32(); + break; + } + case 34: { + emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder subBuilder = null; + if (forward_ != null) { + subBuilder = forward_.toBuilder(); + } + forward_ = input.readMessage(emu.grasscutter.net.proto.VectorOuterClass.Vector.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(forward_); + forward_ = subBuilder.buildPartial(); + } + + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.internal_static_EvtDoSkillSuccNotify_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.internal_static_EvtDoSkillSuccNotify_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify.class, emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify.Builder.class); + } + + public static final int FORWARDTYPE_FIELD_NUMBER = 1; + private int forwardType_; + /** + * .ForwardType forwardType = 1; + * @return The enum numeric value on the wire for forwardType. + */ + @java.lang.Override public int getForwardTypeValue() { + return forwardType_; + } + /** + * .ForwardType forwardType = 1; + * @return The forwardType. + */ + @java.lang.Override public emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType getForwardType() { + @SuppressWarnings("deprecation") + emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType result = emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType.valueOf(forwardType_); + return result == null ? emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType.UNRECOGNIZED : result; + } + + public static final int CASTERID_FIELD_NUMBER = 2; + private int casterId_; + /** + * uint32 casterId = 2; + * @return The casterId. + */ + @java.lang.Override + public int getCasterId() { + return casterId_; + } + + public static final int SKILLID_FIELD_NUMBER = 3; + private int skillId_; + /** + * uint32 skillId = 3; + * @return The skillId. + */ + @java.lang.Override + public int getSkillId() { + return skillId_; + } + + public static final int FORWARD_FIELD_NUMBER = 4; + private emu.grasscutter.net.proto.VectorOuterClass.Vector forward_; + /** + * .Vector forward = 4; + * @return Whether the forward field is set. + */ + @java.lang.Override + public boolean hasForward() { + return forward_ != null; + } + /** + * .Vector forward = 4; + * @return The forward. + */ + @java.lang.Override + public emu.grasscutter.net.proto.VectorOuterClass.Vector getForward() { + return forward_ == null ? emu.grasscutter.net.proto.VectorOuterClass.Vector.getDefaultInstance() : forward_; + } + /** + * .Vector forward = 4; + */ + @java.lang.Override + public emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder getForwardOrBuilder() { + return getForward(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (forwardType_ != emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType.ForwardLocal.getNumber()) { + output.writeEnum(1, forwardType_); + } + if (casterId_ != 0) { + output.writeUInt32(2, casterId_); + } + if (skillId_ != 0) { + output.writeUInt32(3, skillId_); + } + if (forward_ != null) { + output.writeMessage(4, getForward()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (forwardType_ != emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType.ForwardLocal.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, forwardType_); + } + if (casterId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, casterId_); + } + if (skillId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(3, skillId_); + } + if (forward_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(4, getForward()); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify)) { + return super.equals(obj); + } + emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify other = (emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify) obj; + + if (forwardType_ != other.forwardType_) return false; + if (getCasterId() + != other.getCasterId()) return false; + if (getSkillId() + != other.getSkillId()) return false; + if (hasForward() != other.hasForward()) return false; + if (hasForward()) { + if (!getForward() + .equals(other.getForward())) return false; + } + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + FORWARDTYPE_FIELD_NUMBER; + hash = (53 * hash) + forwardType_; + hash = (37 * hash) + CASTERID_FIELD_NUMBER; + hash = (53 * hash) + getCasterId(); + hash = (37 * hash) + SKILLID_FIELD_NUMBER; + hash = (53 * hash) + getSkillId(); + if (hasForward()) { + hash = (37 * hash) + FORWARD_FIELD_NUMBER; + hash = (53 * hash) + getForward().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code EvtDoSkillSuccNotify} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:EvtDoSkillSuccNotify) + emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotifyOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.internal_static_EvtDoSkillSuccNotify_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.internal_static_EvtDoSkillSuccNotify_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify.class, emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify.Builder.class); + } + + // Construct using emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + forwardType_ = 0; + + casterId_ = 0; + + skillId_ = 0; + + if (forwardBuilder_ == null) { + forward_ = null; + } else { + forward_ = null; + forwardBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.internal_static_EvtDoSkillSuccNotify_descriptor; + } + + @java.lang.Override + public emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify getDefaultInstanceForType() { + return emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify.getDefaultInstance(); + } + + @java.lang.Override + public emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify build() { + emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify buildPartial() { + emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify result = new emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify(this); + result.forwardType_ = forwardType_; + result.casterId_ = casterId_; + result.skillId_ = skillId_; + if (forwardBuilder_ == null) { + result.forward_ = forward_; + } else { + result.forward_ = forwardBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify) { + return mergeFrom((emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify other) { + if (other == emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify.getDefaultInstance()) return this; + if (other.forwardType_ != 0) { + setForwardTypeValue(other.getForwardTypeValue()); + } + if (other.getCasterId() != 0) { + setCasterId(other.getCasterId()); + } + if (other.getSkillId() != 0) { + setSkillId(other.getSkillId()); + } + if (other.hasForward()) { + mergeForward(other.getForward()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int forwardType_ = 0; + /** + * .ForwardType forwardType = 1; + * @return The enum numeric value on the wire for forwardType. + */ + @java.lang.Override public int getForwardTypeValue() { + return forwardType_; + } + /** + * .ForwardType forwardType = 1; + * @param value The enum numeric value on the wire for forwardType to set. + * @return This builder for chaining. + */ + public Builder setForwardTypeValue(int value) { + + forwardType_ = value; + onChanged(); + return this; + } + /** + * .ForwardType forwardType = 1; + * @return The forwardType. + */ + @java.lang.Override + public emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType getForwardType() { + @SuppressWarnings("deprecation") + emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType result = emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType.valueOf(forwardType_); + return result == null ? emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType.UNRECOGNIZED : result; + } + /** + * .ForwardType forwardType = 1; + * @param value The forwardType to set. + * @return This builder for chaining. + */ + public Builder setForwardType(emu.grasscutter.net.proto.ForwardTypeOuterClass.ForwardType value) { + if (value == null) { + throw new NullPointerException(); + } + + forwardType_ = value.getNumber(); + onChanged(); + return this; + } + /** + * .ForwardType forwardType = 1; + * @return This builder for chaining. + */ + public Builder clearForwardType() { + + forwardType_ = 0; + onChanged(); + return this; + } + + private int casterId_ ; + /** + * uint32 casterId = 2; + * @return The casterId. + */ + @java.lang.Override + public int getCasterId() { + return casterId_; + } + /** + * uint32 casterId = 2; + * @param value The casterId to set. + * @return This builder for chaining. + */ + public Builder setCasterId(int value) { + + casterId_ = value; + onChanged(); + return this; + } + /** + * uint32 casterId = 2; + * @return This builder for chaining. + */ + public Builder clearCasterId() { + + casterId_ = 0; + onChanged(); + return this; + } + + private int skillId_ ; + /** + * uint32 skillId = 3; + * @return The skillId. + */ + @java.lang.Override + public int getSkillId() { + return skillId_; + } + /** + * uint32 skillId = 3; + * @param value The skillId to set. + * @return This builder for chaining. + */ + public Builder setSkillId(int value) { + + skillId_ = value; + onChanged(); + return this; + } + /** + * uint32 skillId = 3; + * @return This builder for chaining. + */ + public Builder clearSkillId() { + + skillId_ = 0; + onChanged(); + return this; + } + + private emu.grasscutter.net.proto.VectorOuterClass.Vector forward_; + private com.google.protobuf.SingleFieldBuilderV3< + emu.grasscutter.net.proto.VectorOuterClass.Vector, emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder, emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder> forwardBuilder_; + /** + * .Vector forward = 4; + * @return Whether the forward field is set. + */ + public boolean hasForward() { + return forwardBuilder_ != null || forward_ != null; + } + /** + * .Vector forward = 4; + * @return The forward. + */ + public emu.grasscutter.net.proto.VectorOuterClass.Vector getForward() { + if (forwardBuilder_ == null) { + return forward_ == null ? emu.grasscutter.net.proto.VectorOuterClass.Vector.getDefaultInstance() : forward_; + } else { + return forwardBuilder_.getMessage(); + } + } + /** + * .Vector forward = 4; + */ + public Builder setForward(emu.grasscutter.net.proto.VectorOuterClass.Vector value) { + if (forwardBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + forward_ = value; + onChanged(); + } else { + forwardBuilder_.setMessage(value); + } + + return this; + } + /** + * .Vector forward = 4; + */ + public Builder setForward( + emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder builderForValue) { + if (forwardBuilder_ == null) { + forward_ = builderForValue.build(); + onChanged(); + } else { + forwardBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .Vector forward = 4; + */ + public Builder mergeForward(emu.grasscutter.net.proto.VectorOuterClass.Vector value) { + if (forwardBuilder_ == null) { + if (forward_ != null) { + forward_ = + emu.grasscutter.net.proto.VectorOuterClass.Vector.newBuilder(forward_).mergeFrom(value).buildPartial(); + } else { + forward_ = value; + } + onChanged(); + } else { + forwardBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .Vector forward = 4; + */ + public Builder clearForward() { + if (forwardBuilder_ == null) { + forward_ = null; + onChanged(); + } else { + forward_ = null; + forwardBuilder_ = null; + } + + return this; + } + /** + * .Vector forward = 4; + */ + public emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder getForwardBuilder() { + + onChanged(); + return getForwardFieldBuilder().getBuilder(); + } + /** + * .Vector forward = 4; + */ + public emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder getForwardOrBuilder() { + if (forwardBuilder_ != null) { + return forwardBuilder_.getMessageOrBuilder(); + } else { + return forward_ == null ? + emu.grasscutter.net.proto.VectorOuterClass.Vector.getDefaultInstance() : forward_; + } + } + /** + * .Vector forward = 4; + */ + private com.google.protobuf.SingleFieldBuilderV3< + emu.grasscutter.net.proto.VectorOuterClass.Vector, emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder, emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder> + getForwardFieldBuilder() { + if (forwardBuilder_ == null) { + forwardBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + emu.grasscutter.net.proto.VectorOuterClass.Vector, emu.grasscutter.net.proto.VectorOuterClass.Vector.Builder, emu.grasscutter.net.proto.VectorOuterClass.VectorOrBuilder>( + getForward(), + getParentForChildren(), + isClean()); + forward_ = null; + } + return forwardBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:EvtDoSkillSuccNotify) + } + + // @@protoc_insertion_point(class_scope:EvtDoSkillSuccNotify) + private static final emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify(); + } + + public static emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public EvtDoSkillSuccNotify parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new EvtDoSkillSuccNotify(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public emu.grasscutter.net.proto.EvtDoSkillSuccNotifyOuterClass.EvtDoSkillSuccNotify getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_EvtDoSkillSuccNotify_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_EvtDoSkillSuccNotify_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\032EvtDoSkillSuccNotify.proto\032\021ForwardTyp" + + "e.proto\032\014Vector.proto\"v\n\024EvtDoSkillSuccN" + + "otify\022!\n\013forwardType\030\001 \001(\0162\014.ForwardType" + + "\022\020\n\010casterId\030\002 \001(\r\022\017\n\007skillId\030\003 \001(\r\022\030\n\007f" + + "orward\030\004 \001(\0132\007.VectorB\033\n\031emu.grasscutter" + + ".net.protob\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + emu.grasscutter.net.proto.ForwardTypeOuterClass.getDescriptor(), + emu.grasscutter.net.proto.VectorOuterClass.getDescriptor(), + }); + internal_static_EvtDoSkillSuccNotify_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_EvtDoSkillSuccNotify_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_EvtDoSkillSuccNotify_descriptor, + new java.lang.String[] { "ForwardType", "CasterId", "SkillId", "Forward", }); + emu.grasscutter.net.proto.ForwardTypeOuterClass.getDescriptor(); + emu.grasscutter.net.proto.VectorOuterClass.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/src/main/java/emu/grasscutter/net/proto/NpcTalkReqOuterClass.java b/src/main/java/emu/grasscutter/net/proto/NpcTalkReqOuterClass.java new file mode 100644 index 000000000..a974986b9 --- /dev/null +++ b/src/main/java/emu/grasscutter/net/proto/NpcTalkReqOuterClass.java @@ -0,0 +1,680 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: Grasscutter-Protos/proto/NpcTalkReq.proto + +package emu.grasscutter.net.proto; + +public final class NpcTalkReqOuterClass { + private NpcTalkReqOuterClass() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface NpcTalkReqOrBuilder extends + // @@protoc_insertion_point(interface_extends:NpcTalkReq) + com.google.protobuf.MessageOrBuilder { + + /** + * uint32 npc_entity_id = 1; + * @return The npcEntityId. + */ + int getNpcEntityId(); + + /** + * uint32 talk_id = 3; + * @return The talkId. + */ + int getTalkId(); + + /** + * uint32 entity_id = 4; + * @return The entityId. + */ + int getEntityId(); + } + /** + * Protobuf type {@code NpcTalkReq} + */ + public static final class NpcTalkReq extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:NpcTalkReq) + NpcTalkReqOrBuilder { + private static final long serialVersionUID = 0L; + // Use NpcTalkReq.newBuilder() to construct. + private NpcTalkReq(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private NpcTalkReq() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new NpcTalkReq(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private NpcTalkReq( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + + npcEntityId_ = input.readUInt32(); + break; + } + case 24: { + + talkId_ = input.readUInt32(); + break; + } + case 32: { + + entityId_ = input.readUInt32(); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.NpcTalkReqOuterClass.internal_static_NpcTalkReq_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.NpcTalkReqOuterClass.internal_static_NpcTalkReq_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.class, emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.Builder.class); + } + + public static final int NPC_ENTITY_ID_FIELD_NUMBER = 1; + private int npcEntityId_; + /** + * uint32 npc_entity_id = 1; + * @return The npcEntityId. + */ + @java.lang.Override + public int getNpcEntityId() { + return npcEntityId_; + } + + public static final int TALK_ID_FIELD_NUMBER = 3; + private int talkId_; + /** + * uint32 talk_id = 3; + * @return The talkId. + */ + @java.lang.Override + public int getTalkId() { + return talkId_; + } + + public static final int ENTITY_ID_FIELD_NUMBER = 4; + private int entityId_; + /** + * uint32 entity_id = 4; + * @return The entityId. + */ + @java.lang.Override + public int getEntityId() { + return entityId_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (npcEntityId_ != 0) { + output.writeUInt32(1, npcEntityId_); + } + if (talkId_ != 0) { + output.writeUInt32(3, talkId_); + } + if (entityId_ != 0) { + output.writeUInt32(4, entityId_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (npcEntityId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, npcEntityId_); + } + if (talkId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(3, talkId_); + } + if (entityId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(4, entityId_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq)) { + return super.equals(obj); + } + emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq other = (emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq) obj; + + if (getNpcEntityId() + != other.getNpcEntityId()) return false; + if (getTalkId() + != other.getTalkId()) return false; + if (getEntityId() + != other.getEntityId()) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + NPC_ENTITY_ID_FIELD_NUMBER; + hash = (53 * hash) + getNpcEntityId(); + hash = (37 * hash) + TALK_ID_FIELD_NUMBER; + hash = (53 * hash) + getTalkId(); + hash = (37 * hash) + ENTITY_ID_FIELD_NUMBER; + hash = (53 * hash) + getEntityId(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code NpcTalkReq} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:NpcTalkReq) + emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReqOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.NpcTalkReqOuterClass.internal_static_NpcTalkReq_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.NpcTalkReqOuterClass.internal_static_NpcTalkReq_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.class, emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.Builder.class); + } + + // Construct using emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + npcEntityId_ = 0; + + talkId_ = 0; + + entityId_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return emu.grasscutter.net.proto.NpcTalkReqOuterClass.internal_static_NpcTalkReq_descriptor; + } + + @java.lang.Override + public emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq getDefaultInstanceForType() { + return emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.getDefaultInstance(); + } + + @java.lang.Override + public emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq build() { + emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq buildPartial() { + emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq result = new emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq(this); + result.npcEntityId_ = npcEntityId_; + result.talkId_ = talkId_; + result.entityId_ = entityId_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq) { + return mergeFrom((emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq other) { + if (other == emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq.getDefaultInstance()) return this; + if (other.getNpcEntityId() != 0) { + setNpcEntityId(other.getNpcEntityId()); + } + if (other.getTalkId() != 0) { + setTalkId(other.getTalkId()); + } + if (other.getEntityId() != 0) { + setEntityId(other.getEntityId()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int npcEntityId_ ; + /** + * uint32 npc_entity_id = 1; + * @return The npcEntityId. + */ + @java.lang.Override + public int getNpcEntityId() { + return npcEntityId_; + } + /** + * uint32 npc_entity_id = 1; + * @param value The npcEntityId to set. + * @return This builder for chaining. + */ + public Builder setNpcEntityId(int value) { + + npcEntityId_ = value; + onChanged(); + return this; + } + /** + * uint32 npc_entity_id = 1; + * @return This builder for chaining. + */ + public Builder clearNpcEntityId() { + + npcEntityId_ = 0; + onChanged(); + return this; + } + + private int talkId_ ; + /** + * uint32 talk_id = 3; + * @return The talkId. + */ + @java.lang.Override + public int getTalkId() { + return talkId_; + } + /** + * uint32 talk_id = 3; + * @param value The talkId to set. + * @return This builder for chaining. + */ + public Builder setTalkId(int value) { + + talkId_ = value; + onChanged(); + return this; + } + /** + * uint32 talk_id = 3; + * @return This builder for chaining. + */ + public Builder clearTalkId() { + + talkId_ = 0; + onChanged(); + return this; + } + + private int entityId_ ; + /** + * uint32 entity_id = 4; + * @return The entityId. + */ + @java.lang.Override + public int getEntityId() { + return entityId_; + } + /** + * uint32 entity_id = 4; + * @param value The entityId to set. + * @return This builder for chaining. + */ + public Builder setEntityId(int value) { + + entityId_ = value; + onChanged(); + return this; + } + /** + * uint32 entity_id = 4; + * @return This builder for chaining. + */ + public Builder clearEntityId() { + + entityId_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:NpcTalkReq) + } + + // @@protoc_insertion_point(class_scope:NpcTalkReq) + private static final emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq(); + } + + public static emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public NpcTalkReq parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new NpcTalkReq(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_NpcTalkReq_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_NpcTalkReq_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n)Grasscutter-Protos/proto/NpcTalkReq.pr" + + "oto\"G\n\nNpcTalkReq\022\025\n\rnpc_entity_id\030\001 \001(\r" + + "\022\017\n\007talk_id\030\003 \001(\r\022\021\n\tentity_id\030\004 \001(\rB1\n\031" + + "emu.grasscutter.net.protoB\024NpcTalkReqOut" + + "erClassb\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + }); + internal_static_NpcTalkReq_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_NpcTalkReq_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_NpcTalkReq_descriptor, + new java.lang.String[] { "NpcEntityId", "TalkId", "EntityId", }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/src/main/java/emu/grasscutter/net/proto/NpcTalkRspOuterClass.java b/src/main/java/emu/grasscutter/net/proto/NpcTalkRspOuterClass.java new file mode 100644 index 000000000..80daa3154 --- /dev/null +++ b/src/main/java/emu/grasscutter/net/proto/NpcTalkRspOuterClass.java @@ -0,0 +1,750 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: Grasscutter-Protos/proto/NpcTalkRsp.proto + +package emu.grasscutter.net.proto; + +public final class NpcTalkRspOuterClass { + private NpcTalkRspOuterClass() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface NpcTalkRspOrBuilder extends + // @@protoc_insertion_point(interface_extends:NpcTalkRsp) + com.google.protobuf.MessageOrBuilder { + + /** + * int32 retcode = 1; + * @return The retcode. + */ + int getRetcode(); + + /** + * uint32 npc_entity_id = 2; + * @return The npcEntityId. + */ + int getNpcEntityId(); + + /** + * uint32 cur_talk_id = 4; + * @return The curTalkId. + */ + int getCurTalkId(); + + /** + * uint32 entity_id = 5; + * @return The entityId. + */ + int getEntityId(); + } + /** + * Protobuf type {@code NpcTalkRsp} + */ + public static final class NpcTalkRsp extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:NpcTalkRsp) + NpcTalkRspOrBuilder { + private static final long serialVersionUID = 0L; + // Use NpcTalkRsp.newBuilder() to construct. + private NpcTalkRsp(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private NpcTalkRsp() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new NpcTalkRsp(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private NpcTalkRsp( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + + retcode_ = input.readInt32(); + break; + } + case 16: { + + npcEntityId_ = input.readUInt32(); + break; + } + case 32: { + + curTalkId_ = input.readUInt32(); + break; + } + case 40: { + + entityId_ = input.readUInt32(); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.NpcTalkRspOuterClass.internal_static_NpcTalkRsp_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.NpcTalkRspOuterClass.internal_static_NpcTalkRsp_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.class, emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.Builder.class); + } + + public static final int RETCODE_FIELD_NUMBER = 1; + private int retcode_; + /** + * int32 retcode = 1; + * @return The retcode. + */ + @java.lang.Override + public int getRetcode() { + return retcode_; + } + + public static final int NPC_ENTITY_ID_FIELD_NUMBER = 2; + private int npcEntityId_; + /** + * uint32 npc_entity_id = 2; + * @return The npcEntityId. + */ + @java.lang.Override + public int getNpcEntityId() { + return npcEntityId_; + } + + public static final int CUR_TALK_ID_FIELD_NUMBER = 4; + private int curTalkId_; + /** + * uint32 cur_talk_id = 4; + * @return The curTalkId. + */ + @java.lang.Override + public int getCurTalkId() { + return curTalkId_; + } + + public static final int ENTITY_ID_FIELD_NUMBER = 5; + private int entityId_; + /** + * uint32 entity_id = 5; + * @return The entityId. + */ + @java.lang.Override + public int getEntityId() { + return entityId_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (retcode_ != 0) { + output.writeInt32(1, retcode_); + } + if (npcEntityId_ != 0) { + output.writeUInt32(2, npcEntityId_); + } + if (curTalkId_ != 0) { + output.writeUInt32(4, curTalkId_); + } + if (entityId_ != 0) { + output.writeUInt32(5, entityId_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (retcode_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, retcode_); + } + if (npcEntityId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, npcEntityId_); + } + if (curTalkId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(4, curTalkId_); + } + if (entityId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(5, entityId_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp)) { + return super.equals(obj); + } + emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp other = (emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp) obj; + + if (getRetcode() + != other.getRetcode()) return false; + if (getNpcEntityId() + != other.getNpcEntityId()) return false; + if (getCurTalkId() + != other.getCurTalkId()) return false; + if (getEntityId() + != other.getEntityId()) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + RETCODE_FIELD_NUMBER; + hash = (53 * hash) + getRetcode(); + hash = (37 * hash) + NPC_ENTITY_ID_FIELD_NUMBER; + hash = (53 * hash) + getNpcEntityId(); + hash = (37 * hash) + CUR_TALK_ID_FIELD_NUMBER; + hash = (53 * hash) + getCurTalkId(); + hash = (37 * hash) + ENTITY_ID_FIELD_NUMBER; + hash = (53 * hash) + getEntityId(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code NpcTalkRsp} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:NpcTalkRsp) + emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRspOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.NpcTalkRspOuterClass.internal_static_NpcTalkRsp_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.NpcTalkRspOuterClass.internal_static_NpcTalkRsp_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.class, emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.Builder.class); + } + + // Construct using emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + retcode_ = 0; + + npcEntityId_ = 0; + + curTalkId_ = 0; + + entityId_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return emu.grasscutter.net.proto.NpcTalkRspOuterClass.internal_static_NpcTalkRsp_descriptor; + } + + @java.lang.Override + public emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp getDefaultInstanceForType() { + return emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.getDefaultInstance(); + } + + @java.lang.Override + public emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp build() { + emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp buildPartial() { + emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp result = new emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp(this); + result.retcode_ = retcode_; + result.npcEntityId_ = npcEntityId_; + result.curTalkId_ = curTalkId_; + result.entityId_ = entityId_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp) { + return mergeFrom((emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp other) { + if (other == emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp.getDefaultInstance()) return this; + if (other.getRetcode() != 0) { + setRetcode(other.getRetcode()); + } + if (other.getNpcEntityId() != 0) { + setNpcEntityId(other.getNpcEntityId()); + } + if (other.getCurTalkId() != 0) { + setCurTalkId(other.getCurTalkId()); + } + if (other.getEntityId() != 0) { + setEntityId(other.getEntityId()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int retcode_ ; + /** + * int32 retcode = 1; + * @return The retcode. + */ + @java.lang.Override + public int getRetcode() { + return retcode_; + } + /** + * int32 retcode = 1; + * @param value The retcode to set. + * @return This builder for chaining. + */ + public Builder setRetcode(int value) { + + retcode_ = value; + onChanged(); + return this; + } + /** + * int32 retcode = 1; + * @return This builder for chaining. + */ + public Builder clearRetcode() { + + retcode_ = 0; + onChanged(); + return this; + } + + private int npcEntityId_ ; + /** + * uint32 npc_entity_id = 2; + * @return The npcEntityId. + */ + @java.lang.Override + public int getNpcEntityId() { + return npcEntityId_; + } + /** + * uint32 npc_entity_id = 2; + * @param value The npcEntityId to set. + * @return This builder for chaining. + */ + public Builder setNpcEntityId(int value) { + + npcEntityId_ = value; + onChanged(); + return this; + } + /** + * uint32 npc_entity_id = 2; + * @return This builder for chaining. + */ + public Builder clearNpcEntityId() { + + npcEntityId_ = 0; + onChanged(); + return this; + } + + private int curTalkId_ ; + /** + * uint32 cur_talk_id = 4; + * @return The curTalkId. + */ + @java.lang.Override + public int getCurTalkId() { + return curTalkId_; + } + /** + * uint32 cur_talk_id = 4; + * @param value The curTalkId to set. + * @return This builder for chaining. + */ + public Builder setCurTalkId(int value) { + + curTalkId_ = value; + onChanged(); + return this; + } + /** + * uint32 cur_talk_id = 4; + * @return This builder for chaining. + */ + public Builder clearCurTalkId() { + + curTalkId_ = 0; + onChanged(); + return this; + } + + private int entityId_ ; + /** + * uint32 entity_id = 5; + * @return The entityId. + */ + @java.lang.Override + public int getEntityId() { + return entityId_; + } + /** + * uint32 entity_id = 5; + * @param value The entityId to set. + * @return This builder for chaining. + */ + public Builder setEntityId(int value) { + + entityId_ = value; + onChanged(); + return this; + } + /** + * uint32 entity_id = 5; + * @return This builder for chaining. + */ + public Builder clearEntityId() { + + entityId_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:NpcTalkRsp) + } + + // @@protoc_insertion_point(class_scope:NpcTalkRsp) + private static final emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp(); + } + + public static emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public NpcTalkRsp parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new NpcTalkRsp(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_NpcTalkRsp_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_NpcTalkRsp_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n)Grasscutter-Protos/proto/NpcTalkRsp.pr" + + "oto\"\\\n\nNpcTalkRsp\022\017\n\007retcode\030\001 \001(\005\022\025\n\rnp" + + "c_entity_id\030\002 \001(\r\022\023\n\013cur_talk_id\030\004 \001(\r\022\021" + + "\n\tentity_id\030\005 \001(\rB1\n\031emu.grasscutter.net" + + ".protoB\024NpcTalkRspOuterClassb\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + }); + internal_static_NpcTalkRsp_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_NpcTalkRsp_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_NpcTalkRsp_descriptor, + new java.lang.String[] { "Retcode", "NpcEntityId", "CurTalkId", "EntityId", }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/src/main/java/emu/grasscutter/net/proto/SceneTransToPointReqOuterClass.java b/src/main/java/emu/grasscutter/net/proto/SceneTransToPointReqOuterClass.java new file mode 100644 index 000000000..e807e3b55 --- /dev/null +++ b/src/main/java/emu/grasscutter/net/proto/SceneTransToPointReqOuterClass.java @@ -0,0 +1,750 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: SceneTransToPointReq.proto + +package emu.grasscutter.net.proto; + +public final class SceneTransToPointReqOuterClass { + private SceneTransToPointReqOuterClass() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface SceneTransToPointReqOrBuilder extends + // @@protoc_insertion_point(interface_extends:SceneTransToPointReq) + com.google.protobuf.MessageOrBuilder { + + /** + * uint32 sceneId = 1; + * @return The sceneId. + */ + int getSceneId(); + + /** + * uint32 pointId = 2; + * @return The pointId. + */ + int getPointId(); + } + /** + * Protobuf type {@code SceneTransToPointReq} + */ + public static final class SceneTransToPointReq extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:SceneTransToPointReq) + SceneTransToPointReqOrBuilder { + private static final long serialVersionUID = 0L; + // Use SceneTransToPointReq.newBuilder() to construct. + private SceneTransToPointReq(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SceneTransToPointReq() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new SceneTransToPointReq(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private SceneTransToPointReq( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + + sceneId_ = input.readUInt32(); + break; + } + case 16: { + + pointId_ = input.readUInt32(); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.internal_static_SceneTransToPointReq_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.internal_static_SceneTransToPointReq_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq.class, emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq.Builder.class); + } + + /** + * Protobuf enum {@code SceneTransToPointReq.CmdId} + */ + public enum CmdId + implements com.google.protobuf.ProtocolMessageEnum { + /** + * NONE = 0; + */ + NONE(0, 0), + /** + * ENET_IS_RELIABLE = 1; + */ + ENET_IS_RELIABLE(2, 1), + /** + * CMD_ID = 219; + */ + CMD_ID(4, 219), + UNRECOGNIZED(-1, -1), + ; + + /** + * ENET_CHANNEL_ID = 0; + */ + public static final CmdId ENET_CHANNEL_ID = NONE; + /** + * IS_ALLOW_CLIENT = 1; + */ + public static final CmdId IS_ALLOW_CLIENT = ENET_IS_RELIABLE; + /** + * NONE = 0; + */ + public static final int NONE_VALUE = 0; + /** + * ENET_CHANNEL_ID = 0; + */ + public static final int ENET_CHANNEL_ID_VALUE = 0; + /** + * ENET_IS_RELIABLE = 1; + */ + public static final int ENET_IS_RELIABLE_VALUE = 1; + /** + * IS_ALLOW_CLIENT = 1; + */ + public static final int IS_ALLOW_CLIENT_VALUE = 1; + /** + * CMD_ID = 219; + */ + public static final int CMD_ID_VALUE = 219; + + + public final int getNumber() { + if (index == -1) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static CmdId valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static CmdId forNumber(int value) { + switch (value) { + case 0: return NONE; + case 1: return ENET_IS_RELIABLE; + case 219: return CMD_ID; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + CmdId> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public CmdId findValueByNumber(int number) { + return CmdId.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (index == -1) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(index); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq.getDescriptor().getEnumTypes().get(0); + } + + private static final CmdId[] VALUES = getStaticValuesArray(); + private static CmdId[] getStaticValuesArray() { + return new CmdId[] { + NONE, ENET_CHANNEL_ID, ENET_IS_RELIABLE, IS_ALLOW_CLIENT, CMD_ID, + }; + } + public static CmdId valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int index; + private final int value; + + private CmdId(int index, int value) { + this.index = index; + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:SceneTransToPointReq.CmdId) + } + + public static final int SCENEID_FIELD_NUMBER = 1; + private int sceneId_; + /** + * uint32 sceneId = 1; + * @return The sceneId. + */ + @java.lang.Override + public int getSceneId() { + return sceneId_; + } + + public static final int POINTID_FIELD_NUMBER = 2; + private int pointId_; + /** + * uint32 pointId = 2; + * @return The pointId. + */ + @java.lang.Override + public int getPointId() { + return pointId_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (sceneId_ != 0) { + output.writeUInt32(1, sceneId_); + } + if (pointId_ != 0) { + output.writeUInt32(2, pointId_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (sceneId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, sceneId_); + } + if (pointId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, pointId_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq)) { + return super.equals(obj); + } + emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq other = (emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq) obj; + + if (getSceneId() + != other.getSceneId()) return false; + if (getPointId() + != other.getPointId()) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SCENEID_FIELD_NUMBER; + hash = (53 * hash) + getSceneId(); + hash = (37 * hash) + POINTID_FIELD_NUMBER; + hash = (53 * hash) + getPointId(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code SceneTransToPointReq} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:SceneTransToPointReq) + emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReqOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.internal_static_SceneTransToPointReq_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.internal_static_SceneTransToPointReq_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq.class, emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq.Builder.class); + } + + // Construct using emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + sceneId_ = 0; + + pointId_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.internal_static_SceneTransToPointReq_descriptor; + } + + @java.lang.Override + public emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq getDefaultInstanceForType() { + return emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq.getDefaultInstance(); + } + + @java.lang.Override + public emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq build() { + emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq buildPartial() { + emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq result = new emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq(this); + result.sceneId_ = sceneId_; + result.pointId_ = pointId_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq) { + return mergeFrom((emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq other) { + if (other == emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq.getDefaultInstance()) return this; + if (other.getSceneId() != 0) { + setSceneId(other.getSceneId()); + } + if (other.getPointId() != 0) { + setPointId(other.getPointId()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int sceneId_ ; + /** + * uint32 sceneId = 1; + * @return The sceneId. + */ + @java.lang.Override + public int getSceneId() { + return sceneId_; + } + /** + * uint32 sceneId = 1; + * @param value The sceneId to set. + * @return This builder for chaining. + */ + public Builder setSceneId(int value) { + + sceneId_ = value; + onChanged(); + return this; + } + /** + * uint32 sceneId = 1; + * @return This builder for chaining. + */ + public Builder clearSceneId() { + + sceneId_ = 0; + onChanged(); + return this; + } + + private int pointId_ ; + /** + * uint32 pointId = 2; + * @return The pointId. + */ + @java.lang.Override + public int getPointId() { + return pointId_; + } + /** + * uint32 pointId = 2; + * @param value The pointId to set. + * @return This builder for chaining. + */ + public Builder setPointId(int value) { + + pointId_ = value; + onChanged(); + return this; + } + /** + * uint32 pointId = 2; + * @return This builder for chaining. + */ + public Builder clearPointId() { + + pointId_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:SceneTransToPointReq) + } + + // @@protoc_insertion_point(class_scope:SceneTransToPointReq) + private static final emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq(); + } + + public static emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SceneTransToPointReq parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new SceneTransToPointReq(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_SceneTransToPointReq_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_SceneTransToPointReq_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\032SceneTransToPointReq.proto\"\234\001\n\024SceneTr" + + "ansToPointReq\022\017\n\007sceneId\030\001 \001(\r\022\017\n\007pointI" + + "d\030\002 \001(\r\"b\n\005CmdId\022\010\n\004NONE\020\000\022\023\n\017ENET_CHANN" + + "EL_ID\020\000\022\024\n\020ENET_IS_RELIABLE\020\001\022\023\n\017IS_ALLO" + + "W_CLIENT\020\001\022\013\n\006CMD_ID\020\333\001\032\002\020\001B\033\n\031emu.grass" + + "cutter.net.protob\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + }); + internal_static_SceneTransToPointReq_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_SceneTransToPointReq_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_SceneTransToPointReq_descriptor, + new java.lang.String[] { "SceneId", "PointId", }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/src/main/java/emu/grasscutter/net/proto/SceneTransToPointRspOuterClass.java b/src/main/java/emu/grasscutter/net/proto/SceneTransToPointRspOuterClass.java new file mode 100644 index 000000000..353b88fe5 --- /dev/null +++ b/src/main/java/emu/grasscutter/net/proto/SceneTransToPointRspOuterClass.java @@ -0,0 +1,812 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: SceneTransToPointRsp.proto + +package emu.grasscutter.net.proto; + +public final class SceneTransToPointRspOuterClass { + private SceneTransToPointRspOuterClass() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface SceneTransToPointRspOrBuilder extends + // @@protoc_insertion_point(interface_extends:SceneTransToPointRsp) + com.google.protobuf.MessageOrBuilder { + + /** + * int32 retcode = 1; + * @return The retcode. + */ + int getRetcode(); + + /** + * uint32 sceneId = 2; + * @return The sceneId. + */ + int getSceneId(); + + /** + * uint32 pointId = 3; + * @return The pointId. + */ + int getPointId(); + } + /** + * Protobuf type {@code SceneTransToPointRsp} + */ + public static final class SceneTransToPointRsp extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:SceneTransToPointRsp) + SceneTransToPointRspOrBuilder { + private static final long serialVersionUID = 0L; + // Use SceneTransToPointRsp.newBuilder() to construct. + private SceneTransToPointRsp(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SceneTransToPointRsp() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new SceneTransToPointRsp(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private SceneTransToPointRsp( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + + retcode_ = input.readInt32(); + break; + } + case 16: { + + sceneId_ = input.readUInt32(); + break; + } + case 24: { + + pointId_ = input.readUInt32(); + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.internal_static_SceneTransToPointRsp_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.internal_static_SceneTransToPointRsp_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp.class, emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp.Builder.class); + } + + /** + * Protobuf enum {@code SceneTransToPointRsp.CmdId} + */ + public enum CmdId + implements com.google.protobuf.ProtocolMessageEnum { + /** + * NONE = 0; + */ + NONE(0, 0), + /** + * ENET_IS_RELIABLE = 1; + */ + ENET_IS_RELIABLE(2, 1), + /** + * CMD_ID = 220; + */ + CMD_ID(3, 220), + UNRECOGNIZED(-1, -1), + ; + + /** + * ENET_CHANNEL_ID = 0; + */ + public static final CmdId ENET_CHANNEL_ID = NONE; + /** + * NONE = 0; + */ + public static final int NONE_VALUE = 0; + /** + * ENET_CHANNEL_ID = 0; + */ + public static final int ENET_CHANNEL_ID_VALUE = 0; + /** + * ENET_IS_RELIABLE = 1; + */ + public static final int ENET_IS_RELIABLE_VALUE = 1; + /** + * CMD_ID = 220; + */ + public static final int CMD_ID_VALUE = 220; + + + public final int getNumber() { + if (index == -1) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static CmdId valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static CmdId forNumber(int value) { + switch (value) { + case 0: return NONE; + case 1: return ENET_IS_RELIABLE; + case 220: return CMD_ID; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + CmdId> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public CmdId findValueByNumber(int number) { + return CmdId.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (index == -1) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(index); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp.getDescriptor().getEnumTypes().get(0); + } + + private static final CmdId[] VALUES = getStaticValuesArray(); + private static CmdId[] getStaticValuesArray() { + return new CmdId[] { + NONE, ENET_CHANNEL_ID, ENET_IS_RELIABLE, CMD_ID, + }; + } + public static CmdId valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int index; + private final int value; + + private CmdId(int index, int value) { + this.index = index; + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:SceneTransToPointRsp.CmdId) + } + + public static final int RETCODE_FIELD_NUMBER = 1; + private int retcode_; + /** + * int32 retcode = 1; + * @return The retcode. + */ + @java.lang.Override + public int getRetcode() { + return retcode_; + } + + public static final int SCENEID_FIELD_NUMBER = 2; + private int sceneId_; + /** + * uint32 sceneId = 2; + * @return The sceneId. + */ + @java.lang.Override + public int getSceneId() { + return sceneId_; + } + + public static final int POINTID_FIELD_NUMBER = 3; + private int pointId_; + /** + * uint32 pointId = 3; + * @return The pointId. + */ + @java.lang.Override + public int getPointId() { + return pointId_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (retcode_ != 0) { + output.writeInt32(1, retcode_); + } + if (sceneId_ != 0) { + output.writeUInt32(2, sceneId_); + } + if (pointId_ != 0) { + output.writeUInt32(3, pointId_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (retcode_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeInt32Size(1, retcode_); + } + if (sceneId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, sceneId_); + } + if (pointId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(3, pointId_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp)) { + return super.equals(obj); + } + emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp other = (emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp) obj; + + if (getRetcode() + != other.getRetcode()) return false; + if (getSceneId() + != other.getSceneId()) return false; + if (getPointId() + != other.getPointId()) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + RETCODE_FIELD_NUMBER; + hash = (53 * hash) + getRetcode(); + hash = (37 * hash) + SCENEID_FIELD_NUMBER; + hash = (53 * hash) + getSceneId(); + hash = (37 * hash) + POINTID_FIELD_NUMBER; + hash = (53 * hash) + getPointId(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code SceneTransToPointRsp} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:SceneTransToPointRsp) + emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRspOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.internal_static_SceneTransToPointRsp_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.internal_static_SceneTransToPointRsp_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp.class, emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp.Builder.class); + } + + // Construct using emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + retcode_ = 0; + + sceneId_ = 0; + + pointId_ = 0; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.internal_static_SceneTransToPointRsp_descriptor; + } + + @java.lang.Override + public emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp getDefaultInstanceForType() { + return emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp.getDefaultInstance(); + } + + @java.lang.Override + public emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp build() { + emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp buildPartial() { + emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp result = new emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp(this); + result.retcode_ = retcode_; + result.sceneId_ = sceneId_; + result.pointId_ = pointId_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp) { + return mergeFrom((emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp other) { + if (other == emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp.getDefaultInstance()) return this; + if (other.getRetcode() != 0) { + setRetcode(other.getRetcode()); + } + if (other.getSceneId() != 0) { + setSceneId(other.getSceneId()); + } + if (other.getPointId() != 0) { + setPointId(other.getPointId()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int retcode_ ; + /** + * int32 retcode = 1; + * @return The retcode. + */ + @java.lang.Override + public int getRetcode() { + return retcode_; + } + /** + * int32 retcode = 1; + * @param value The retcode to set. + * @return This builder for chaining. + */ + public Builder setRetcode(int value) { + + retcode_ = value; + onChanged(); + return this; + } + /** + * int32 retcode = 1; + * @return This builder for chaining. + */ + public Builder clearRetcode() { + + retcode_ = 0; + onChanged(); + return this; + } + + private int sceneId_ ; + /** + * uint32 sceneId = 2; + * @return The sceneId. + */ + @java.lang.Override + public int getSceneId() { + return sceneId_; + } + /** + * uint32 sceneId = 2; + * @param value The sceneId to set. + * @return This builder for chaining. + */ + public Builder setSceneId(int value) { + + sceneId_ = value; + onChanged(); + return this; + } + /** + * uint32 sceneId = 2; + * @return This builder for chaining. + */ + public Builder clearSceneId() { + + sceneId_ = 0; + onChanged(); + return this; + } + + private int pointId_ ; + /** + * uint32 pointId = 3; + * @return The pointId. + */ + @java.lang.Override + public int getPointId() { + return pointId_; + } + /** + * uint32 pointId = 3; + * @param value The pointId to set. + * @return This builder for chaining. + */ + public Builder setPointId(int value) { + + pointId_ = value; + onChanged(); + return this; + } + /** + * uint32 pointId = 3; + * @return This builder for chaining. + */ + public Builder clearPointId() { + + pointId_ = 0; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:SceneTransToPointRsp) + } + + // @@protoc_insertion_point(class_scope:SceneTransToPointRsp) + private static final emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp(); + } + + public static emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SceneTransToPointRsp parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new SceneTransToPointRsp(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_SceneTransToPointRsp_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_SceneTransToPointRsp_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\032SceneTransToPointRsp.proto\"\230\001\n\024SceneTr" + + "ansToPointRsp\022\017\n\007retcode\030\001 \001(\005\022\017\n\007sceneI" + + "d\030\002 \001(\r\022\017\n\007pointId\030\003 \001(\r\"M\n\005CmdId\022\010\n\004NON" + + "E\020\000\022\023\n\017ENET_CHANNEL_ID\020\000\022\024\n\020ENET_IS_RELI" + + "ABLE\020\001\022\013\n\006CMD_ID\020\334\001\032\002\020\001B\033\n\031emu.grasscutt" + + "er.net.protob\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + }); + internal_static_SceneTransToPointRsp_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_SceneTransToPointRsp_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_SceneTransToPointRsp_descriptor, + new java.lang.String[] { "Retcode", "SceneId", "PointId", }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/src/main/java/emu/grasscutter/net/proto/SetEntityClientDataNotifyOuterClass.java b/src/main/java/emu/grasscutter/net/proto/SetEntityClientDataNotifyOuterClass.java new file mode 100644 index 000000000..5541ca15b --- /dev/null +++ b/src/main/java/emu/grasscutter/net/proto/SetEntityClientDataNotifyOuterClass.java @@ -0,0 +1,743 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: SetEntityClientDataNotify.proto + +package emu.grasscutter.net.proto; + +public final class SetEntityClientDataNotifyOuterClass { + private SetEntityClientDataNotifyOuterClass() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface SetEntityClientDataNotifyOrBuilder extends + // @@protoc_insertion_point(interface_extends:SetEntityClientDataNotify) + com.google.protobuf.MessageOrBuilder { + + /** + * uint32 entityId = 1; + * @return The entityId. + */ + int getEntityId(); + + /** + * .EntityClientData entityClientData = 2; + * @return Whether the entityClientData field is set. + */ + boolean hasEntityClientData(); + /** + * .EntityClientData entityClientData = 2; + * @return The entityClientData. + */ + emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData getEntityClientData(); + /** + * .EntityClientData entityClientData = 2; + */ + emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientDataOrBuilder getEntityClientDataOrBuilder(); + } + /** + * Protobuf type {@code SetEntityClientDataNotify} + */ + public static final class SetEntityClientDataNotify extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:SetEntityClientDataNotify) + SetEntityClientDataNotifyOrBuilder { + private static final long serialVersionUID = 0L; + // Use SetEntityClientDataNotify.newBuilder() to construct. + private SetEntityClientDataNotify(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private SetEntityClientDataNotify() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new SetEntityClientDataNotify(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private SetEntityClientDataNotify( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + + entityId_ = input.readUInt32(); + break; + } + case 18: { + emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.Builder subBuilder = null; + if (entityClientData_ != null) { + subBuilder = entityClientData_.toBuilder(); + } + entityClientData_ = input.readMessage(emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(entityClientData_); + entityClientData_ = subBuilder.buildPartial(); + } + + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.internal_static_SetEntityClientDataNotify_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.internal_static_SetEntityClientDataNotify_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify.class, emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify.Builder.class); + } + + public static final int ENTITYID_FIELD_NUMBER = 1; + private int entityId_; + /** + * uint32 entityId = 1; + * @return The entityId. + */ + @java.lang.Override + public int getEntityId() { + return entityId_; + } + + public static final int ENTITYCLIENTDATA_FIELD_NUMBER = 2; + private emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData entityClientData_; + /** + * .EntityClientData entityClientData = 2; + * @return Whether the entityClientData field is set. + */ + @java.lang.Override + public boolean hasEntityClientData() { + return entityClientData_ != null; + } + /** + * .EntityClientData entityClientData = 2; + * @return The entityClientData. + */ + @java.lang.Override + public emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData getEntityClientData() { + return entityClientData_ == null ? emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.getDefaultInstance() : entityClientData_; + } + /** + * .EntityClientData entityClientData = 2; + */ + @java.lang.Override + public emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientDataOrBuilder getEntityClientDataOrBuilder() { + return getEntityClientData(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (entityId_ != 0) { + output.writeUInt32(1, entityId_); + } + if (entityClientData_ != null) { + output.writeMessage(2, getEntityClientData()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (entityId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, entityId_); + } + if (entityClientData_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getEntityClientData()); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify)) { + return super.equals(obj); + } + emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify other = (emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify) obj; + + if (getEntityId() + != other.getEntityId()) return false; + if (hasEntityClientData() != other.hasEntityClientData()) return false; + if (hasEntityClientData()) { + if (!getEntityClientData() + .equals(other.getEntityClientData())) return false; + } + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + ENTITYID_FIELD_NUMBER; + hash = (53 * hash) + getEntityId(); + if (hasEntityClientData()) { + hash = (37 * hash) + ENTITYCLIENTDATA_FIELD_NUMBER; + hash = (53 * hash) + getEntityClientData().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code SetEntityClientDataNotify} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:SetEntityClientDataNotify) + emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotifyOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.internal_static_SetEntityClientDataNotify_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.internal_static_SetEntityClientDataNotify_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify.class, emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify.Builder.class); + } + + // Construct using emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + entityId_ = 0; + + if (entityClientDataBuilder_ == null) { + entityClientData_ = null; + } else { + entityClientData_ = null; + entityClientDataBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.internal_static_SetEntityClientDataNotify_descriptor; + } + + @java.lang.Override + public emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify getDefaultInstanceForType() { + return emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify.getDefaultInstance(); + } + + @java.lang.Override + public emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify build() { + emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify buildPartial() { + emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify result = new emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify(this); + result.entityId_ = entityId_; + if (entityClientDataBuilder_ == null) { + result.entityClientData_ = entityClientData_; + } else { + result.entityClientData_ = entityClientDataBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify) { + return mergeFrom((emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify other) { + if (other == emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify.getDefaultInstance()) return this; + if (other.getEntityId() != 0) { + setEntityId(other.getEntityId()); + } + if (other.hasEntityClientData()) { + mergeEntityClientData(other.getEntityClientData()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int entityId_ ; + /** + * uint32 entityId = 1; + * @return The entityId. + */ + @java.lang.Override + public int getEntityId() { + return entityId_; + } + /** + * uint32 entityId = 1; + * @param value The entityId to set. + * @return This builder for chaining. + */ + public Builder setEntityId(int value) { + + entityId_ = value; + onChanged(); + return this; + } + /** + * uint32 entityId = 1; + * @return This builder for chaining. + */ + public Builder clearEntityId() { + + entityId_ = 0; + onChanged(); + return this; + } + + private emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData entityClientData_; + private com.google.protobuf.SingleFieldBuilderV3< + emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData, emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.Builder, emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientDataOrBuilder> entityClientDataBuilder_; + /** + * .EntityClientData entityClientData = 2; + * @return Whether the entityClientData field is set. + */ + public boolean hasEntityClientData() { + return entityClientDataBuilder_ != null || entityClientData_ != null; + } + /** + * .EntityClientData entityClientData = 2; + * @return The entityClientData. + */ + public emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData getEntityClientData() { + if (entityClientDataBuilder_ == null) { + return entityClientData_ == null ? emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.getDefaultInstance() : entityClientData_; + } else { + return entityClientDataBuilder_.getMessage(); + } + } + /** + * .EntityClientData entityClientData = 2; + */ + public Builder setEntityClientData(emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData value) { + if (entityClientDataBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + entityClientData_ = value; + onChanged(); + } else { + entityClientDataBuilder_.setMessage(value); + } + + return this; + } + /** + * .EntityClientData entityClientData = 2; + */ + public Builder setEntityClientData( + emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.Builder builderForValue) { + if (entityClientDataBuilder_ == null) { + entityClientData_ = builderForValue.build(); + onChanged(); + } else { + entityClientDataBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .EntityClientData entityClientData = 2; + */ + public Builder mergeEntityClientData(emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData value) { + if (entityClientDataBuilder_ == null) { + if (entityClientData_ != null) { + entityClientData_ = + emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.newBuilder(entityClientData_).mergeFrom(value).buildPartial(); + } else { + entityClientData_ = value; + } + onChanged(); + } else { + entityClientDataBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .EntityClientData entityClientData = 2; + */ + public Builder clearEntityClientData() { + if (entityClientDataBuilder_ == null) { + entityClientData_ = null; + onChanged(); + } else { + entityClientData_ = null; + entityClientDataBuilder_ = null; + } + + return this; + } + /** + * .EntityClientData entityClientData = 2; + */ + public emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.Builder getEntityClientDataBuilder() { + + onChanged(); + return getEntityClientDataFieldBuilder().getBuilder(); + } + /** + * .EntityClientData entityClientData = 2; + */ + public emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientDataOrBuilder getEntityClientDataOrBuilder() { + if (entityClientDataBuilder_ != null) { + return entityClientDataBuilder_.getMessageOrBuilder(); + } else { + return entityClientData_ == null ? + emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.getDefaultInstance() : entityClientData_; + } + } + /** + * .EntityClientData entityClientData = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData, emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.Builder, emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientDataOrBuilder> + getEntityClientDataFieldBuilder() { + if (entityClientDataBuilder_ == null) { + entityClientDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData, emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientData.Builder, emu.grasscutter.net.proto.EntityClientDataOuterClass.EntityClientDataOrBuilder>( + getEntityClientData(), + getParentForChildren(), + isClean()); + entityClientData_ = null; + } + return entityClientDataBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:SetEntityClientDataNotify) + } + + // @@protoc_insertion_point(class_scope:SetEntityClientDataNotify) + private static final emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify(); + } + + public static emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public SetEntityClientDataNotify parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new SetEntityClientDataNotify(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_SetEntityClientDataNotify_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_SetEntityClientDataNotify_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\037SetEntityClientDataNotify.proto\032\026Entit" + + "yClientData.proto\"Z\n\031SetEntityClientData" + + "Notify\022\020\n\010entityId\030\001 \001(\r\022+\n\020entityClient" + + "Data\030\002 \001(\0132\021.EntityClientDataB\033\n\031emu.gra" + + "sscutter.net.protob\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + emu.grasscutter.net.proto.EntityClientDataOuterClass.getDescriptor(), + }); + internal_static_SetEntityClientDataNotify_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_SetEntityClientDataNotify_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_SetEntityClientDataNotify_descriptor, + new java.lang.String[] { "EntityId", "EntityClientData", }); + emu.grasscutter.net.proto.EntityClientDataOuterClass.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/src/main/java/emu/grasscutter/net/proto/WorldPlayerLocationInfoOuterClass.java b/src/main/java/emu/grasscutter/net/proto/WorldPlayerLocationInfoOuterClass.java new file mode 100644 index 000000000..b8c634fd1 --- /dev/null +++ b/src/main/java/emu/grasscutter/net/proto/WorldPlayerLocationInfoOuterClass.java @@ -0,0 +1,743 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: WorldPlayerLocationInfo.proto + +package emu.grasscutter.net.proto; + +public final class WorldPlayerLocationInfoOuterClass { + private WorldPlayerLocationInfoOuterClass() {} + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistryLite registry) { + } + + public static void registerAllExtensions( + com.google.protobuf.ExtensionRegistry registry) { + registerAllExtensions( + (com.google.protobuf.ExtensionRegistryLite) registry); + } + public interface WorldPlayerLocationInfoOrBuilder extends + // @@protoc_insertion_point(interface_extends:WorldPlayerLocationInfo) + com.google.protobuf.MessageOrBuilder { + + /** + * uint32 sceneId = 1; + * @return The sceneId. + */ + int getSceneId(); + + /** + * .PlayerLocationInfo playerLoc = 2; + * @return Whether the playerLoc field is set. + */ + boolean hasPlayerLoc(); + /** + * .PlayerLocationInfo playerLoc = 2; + * @return The playerLoc. + */ + emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo getPlayerLoc(); + /** + * .PlayerLocationInfo playerLoc = 2; + */ + emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder getPlayerLocOrBuilder(); + } + /** + * Protobuf type {@code WorldPlayerLocationInfo} + */ + public static final class WorldPlayerLocationInfo extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:WorldPlayerLocationInfo) + WorldPlayerLocationInfoOrBuilder { + private static final long serialVersionUID = 0L; + // Use WorldPlayerLocationInfo.newBuilder() to construct. + private WorldPlayerLocationInfo(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private WorldPlayerLocationInfo() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new WorldPlayerLocationInfo(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private WorldPlayerLocationInfo( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 8: { + + sceneId_ = input.readUInt32(); + break; + } + case 18: { + emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder subBuilder = null; + if (playerLoc_ != null) { + subBuilder = playerLoc_.toBuilder(); + } + playerLoc_ = input.readMessage(emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(playerLoc_); + playerLoc_ = subBuilder.buildPartial(); + } + + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.internal_static_WorldPlayerLocationInfo_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.internal_static_WorldPlayerLocationInfo_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.class, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder.class); + } + + public static final int SCENEID_FIELD_NUMBER = 1; + private int sceneId_; + /** + * uint32 sceneId = 1; + * @return The sceneId. + */ + @java.lang.Override + public int getSceneId() { + return sceneId_; + } + + public static final int PLAYERLOC_FIELD_NUMBER = 2; + private emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo playerLoc_; + /** + * .PlayerLocationInfo playerLoc = 2; + * @return Whether the playerLoc field is set. + */ + @java.lang.Override + public boolean hasPlayerLoc() { + return playerLoc_ != null; + } + /** + * .PlayerLocationInfo playerLoc = 2; + * @return The playerLoc. + */ + @java.lang.Override + public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo getPlayerLoc() { + return playerLoc_ == null ? emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.getDefaultInstance() : playerLoc_; + } + /** + * .PlayerLocationInfo playerLoc = 2; + */ + @java.lang.Override + public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder getPlayerLocOrBuilder() { + return getPlayerLoc(); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (sceneId_ != 0) { + output.writeUInt32(1, sceneId_); + } + if (playerLoc_ != null) { + output.writeMessage(2, getPlayerLoc()); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (sceneId_ != 0) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, sceneId_); + } + if (playerLoc_ != null) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(2, getPlayerLoc()); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo)) { + return super.equals(obj); + } + emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo other = (emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo) obj; + + if (getSceneId() + != other.getSceneId()) return false; + if (hasPlayerLoc() != other.hasPlayerLoc()) return false; + if (hasPlayerLoc()) { + if (!getPlayerLoc() + .equals(other.getPlayerLoc())) return false; + } + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + SCENEID_FIELD_NUMBER; + hash = (53 * hash) + getSceneId(); + if (hasPlayerLoc()) { + hash = (37 * hash) + PLAYERLOC_FIELD_NUMBER; + hash = (53 * hash) + getPlayerLoc().hashCode(); + } + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code WorldPlayerLocationInfo} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:WorldPlayerLocationInfo) + emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfoOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.internal_static_WorldPlayerLocationInfo_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.internal_static_WorldPlayerLocationInfo_fieldAccessorTable + .ensureFieldAccessorsInitialized( + emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.class, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder.class); + } + + // Construct using emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + sceneId_ = 0; + + if (playerLocBuilder_ == null) { + playerLoc_ = null; + } else { + playerLoc_ = null; + playerLocBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.internal_static_WorldPlayerLocationInfo_descriptor; + } + + @java.lang.Override + public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo getDefaultInstanceForType() { + return emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.getDefaultInstance(); + } + + @java.lang.Override + public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo build() { + emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo buildPartial() { + emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo result = new emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo(this); + result.sceneId_ = sceneId_; + if (playerLocBuilder_ == null) { + result.playerLoc_ = playerLoc_; + } else { + result.playerLoc_ = playerLocBuilder_.build(); + } + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo) { + return mergeFrom((emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo other) { + if (other == emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.getDefaultInstance()) return this; + if (other.getSceneId() != 0) { + setSceneId(other.getSceneId()); + } + if (other.hasPlayerLoc()) { + mergePlayerLoc(other.getPlayerLoc()); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int sceneId_ ; + /** + * uint32 sceneId = 1; + * @return The sceneId. + */ + @java.lang.Override + public int getSceneId() { + return sceneId_; + } + /** + * uint32 sceneId = 1; + * @param value The sceneId to set. + * @return This builder for chaining. + */ + public Builder setSceneId(int value) { + + sceneId_ = value; + onChanged(); + return this; + } + /** + * uint32 sceneId = 1; + * @return This builder for chaining. + */ + public Builder clearSceneId() { + + sceneId_ = 0; + onChanged(); + return this; + } + + private emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo playerLoc_; + private com.google.protobuf.SingleFieldBuilderV3< + emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder> playerLocBuilder_; + /** + * .PlayerLocationInfo playerLoc = 2; + * @return Whether the playerLoc field is set. + */ + public boolean hasPlayerLoc() { + return playerLocBuilder_ != null || playerLoc_ != null; + } + /** + * .PlayerLocationInfo playerLoc = 2; + * @return The playerLoc. + */ + public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo getPlayerLoc() { + if (playerLocBuilder_ == null) { + return playerLoc_ == null ? emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.getDefaultInstance() : playerLoc_; + } else { + return playerLocBuilder_.getMessage(); + } + } + /** + * .PlayerLocationInfo playerLoc = 2; + */ + public Builder setPlayerLoc(emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo value) { + if (playerLocBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + playerLoc_ = value; + onChanged(); + } else { + playerLocBuilder_.setMessage(value); + } + + return this; + } + /** + * .PlayerLocationInfo playerLoc = 2; + */ + public Builder setPlayerLoc( + emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder builderForValue) { + if (playerLocBuilder_ == null) { + playerLoc_ = builderForValue.build(); + onChanged(); + } else { + playerLocBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .PlayerLocationInfo playerLoc = 2; + */ + public Builder mergePlayerLoc(emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo value) { + if (playerLocBuilder_ == null) { + if (playerLoc_ != null) { + playerLoc_ = + emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.newBuilder(playerLoc_).mergeFrom(value).buildPartial(); + } else { + playerLoc_ = value; + } + onChanged(); + } else { + playerLocBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .PlayerLocationInfo playerLoc = 2; + */ + public Builder clearPlayerLoc() { + if (playerLocBuilder_ == null) { + playerLoc_ = null; + onChanged(); + } else { + playerLoc_ = null; + playerLocBuilder_ = null; + } + + return this; + } + /** + * .PlayerLocationInfo playerLoc = 2; + */ + public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder getPlayerLocBuilder() { + + onChanged(); + return getPlayerLocFieldBuilder().getBuilder(); + } + /** + * .PlayerLocationInfo playerLoc = 2; + */ + public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder getPlayerLocOrBuilder() { + if (playerLocBuilder_ != null) { + return playerLocBuilder_.getMessageOrBuilder(); + } else { + return playerLoc_ == null ? + emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.getDefaultInstance() : playerLoc_; + } + } + /** + * .PlayerLocationInfo playerLoc = 2; + */ + private com.google.protobuf.SingleFieldBuilderV3< + emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder> + getPlayerLocFieldBuilder() { + if (playerLocBuilder_ == null) { + playerLocBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder>( + getPlayerLoc(), + getParentForChildren(), + isClean()); + playerLoc_ = null; + } + return playerLocBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:WorldPlayerLocationInfo) + } + + // @@protoc_insertion_point(class_scope:WorldPlayerLocationInfo) + private static final emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo(); + } + + public static emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public WorldPlayerLocationInfo parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new WorldPlayerLocationInfo(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_WorldPlayerLocationInfo_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_WorldPlayerLocationInfo_fieldAccessorTable; + + public static com.google.protobuf.Descriptors.FileDescriptor + getDescriptor() { + return descriptor; + } + private static com.google.protobuf.Descriptors.FileDescriptor + descriptor; + static { + java.lang.String[] descriptorData = { + "\n\035WorldPlayerLocationInfo.proto\032\030PlayerL" + + "ocationInfo.proto\"R\n\027WorldPlayerLocation" + + "Info\022\017\n\007sceneId\030\001 \001(\r\022&\n\tplayerLoc\030\002 \001(\013" + + "2\023.PlayerLocationInfoB\033\n\031emu.grasscutter" + + ".net.protob\006proto3" + }; + descriptor = com.google.protobuf.Descriptors.FileDescriptor + .internalBuildGeneratedFileFrom(descriptorData, + new com.google.protobuf.Descriptors.FileDescriptor[] { + emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.getDescriptor(), + }); + internal_static_WorldPlayerLocationInfo_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_WorldPlayerLocationInfo_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_WorldPlayerLocationInfo_descriptor, + new java.lang.String[] { "SceneId", "PlayerLoc", }); + emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/src/main/java/emu/grasscutter/net/proto/WorldPlayerLocationNotifyOuterClass.java b/src/main/java/emu/grasscutter/net/proto/WorldPlayerLocationNotifyOuterClass.java index fb3321673..89859a9d1 100644 --- a/src/main/java/emu/grasscutter/net/proto/WorldPlayerLocationNotifyOuterClass.java +++ b/src/main/java/emu/grasscutter/net/proto/WorldPlayerLocationNotifyOuterClass.java @@ -19,27 +19,27 @@ public final class WorldPlayerLocationNotifyOuterClass { com.google.protobuf.MessageOrBuilder { /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ - java.util.List + java.util.List getPlayerLocListList(); /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ - emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo getPlayerLocList(int index); + emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo getPlayerLocList(int index); /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ int getPlayerLocListCount(); /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ - java.util.List + java.util.List getPlayerLocListOrBuilderList(); /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ - emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder getPlayerLocListOrBuilder( + emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfoOrBuilder getPlayerLocListOrBuilder( int index); } /** @@ -89,13 +89,13 @@ public final class WorldPlayerLocationNotifyOuterClass { case 0: done = true; break; - case 10: { + case 18: { if (!((mutable_bitField0_ & 0x00000001) != 0)) { - playerLocList_ = new java.util.ArrayList(); + playerLocList_ = new java.util.ArrayList(); mutable_bitField0_ |= 0x00000001; } playerLocList_.add( - input.readMessage(emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.parser(), extensionRegistry)); + input.readMessage(emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.parser(), extensionRegistry)); break; } default: { @@ -133,42 +133,42 @@ public final class WorldPlayerLocationNotifyOuterClass { emu.grasscutter.net.proto.WorldPlayerLocationNotifyOuterClass.WorldPlayerLocationNotify.class, emu.grasscutter.net.proto.WorldPlayerLocationNotifyOuterClass.WorldPlayerLocationNotify.Builder.class); } - public static final int PLAYERLOCLIST_FIELD_NUMBER = 1; - private java.util.List playerLocList_; + public static final int PLAYERLOCLIST_FIELD_NUMBER = 2; + private java.util.List playerLocList_; /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ @java.lang.Override - public java.util.List getPlayerLocListList() { + public java.util.List getPlayerLocListList() { return playerLocList_; } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ @java.lang.Override - public java.util.List + public java.util.List getPlayerLocListOrBuilderList() { return playerLocList_; } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ @java.lang.Override public int getPlayerLocListCount() { return playerLocList_.size(); } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ @java.lang.Override - public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo getPlayerLocList(int index) { + public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo getPlayerLocList(int index) { return playerLocList_.get(index); } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ @java.lang.Override - public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder getPlayerLocListOrBuilder( + public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfoOrBuilder getPlayerLocListOrBuilder( int index) { return playerLocList_.get(index); } @@ -188,7 +188,7 @@ public final class WorldPlayerLocationNotifyOuterClass { public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { for (int i = 0; i < playerLocList_.size(); i++) { - output.writeMessage(1, playerLocList_.get(i)); + output.writeMessage(2, playerLocList_.get(i)); } unknownFields.writeTo(output); } @@ -201,7 +201,7 @@ public final class WorldPlayerLocationNotifyOuterClass { size = 0; for (int i = 0; i < playerLocList_.size(); i++) { size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, playerLocList_.get(i)); + .computeMessageSize(2, playerLocList_.get(i)); } size += unknownFields.getSerializedSize(); memoizedSize = size; @@ -515,22 +515,22 @@ public final class WorldPlayerLocationNotifyOuterClass { } private int bitField0_; - private java.util.List playerLocList_ = + private java.util.List playerLocList_ = java.util.Collections.emptyList(); private void ensurePlayerLocListIsMutable() { if (!((bitField0_ & 0x00000001) != 0)) { - playerLocList_ = new java.util.ArrayList(playerLocList_); + playerLocList_ = new java.util.ArrayList(playerLocList_); bitField0_ |= 0x00000001; } } private com.google.protobuf.RepeatedFieldBuilderV3< - emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder> playerLocListBuilder_; + emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfoOrBuilder> playerLocListBuilder_; /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ - public java.util.List getPlayerLocListList() { + public java.util.List getPlayerLocListList() { if (playerLocListBuilder_ == null) { return java.util.Collections.unmodifiableList(playerLocList_); } else { @@ -538,7 +538,7 @@ public final class WorldPlayerLocationNotifyOuterClass { } } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ public int getPlayerLocListCount() { if (playerLocListBuilder_ == null) { @@ -548,9 +548,9 @@ public final class WorldPlayerLocationNotifyOuterClass { } } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ - public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo getPlayerLocList(int index) { + public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo getPlayerLocList(int index) { if (playerLocListBuilder_ == null) { return playerLocList_.get(index); } else { @@ -558,10 +558,10 @@ public final class WorldPlayerLocationNotifyOuterClass { } } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ public Builder setPlayerLocList( - int index, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo value) { + int index, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo value) { if (playerLocListBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -575,10 +575,10 @@ public final class WorldPlayerLocationNotifyOuterClass { return this; } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ public Builder setPlayerLocList( - int index, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder builderForValue) { + int index, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder builderForValue) { if (playerLocListBuilder_ == null) { ensurePlayerLocListIsMutable(); playerLocList_.set(index, builderForValue.build()); @@ -589,9 +589,9 @@ public final class WorldPlayerLocationNotifyOuterClass { return this; } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ - public Builder addPlayerLocList(emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo value) { + public Builder addPlayerLocList(emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo value) { if (playerLocListBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -605,10 +605,10 @@ public final class WorldPlayerLocationNotifyOuterClass { return this; } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ public Builder addPlayerLocList( - int index, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo value) { + int index, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo value) { if (playerLocListBuilder_ == null) { if (value == null) { throw new NullPointerException(); @@ -622,10 +622,10 @@ public final class WorldPlayerLocationNotifyOuterClass { return this; } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ public Builder addPlayerLocList( - emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder builderForValue) { + emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder builderForValue) { if (playerLocListBuilder_ == null) { ensurePlayerLocListIsMutable(); playerLocList_.add(builderForValue.build()); @@ -636,10 +636,10 @@ public final class WorldPlayerLocationNotifyOuterClass { return this; } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ public Builder addPlayerLocList( - int index, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder builderForValue) { + int index, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder builderForValue) { if (playerLocListBuilder_ == null) { ensurePlayerLocListIsMutable(); playerLocList_.add(index, builderForValue.build()); @@ -650,10 +650,10 @@ public final class WorldPlayerLocationNotifyOuterClass { return this; } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ public Builder addAllPlayerLocList( - java.lang.Iterable values) { + java.lang.Iterable values) { if (playerLocListBuilder_ == null) { ensurePlayerLocListIsMutable(); com.google.protobuf.AbstractMessageLite.Builder.addAll( @@ -665,7 +665,7 @@ public final class WorldPlayerLocationNotifyOuterClass { return this; } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ public Builder clearPlayerLocList() { if (playerLocListBuilder_ == null) { @@ -678,7 +678,7 @@ public final class WorldPlayerLocationNotifyOuterClass { return this; } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ public Builder removePlayerLocList(int index) { if (playerLocListBuilder_ == null) { @@ -691,16 +691,16 @@ public final class WorldPlayerLocationNotifyOuterClass { return this; } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ - public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder getPlayerLocListBuilder( + public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder getPlayerLocListBuilder( int index) { return getPlayerLocListFieldBuilder().getBuilder(index); } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ - public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder getPlayerLocListOrBuilder( + public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfoOrBuilder getPlayerLocListOrBuilder( int index) { if (playerLocListBuilder_ == null) { return playerLocList_.get(index); } else { @@ -708,9 +708,9 @@ public final class WorldPlayerLocationNotifyOuterClass { } } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ - public java.util.List + public java.util.List getPlayerLocListOrBuilderList() { if (playerLocListBuilder_ != null) { return playerLocListBuilder_.getMessageOrBuilderList(); @@ -719,33 +719,33 @@ public final class WorldPlayerLocationNotifyOuterClass { } } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ - public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder addPlayerLocListBuilder() { + public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder addPlayerLocListBuilder() { return getPlayerLocListFieldBuilder().addBuilder( - emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.getDefaultInstance()); + emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.getDefaultInstance()); } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ - public emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder addPlayerLocListBuilder( + public emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder addPlayerLocListBuilder( int index) { return getPlayerLocListFieldBuilder().addBuilder( - index, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.getDefaultInstance()); + index, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.getDefaultInstance()); } /** - * repeated .PlayerLocationInfo playerLocList = 1; + * repeated .WorldPlayerLocationInfo playerLocList = 2; */ - public java.util.List + public java.util.List getPlayerLocListBuilderList() { return getPlayerLocListFieldBuilder().getBuilderList(); } private com.google.protobuf.RepeatedFieldBuilderV3< - emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder> + emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfoOrBuilder> getPlayerLocListFieldBuilder() { if (playerLocListBuilder_ == null) { playerLocListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< - emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfo.Builder, emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.PlayerLocationInfoOrBuilder>( + emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo.Builder, emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfoOrBuilder>( playerLocList_, ((bitField0_ & 0x00000001) != 0), getParentForChildren(), @@ -821,16 +821,16 @@ public final class WorldPlayerLocationNotifyOuterClass { descriptor; static { java.lang.String[] descriptorData = { - "\n\037WorldPlayerLocationNotify.proto\032\030Playe" + - "rLocationInfo.proto\"G\n\031WorldPlayerLocati" + - "onNotify\022*\n\rplayerLocList\030\001 \003(\0132\023.Player" + - "LocationInfoB\033\n\031emu.grasscutter.net.prot" + - "ob\006proto3" + "\n\037WorldPlayerLocationNotify.proto\032\035World" + + "PlayerLocationInfo.proto\"L\n\031WorldPlayerL" + + "ocationNotify\022/\n\rplayerLocList\030\002 \003(\0132\030.W" + + "orldPlayerLocationInfoB\033\n\031emu.grasscutte" + + "r.net.protob\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { - emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.getDescriptor(), + emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.getDescriptor(), }); internal_static_WorldPlayerLocationNotify_descriptor = getDescriptor().getMessageTypes().get(0); @@ -838,7 +838,7 @@ public final class WorldPlayerLocationNotifyOuterClass { com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_WorldPlayerLocationNotify_descriptor, new java.lang.String[] { "PlayerLocList", }); - emu.grasscutter.net.proto.PlayerLocationInfoOuterClass.getDescriptor(); + emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.getDescriptor(); } // @@protoc_insertion_point(outer_class_scope) diff --git a/src/main/java/emu/grasscutter/server/dispatch/DispatchServer.java b/src/main/java/emu/grasscutter/server/dispatch/DispatchServer.java index da90caa42..ad8354867 100644 --- a/src/main/java/emu/grasscutter/server/dispatch/DispatchServer.java +++ b/src/main/java/emu/grasscutter/server/dispatch/DispatchServer.java @@ -1,30 +1,14 @@ package emu.grasscutter.server.dispatch; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.io.UnsupportedEncodingException; -import java.net.InetSocketAddress; -import java.net.URI; -import java.net.URLDecoder; -import java.security.KeyStore; -import java.util.Base64; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; - import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.protobuf.ByteString; import com.sun.net.httpserver.HttpExchange; -import com.sun.net.httpserver.HttpHandler; +import com.sun.net.httpserver.HttpServer; import com.sun.net.httpserver.HttpsConfigurator; import com.sun.net.httpserver.HttpsServer; +import emu.grasscutter.Config; import emu.grasscutter.Grasscutter; import emu.grasscutter.database.DatabaseHelper; import emu.grasscutter.game.Account; @@ -32,30 +16,34 @@ import emu.grasscutter.net.proto.QueryCurrRegionHttpRspOuterClass.QueryCurrRegio import emu.grasscutter.net.proto.QueryRegionListHttpRspOuterClass.QueryRegionListHttpRsp; import emu.grasscutter.net.proto.RegionInfoOuterClass.RegionInfo; import emu.grasscutter.net.proto.RegionSimpleInfoOuterClass.RegionSimpleInfo; -import emu.grasscutter.server.dispatch.json.ComboTokenReqJson; -import emu.grasscutter.server.dispatch.json.ComboTokenResJson; -import emu.grasscutter.server.dispatch.json.LoginAccountRequestJson; -import emu.grasscutter.server.dispatch.json.LoginResultJson; -import emu.grasscutter.server.dispatch.json.LoginTokenRequestJson; +import emu.grasscutter.server.dispatch.json.*; import emu.grasscutter.server.dispatch.json.ComboTokenReqJson.LoginTokenData; import emu.grasscutter.utils.FileUtils; import emu.grasscutter.utils.Utils; -import com.sun.net.httpserver.HttpServer; +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.SSLContext; +import java.io.*; +import java.net.InetSocketAddress; +import java.net.URI; +import java.net.URLDecoder; +import java.security.KeyStore; +import java.util.*; public final class DispatchServer { - private final InetSocketAddress address; - private final Gson gson; - private QueryCurrRegionHttpRsp currRegion; - - public String regionListBase64; - public String regionCurrentBase64; - public static String query_region_list = ""; public static String query_cur_region = ""; + + private final InetSocketAddress address; + private final Gson gson; + private final String defaultServerName = "os_usa"; + public String regionListBase64; + public HashMap regions; + public DispatchServer() { - this.address = new InetSocketAddress(Grasscutter.getConfig().DispatchServerIp, Grasscutter.getConfig().DispatchServerPort); + this.regions = new HashMap(); + this.address = new InetSocketAddress(Grasscutter.getConfig().getDispatchOptions().Ip, Grasscutter.getConfig().getDispatchOptions().Port); this.gson = new GsonBuilder().create(); this.loadQueries(); @@ -71,7 +59,13 @@ public final class DispatchServer { } public QueryCurrRegionHttpRsp getCurrRegion() { - return currRegion; + // Needs to be fixed by having the game servers connect to the dispatch server. + if(Grasscutter.getConfig().RunMode.equalsIgnoreCase("HYBRID")) { + return regions.get(defaultServerName).parsedRegionQuery; + } + + Grasscutter.getLogger().warn("[Dispatch] Unsupported run mode for getCurrRegion()"); + return null; } public void loadQueries() { @@ -81,14 +75,14 @@ public final class DispatchServer { if (file.exists()) { query_region_list = new String(FileUtils.read(file)); } else { - Grasscutter.getLogger().warn("query_region_list not found! Using default region list."); + Grasscutter.getLogger().warn("[Dispatch] query_region_list not found! Using default region list."); } file = new File(Grasscutter.getConfig().DATA_FOLDER + "query_cur_region.txt"); if (file.exists()) { query_cur_region = new String(FileUtils.read(file)); } else { - Grasscutter.getLogger().warn("query_cur_region not found! Using default current region."); + Grasscutter.getLogger().warn("[Dispatch] query_cur_region not found! Using default current region."); } } @@ -99,53 +93,80 @@ public final class DispatchServer { byte[] decoded2 = Base64.getDecoder().decode(query_cur_region); QueryCurrRegionHttpRsp regionQuery = QueryCurrRegionHttpRsp.parseFrom(decoded2); - - RegionSimpleInfo server = RegionSimpleInfo.newBuilder() - .setName("os_usa") - .setTitle(Grasscutter.getConfig().GameServerName) - .setType("DEV_PUBLIC") - .setDispatchUrl("https://" + (Grasscutter.getConfig().DispatchServerPublicIp.isEmpty() ? Grasscutter.getConfig().DispatchServerIp : Grasscutter.getConfig().DispatchServerPublicIp) + ":" + getAddress().getPort() + "/query_cur_region") - .build(); - - RegionSimpleInfo serverTest2 = RegionSimpleInfo.newBuilder() - .setName("os_euro") - .setTitle("Grasscutter") - .setType("DEV_PUBLIC") - .setDispatchUrl("https://" + (Grasscutter.getConfig().DispatchServerPublicIp.isEmpty() ? Grasscutter.getConfig().DispatchServerIp : Grasscutter.getConfig().DispatchServerPublicIp) + ":" + getAddress().getPort() + "/query_cur_region") - .build(); - + + List servers = new ArrayList(); + List usedNames = new ArrayList(); // List to check for potential naming conflicts + if(Grasscutter.getConfig().RunMode.equalsIgnoreCase("HYBRID")) { // Automatically add the game server if in hybrid mode + RegionSimpleInfo server = RegionSimpleInfo.newBuilder() + .setName("os_usa") + .setTitle(Grasscutter.getConfig().getGameServerOptions().Name) + .setType("DEV_PUBLIC") + .setDispatchUrl("https://" + (Grasscutter.getConfig().getDispatchOptions().PublicIp.isEmpty() ? Grasscutter.getConfig().getDispatchOptions().Ip : Grasscutter.getConfig().getDispatchOptions().PublicIp) + ":" + getAddress().getPort() + "/query_cur_region_" + defaultServerName) + .build(); + usedNames.add(defaultServerName); + servers.add(server); + + RegionInfo serverRegion = regionQuery.getRegionInfo().toBuilder() + .setIp((Grasscutter.getConfig().getGameServerOptions().PublicIp.isEmpty() ? Grasscutter.getConfig().getGameServerOptions().Ip : Grasscutter.getConfig().getGameServerOptions().PublicIp)) + .setPort(Grasscutter.getConfig().getGameServerOptions().Port) + .setSecretKey(ByteString.copyFrom(FileUtils.read(Grasscutter.getConfig().KEY_FOLDER + "dispatchSeed.bin"))) + .build(); + + QueryCurrRegionHttpRsp parsedRegionQuery = regionQuery.toBuilder().setRegionInfo(serverRegion).build(); + regions.put(defaultServerName, new RegionData(parsedRegionQuery, Base64.getEncoder().encodeToString(parsedRegionQuery.toByteString().toByteArray()))); + + } else { + if(Grasscutter.getConfig().getDispatchOptions().getGameServers().length == 0) { + Grasscutter.getLogger().error("[Dispatch] There are no game servers available. Exiting due to unplayable state."); + System.exit(1); + } + } + + for (Config.DispatchServerOptions.RegionInfo regionInfo : Grasscutter.getConfig().getDispatchOptions().getGameServers()) { + if(usedNames.contains(regionInfo.Name)) { + Grasscutter.getLogger().error("Region name already in use."); + continue; + } + RegionSimpleInfo server = RegionSimpleInfo.newBuilder() + .setName(regionInfo.Name) + .setTitle(regionInfo.Title) + .setType("DEV_PUBLIC") + .setDispatchUrl("https://" + (Grasscutter.getConfig().getDispatchOptions().PublicIp.isEmpty() ? Grasscutter.getConfig().getDispatchOptions().Ip : Grasscutter.getConfig().getDispatchOptions().PublicIp) + ":" + getAddress().getPort() + "/query_cur_region_" + regionInfo.Name) + .build(); + usedNames.add(regionInfo.Name); + servers.add(server); + + RegionInfo serverRegion = regionQuery.getRegionInfo().toBuilder() + .setIp(regionInfo.Ip) + .setPort(regionInfo.Port) + .setSecretKey(ByteString.copyFrom(FileUtils.read(Grasscutter.getConfig().KEY_FOLDER + "dispatchSeed.bin"))) + .build(); + + QueryCurrRegionHttpRsp parsedRegionQuery = regionQuery.toBuilder().setRegionInfo(serverRegion).build(); + regions.put(regionInfo.Name, new RegionData(parsedRegionQuery, Base64.getEncoder().encodeToString(parsedRegionQuery.toByteString().toByteArray()))); + } + QueryRegionListHttpRsp regionList = QueryRegionListHttpRsp.newBuilder() - .addServers(server) - .addServers(serverTest2) + .addAllServers(servers) .setClientSecretKey(rl.getClientSecretKey()) .setClientCustomConfigEncrypted(rl.getClientCustomConfigEncrypted()) .setEnableLoginPc(true) .build(); - - RegionInfo currentRegion = regionQuery.getRegionInfo().toBuilder() - .setIp((Grasscutter.getConfig().GameServerPublicIp.isEmpty() ? Grasscutter.getConfig().GameServerIp : Grasscutter.getConfig().GameServerPublicIp)) - .setPort(Grasscutter.getConfig().GameServerPort) - .setSecretKey(ByteString.copyFrom(FileUtils.read(Grasscutter.getConfig().KEY_FOLDER + "dispatchSeed.bin"))) - .build(); - - QueryCurrRegionHttpRsp parsedRegionQuery = regionQuery.toBuilder().setRegionInfo(currentRegion).build(); this.regionListBase64 = Base64.getEncoder().encodeToString(regionList.toByteString().toByteArray()); - this.regionCurrentBase64 = Base64.getEncoder().encodeToString(parsedRegionQuery.toByteString().toByteArray()); - this.currRegion = parsedRegionQuery; } catch (Exception e) { - Grasscutter.getLogger().error("Error while initializing region info!", e); + Grasscutter.getLogger().error("[Dispatch] Error while initializing region info!", e); } } public void start() throws Exception { HttpServer server; - if(Grasscutter.getConfig().UseSSL) { + if (Grasscutter.getConfig().getDispatchOptions().UseSSL) { HttpsServer httpsServer; httpsServer = HttpsServer.create(getAddress(), 0); SSLContext sslContext = SSLContext.getInstance("TLS"); - try (FileInputStream fis = new FileInputStream(Grasscutter.getConfig().DispatchServerKeystorePath)) { - char[] keystorePassword = Grasscutter.getConfig().DispatchServerKeystorePassword.toCharArray(); + try (FileInputStream fis = new FileInputStream(Grasscutter.getConfig().getDispatchOptions().KeystorePath)) { + char[] keystorePassword = Grasscutter.getConfig().getDispatchOptions().KeystorePassword.toCharArray(); KeyStore ks = KeyStore.getInstance("PKCS12"); ks.load(fis, keystorePassword); KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); @@ -156,56 +177,39 @@ public final class DispatchServer { httpsServer.setHttpsConfigurator(new HttpsConfigurator(sslContext)); server = httpsServer; } catch (Exception e) { - Grasscutter.getLogger().error("No SSL cert found!"); - return; + Grasscutter.getLogger().warn("[Dispatch] No SSL cert found! Falling back to HTTP server."); + Grasscutter.getConfig().getDispatchOptions().UseSSL = false; + server = HttpServer.create(getAddress(), 0); } } else { server = HttpServer.create(getAddress(), 0); } - - server.createContext("/", t -> { - //Create a response form the request query parameters - String response = "Hello"; - //Set the response header status and length - t.getResponseHeaders().put("Content-Type", Collections.singletonList("text/html; charset=UTF-8")); - t.sendResponseHeaders(200, response.getBytes().length); - //Write the response string - OutputStream os = t.getResponseBody(); - os.write(response.getBytes()); - os.close(); - }); + + server.createContext("/", t -> responseHTML(t, "Hello")); // Dispatch server.createContext("/query_region_list", t -> { // Log - Grasscutter.getLogger().info("Client request: query_region_list"); - // Create a response form the request query parameters - String response = regionListBase64; - // Set the response header status and length - t.getResponseHeaders().put("Content-Type", Collections.singletonList("text/html; charset=UTF-8")); - t.sendResponseHeaders(200, response.getBytes().length); - // Write the response string - OutputStream os = t.getResponseBody(); - os.write(response.getBytes()); - os.close(); - }); - server.createContext("/query_cur_region", t -> { - // Log - Grasscutter.getLogger().info("Client request: query_cur_region"); - // Create a response form the request query parameters - URI uri = t.getRequestURI(); - String response = "CAESGE5vdCBGb3VuZCB2ZXJzaW9uIGNvbmZpZw=="; - if (uri.getQuery() != null && uri.getQuery().length() > 0) { - response = regionCurrentBase64; - } - // Set the response header status and length - t.getResponseHeaders().put("Content-Type", Collections.singletonList("text/html; charset=UTF-8")); - t.sendResponseHeaders(200, response.getBytes().length); - // Write the response string - OutputStream os = t.getResponseBody(); - os.write(response.getBytes()); - os.close(); + Grasscutter.getLogger().info(String.format("[Dispatch] Client %s request: query_region_list", t.getRemoteAddress())); + + responseHTML(t, regionListBase64); }); + + for (String regionName : regions.keySet()) { + server.createContext("/query_cur_region_" + regionName, t -> { + String regionCurrentBase64 = regions.get(regionName).Base64; + // Log + Grasscutter.getLogger().info(String.format("Client %s request: query_cur_region_%s", t.getRemoteAddress(), regionName)); + // Create a response form the request query parameters + URI uri = t.getRequestURI(); + String response = "CAESGE5vdCBGb3VuZCB2ZXJzaW9uIGNvbmZpZw=="; + if (uri.getQuery() != null && uri.getQuery().length() > 0) { + response = regionCurrentBase64; + } + responseHTML(t, response); + }); + } + // Login via account server.createContext("/hk4e_global/mdk/shield/api/login", t -> { // Get post data @@ -213,38 +217,56 @@ public final class DispatchServer { try { String body = Utils.toString(t.getRequestBody()); requestData = getGsonFactory().fromJson(body, LoginAccountRequestJson.class); - } catch (Exception e) { - - } + } catch (Exception ignored) { } + // Create response json if (requestData == null) { return; } LoginResultJson responseData = new LoginResultJson(); + + Grasscutter.getLogger().info(String.format("[Dispatch] Client %s is trying to log in", t.getRemoteAddress())); // Login Account account = DatabaseHelper.getAccountByName(requestData.account); - // Test + // Check if account exists, else create a new one. if (account == null) { - responseData.retcode = -201; - responseData.message = "Username not found."; + // Account doesnt exist, so we can either auto create it if the config value is set + if (Grasscutter.getConfig().getDispatchOptions().AutomaticallyCreateAccounts) { + // This account has been created AUTOMATICALLY. There will be no permissions added. + account = DatabaseHelper.createAccountWithId(requestData.account, 0); + + if (account != null) { + responseData.message = "OK"; + responseData.data.account.uid = account.getId(); + responseData.data.account.token = account.generateSessionKey(); + responseData.data.account.email = account.getEmail(); + + Grasscutter.getLogger().info(String.format("[Dispatch] Client %s failed to log in: Account %s created", t.getRemoteAddress(), responseData.data.account.uid)); + } else { + responseData.retcode = -201; + responseData.message = "Username not found, create failed."; + + Grasscutter.getLogger().info(String.format("[Dispatch] Client %s failed to log in: Account create failed", t.getRemoteAddress())); + } + } else { + responseData.retcode = -201; + responseData.message = "Username not found."; + + Grasscutter.getLogger().info(String.format("[Dispatch] Client %s failed to log in: Account no found", t.getRemoteAddress())); + } } else { + // Account was found, log the player in responseData.message = "OK"; responseData.data.account.uid = account.getId(); responseData.data.account.token = account.generateSessionKey(); responseData.data.account.email = account.getEmail(); + + Grasscutter.getLogger().info(String.format("[Dispatch] Client %s logged in as %s", t.getRemoteAddress(), responseData.data.account.uid)); } - - // Create a response - String response = getGsonFactory().toJson(responseData); - // Set the response header status and length - t.getResponseHeaders().put("Content-Type", Collections.singletonList("application/json")); - t.sendResponseHeaders(200, response.getBytes().length); - // Write the response string - OutputStream os = t.getResponseBody(); - os.write(response.getBytes()); - os.close(); + + responseJSON(t, responseData); }); // Login via token server.createContext("/hk4e_global/mdk/shield/api/verify", t -> { @@ -253,14 +275,14 @@ public final class DispatchServer { try { String body = Utils.toString(t.getRequestBody()); requestData = getGsonFactory().fromJson(body, LoginTokenRequestJson.class); - } catch (Exception e) { - - } + } catch (Exception ignored) { } + // Create response json if (requestData == null) { return; } LoginResultJson responseData = new LoginResultJson(); + Grasscutter.getLogger().info(String.format("[Dispatch] Client %s is trying to log in via token", t.getRemoteAddress())); // Login Account account = DatabaseHelper.getAccountById(requestData.uid); @@ -269,22 +291,18 @@ public final class DispatchServer { if (account == null || !account.getSessionKey().equals(requestData.token)) { responseData.retcode = -111; responseData.message = "Game account cache information error"; + + Grasscutter.getLogger().info(String.format("[Dispatch] Client %s failed to log in via token", t.getRemoteAddress())); } else { responseData.message = "OK"; responseData.data.account.uid = requestData.uid; responseData.data.account.token = requestData.token; responseData.data.account.email = account.getEmail(); + + Grasscutter.getLogger().info(String.format("[Dispatch] Client %s logged in via token as %s", t.getRemoteAddress(), responseData.data.account.uid)); } - - // Create a response - String response = getGsonFactory().toJson(responseData); - // Set the response header status and length - t.getResponseHeaders().put("Content-Type", Collections.singletonList("application/json")); - t.sendResponseHeaders(200, response.getBytes().length); - // Write the response string - OutputStream os = t.getResponseBody(); - os.write(response.getBytes()); - os.close(); + + responseJSON(t, responseData); }); // Exchange for combo token server.createContext("/hk4e_global/combo/granter/login/v2/login", t -> { @@ -293,9 +311,8 @@ public final class DispatchServer { try { String body = Utils.toString(t.getRequestBody()); requestData = getGsonFactory().fromJson(body, ComboTokenReqJson.class); - } catch (Exception e) { - - } + } catch (Exception ignored) { } + // Create response json if (requestData == null || requestData.data == null) { return; @@ -310,22 +327,18 @@ public final class DispatchServer { if (account == null || !account.getSessionKey().equals(loginData.token)) { responseData.retcode = -201; responseData.message = "Wrong session key."; + + Grasscutter.getLogger().info(String.format("[Dispatch] Client %s failed to exchange combo token", t.getRemoteAddress())); } else { responseData.message = "OK"; responseData.data.open_id = loginData.uid; responseData.data.combo_id = "157795300"; responseData.data.combo_token = account.generateLoginToken(); + + Grasscutter.getLogger().info(String.format("[Dispatch] Client %s succeed to exchange combo token", t.getRemoteAddress())); } - - // Create a response - String response = getGsonFactory().toJson(responseData); - // Set the response header status and length - t.getResponseHeaders().put("Content-Type", Collections.singletonList("application/json")); - t.sendResponseHeaders(200, response.getBytes().length); - // Write the response string - OutputStream os = t.getResponseBody(); - os.write(response.getBytes()); - os.close(); + + responseJSON(t, responseData); }); // Agreement and Protocol server.createContext( // hk4e-sdk-os.hoyoverse.com @@ -389,63 +402,88 @@ public final class DispatchServer { "/sdk/upload", new DispatchHttpJsonHandler("{\"code\":0}") ); - // Start server - server.start(); - Grasscutter.getLogger().info("Dispatch server started on port " + getAddress().getPort()); + server.createContext( // /perf/config/verify?device_id=xxx&platform=x&name=xxx + "/perf/config/verify", + new DispatchHttpJsonHandler("{\"code\":0}") + ); // Logging servers - HttpServer overseaLogServer = HttpServer.create(new InetSocketAddress(Grasscutter.getConfig().DispatchServerIp, 8888), 0); - overseaLogServer.createContext( // overseauspider.yuanshen.com - "/log", + server.createContext( // overseauspider.yuanshen.com + "/log", new DispatchHttpJsonHandler("{\"code\":0}") ); - overseaLogServer.start(); - Grasscutter.getLogger().info("Log server (overseauspider) started on port " + 8888); - - HttpServer uploadLogServer = HttpServer.create(new InetSocketAddress(Grasscutter.getConfig().DispatchServerIp, Grasscutter.getConfig().UploadLogPort), 0); - uploadLogServer.createContext( // log-upload-os.mihoyo.com - "/crash/dataUpload", + + server.createContext( // log-upload-os.mihoyo.com + "/crash/dataUpload", new DispatchHttpJsonHandler("{\"code\":0}") ); - uploadLogServer.createContext("/gacha", t -> { - //Create a response form the request query parameters - String response = "Gacha"; - //Set the response header status and length - t.getResponseHeaders().put("Content-Type", Collections.singletonList("text/html; charset=UTF-8")); - t.sendResponseHeaders(200, response.getBytes().length); - //Write the response string - OutputStream os = t.getResponseBody(); - os.write(response.getBytes()); - os.close(); - }); - uploadLogServer.start(); - Grasscutter.getLogger().info("Log server (log-upload-os) started on port " + Grasscutter.getConfig().UploadLogPort); + server.createContext("/gacha", t -> responseHTML(t, "Gacha")); + + // Start server + server.start(); + Grasscutter.getLogger().info("[Dispatch] Dispatch server started on port " + getAddress().getPort()); + } + + private void responseJSON(HttpExchange t, Object data) throws IOException { + // Create a response + String response = getGsonFactory().toJson(data); + // Set the response header status and length + t.getResponseHeaders().put("Content-Type", Collections.singletonList("application/json")); + t.sendResponseHeaders(200, response.getBytes().length); + // Write the response string + OutputStream os = t.getResponseBody(); + os.write(response.getBytes()); + os.close(); + } + + private void responseHTML(HttpExchange t, String response) throws IOException { + // Set the response header status and length + t.getResponseHeaders().put("Content-Type", Collections.singletonList("text/html; charset=UTF-8")); + t.sendResponseHeaders(200, response.getBytes().length); + //Write the response string + OutputStream os = t.getResponseBody(); + os.write(response.getBytes()); + os.close(); } private Map parseQueryString(String qs) { - Map result = new HashMap<>(); - if (qs == null) - return result; + Map result = new HashMap<>(); + if (qs == null) { + return result; + } - int last = 0, next, l = qs.length(); - while (last < l) { - next = qs.indexOf('&', last); - if (next == -1) - next = l; + int last = 0, next, l = qs.length(); + while (last < l) { + next = qs.indexOf('&', last); + if (next == -1) { + next = l; + } - if (next > last) { - int eqPos = qs.indexOf('=', last); - try { - if (eqPos < 0 || eqPos > next) - result.put(URLDecoder.decode(qs.substring(last, next), "utf-8"), ""); - else - result.put(URLDecoder.decode(qs.substring(last, eqPos), "utf-8"), URLDecoder.decode(qs.substring(eqPos + 1, next), "utf-8")); - } catch (UnsupportedEncodingException e) { - throw new RuntimeException(e); // will never happen, utf-8 support is mandatory for java - } - } - last = next + 1; - } - return result; + if (next > last) { + int eqPos = qs.indexOf('=', last); + try { + if (eqPos < 0 || eqPos > next) { + result.put(URLDecoder.decode(qs.substring(last, next), "utf-8"), ""); + } else { + result.put(URLDecoder.decode(qs.substring(last, eqPos), "utf-8"), URLDecoder.decode(qs.substring(eqPos + 1, next), "utf-8")); + } + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); // will never happen, utf-8 support is mandatory for java + } + } + last = next + 1; + } + return result; + } + + public static class RegionData { + + QueryCurrRegionHttpRsp parsedRegionQuery; + String Base64; + + public RegionData(QueryCurrRegionHttpRsp prq, String b64) { + this.parsedRegionQuery = prq; + this.Base64 = b64; + } } } diff --git a/src/main/java/emu/grasscutter/server/dispatch/json/ComboTokenReqJson.java b/src/main/java/emu/grasscutter/server/dispatch/json/ComboTokenReqJson.java index dac26cfa4..b3497f8d4 100644 --- a/src/main/java/emu/grasscutter/server/dispatch/json/ComboTokenReqJson.java +++ b/src/main/java/emu/grasscutter/server/dispatch/json/ComboTokenReqJson.java @@ -7,7 +7,7 @@ public class ComboTokenReqJson { public String device; public String sign; - public class LoginTokenData { + public static class LoginTokenData { public String uid; public String token; public boolean guest; diff --git a/src/main/java/emu/grasscutter/server/dispatch/json/ComboTokenResJson.java b/src/main/java/emu/grasscutter/server/dispatch/json/ComboTokenResJson.java index 731d50853..7c49d1278 100644 --- a/src/main/java/emu/grasscutter/server/dispatch/json/ComboTokenResJson.java +++ b/src/main/java/emu/grasscutter/server/dispatch/json/ComboTokenResJson.java @@ -5,7 +5,7 @@ public class ComboTokenResJson { public int retcode; public LoginData data = new LoginData(); - public class LoginData { + public static class LoginData { public int account_type = 1; public boolean heartbeat; public String combo_id; diff --git a/src/main/java/emu/grasscutter/server/dispatch/json/LoginResultJson.java b/src/main/java/emu/grasscutter/server/dispatch/json/LoginResultJson.java index 5988752d8..88e142d4f 100644 --- a/src/main/java/emu/grasscutter/server/dispatch/json/LoginResultJson.java +++ b/src/main/java/emu/grasscutter/server/dispatch/json/LoginResultJson.java @@ -5,7 +5,7 @@ public class LoginResultJson { public int retcode; public VerifyData data = new VerifyData(); - public class VerifyData { + public static class VerifyData { public VerifyAccountData account = new VerifyAccountData(); public boolean device_grant_required = false; public String realname_operation = "NONE"; @@ -13,7 +13,7 @@ public class LoginResultJson { public boolean safe_mobile_required = false; } - public class VerifyAccountData { + public static class VerifyAccountData { public String uid; public String name = ""; public String email; diff --git a/src/main/java/emu/grasscutter/server/game/GameServer.java b/src/main/java/emu/grasscutter/server/game/GameServer.java index b42ced55c..065344ee2 100644 --- a/src/main/java/emu/grasscutter/server/game/GameServer.java +++ b/src/main/java/emu/grasscutter/server/game/GameServer.java @@ -6,7 +6,7 @@ import java.util.concurrent.ConcurrentHashMap; import emu.grasscutter.GenshinConstants; import emu.grasscutter.Grasscutter; -import emu.grasscutter.commands.CommandMap; +import emu.grasscutter.command.CommandMap; import emu.grasscutter.database.DatabaseHelper; import emu.grasscutter.game.Account; import emu.grasscutter.game.GenshinPlayer; @@ -19,6 +19,7 @@ import emu.grasscutter.game.shop.ShopManager; import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail; import emu.grasscutter.netty.MihoyoKcpServer; +import org.greenrobot.eventbus.EventBus; public final class GameServer extends MihoyoKcpServer { private final InetSocketAddress address; @@ -33,10 +34,18 @@ public final class GameServer extends MihoyoKcpServer { private final MultiplayerManager multiplayerManager; private final DungeonManager dungeonManager; private final CommandMap commandMap; + + public EventBus OnGameServerStartFinish; + public EventBus OnGameServerTick; + public EventBus OnGameServerStop; public GameServer(InetSocketAddress address) { super(address); - + + OnGameServerStartFinish = EventBus.builder().throwSubscriberException(true).logNoSubscriberMessages(false).build(); + OnGameServerTick = EventBus.builder().throwSubscriberException(true).logNoSubscriberMessages(false).build(); + OnGameServerStop = EventBus.builder().throwSubscriberException(true).logNoSubscriberMessages(false).build(); + this.setServerInitializer(new GameServerInitializer(this)); this.address = address; this.packetHandler = new GameServerPacketHandler(PacketHandler.class); @@ -145,7 +154,7 @@ public final class GameServer extends MihoyoKcpServer { public Account getAccountByName(String username) { Optional playerOpt = getPlayers().values().stream().filter(player -> player.getAccount().getUsername().equals(username)).findFirst(); - if (playerOpt.get() != null) { + if (playerOpt.isPresent()) { return playerOpt.get().getAccount(); } return DatabaseHelper.getAccountByName(username); @@ -155,14 +164,20 @@ public final class GameServer extends MihoyoKcpServer { for (GenshinPlayer player : this.getPlayers().values()) { player.onTick(); } + + OnGameServerTick.post(new GameServerTickEvent()); } @Override public void onStartFinish() { Grasscutter.getLogger().info("Game Server started on port " + address.getPort()); + + OnGameServerStartFinish.post(new GameServerStartFinishEvent()); } public void onServerShutdown() { + OnGameServerStop.post(new GameServerStopEvent()); + // Kick and save all players List list = new ArrayList<>(this.getPlayers().size()); list.addAll(this.getPlayers().values()); diff --git a/src/main/java/emu/grasscutter/server/game/GameServerPacketHandler.java b/src/main/java/emu/grasscutter/server/game/GameServerPacketHandler.java index 118637668..62a57df91 100644 --- a/src/main/java/emu/grasscutter/server/game/GameServerPacketHandler.java +++ b/src/main/java/emu/grasscutter/server/game/GameServerPacketHandler.java @@ -87,7 +87,7 @@ public class GameServerPacketHandler { } // Log unhandled packets - if (Grasscutter.getConfig().LOG_PACKETS) { + if (Grasscutter.getConfig().getGameServerOptions().LOG_PACKETS) { //Grasscutter.getLogger().info("Unhandled packet (" + opcode + "): " + PacketOpcodesUtil.getOpcodeName(opcode)); } } diff --git a/src/main/java/emu/grasscutter/server/game/GameServerStartFinishEvent.java b/src/main/java/emu/grasscutter/server/game/GameServerStartFinishEvent.java new file mode 100644 index 000000000..5e960ad1d --- /dev/null +++ b/src/main/java/emu/grasscutter/server/game/GameServerStartFinishEvent.java @@ -0,0 +1,5 @@ +package emu.grasscutter.server.game; + +public class GameServerStartFinishEvent { + // Placeholder class for now, probably will get used later +} diff --git a/src/main/java/emu/grasscutter/server/game/GameServerStopEvent.java b/src/main/java/emu/grasscutter/server/game/GameServerStopEvent.java new file mode 100644 index 000000000..7a7ef40d7 --- /dev/null +++ b/src/main/java/emu/grasscutter/server/game/GameServerStopEvent.java @@ -0,0 +1,5 @@ +package emu.grasscutter.server.game; + +public class GameServerStopEvent { + // Placeholder class for now, probably will get used later +} diff --git a/src/main/java/emu/grasscutter/server/game/GameServerTickEvent.java b/src/main/java/emu/grasscutter/server/game/GameServerTickEvent.java new file mode 100644 index 000000000..f9069d2d9 --- /dev/null +++ b/src/main/java/emu/grasscutter/server/game/GameServerTickEvent.java @@ -0,0 +1,5 @@ +package emu.grasscutter.server.game; + +public class GameServerTickEvent { + // Placeholder class for now, probably will get used later +} diff --git a/src/main/java/emu/grasscutter/server/game/GameSession.java b/src/main/java/emu/grasscutter/server/game/GameSession.java index 1a54f31ba..ebd66dc20 100644 --- a/src/main/java/emu/grasscutter/server/game/GameSession.java +++ b/src/main/java/emu/grasscutter/server/game/GameSession.java @@ -165,7 +165,7 @@ public class GameSession extends MihoyoKcpChannel { byte[] data = genshinPacket.build(); // Log - if (Grasscutter.getConfig().LOG_PACKETS) { + if (Grasscutter.getConfig().getGameServerOptions().LOG_PACKETS) { logPacket(genshinPacket); } @@ -225,7 +225,7 @@ public class GameSession extends MihoyoKcpChannel { } // Log packet - if (Grasscutter.getConfig().LOG_PACKETS) { + if (Grasscutter.getConfig().getGameServerOptions().LOG_PACKETS) { Grasscutter.getLogger().info("RECV: " + PacketOpcodesUtil.getOpcodeName(opcode) + " (" + opcode + ")"); System.out.println(Utils.bytesToHex(payload)); } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerClientAbilityInitFinishNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerClientAbilityInitFinishNotify.java new file mode 100644 index 000000000..cfe697b91 --- /dev/null +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerClientAbilityInitFinishNotify.java @@ -0,0 +1,26 @@ +package emu.grasscutter.server.packet.recv; + +import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.AbilityInvokeEntryOuterClass.AbilityInvokeEntry; +import emu.grasscutter.net.proto.ClientAbilityInitFinishNotifyOuterClass.ClientAbilityInitFinishNotify; +import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.server.game.GameSession; + +@Opcodes(PacketOpcodes.ClientAbilityInitFinishNotify) +public class HandlerClientAbilityInitFinishNotify extends PacketHandler { + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + ClientAbilityInitFinishNotify notif = ClientAbilityInitFinishNotify.parseFrom(payload); + + for (AbilityInvokeEntry entry : notif.getInvokesList()) { + session.getPlayer().getClientAbilityInitFinishHandler().addEntry(entry.getForwardType(), entry); + } + + if (notif.getInvokesList().size() > 0) { + session.getPlayer().getClientAbilityInitFinishHandler().update(session.getPlayer()); + } + } + +} diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterSceneDoneReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterSceneDoneReq.java index 5b56a39f4..2f7da6884 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterSceneDoneReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerEnterSceneDoneReq.java @@ -31,8 +31,11 @@ public class HandlerEnterSceneDoneReq extends PacketHandler { // Locations session.send(new PacketWorldPlayerLocationNotify(session.getPlayer().getWorld())); - session.send(new PacketScenePlayerLocationNotify(session.getPlayer())); + session.send(new PacketScenePlayerLocationNotify(session.getPlayer().getScene())); session.send(new PacketWorldPlayerRTTNotify(session.getPlayer().getWorld())); + + // Reset timer for sending player locations + session.getPlayer().resetSendPlayerLocTime(); } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerTokenReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerTokenReq.java index dc686f5c1..5034fb01a 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerTokenReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerGetPlayerTokenReq.java @@ -35,15 +35,15 @@ public class HandlerGetPlayerTokenReq extends PacketHandler { // Has character boolean doesPlayerExist = false; - if (account.getPlayerId() > 0) { + if (account.getPlayerUid() > 0) { // Set flag for player existing - doesPlayerExist = DatabaseHelper.checkPlayerExists(account.getPlayerId()); + doesPlayerExist = DatabaseHelper.checkPlayerExists(account.getPlayerUid()); } // Set reserve player id if account doesnt exist if (!doesPlayerExist) { - int id = DatabaseHelper.getNextPlayerId(session.getAccount().getPlayerId()); - if (id != session.getAccount().getPlayerId()) { + int id = DatabaseHelper.getNextPlayerId(session.getAccount().getPlayerUid()); + if (id != session.getAccount().getPlayerUid()) { session.getAccount().setPlayerId(id); session.getAccount().save(); } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerNpcTalkReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerNpcTalkReq.java new file mode 100644 index 000000000..588e1c4e1 --- /dev/null +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerNpcTalkReq.java @@ -0,0 +1,21 @@ +package emu.grasscutter.server.packet.recv; + +import emu.grasscutter.game.inventory.GenshinItem; +import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.NpcTalkReqOuterClass.NpcTalkReq; +import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.server.game.GameSession; +import emu.grasscutter.server.packet.send.PacketNpcTalkRsp; + +@Opcodes(PacketOpcodes.NpcTalkReq) +public class HandlerNpcTalkReq extends PacketHandler { + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + NpcTalkReq req = NpcTalkReq.parseFrom(payload); + + session.send(new PacketNpcTalkRsp(req.getNpcEntityId(), req.getTalkId(), req.getEntityId())); + } + +} diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerLoginReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerLoginReq.java index 183ef7461..05753aec0 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerLoginReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerPlayerLoginReq.java @@ -30,7 +30,7 @@ public class HandlerPlayerLoginReq extends PacketHandler { } // Load character from db - GenshinPlayer player = DatabaseHelper.getPlayerById(session.getAccount().getPlayerId()); + GenshinPlayer player = DatabaseHelper.getPlayerById(session.getAccount().getPlayerUid()); if (player == null) { // Send packets diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneTransToPointReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneTransToPointReq.java new file mode 100644 index 000000000..f01f5980d --- /dev/null +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneTransToPointReq.java @@ -0,0 +1,36 @@ +package emu.grasscutter.server.packet.recv; + +import emu.grasscutter.data.GenshinData; +import emu.grasscutter.data.custom.ScenePointEntry; +import emu.grasscutter.net.packet.Opcodes; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.SceneTransToPointReqOuterClass.SceneTransToPointReq; +import emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp; +import emu.grasscutter.net.packet.PacketHandler; +import emu.grasscutter.server.game.GameSession; +import emu.grasscutter.server.packet.send.PacketSceneTransToPointRsp; +import emu.grasscutter.utils.Position; + +@Opcodes(PacketOpcodes.SceneTransToPointReq) +public class HandlerSceneTransToPointReq extends PacketHandler { + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + SceneTransToPointReq req = SceneTransToPointReq.parseFrom(payload); + + String code = req.getSceneId() + "_" + req.getPointId(); + ScenePointEntry scenePointEntry = GenshinData.getScenePointEntries().get(code); + + if (scenePointEntry != null) { + float x = scenePointEntry.getPointData().getTranPos().getX(); + float y = scenePointEntry.getPointData().getTranPos().getY(); + float z = scenePointEntry.getPointData().getTranPos().getZ(); + + session.getPlayer().getWorld().transferPlayerToScene(session.getPlayer(), req.getSceneId(), new Position(x, y, z)); + session.send(new PacketSceneTransToPointRsp(session.getPlayer(), req.getPointId(), req.getSceneId())); + } else { + session.send(new PacketSceneTransToPointRsp()); + } + } + +} diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetEntityClientDataNotify.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetEntityClientDataNotify.java index accbd253d..d194e1465 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetEntityClientDataNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetEntityClientDataNotify.java @@ -1,7 +1,9 @@ package emu.grasscutter.server.packet.recv; +import emu.grasscutter.net.packet.GenshinPacket; import emu.grasscutter.net.packet.Opcodes; import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.SetEntityClientDataNotifyOuterClass.SetEntityClientDataNotify; import emu.grasscutter.net.packet.PacketHandler; import emu.grasscutter.server.game.GameSession; @@ -10,7 +12,18 @@ public class HandlerSetEntityClientDataNotify extends PacketHandler { @Override public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { - // Auto template + // Skip if there is no one to broadcast it too + if (session.getPlayer().getScene().getPlayerCount() <= 1) { + return; + } + + // Make sure packet is a valid proto before replaying it to the other players + SetEntityClientDataNotify notif = SetEntityClientDataNotify.parseFrom(payload); + + GenshinPacket packet = new GenshinPacket(PacketOpcodes.SetEntityClientDataNotify, true); + packet.setData(notif); + + session.getPlayer().getScene().broadcastPacketToOthers(session.getPlayer(), packet); } } diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerBornDataReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerBornDataReq.java index 5cbbd8d04..72fc709d9 100644 --- a/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerBornDataReq.java +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerSetPlayerBornDataReq.java @@ -43,7 +43,7 @@ public class HandlerSetPlayerBornDataReq extends PacketHandler { try { // Save to db - DatabaseHelper.createPlayer(player, session.getAccount().getPlayerId()); + DatabaseHelper.createPlayer(player, session.getAccount().getPlayerUid()); // Create avatar if (player.getAvatars().getAvatarCount() == 0) { diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketAbilityChangeNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketAbilityChangeNotify.java index a6e1fb452..d8cdfdef8 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketAbilityChangeNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketAbilityChangeNotify.java @@ -8,8 +8,8 @@ import emu.grasscutter.net.proto.AbilityChangeNotifyOuterClass.AbilityChangeNoti public class PacketAbilityChangeNotify extends GenshinPacket { public PacketAbilityChangeNotify(EntityAvatar entity) { - super(PacketOpcodes.AbilityChangeNotify); - + super(PacketOpcodes.AbilityChangeNotify, true); + AbilityChangeNotify proto = AbilityChangeNotify.newBuilder() .setEntityId(entity.getId()) .setAbilityControlBlock(entity.getAbilityControlBlock()) diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketClientAbilityInitFinishNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketClientAbilityInitFinishNotify.java new file mode 100644 index 000000000..dc676c4d1 --- /dev/null +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketClientAbilityInitFinishNotify.java @@ -0,0 +1,29 @@ +package emu.grasscutter.server.packet.send; + +import java.util.List; + +import emu.grasscutter.net.packet.GenshinPacket; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.AbilityInvokeEntryOuterClass.AbilityInvokeEntry; +import emu.grasscutter.net.proto.ClientAbilityInitFinishNotifyOuterClass.ClientAbilityInitFinishNotify; + +public class PacketClientAbilityInitFinishNotify extends GenshinPacket { + + public PacketClientAbilityInitFinishNotify(List entries) { + super(PacketOpcodes.ClientAbilityInitFinishNotify, true); + + int entityId = 0; + + if (entries.size() > 0) { + AbilityInvokeEntry entry = entries.get(0); + entityId = entry.getEntityId(); + } + + ClientAbilityInitFinishNotify proto = ClientAbilityInitFinishNotify.newBuilder() + .setEntityId(entityId) + .addAllInvokes(entries) + .build(); + + this.setData(proto); + } +} diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerFriendListRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerFriendListRsp.java index 9df89af5f..4d22f9603 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerFriendListRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerFriendListRsp.java @@ -23,7 +23,6 @@ public class PacketGetPlayerFriendListRsp extends GenshinPacket { .setWorldLevel(0) .setSignature("") .setLastActiveTime((int) (System.currentTimeMillis() / 1000f)) - .setIsMpModeAvailable(true) .setNameCardId(210001) .setOnlineState(FriendOnlineState.FRIEND_ONLINE) .setParam(1) diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerTokenRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerTokenRsp.java index 2306aa0ae..00f512ea7 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerTokenRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketGetPlayerTokenRsp.java @@ -16,7 +16,7 @@ public class PacketGetPlayerTokenRsp extends GenshinPacket { this.setUseDispatchKey(true); GetPlayerTokenRsp p = GetPlayerTokenRsp.newBuilder() - .setPlayerUid(session.getAccount().getPlayerId()) + .setPlayerUid(session.getAccount().getPlayerUid()) .setAccountToken(session.getAccount().getToken()) .setAccountType(1) .setIsProficientPlayer(doesPlayerExist) // Not sure where this goes diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketNpcTalkRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketNpcTalkRsp.java new file mode 100644 index 000000000..b447a19eb --- /dev/null +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketNpcTalkRsp.java @@ -0,0 +1,19 @@ +package emu.grasscutter.server.packet.send; + +import emu.grasscutter.net.packet.GenshinPacket; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.NpcTalkRspOuterClass.NpcTalkRsp; + +public class PacketNpcTalkRsp extends GenshinPacket { + public PacketNpcTalkRsp(int npcEntityId, int curTalkId, int entityId) { + super(PacketOpcodes.NpcTalkRsp); + + NpcTalkRsp p = NpcTalkRsp.newBuilder() + .setNpcEntityId(npcEntityId) + .setCurTalkId(curTalkId) + .setEntityId(entityId) + .build(); + + this.setData(p); + } +} diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterSceneNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterSceneNotify.java index 69ca9cb5f..d66575273 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterSceneNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerEnterSceneNotify.java @@ -52,13 +52,14 @@ public class PacketPlayerEnterSceneNotify extends GenshinPacket { .setSceneId(newScene) .setPos(newPos.toProto()) .setSceneBeginTime(System.currentTimeMillis()) - .setType(EnterType.EnterSelf) + .setType(type) .setTargetUid(target.getUid()) .setEnterSceneToken(player.getEnterSceneToken()) .setWorldLevel(target.getWorld().getWorldLevel()) .setEnterReason(reason.getValue()) .addSceneTagIdList(102) .addSceneTagIdList(107) + .addSceneTagIdList(109) .addSceneTagIdList(113) .addSceneTagIdList(117) .setUnk1(1) diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerLoginRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerLoginRsp.java index 0d0871ca9..a5e167100 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerLoginRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerLoginRsp.java @@ -1,21 +1,61 @@ package emu.grasscutter.server.packet.send; +import com.google.protobuf.ByteString; import emu.grasscutter.Grasscutter; import emu.grasscutter.net.packet.GenshinPacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.PlayerLoginRspOuterClass.PlayerLoginRsp; +import emu.grasscutter.net.proto.QueryCurrRegionHttpRspOuterClass; import emu.grasscutter.net.proto.RegionInfoOuterClass.RegionInfo; import emu.grasscutter.server.game.GameSession; +import emu.grasscutter.utils.FileUtils; + +import java.io.File; +import java.net.URL; +import java.util.Base64; public class PacketPlayerLoginRsp extends GenshinPacket { + private static QueryCurrRegionHttpRspOuterClass.QueryCurrRegionHttpRsp regionCache; + public PacketPlayerLoginRsp(GameSession session) { super(PacketOpcodes.PlayerLoginRsp, 1); this.setUseDispatchKey(true); - - RegionInfo info = Grasscutter.getDispatchServer().getCurrRegion().getRegionInfo(); - + + RegionInfo info; + + if(Grasscutter.getConfig().RunMode.equalsIgnoreCase("GAME_ONLY")) { + if (regionCache == null) { + try { + File file = new File(Grasscutter.getConfig().DATA_FOLDER + "query_cur_region.txt"); + String query_cur_region = ""; + if (file.exists()) { + query_cur_region = new String(FileUtils.read(file)); + } else { + Grasscutter.getLogger().warn("query_cur_region not found! Using default current region."); + } + + byte[] decodedCurRegion = Base64.getDecoder().decode(query_cur_region); + QueryCurrRegionHttpRspOuterClass.QueryCurrRegionHttpRsp regionQuery = QueryCurrRegionHttpRspOuterClass.QueryCurrRegionHttpRsp.parseFrom(decodedCurRegion); + + RegionInfo serverRegion = regionQuery.getRegionInfo().toBuilder() + .setIp((Grasscutter.getConfig().getGameServerOptions().PublicIp.isEmpty() ? Grasscutter.getConfig().getGameServerOptions().Ip : Grasscutter.getConfig().getGameServerOptions().PublicIp)) + .setPort(Grasscutter.getConfig().getGameServerOptions().Port) + .setSecretKey(ByteString.copyFrom(FileUtils.read(Grasscutter.getConfig().KEY_FOLDER + "dispatchSeed.bin"))) + .build(); + + regionCache = regionQuery.toBuilder().setRegionInfo(serverRegion).build(); + } catch (Exception e) { + Grasscutter.getLogger().error("Error while initializing region cache!", e); + } + } + + info = regionCache.getRegionInfo(); + } else { + info = Grasscutter.getDispatchServer().getCurrRegion().getRegionInfo(); + } + PlayerLoginRsp p = PlayerLoginRsp.newBuilder() .setIsUseAbilityHash(true) // true .setAbilityHashCode(1844674) // 1844674 diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerStoreNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerStoreNotify.java index c21a15351..a3309a5c1 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerStoreNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPlayerStoreNotify.java @@ -19,7 +19,7 @@ public class PacketPlayerStoreNotify extends GenshinPacket { PlayerStoreNotify.Builder p = PlayerStoreNotify.newBuilder() .setStoreType(StoreType.StorePack) - .setWeightLimit(Grasscutter.getConfig().getServerOptions().InventoryLimitAll); + .setWeightLimit(Grasscutter.getConfig().getGameServerOptions().InventoryLimitAll); for (GenshinItem item : player.getInventory()) { Item itemProto = item.toProto(); diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketPullRecentChatRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketPullRecentChatRsp.java index 8048e4b0d..5af6999d5 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketPullRecentChatRsp.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketPullRecentChatRsp.java @@ -1,6 +1,6 @@ package emu.grasscutter.server.packet.send; -import emu.grasscutter.Config.ServerOptions; +import emu.grasscutter.Config.GameServerOptions; import emu.grasscutter.GenshinConstants; import emu.grasscutter.Grasscutter; import emu.grasscutter.game.GenshinPlayer; @@ -14,7 +14,7 @@ public class PacketPullRecentChatRsp extends GenshinPacket { public PacketPullRecentChatRsp(GenshinPlayer player) { super(PacketOpcodes.PullRecentChatRsp); - ServerOptions serverOptions = Grasscutter.getConfig().getServerOptions(); + GameServerOptions serverOptions = Grasscutter.getConfig().getGameServerOptions(); PullRecentChatRsp.Builder proto = PullRecentChatRsp.newBuilder(); if (serverOptions.WelcomeEmotes != null && serverOptions.WelcomeEmotes.length > 0) { @@ -33,7 +33,7 @@ public class PacketPullRecentChatRsp extends GenshinPacket { .setTime((int) (System.currentTimeMillis() / 1000)) .setUid(GenshinConstants.SERVER_CONSOLE_UID) .setToUid(player.getUid()) - .setText(Grasscutter.getConfig().getServerOptions().WelcomeMotd) + .setText(Grasscutter.getConfig().getGameServerOptions().WelcomeMotd) .build(); proto.addChatInfo(welcomeMotd); diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneAreaWeatherNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneAreaWeatherNotify.java index de26dd064..69c40dba0 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneAreaWeatherNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneAreaWeatherNotify.java @@ -12,7 +12,7 @@ public class PacketSceneAreaWeatherNotify extends GenshinPacket { super(PacketOpcodes.SceneAreaWeatherNotify); SceneAreaWeatherNotify proto = SceneAreaWeatherNotify.newBuilder() - .setWeatherAreaId(1) + .setWeatherAreaId(player.getScene().getWeather()) .setClimateType(player.getScene().getClimate().getValue()) .build(); diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketScenePlayerLocationNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketScenePlayerLocationNotify.java index f6fa9b8f0..2e9fb479d 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketScenePlayerLocationNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketScenePlayerLocationNotify.java @@ -1,19 +1,20 @@ package emu.grasscutter.server.packet.send; import emu.grasscutter.game.GenshinPlayer; +import emu.grasscutter.game.GenshinScene; import emu.grasscutter.net.packet.GenshinPacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.ScenePlayerLocationNotifyOuterClass.ScenePlayerLocationNotify; public class PacketScenePlayerLocationNotify extends GenshinPacket { - public PacketScenePlayerLocationNotify(GenshinPlayer player) { + public PacketScenePlayerLocationNotify(GenshinScene scene) { super(PacketOpcodes.ScenePlayerLocationNotify); ScenePlayerLocationNotify.Builder proto = ScenePlayerLocationNotify.newBuilder() - .setSceneId(player.getSceneId()); + .setSceneId(scene.getId()); - for (GenshinPlayer p : player.getWorld().getPlayers()) { + for (GenshinPlayer p : scene.getPlayers()) { proto.addPlayerLocList(p.getPlayerLocationInfo()); } diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneTransToPointRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneTransToPointRsp.java new file mode 100644 index 000000000..4795c5e9f --- /dev/null +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneTransToPointRsp.java @@ -0,0 +1,34 @@ +package emu.grasscutter.server.packet.send; + +import emu.grasscutter.data.GenshinData; +import emu.grasscutter.data.custom.ScenePointEntry; +import emu.grasscutter.game.GenshinPlayer; +import emu.grasscutter.net.packet.GenshinPacket; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.SceneTransToPointRspOuterClass.SceneTransToPointRsp; +import emu.grasscutter.utils.Position; + +public class PacketSceneTransToPointRsp extends GenshinPacket { + + public PacketSceneTransToPointRsp(GenshinPlayer player, int pointId, int sceneId) { + super(PacketOpcodes.SceneTransToPointRsp); + + SceneTransToPointRsp proto = SceneTransToPointRsp.newBuilder() + .setRetcode(0) + .setPointId(pointId) + .setSceneId(sceneId) + .build(); + + this.setData(proto); + } + + public PacketSceneTransToPointRsp() { + super(PacketOpcodes.SceneTransToPointRsp); + + SceneTransToPointRsp proto = SceneTransToPointRsp.newBuilder() + .setRetcode(1) // Internal server error + .build(); + + this.setData(proto); + } +} diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneUnlockInfoNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneUnlockInfoNotify.java index 857f9879c..bd1b30685 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketSceneUnlockInfoNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketSceneUnlockInfoNotify.java @@ -12,8 +12,8 @@ public class PacketSceneUnlockInfoNotify extends GenshinPacket { SceneUnlockInfoNotify proto = SceneUnlockInfoNotify.newBuilder() .addUnlockInfos(SceneUnlockInfo.newBuilder().setSceneId(1)) - .addUnlockInfos(SceneUnlockInfo.newBuilder().setSceneId(3)) - .addUnlockInfos(SceneUnlockInfo.newBuilder().setSceneId(4)) + .addUnlockInfos(SceneUnlockInfo.newBuilder().setSceneId(3).addSceneTagIdList(102).addSceneTagIdList(113).addSceneTagIdList(117)) + .addUnlockInfos(SceneUnlockInfo.newBuilder().setSceneId(4).addSceneTagIdList(106).addSceneTagIdList(109)) .addUnlockInfos(SceneUnlockInfo.newBuilder().setSceneId(5)) .addUnlockInfos(SceneUnlockInfo.newBuilder().setSceneId(6)) .addUnlockInfos(SceneUnlockInfo.newBuilder().setSceneId(7)) diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketStoreWeightLimitNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketStoreWeightLimitNotify.java index b93130388..04668b00e 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketStoreWeightLimitNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketStoreWeightLimitNotify.java @@ -13,11 +13,11 @@ public class PacketStoreWeightLimitNotify extends GenshinPacket { StoreWeightLimitNotify p = StoreWeightLimitNotify.newBuilder() .setStoreType(StoreType.StorePack) - .setWeightLimit(Grasscutter.getConfig().getServerOptions().InventoryLimitAll) - .setWeaponCountLimit(Grasscutter.getConfig().getServerOptions().InventoryLimitWeapon) - .setReliquaryCountLimit(Grasscutter.getConfig().getServerOptions().InventoryLimitRelic) - .setMaterialCountLimit(Grasscutter.getConfig().getServerOptions().InventoryLimitMaterial) - .setFurnitureCountLimit(Grasscutter.getConfig().getServerOptions().InventoryLimitFurniture) + .setWeightLimit(Grasscutter.getConfig().getGameServerOptions().InventoryLimitAll) + .setWeaponCountLimit(Grasscutter.getConfig().getGameServerOptions().InventoryLimitWeapon) + .setReliquaryCountLimit(Grasscutter.getConfig().getGameServerOptions().InventoryLimitRelic) + .setMaterialCountLimit(Grasscutter.getConfig().getGameServerOptions().InventoryLimitMaterial) + .setFurnitureCountLimit(Grasscutter.getConfig().getGameServerOptions().InventoryLimitFurniture) .build(); this.setData(p); diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerLocationNotify.java b/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerLocationNotify.java index cb546f0e7..1bb09f8db 100644 --- a/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerLocationNotify.java +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketWorldPlayerLocationNotify.java @@ -14,7 +14,7 @@ public class PacketWorldPlayerLocationNotify extends GenshinPacket { WorldPlayerLocationNotify.Builder proto = WorldPlayerLocationNotify.newBuilder(); for (GenshinPlayer p : world.getPlayers()) { - proto.addPlayerLocList(p.getPlayerLocationInfo()); + proto.addPlayerLocList(p.getWorldPlayerLocationInfo()); } this.setData(proto); diff --git a/src/main/java/emu/grasscutter/tools/Tools.java b/src/main/java/emu/grasscutter/tools/Tools.java index 2e4a7e153..6f6466773 100644 --- a/src/main/java/emu/grasscutter/tools/Tools.java +++ b/src/main/java/emu/grasscutter/tools/Tools.java @@ -21,6 +21,7 @@ import emu.grasscutter.data.def.AvatarData; import emu.grasscutter.data.def.ItemData; import emu.grasscutter.data.def.MonsterData; import emu.grasscutter.data.def.SceneData; +import emu.grasscutter.utils.Utils; public final class Tools { @@ -29,7 +30,7 @@ public final class Tools { ResourceLoader.loadResources(); Map map; - try (FileReader fileReader = new FileReader(Grasscutter.getConfig().RESOURCE_FOLDER + "TextMapEN.json")) { + try (FileReader fileReader = new FileReader(Utils.toFilePath(Grasscutter.getConfig().RESOURCE_FOLDER + "TextMap/TextMapEN.json"))) { map = Grasscutter.getGsonFactory().fromJson(fileReader, new TypeToken>() {}.getType()); } diff --git a/run.cmd b/start.cmd similarity index 50% rename from run.cmd rename to start.cmd index 36a20d811..8c89f359e 100644 --- a/run.cmd +++ b/start.cmd @@ -4,67 +4,97 @@ @if "%DEBUG%" == "" echo off pushd %~dp0 +set CUR_PATH=%~dp0 title Grasscutter -call :LOG [INFO] Grasscutter +call :LOG [INFO] Welcome to Grasscutter +call :LOG [INFO] To proper exit this console, use [Ctrl + C] and enter N not Y. +call :LOG [INFO] call :LOG [INFO] Initializing... -@rem This will not work if your java or mitmproxy is in a different location, plugin as necessary -@rem this just saves you from changing your PATH -set JAVA_PATH=C:\Program Files\Java\jdk1.8.0_202\ -set MITMPROXY_PATH=%~dp0 -set PROXY_SCRIPT=proxy -@rem TODO: MongoDB integration -set SERVER_PATH=%~dp0 +set CONFIG=start_config + +set JAVA_PATH=DO_NOT_CHECK_PATH +set MITMDUMP_PATH=DO_NOT_CHECK_PATH +set MONGODB_PATH=DO_NOT_CHECK_PATH + +set SERVER_JAR_PATH=%CUR_PATH% +set DATABASE_STORAGE_PATH=%CUR_PATH%resources\Database + +set SERVER_JAR_NAME=grasscutter.jar +set PROXY_SCRIPT_NAME=proxy + +if exist "%CUR_PATH%%CONFIG%.cmd" ( + call "%CUR_PATH%%CONFIG%.cmd" >nul 2>nul +) + +if not "%JAVA_PATH%" == "DO_NOT_CHECK_PATH" ( + if not exist "%JAVA_PATH%java.exe" ( + call :LOG [ERROR] Java not found. + goto :EXIT + ) +) else set JAVA_PATH= +if not exist "%SERVER_PATH%grasscutter.jar" ( + call :LOG [ERROR] Server jar not found. + goto :EXIT +) @rem mitmproxy not found, server only -if not exist "%MITMPROXY_PATH%mitmdump.exe" ( - call :LOG [WARN] mitmproxy not found, server only mode. - goto :SERVER -) +if not "%MITMDUMP_PATH%" == "DO_NOT_CHECK_PATH" ( + if not exist "%MITMDUMP_PATH%mitmdump.exe" ( + call :LOG [WARN] mitmdump not found, server only mode. + goto :SERVER + ) +) else set MITMDUMP_PATH= @rem proxy script not found, server only -if not exist "%PROXY_SCRIPT%.py" ( - if not exist "%PROXY_SCRIPT%.pyc" ( +if not exist "%PROXY_SCRIPT_NAME%.py" ( + if not exist "%PROXY_SCRIPT_NAME%.pyc" ( call :LOG [WARN] Missing proxy script or compiled proxy script, server only mode. goto :SERVER - ) else set PROXY_SCRIPT=%PROXY_SCRIPT%.pyc -) else set PROXY_SCRIPT=%PROXY_SCRIPT%.py + ) else set PROXY_SCRIPT_NAME=%PROXY_SCRIPT_NAME%.pyc +) else set PROXY_SCRIPT_NAME=%PROXY_SCRIPT_NAME%.py :PROXY @rem UAC Administrator privileges >nul 2>&1 reg query "HKU\S-1-5-19" || ( call :LOG [WARN] Currently running with non Administrator privileges, raising... echo set UAC = CreateObject^("Shell.Application"^) > "%temp%\UAC.vbs" - echo UAC.ShellExecute "%~f0", "%1", "", "runas", 1 >> "%temp%\UAC.vbs" + echo UAC.ShellExecute "%~f0","%1","","runas",1 >> "%temp%\UAC.vbs" "%temp%\UAC.vbs" del /f /q "%temp%\UAC.vbs" >nul 2>nul exit /b ) +call :LOG [INFO] Starting proxy daemon... + set PROXY=true + @rem Store original proxy settings for /f "tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable 2^>nul') do set "ORIG_PROXY_ENABLE=%%b" for /f "tokens=2*" %%a in ('reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer 2^>nul') do set "ORIG_PROXY_SERVER=%%b" -call :LOG [INFO] Starting proxy daemon... @rem TODO: External proxy when ORIG_PROXY_ENABLE == 0x1 -start /min "" "%MITMPROXY_PATH%mitmdump.exe" -s %PROXY_SCRIPT% --ssl-insecure +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" +"%temp%\proxy.vbs" +del /f /q "%temp%\proxy.vbs" >nul 2>nul -@rem CA certificate for possible HTTPS scheme +@rem CA certificate for HTTPS scheme call :LOG [INFO] Waiting for CA certificate generation... set CA_CERT_FILE="%USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer" -set /A TIMEOUT_COUNT=0 +set /a TIMEOUT_COUNT=0 :CERT_CA_CHECK if not exist %CA_CERT_FILE% ( - timeout /T 1 >nul 2>nul - set /A TIMEOUT_COUNT+=1 + timeout /t 1 >nul 2>nul + set /a TIMEOUT_COUNT+=1 goto CERT_CA_CHECK ) :EXTRA_TIMEOUT if %TIMEOUT_COUNT% LEQ 2 ( - timeout /T 1 >nul 2>nul - set /A TIMEOUT_COUNT+=1 + timeout /t 1 >nul 2>nul + set /a TIMEOUT_COUNT+=1 goto EXTRA_TIMEOUT ) call :LOG [INFO] Adding CA certificate to store... @@ -75,21 +105,37 @@ reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v Pr reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /d "127.0.0.1:8080" /f >nul 2>nul :SERVER -if not exist "%JAVA_PATH%bin\java.exe" ( - call :LOG [ERROR] Java not found. - goto :EXIT -) -if not exist "%SERVER_PATH%grasscutter.jar" ( - call :LOG [ERROR] Server jar not found. - goto :EXIT -) +if not "%MONGODB_PATH%" == "DO_NOT_CHECK_PATH" ( + if not exist "%MONGODB_PATH%mongod.exe" ( + call :LOG [WARN] MongoDB daemon not found, server only mode. + goto :GAME + ) +) else set MONGODB_PATH= +call :LOG [INFO] Starting MongoDB daemon... +set DATABASE=true + +mkdir "%DATABASE_STORAGE_PATH%" >nul 2>nul + +echo set ws = createobject("wscript.shell") > "%temp%\db.vbs" +echo ws.currentdirectory = "%MONGODB_PATH%" >> "%temp%\db.vbs" +echo ws.run "cmd /c mongod.exe --dbpath "^&chr(34)^&"%DATABASE_STORAGE_PATH%"^&chr(34)^&"",0 >> "%temp%\db.vbs" +"%temp%\db.vbs" +del /f /q "%temp%\db.vbs" >nul 2>nul + +:GAME call :LOG [INFO] Starting server... -"%JAVA_PATH%bin\java.exe" -jar "%SERVER_PATH%grasscutter.jar" +"%JAVA_PATH%java.exe" -jar "%SERVER_PATH%grasscutter.jar" call :LOG [INFO] Server stopped :EXIT +if "%DATABASE%" == "" ( + call :LOG [INFO] MongoDB daemon not started, no need to clean up. +) else ( + call :LOG [INFO] Shutting down MongoDB daemon... + taskkill /t /f /im mongod.exe >nul 2>nul +) if "%PROXY%" == "" ( - call :LOG [INFO] Proxy not started, no need to clean up. + call :LOG [INFO] Proxy daemon not started, no need to clean up. ) else ( call :LOG [INFO] Restoring network settings... @@ -100,7 +146,6 @@ if "%PROXY%" == "" ( taskkill /t /f /im mitmdump.exe >nul 2>nul call :LOG [INFO] Removing CA certificate... - for /F "tokens=2" %%s in ('certutil -dump %CA_CERT_FILE% ^| findstr ^"^sha1^"') do ( set SERIAL=%%s ) diff --git a/start_config.cmd b/start_config.cmd new file mode 100644 index 000000000..575e4d8df --- /dev/null +++ b/start_config.cmd @@ -0,0 +1,25 @@ +@rem +@rem Copyright (C) 2002-2022 MlgmXyysd All Rights Reserved. +@rem + +@echo off +pushd %~dp0 +set CUR_PATH=%~dp0 + +@rem This will not work if your java or mitmproxy is in a different location, plugin as necessary +@rem this just saves you from changing your PATH + +@rem Executable Path +@rem Note: Fill DO_NOT_CHECK_PATH if you need to run it from PATH +@rem without detecting whether the executable file exists +set JAVA_PATH=C:\Program Files\Java\jdk1.8.0_202\bin\ +set MITMDUMP_PATH=%CUR_PATH% +set MONGODB_PATH=%CUR_PATH% + +@rem Utility Path +set SERVER_JAR_PATH=%CUR_PATH% +set DATABASE_STORAGE_PATH=%CUR_PATH%resources\Database + +@rem Utility Name +set SERVER_JAR_NAME=grasscutter.jar +set PROXY_SCRIPT_NAME=proxy \ No newline at end of file