798 Commits

Author SHA1 Message Date
e6895ca628 Merge remote-tracking branch 'origin/unstable' into unstable 2024-11-29 19:50:40 -05:00
5ad5bd3d48 feat(5.2): Update protocol definitions [BROKEN]
this is also the great proto import update !
2024-11-29 19:49:38 -05:00
1894305b94 misc(build.gradle): Bump version to 2.0.0-unstable
woo gc 2.0!
2024-11-29 19:48:31 -05:00
b087e1fb4f Format code [skip actions] 2024-10-03 15:31:53 +00:00
d11e13a005 fix(GameConstants.java): Remove extra period in VERSION 2024-10-03 11:30:43 -04:00
10423dbada fix(ActionServerLuaCall.java): Handle Lua function parameter passing 2024-09-28 20:18:22 -04:00
5b9d386e17 fix(AbilityModifier.java): Always parse param[1-3] as DynamicFloats 2024-09-28 19:51:29 -04:00
5167253136 fix(5.0): Update GameConstants.java with 5.0 changes 2024-09-28 18:48:51 -04:00
3c8d1263e5 fix: Re-add handbook_auth.html
its still used by handbook authenticator; i won't judge anyone if they're still loading the handbook
2024-09-28 18:47:43 -04:00
c663b60c1d misc(README.md): Put quick-start guide in a collapsable block 2024-09-28 18:39:39 -04:00
540c2e9c4b feat(5.0): Update README.md to include game download links
this is also a misc patch to update to java 21
2024-09-28 18:36:03 -04:00
b625d4e8ec misc(build.gradle): Bump version & Java target compatability
this also includes an update to the Dockerfile which bumps the Java version to 21
2024-09-28 18:31:17 -04:00
d5756f2559 feat(5.0): Update KCP library
taken from GC fork, don't want to name here tho
2024-09-28 18:14:29 -04:00
261319f348 misc(README.md): Add credits block
i want to credit ppl. but:
1. i don't want to get people in trouble
2. don't know who wants credit/not
2024-09-28 18:02:13 -04:00
5bdfc8770b misc(InfoCommand.java): Update credits 2024-09-28 17:58:08 -04:00
0999038e33 misc(build.gradle): Remove Ben4J repo publishing & Update the artifact license 2024-09-28 17:45:50 -04:00
70bb5ca5b5 misc: Remove the handbook from the main repository
sorry guys, i just wanted to do something cool...
2024-09-28 17:45:21 -04:00
ab0ec0a0e0 fix(Ability.java): Remove unsafe cast 2024-09-28 17:34:41 -04:00
abb3242e20 fix(GachaSystem.java): Remove use of deprecated code 2024-09-28 17:32:58 -04:00
255d0a041c feat(5.0): Remove field setters which aren't available
these have comments indicating why they were removed/unset
2024-09-28 17:30:01 -04:00
45a3cf0b8b feat(5.0): Update protocol definitions 2024-09-28 17:29:15 -04:00
f9d46ace7f misc(gradle): Update plugin versions 2024-07-06 23:09:12 -04:00
36346f87f9 Update languages [skip actions] 2024-07-07 03:04:15 +00:00
ea84789c47 Merge remote-tracking branch 'origin/unstable' into unstable 2024-07-06 23:04:06 -04:00
85719b9aeb fix(ci): Upgrade GitHub Actions to Java 21 2024-07-06 23:02:44 -04:00
e5b3d65916 fix(lang): Add language key for password crypto failure
this was copilot generated lmfao
2024-07-06 23:01:18 -04:00
93df2d0b0e Format code [skip actions] 2024-07-07 02:59:06 +00:00
e7ed66477f fix(networking): Prevent hanging the network loop if an exception occurs 2024-07-06 22:54:10 -04:00
af70de316e fix(SceneScriptManager.java): Catch Lua groups NPE
this is a weird issue; found it while testing networking stack and it also crashed the network thread
2024-07-06 22:47:37 -04:00
f29189be8f misc: Update package versions
this also moves some packages to a general number set in `gradle.properties`
2024-07-06 22:34:10 -04:00
4ced11d567 fix(auth): Skip further decryption if encrypted password fails to decrypt
this should only occur if the wrong RSA key is used on the client, otherwise the patch probably forgot to set `is_crypto` to false
2024-07-06 22:33:46 -04:00
446e994ff0 fix(handbook): Skip reading handbook from resources if it is disabled 2024-07-06 22:25:18 -04:00
655016c92e fix(Grasscutter.java): Exclude compiled protos package from being scanned by reflections 2024-07-06 22:24:56 -04:00
d0e3720748 feat(networking): Abstract game session networking
includes:
- abstracted form of session handling
- existing implementation using new abstracted system
- general clean-up of GameSession.java
2024-07-06 22:14:26 -04:00
db4542653a misc(gradle): Allow support with Java 21 2024-07-06 19:30:13 -04:00
76fd5b2e9c Update README_ja-JP.md (#2516) 2024-06-05 21:14:11 -04:00
4022267888 Configuration Update - Shown Email (#2509)
* This version will allow the private server owner to show a different email then "@grasscutter.io" if they want.

* Update src/main/java/emu/grasscutter/config/ConfigContainer.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Update src/main/java/emu/grasscutter/game/Account.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Update src/main/java/emu/grasscutter/game/Account.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
2024-05-13 21:58:46 -04:00
f1f5b54939 (fix:docker) Fix uploading to container registry 2024-03-16 23:09:40 -07:00
f871f261e1 Add Docker Support (#2486)
* chore(docker): add build workflow

* chore(docker): update gradle image

* chore(docker): this really shouldnt be running on raspberry pi's right now.

* chore(docker): not sure why we need unzip here

* chore(docker): attempt to add nodejs to allow the handbook to build

* chore(docker): whoops, needs to be done during build

* chore(docker): i dont know if this is going to work

* chore(docker): replace my username with repo org as I am no longer testing this

* chore(docker): version will change in the future, so fix it now.
2024-03-17 01:57:39 -04:00
eeaccf32c4 add some client download link and fix readme (#2475)
* Update README.md

* Update README_zh-CN.md

* Update README_hn-IN.md
2024-03-17 01:14:10 -04:00
6e1913aacb Add documentation on 404 error page. (#2463)
* Update HttpServer.java

* Update HttpServer.java

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
2024-01-18 23:30:03 -05:00
9e17e4aacb Update client link (#2470) 2024-01-18 23:15:13 -05:00
770a793c69 Format code [skip actions] 2023-12-14 05:36:30 +00:00
c4402cc287 Fix some more dungeons (#2449)
* Monds weapon mats domain: Fix time between kill not refreshing
* Inaz husk domain: Fix broken domain challenge
    * `EVENT_ANY_MONSTER_LIVE` is likely sent on tick, not on create. See scene40801_group240801001.lua:
        1. `condition_EVENT_ANY_MONSTER_LIVE_1023` checks for mob 1008 to spawn AND for variable `challenge` to be 1
        2. Mob 1008 spawns during `action_EVENT_SELECT_OPTION_1003`, at `ScriptLib.AddExtraGroupSuite(context, 240801001, 2)`
        3. This spawn triggers `EVENT_ANY_MONSTER_LIVE` for mob 1008 but still fails the condition because `challenge` is still 0.
        4. `challenge` is set to 1 at the end of `action_EVENT_SELECT_OPTION_1003`. By now, `EVENT_ANY_MONSTER_LIVE` for mob 1008 no longer fires, causing the domain challenge to fail to start.
2023-12-14 00:34:50 -05:00
5ebad71e9d Bump to version 1.7.4 2023-11-30 23:41:55 -05:00
564b609028 Update README_ja-JP.md (#2438)
* Update README_ja-JP.md

* fix sentences correctly
2023-11-19 19:34:14 -05:00
cdb0dc560a Format code [skip actions] 2023-11-17 04:58:02 +00:00
d8c3da8fcd Handle mob summon and limbo state (#2432)
Mob summon: Something like Monster_Apparatus_Perpetual can summon helper mobs. Ensure these helpers actually get summoned and, on their defeat, possibly change the summoner's mob state. Like, temporarily enter weak state.
* Take summon tags from BinOutput/Monster/ConfigMonster_*.json and put them in SceneMonsterInfo
* Handle Summon action in ability modifiers from BinOutput/Ability/Temp/MonsterAbilities/ConfigAbility_Monster_*.json
* On summoner's kill, also kill the summoned mobs

Limbo state: Something like Monster_Invoker_Herald_Water should be invulnerable at a certain HP threshold. Like, shouldn't die when creating their elemental shield. Or, Monster_Apparatus_Perpetual's helper mobs shouldn't die before their summoner.
* Look through ConfigAbility (AbilityData in GC) like Invoker_Herald_Water_StateControl. If any AbilityModifier within specifies state Limbo and properties.Actor_HpThresholdRatio, account for this threshold in GameEntity::damage.
* Don't let the entity die while in limbo. They will be killed by other events.
2023-11-16 23:56:37 -05:00
13c40b53a7 Format code [skip actions] 2023-11-10 02:57:50 +00:00
f1c1a84683 fix: NPE related to teapot when player logs in. (#2429)
* fix: NPE related to home when player logs in.

* fix: NPE related to home when player logs in.

* forgot to save player after fixing module id
2023-11-09 21:56:21 -05:00
2bcbd41026 Format code [skip actions] 2023-11-09 02:16:38 +00:00
adf8031684 Fix a typo from "culivation" to "cultivation" in readme EN, zh-CN, zh-TW (#2431)
* fix a singular typo in readme.md

fixed "culivation" to cultivation

* Update README_zh-CN.md

culivation to cultivation

* Update zh-TW to fix "culivation"

Cultivation from culivaton
2023-11-08 21:15:57 -05:00
0bbeaf254b Fix tower mob level and hp scaling (#2430) 2023-11-08 21:15:10 -05:00
1fac319eb2 Format code [skip actions] 2023-11-05 19:58:28 +00:00
d224178a64 Only deduct energy when elemental burst actually fires (#2424) 2023-11-05 14:57:17 -05:00
d461ee2eb3 Format code [skip actions] 2023-11-03 02:02:24 +00:00
24874e7fba Implement abyss defense objective (#2422) 2023-11-02 22:00:05 -04:00
205b79dc02 Merge remote-tracking branch 'origin/development' into development 2023-10-31 22:36:22 -04:00
0e033e3f77 Bump to version 1.7.3 2023-10-31 22:23:45 -04:00
583a41ab2c Format code [skip actions] 2023-11-01 01:54:08 +00:00
cf6fb275be Add events to support scene group substitution (#2413)
* Add events to support scene group substitution

* make event members private with getter/setter

* delete stray unused var
2023-10-31 21:52:01 -04:00
269f7b4fbf Fix typo in start.cmd (#2415)
enviroment -> environment
2023-10-31 19:50:31 -04:00
9b4ce34f4a Format code [skip actions] 2023-10-26 02:29:17 +00:00
f86259a430 Fix some revives; improve dungeon exit flow (#2409) 2023-10-25 22:27:48 -04:00
837e30e04b Format code [skip actions] 2023-10-19 13:19:46 +00:00
f5703e5964 Fix mirror tower stages; fix tower time challenge and star scoring (#2406) 2023-10-19 09:18:12 -04:00
bc8e7c21ce Format code [skip actions] 2023-10-17 05:42:17 +00:00
b7a9d28f02 Fix reset tag without notification (#2405) 2023-10-17 01:41:24 -04:00
770cd62370 Fix daily dungeon flow (#2398)
* Fix dungeon entry, daily changes, replay flow; fix Mond's weapon mats domain unlock

* add note to DungeonEntryToBeExploreNotify
2023-10-17 01:41:04 -04:00
6745d1126e Format code [skip actions] 2023-10-14 16:11:33 +00:00
0803618bf5 Format code [skip actions] 2023-10-14 16:10:31 +00:00
cfc8a4866f Add reset scene tag subcommand (#2403)
* Add reset scene tag subcommand

* Fix Control Flow
2023-10-14 12:10:16 -04:00
fd75ba7b9b Fix triggered Monster Tide spawn; fix Tower dungeon handoff (#2397)
* Abyss: Fix monster tide trigger; fix dungeon handoff

* back out unrelated changes
2023-10-14 12:08:49 -04:00
d32a75e980 Fix setPrevScene bug (#2396) 2023-10-07 00:40:36 -04:00
9a198bd231 Alphabetize and Format ScriptLib.java (#2395)
I deeply apologize to anyone who is trying to find the history of the code from before today.
2023-10-07 00:40:15 -04:00
453dc9717d Format code [skip actions] 2023-10-02 14:58:22 +00:00
582d7af9c4 Send QUEST_COND_STATE_NOT_EQUAL and QUEST_COND_STATE_EQUAL on login (#2394) 2023-10-02 10:56:09 -04:00
cab3bfb5a7 Fix bug in quest cond state not equal (#2393)
* Fix bug in ConditionStateNotEqual.java

* Do the same fix for ConditionStateEqual.java
2023-10-02 03:25:35 -04:00
cf574e99cb Format code [skip actions] 2023-10-01 05:41:41 +00:00
3094facb88 Bump to version 1.7.2 2023-09-30 23:16:35 -04:00
6e309b6fee Merge remote-tracking branch 'origin/development' into development 2023-09-30 23:15:50 -04:00
b5e35f5409 Add legacy documentation on Hide and Seek 2023-09-30 18:10:10 -04:00
a3fd10c3be Fix NullPointerException when refilling an avatar with no skill depot 2023-09-30 18:09:40 -04:00
b6e7d69949 Send QUEST_COND_NONE on every login (#2386)
For players that enabled questing late
2023-09-25 19:30:33 -04:00
5faf39d359 Format code [skip actions] 2023-09-23 17:45:57 +00:00
0dd95450b1 Bare-bones Hangouts implementation (#2384) 2023-09-23 13:44:31 -04:00
0f0e7aca68 use pretty_host in domain filtering (#2382) 2023-09-22 23:33:01 -04:00
5ee4812ac5 fix: login too slow (#2380) 2023-09-20 21:23:08 -04:00
ec2bfffdd1 Format code [skip actions] 2023-09-18 01:03:10 +00:00
7f5059cb8f Format code [skip actions] 2023-09-18 01:03:02 +00:00
43db7eba8f tp to move directly in the same scene (#2375) 2023-09-17 21:01:21 -04:00
ff6a51db30 Update position parameters to support rotation-based offsets (#2374) 2023-09-17 21:00:58 -04:00
047feaf4aa Format code [skip actions] 2023-09-17 02:57:50 +00:00
88315ec712 Format code [skip actions] 2023-09-17 02:57:38 +00:00
fdad4218e7 Fix freeze on startup (#2368)
* DON'T load resources in static init!!!

* Update src/main/java/emu/grasscutter/Grasscutter.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Update src/main/java/emu/grasscutter/tools/Tools.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
2023-09-16 22:55:46 -04:00
5f5e6c38b1 Add rotation to /spawn (#2372) 2023-09-16 22:55:25 -04:00
92bd09eeed Format code [skip actions] 2023-09-16 23:00:20 +00:00
30f7580184 Merge remote-tracking branch 'origin/development' into development 2023-09-16 18:59:02 -04:00
65eaaa96f2 Apply changes from #2310 2023-09-16 18:58:36 -04:00
70a961e167 Format code [skip actions] 2023-09-16 22:44:16 +00:00
dd78addc29 Fix ability modifier serialization 2023-09-16 18:36:16 -04:00
43467ebc85 Factor fight properties into healing calculation 2023-09-16 18:32:01 -04:00
1f15d6219b Format code [skip actions] 2023-09-16 21:40:49 +00:00
fb0c2dbc84 Merge pull request #2341
* enableRandomEncryptSeed

* update config version

* Merge branch 'Grasscutters:development' into random-seed

* make the codes more beautiful

* move KahnsSort to algorithms

* rename variables

* Merge branch 'development' into random-seed
2023-09-16 14:38:39 -07:00
b8f7aea168 Format code [skip actions] 2023-09-16 21:33:36 +00:00
cf8092e8ba Update languages [skip actions] 2023-09-16 21:32:21 +00:00
0e44d18ae9 Better SceneTags (#2361)
* Add scene tag handling

* Move warns to debug

* Move to PlayerProgressManager

* Add success message

* Inline check

* Improve per-scene handling

* Update src/main/java/emu/grasscutter/command/commands/SetSceneTagCommand.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Update src/main/java/emu/grasscutter/command/commands/SetSceneTagCommand.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Fix types

* Small fix

* Update ScriptLib.java

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
2023-09-16 17:31:59 -04:00
5bd8f532c1 i forgot to add ` 2023-09-16 17:23:54 -04:00
ad62b6b11d Format code [skip actions] 2023-09-16 00:53:28 +00:00
c9a43a5e98 Format code [skip actions] 2023-09-16 00:52:37 +00:00
5458d36102 fix: HomeModuleManager isnt ticked unless player changes module (#2365) 2023-09-15 20:51:16 -04:00
c4dbb6851b Implement passJumpDungeon. Make dungeons kick you out to the correct scene (#2366) 2023-09-15 20:50:56 -04:00
2643c6b3b7 Format code [skip actions] 2023-09-15 00:45:41 +00:00
84e1371499 Fixes for alchemy dude's quest part 2 (#2362)
* Make platforms able to reset

platforms apparently are able to run again once reaching the last point. As well, canceling a timer seems to return a 0, not a 1

* Fix Seelies

Added HandlerClientScriptEventNotify (shoutouts to Hartie!) and cleaned up the platform stuff in ScriptLib.

There is a problem with HandlerClientScriptEventNotify where the client seems to only pass 0 into param1 instead of the configId. I coded in a workaround, but someone with greater access to things should check up on what is going on
2023-09-14 20:44:30 -04:00
f955bb1e16 Little update to item giving handling (#2363)
* Little update to HandlerItemGivingReq.java

GIVING_METHOD_GROUP is used in cooking girl's quest

* Send the giving packet at the start of relogs, even if encountered before.

* Make item checking not exact

You can have more items in your inventory than what you are submitting.
2023-09-14 20:44:08 -04:00
2b64814534 fix: home worlds are ticked twice (#2360) 2023-09-14 01:22:29 -04:00
ea5ee075a7 Merge remote-tracking branch 'origin/development' into development 2023-09-13 21:03:44 -04:00
6108a3bb37 Handbook documentation & build flow fixes 2023-09-13 21:03:32 -04:00
98a83b649e Add more precise instructions for the handbook (#2359)
* Add more precise instructions for the handbook

* Reformat Building section
2023-09-13 21:02:20 -04:00
4f62e484ad Update ru-RU.json (#2356)
translation & typo
2023-09-12 11:56:31 -04:00
5fd31aece8 Fix home nulls (#2355)
* Add null checking

* Sanity check for moduleManager
2023-09-12 01:07:17 -04:00
8de281d4da Format code [skip actions] 2023-09-10 23:21:44 +00:00
fbe2b138ee Fixes for alchemy dude's quest (#2352)
* Add drops for gadgets

Gadgets only have drop_id when they are not chests (chest_drop_id). When drop_id is not set (0), handleChestDrop quickly exits

* Implement QUEST_COND_ITEM_GIVING_FINISHED

Took the oppertunity to Rename ContentFinishGivingItem to ItemGiving

* Store accept conditions like fail and finish content are

Took the oppertunity to clean up some old code as well

conditions are stored in QuestManager

* Update src/main/java/emu/grasscutter/game/quest/QuestManager.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Update ConditionItemGivingFinished.java

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
2023-09-10 19:20:28 -04:00
47c96fd964 Regular ScriptLib update! (#2349)
* Regular ScriptLib update!

* Move RefreshGroup down to debug

* Update SetGadgetEnableInteract
2023-09-09 20:49:22 -04:00
04370f1a21 Update CN README to game REL 4.0 (#2350) 2023-09-09 20:48:32 -04:00
7845c54570 Format code [skip actions] 2023-09-09 03:07:29 +00:00
818b638bed Added Hindi Language Support (#2347)
* Added Hindi Language Support 

Please review the code

* Update README_HE.md

* Update README_NL.md

* Update README_es-ES.md

* Update README_fil-PH.md

* Update README_fr-FR.md

* Update README_id-ID.md

* Update README_it-IT.md

* Update README_ja-JP.md

* Update README_ko-KR.md

* Update README_pl-PL.md

* Update README_ru-RU.md

* Update README_vi-VN.md

* Update README_zh-CN.md

* Update README_zh-TW.md
2023-09-08 23:07:18 -04:00
a9402f487f Implement RegionShape.POLYGON and RegionShape.CYLINDER (#2348)
Also took the opportunity to sort them in order and use multiplication instead of pow.
2023-09-08 23:06:14 -04:00
cdcdf924bd Format code [skip actions] 2023-09-08 03:35:28 +00:00
fc42f665a7 feat: implement teapot suite (#2344)
* feat: implement teapot suite

* fix: home animals, check respawn, etc

* fix: NPE and cancel summon events

* fix: forgot to send eventId also
2023-09-07 23:34:03 -04:00
83602f78ae Update readme to 4.0 from 3.7 (#2343) 2023-09-07 23:33:13 -04:00
8db1f597ce Format code [skip actions] 2023-09-02 23:51:35 +00:00
c08ab19d84 Various removals of '&' for Javadoc to be happy 2023-09-02 19:49:38 -04:00
34589d0128 Merge remote-tracking branch 'origin/development' into development 2023-09-02 19:48:39 -04:00
70ee3ed1a6 Remove protocol definitions from Javadoc generation 2023-09-02 19:31:58 -04:00
88d7be86da Format code [skip actions] 2023-09-02 23:06:00 +00:00
d6abb2288d Bump version to v1.7.1 2023-09-02 19:05:34 -04:00
416ef56101 Bump down the plugin API version
nothing major was *removed*, meaning all existing v2 plugins should still work
2023-09-02 19:05:30 -04:00
ed0e89074b Merge remote-tracking branch 'origin/development' into development 2023-09-02 19:04:09 -04:00
1894296ed4 fix: home transfer (#2327)
* fix: home transfer

* Update HomeSceneItem.java
2023-09-02 19:04:02 -04:00
69a223949b Merge remote-tracking branch 'origin/development' into development 2023-09-02 19:02:41 -04:00
f8fb6732de Format code [skip actions] 2023-09-02 15:55:11 +00:00
ed97201473 fix: arrangement of main house is duplicated even if player changes module (#2325)
* fix: arrangement of main house is duplicated even if player change module

* removeIf

* Update src/main/java/emu/grasscutter/game/home/GameHome.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
2023-09-02 11:52:56 -04:00
decf494234 Format code [skip actions] 2023-09-02 05:49:00 +00:00
9c25060c78 Format code [skip actions] 2023-09-02 05:48:12 +00:00
a49f37edb3 feat: finish home avatar talk (#2328) 2023-09-02 01:47:06 -04:00
97138d8c84 feat: implement home animals (#2329) 2023-09-02 01:46:58 -04:00
314bccb7a2 Add command description for debug 2023-09-01 20:50:37 -04:00
c1045103ed Format code [skip actions] 2023-09-02 00:37:43 +00:00
1831d5c81f SerializedName MonsterSpecialName (#2331)
* SerializedName MonsterSpecialName

* uh add space back

* remove space

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
2023-09-01 20:35:54 -04:00
717a358636 Format code [skip actions] 2023-09-02 00:33:12 +00:00
0db69882a3 fix: sync home avatar costume (#2326) 2023-09-01 20:31:55 -04:00
12da46b5ee Re-order troubleshooting info 2023-09-01 20:29:25 -04:00
6fc4859f31 Merge pull request #2313 from Grasscutters/dev-4.0
Upgrade to REL4.0.x
2023-08-31 22:05:36 -07:00
89efa35f83 Disable LOG_MISSING_ABILITY_HANDLERS 2023-09-01 00:52:30 -04:00
e04df0526a Run formatter & update protocol 2023-08-31 23:46:55 -04:00
541433c01b Merge remote-tracking branch 'origin/dev-4.0' into dev-4.0
# Conflicts:
#	src/main/java/emu/grasscutter/game/player/Player.java
#	src/main/java/emu/grasscutter/game/player/TeamManager.java
#	src/main/java/emu/grasscutter/game/world/Scene.java
2023-08-31 21:06:13 -04:00
9295d79bc2 Reflections change & Start HTTP before game server 2023-08-31 20:59:38 -04:00
58b3570f27 De-obfuscate definitions & run formatter 2023-08-31 19:29:31 -04:00
d43e5ca608 Compile scripts to replace require with script content 2023-08-31 01:09:53 -04:00
67c0e82dfb Logging changes (move levels down & add toString for some objects) 2023-08-30 23:28:54 -04:00
aad4529b0e Run formatter & 'protogen' 2023-08-30 19:36:58 -04:00
e8f4949836 feat: add more home mark point (#2323) 2023-08-30 19:32:47 -04:00
1ca451559c Add PlayerNpcTalkEvent 2023-08-29 23:54:34 -04:00
dbc45f36f0 Add PlayerSwitchAvatarEvent 2023-08-29 23:48:51 -04:00
e3f15bca47 Add PlayerLevelStatueEvent & PlayerUseSkillEvent 2023-08-29 23:35:58 -04:00
7049cfdb58 fix: player profile changes are not reflected cuz Java is object-oriented (#2322)
* fix: player profile changes are not reflected.
fix: deob FriendBrief.proto

* fix: tentatively sync profile when log out

* fix: allow offline player

* Update src/main/java/emu/grasscutter/game/friends/PlayerProfile.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Update src/main/java/emu/grasscutter/game/player/Player.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Update src/main/java/emu/grasscutter/game/player/Player.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* fix: server friend

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
2023-08-29 23:23:46 -04:00
8e4e3dd89e fix: redundant packet 'PacketTakeAchievementRewardReq' in login req (#2321) 2023-08-29 21:12:38 -04:00
8563d4b574 feat: support multiplayer mode in teapot (#2317) 2023-08-29 21:12:21 -04:00
48439e7e5d Add PlayerPropertyChangeEvent 2023-08-29 17:25:48 -04:00
667008ecf1 fix: sync team avatar changes (#2320) 2023-08-29 12:20:17 -04:00
b72f81e720 just sync it! (#2319) 2023-08-29 12:18:39 -04:00
666b87636a just sync it! (#2318) 2023-08-29 12:18:07 -04:00
f54432a89a Bug fixes (#2314)
* Match resources names

* Fix loading with no skill

* Stop overriding common command alias

* Fix discord link in version check popup

* Forgot to add rotation fix

* Remove unnecessary set
2023-08-29 12:15:19 -04:00
4f2d3f9b30 Run formatter on wish event 2023-08-28 19:34:30 -04:00
3436e0a3a8 Add PlayerFinishBattlePassMission 2023-08-28 19:34:04 -04:00
ee33fed721 Add PlayerWishEvent 2023-08-28 13:59:30 -04:00
b7855c3487 Run formatter on previous changes 2023-08-28 11:30:04 -04:00
6269f0e168 Add ExecuteCommandEvent 2023-08-28 09:31:11 -04:00
8c0032fc75 Run formatter on new events 2023-08-27 23:36:41 -04:00
0ad8eb443b Add PlayerObtainItemEvent 2023-08-27 23:29:21 -04:00
9c8a29c864 Add PlayerObtainAvatarEvent 2023-08-27 23:27:33 -04:00
76b27df622 Add PlayerLevelItemEvent 2023-08-27 23:26:51 -04:00
314b90e936 Add PlayerLevelAvatarEvent 2023-08-27 23:26:01 -04:00
4bd0fbf657 Add PlayerCompleteAchievementEvent 2023-08-27 23:23:55 -04:00
9bb3ec8916 Change the result of call to a boolean
Returns true if logic execution should continue, false if logic condition should terminate
2023-08-27 23:23:42 -04:00
154ace3d7e Run formatter on code 2023-08-27 23:23:01 -04:00
40887b17fe Add PlayerForgeItemEvent 2023-08-27 23:22:35 -04:00
9b84deaab3 Add PlayerCompleteQuestEvent 2023-08-27 23:22:18 -04:00
bdd3cbbcd9 Add PlayerFinishDungeonEvent 2023-08-27 23:22:02 -04:00
4f34970005 Make ActionSetGlobalValue return true 2023-08-27 19:42:28 -04:00
aa3e23f5f3 Remove log for 'unimplemented' SetWeatherAreaState Lua function 2023-08-27 16:04:21 -04:00
53db5def4e Add property for SetGlobalValue action 2023-08-27 13:37:38 -04:00
bf3e390ce6 Add debug property to log missing ability actions 2023-08-27 13:37:14 -04:00
93460ab0aa Add hasnolocals to resource info 2023-08-27 13:36:55 -04:00
bd59da8853 Broadcast global value changes 2023-08-27 13:36:39 -04:00
01766a0303 Merge remote-tracking branch 'origin/dev-4.0' into dev-4.0 2023-08-27 02:40:09 -04:00
1844cb43f7 Fix Lua require, Fix monster abilities & Fix ServerLuaCall 2023-08-27 02:39:56 -04:00
cf55a58c01 revert GetScenePointRspOuterClass.java (#2312) 2023-08-27 01:25:13 -04:00
92e4f9057a Implement Quaternions (#2311)
* Implement Quaternions

* Update BaseRoute.java

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
2023-08-27 01:25:04 -04:00
49c1daede4 Update language files to account for troubleshoot -> info 2023-08-27 00:44:26 -04:00
82bc2f0733 Add alias troubleshoot to info 2023-08-27 00:03:03 -04:00
f660a7b8a4 Ensure sensitive information isn't shown without permission 2023-08-26 21:14:36 -04:00
621000fd4b tamil. 2023-08-26 21:05:37 -04:00
fc7de04f73 fix forging (again) (#2309) 2023-08-26 21:02:51 -04:00
cc91a2dcfc Implement diving 2023-08-26 20:59:58 -04:00
f656143038 Run the formatter & Generate protocol definitions 2023-08-26 19:51:45 -04:00
edb00adf61 fix: deobf field name 2023-08-26 17:59:30 -04:00
f20ac13914 Merge changes from hamusuke (#2) 2023-08-26 17:59:26 -04:00
396f302eac Merge changes from hamusuke (#1) 2023-08-26 17:57:46 -04:00
7dd63e9816 fix: EntityTeam.java (NPE) 2023-08-26 17:54:57 -04:00
2309b1f469 fix: liney c3 effect 2023-08-26 17:53:40 -04:00
87d58d2a6f feat: ability to register new achievements 2023-08-26 17:53:28 -04:00
7e0a7520c0 FIX skipping handbook generation when file is not found. (#2300) 2023-08-24 20:48:40 -04:00
873d190e46 Make friends by fixing the protos (#2307) 2023-08-24 20:47:58 -04:00
4b167fc938 Fix the error that the parameter regionCache of class PacketPlayerLoginRsp is null in game only mode (#2297) 2023-08-20 14:52:43 -04:00
ec53292e00 Format code [skip actions] 2023-08-20 18:48:59 +00:00
2b0f2f74cb Update RegionHandler.java (#2295)
Who decided to regex it like that???
2023-08-20 14:47:08 -04:00
b8fd2e2378 Update languages [skip actions] 2023-08-20 18:46:59 +00:00
7d13847144 Update it-IT.json (#2296) 2023-08-20 14:46:39 -04:00
f7ad9dfefa Update README.md (#2298)
delete unnecessary brackets.
2023-08-20 14:46:00 -04:00
fd44933ec7 Update packet files for packet ID changes 2023-08-19 15:59:07 -04:00
55083d4672 Update packet IDs to 4.0 2023-08-19 15:58:44 -04:00
ec31289921 Properly add code switches to the region config 2023-08-19 12:42:42 -04:00
81e52c364c Add new default avatar abilities 2023-08-19 12:42:26 -04:00
813970945b Fix BargainRecord 2023-08-18 21:13:10 -04:00
e3738ea68e Add codeSwitch to the custom config 2023-08-18 21:04:49 -04:00
70eb0f2b16 Merge branch 'talking' into dev-4.0 2023-08-15 20:46:38 -04:00
407c1b3a86 Protocol definition fixes 2023-08-14 23:38:07 -04:00
31b9541b66 Add unversioned protocol definitions 2023-08-14 18:57:43 -04:00
ceeaf3748a Add new protocol definitions 2023-08-14 18:57:07 -04:00
1bcb79840c Rename troubleshoot to info to allow for credits placement 2023-08-14 18:55:19 -04:00
8cac8d13f4 Run formatter & bump version 2023-08-14 18:53:23 -04:00
543749bc9f Implement DebugLog ability action 2023-08-13 19:40:59 -04:00
12ac5b32d3 Implement ServerLuaCall 2023-08-13 19:12:39 -04:00
6a421336df Implement time axis 2023-08-13 19:01:08 -04:00
e7410a0be5 Semi-functional require handler implementation 2023-08-13 18:19:42 -04:00
0175e207af Fix errors in chasm 2023-08-13 18:01:41 -04:00
f2b81a70c8 Remove deprecated function 2023-08-13 16:22:41 -04:00
cfccb2d991 Merge remote-tracking branch 'origin/development' into development 2023-08-13 16:20:11 -04:00
e0f8c03e39 Move more logs to debug constants 2023-08-13 15:56:19 -04:00
948dd5df59 Optimize content handlers 2023-08-13 15:52:38 -04:00
597574ddda Attempt to implement bargaining (untested) 2023-08-13 12:28:56 -04:00
40bbfd90e1 Implement group-based item giving & Add content handler for item giving 2023-08-13 00:32:02 -04:00
afc5841596 Add way to toggle certain spam logs 2023-08-12 22:16:41 -04:00
70e6d7f334 Merge branch 'development' into talking 2023-08-12 19:33:25 -04:00
10c1db2fe1 Add command for listing quests 2023-08-12 19:20:34 -04:00
bdc4b5af89 Levelup City Implementation (#2281)
* add statue promo data

* implement levelup city feature

* fix get level city when enter game

* format code

* fix typo, remove some property in the player, add the field cityInfoData to player class
2023-08-11 23:54:19 -04:00
d0dde1c9e2 Fix dungeons with no finish logic in DungeonManager.java (#2288) 2023-08-10 20:06:55 -04:00
bbf0d4dda1 Format code [skip actions] 2023-08-07 22:04:40 +00:00
b9a493d424 fix quest content and condition triggers (#2283)
* Add param3 to EVENT_GADGET_STATE_CHANGE

* Slight cleanup for DungeonManager

* Fix ContentTriggerFire

* Rework and fix talk content and conditions.

* redo item content and conditions, swap out getItemByGuid with getItemById, and make count handling consistent.

* Don't need to check if checkItem is null

* add this. to DungeonManager.java

* add this to Inventory.java

* Update src/main/java/emu/grasscutter/game/quest/QuestManager.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* add spaces to ContentCompleteAnyTalk.java

* Update src/main/java/emu/grasscutter/game/quest/content/ContentCompleteAnyTalk.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
2023-08-07 18:03:13 -04:00
8200607a15 Format code [skip actions] 2023-08-07 04:28:56 +00:00
0b0dcf9b8e Implement QUEST_EXEC_RANDOM_QUEST_VAR (#2284) 2023-08-07 00:27:13 -04:00
58d2650505 Fix swim stamina cost (#2287) 2023-08-07 00:25:59 -04:00
8291e366b9 Bump to version 1.6.3 2023-08-01 00:27:39 -04:00
175e7f5f09 Format code [skip actions] 2023-08-01 04:23:23 +00:00
665263d9ba Fix account list subcommand 2023-07-31 17:26:30 -04:00
08284bc669 Add extra giving method 2023-07-31 16:03:55 -04:00
b82567d9d9 Attempt to implement item giving to NPCs (untested) 2023-07-31 15:42:52 -04:00
a4ad781d61 Format code [skip actions] 2023-07-31 16:54:59 +00:00
465582b8da Handle Dungeons with null config (#2279) 2023-07-31 12:52:42 -04:00
4320bc7d29 Format code [skip actions] 2023-07-29 15:40:10 +00:00
98fbc4e512 Improve Platforms (#2275)
* Improve Platforms

* add this.
2023-07-29 11:38:34 -04:00
f3277dee9f Fix Forging (#2278) 2023-07-29 11:37:32 -04:00
0005fcf96f Format code [skip actions] 2023-07-23 03:19:10 +00:00
f065b2b16f Format code [skip actions] 2023-07-23 03:18:53 +00:00
e9d68936f6 Format code [skip actions] 2023-07-23 03:18:29 +00:00
47971dc931 various small bug fixes (#2270)
* various small bug fixes

* Upgrade warning to error

* A few more state changes to match the others in this pull
2023-07-22 23:17:59 -04:00
fe169398ec Gadgets can be picked up too (#2272)
* Gadgets can be picked up too

* put in a warning
2023-07-22 23:17:39 -04:00
ddc082fc97 Everything triggers regions (#2271)
* Everything triggers regions

* hotfix
2023-07-22 23:17:33 -04:00
0b806e21cf Fix talks that have a quest id of 4 digits or more (#2268) 2023-07-22 23:17:18 -04:00
49ba0e55e8 make xxGroupVariableValueByGroup the same as xxGroupVariableValue (#2266) 2023-07-22 23:17:11 -04:00
ae2ab20b5b add support for 3.8 teapot binout files (scene 2005, 2204) (#2265) 2023-07-22 23:17:02 -04:00
27d495742d Format code [skip actions] 2023-07-15 03:05:16 +00:00
f17339f1b6 Send global value packet after the scene host has finished initializing the scene 2023-07-14 23:03:49 -04:00
f0775f70f3 Send packet after scene load & Directly send back entity ID to clients 2023-07-14 21:22:45 -04:00
fecf83cfa4 Revert AvatarUpgradeRsp 2023-07-14 21:09:57 -04:00
dfbe4022f3 Merge remote-tracking branch 'origin/development' into development 2023-07-14 19:47:56 -04:00
e859d87ae3 Implement SetEntityServerGlobalValueByEntityId 2023-07-14 19:46:30 -04:00
acb3575c77 update zh-TW.json (#2260) 2023-07-14 19:37:54 -04:00
f725d9203d Fix QUEST_CONTENT_LEAVE_SCENE (#2262) 2023-07-14 19:37:29 -04:00
d62394e35e Remove obsolete code in ScriptLib.java (#2263) 2023-07-14 19:37:08 -04:00
a4d5de06d1 Fix starting wrong quest for story quests (#2264) 2023-07-14 19:36:50 -04:00
73acfa1178 Update README_zh-TW (#2261)
* Update README_zh-TW.md

添加繁體版快速開始

* Update README_zh-TW.md
2023-07-12 22:01:20 -04:00
0d71d29932 fix first entering teapot failure (#2259) 2023-07-12 22:00:55 -04:00
d0a4da8a1f Update languages [skip actions] 2023-07-09 06:04:19 +00:00
d332861ed8 add italian support (italian translation fix) (#2249)
* Updated IT Readme

* Update it-IT.json

* Update it-IT.json (2)

* fixed a couple errors while reviewing
2023-07-09 02:03:54 -04:00
47186a47b2 It now can bind on correct addr (#2254)
Now Grasscutter will bind on address specified in config.json (bindAddress), instead of 0.0.0.0
2023-07-08 12:27:12 -04:00
5090b17b80 Update ru-RU.json (#2247)
ty Scaldy for help♥♥♥
2023-07-03 23:32:15 -04:00
5b9508d7a4 Update French translations (#2246) 2023-07-03 23:30:22 -04:00
df7941bc1b Format code [skip actions] 2023-07-03 11:03:03 +00:00
9cac0953fa Add alternate val name (#2245) 2023-07-03 07:01:50 -04:00
7cdb774b1f Merge remote-tracking branch 'origin/development' into development 2023-07-01 01:29:40 -04:00
f40cdfd23d Update protocol definition for AvatarUpgradeRsp 2023-07-01 01:29:30 -04:00
4e71a15479 Move unknown condition handler message to debug 2023-07-01 01:29:14 -04:00
6afa1bf276 Bump to 1.6.2 & Fix handbook generation error 2023-07-01 01:28:35 -04:00
8c2d00fcd3 fix README.md build badge (#2243)
* fix README.md build badge

* fix README_XXX.md build badge
2023-07-01 01:17:03 -04:00
308686d9e7 Format code [skip actions] 2023-06-27 05:51:09 +00:00
83d447cfc2 Update region logic (#2240) 2023-06-27 01:49:24 -04:00
4ec274f5c5 Set event source for group variable changes to the variable name (#2231) 2023-06-25 10:45:37 -04:00
30d093f348 Update ScriptLib.java (#2227) 2023-06-24 00:37:13 -04:00
9fd5f7665c Fix unlogging quests (#2226) 2023-06-23 23:03:14 -04:00
55840bcdb6 Synchronize the Chinese README with the English version (#2224)
* Synchronize the Chinese README with the English version

* Update Chinese README translation

Better formatting and fixing several words that were not translated.
2023-06-22 16:42:35 -04:00
e706cce802 Format code [skip actions] 2023-06-20 20:38:14 +00:00
b58caf0632 Fix Librarian Story Quest (#2218)
* Fix Librarian Story Quest

* People die if they are killed

You want to die people instead of remove them so they play their sweet death animations.

* Nope. I take it back. Scriptlib is the wierd one to think removeEntity removes the entity.

* One must stop editing the code directly.

* Update EntityType.java

* Add warnings per Hartie

* Per Hartie, change getEntityType to EntityType
2023-06-20 16:37:00 -04:00
97b28b13fe Format code [skip actions] 2023-06-17 19:58:14 +00:00
4ebe6fbf63 dungeon drop implementation (#2215)
* dungeon drop implementation

* Update src/main/java/emu/grasscutter/game/dungeons/DungeonManager.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
2023-06-17 15:56:47 -04:00
06d5bf7098 Temporary fix to scene reference 2023-06-17 11:24:46 -04:00
9d94888da3 Fix race condition with worktops (#2216)
* Fix race condition with worktops

* Update ScriptLib.java

* Update ScriptLib.java

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
2023-06-17 11:00:10 -04:00
86036682d7 Format code [skip actions] 2023-06-17 03:00:10 +00:00
762e7ae301 Fix ContentNotFinishPlot 2023-06-16 22:58:49 -04:00
31cef88ef7 Format code [skip actions] 2023-06-16 18:28:59 +00:00
c3339de184 Resume the app token exchanger (#2209) 2023-06-16 14:27:14 -04:00
e382c6d691 Format code [skip actions] 2023-06-16 18:06:43 +00:00
6b3f19e588 fix giveall doesn't give everything (#2210)
* fix giveall doesn't give everything

* avoid unnecessary failure to add items by catching exception earlier

* switch to use grasscutter logger

* use debug()
2023-06-16 14:05:33 -04:00
47172c995f Format code [skip actions] 2023-06-16 18:05:28 +00:00
6da5343df0 Do not unload groups asked for by quests (#2212) 2023-06-16 14:04:58 -04:00
89376d58bf Change method of not ticking empty scenes (#2211) 2023-06-16 14:04:16 -04:00
248af4abfb Update VisionLevelType.java (#2207) 2023-06-13 11:27:24 -04:00
a7f78c7759 Skip invalid plugins (#2206) 2023-06-13 11:24:02 -04:00
baac48c4a0 Format code [skip actions] 2023-06-11 20:26:35 +00:00
6c89998759 Fix KillSelf 2023-06-11 16:24:42 -04:00
3cc5e6b4e8 Disclaimer 2023-06-11 16:15:15 -04:00
0f43e18d70 Fix some affixes not working 2023-06-11 16:14:38 -04:00
1c9f32cbef Fix a bit of un-researched action handling 2023-06-11 16:12:57 -04:00
d933ca6d02 Format code [skip actions] 2023-06-11 03:33:37 +00:00
3d62e72aa0 Format code [skip actions] 2023-06-11 03:32:55 +00:00
15699e562a Fix lock clock (#2201)
* Fix lock clock

* Update src/main/java/emu/grasscutter/game/world/World.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Update src/main/java/emu/grasscutter/server/packet/recv/HandlerClientLockGameTimeNotify.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Update src/main/java/emu/grasscutter/server/packet/recv/HandlerClientLockGameTimeNotify.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
2023-06-10 23:32:23 -04:00
2788206934 Almost fully fix Chasing Shadows (#2202) 2023-06-10 23:31:57 -04:00
9dbeb2172d fix description of command quest and list (#2203)
* fix description of command `quest` and `list`

* Update src/main/java/emu/grasscutter/command/commands/QuestCommand.java

Co-authored-by: Der Chien <b03902015@ntu.edu.tw>

* Update QuestCommand.java

---------

Co-authored-by: Der Chien <b03902015@ntu.edu.tw>
2023-06-10 23:31:39 -04:00
55cb7ab967 Repair README.md 2023-06-10 23:31:12 -04:00
944db42762 Update quick start guide (#2198)
* Update quick start guide

Co-Authored-By: Nazrin <1877986+scooterboo@users.noreply.github.com>

* Update README.md

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Update README.md

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Update README.md

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Update README.md

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Update README.md

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Update README.md

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Update README.md

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

---------

Co-authored-by: Nazrin <1877986+scooterboo@users.noreply.github.com>
Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
2023-06-10 23:30:28 -04:00
1ed89598ff Add option "all" for UnlockMap and change the default behavior for "/prop unlockmap on" (#2196)
* Do not unlock unnecessary scene points during '/prop unlockmap on'

* Format code [skip actions]

* Backup scenePoints since we might modify it

* Format code [skip actions]

* Add 'all' for UnlockMap

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
2023-06-09 13:31:11 -04:00
4093420c90 Format code [skip actions] 2023-06-09 17:29:36 +00:00
a1f75e1537 Format code [skip actions] 2023-06-09 17:29:26 +00:00
e6d32f5599 Make ice dude show up (#2200)
* Make ice dude show up

* replace contains with equals

Might as well fix this while I'm here.
"leave" and "enter" have the same number of letters, so it works.

* empty strings suck

* Update SceneTrigger.java

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
2023-06-09 13:28:28 -04:00
b412a24657 Smarter NPC loading (#2199) 2023-06-09 13:27:34 -04:00
b4b0b8d2a8 Fix cutscene and sound permissions (#2197) 2023-06-07 11:57:59 -04:00
d8d31f3afe Update AvatarUpgradeRspOuterClass.java (#2193) 2023-06-06 16:39:46 -04:00
7fb9913c4f Format code [skip actions] 2023-06-06 03:28:38 +00:00
8472c36490 Implement SET_KILLED_STATE 2023-06-05 23:27:14 -04:00
ddb76a0c2a Format code [skip actions] 2023-06-04 21:57:29 +00:00
c40213affc Action id mapping fix 2023-06-04 17:55:19 -04:00
f389d2fb28 Handle SetRandomOverrideMapValue 2023-06-04 17:53:48 -04:00
b5595c3fab Fix dropType de-serialization
enum edition
2023-06-04 17:53:30 -04:00
ecb6145e54 Revert "Fix dropType de-serialization" 2023-06-04 17:52:12 -04:00
eb17d65330 Revert "Format code [skip actions]"
This reverts commit 22e953b636.
2023-06-04 17:50:55 -04:00
22e953b636 Format code [skip actions] 2023-06-04 19:56:38 +00:00
6080297be9 Fix dropType de-serialization 2023-06-04 15:55:06 -04:00
6d6e6a041d Format code [skip actions] 2023-06-04 05:01:54 +00:00
b09c0d48bf Fix ActionGenerateElemBall 2023-06-04 01:00:27 -04:00
b050337216 Format code [skip actions] 2023-06-04 04:29:25 +00:00
ac3ccf93f3 Little fix 2023-06-04 00:27:15 -04:00
0167709070 Implement GenerateElemBall action 2023-06-04 00:27:01 -04:00
63ccff8755 Shut down the game server when Grasscutter is about to shut down 2023-06-04 00:26:06 -04:00
494cd3b28c Format code [skip actions] 2023-06-03 19:37:54 +00:00
f9dffba27a Merge remote-tracking branch 'origin/development' into development 2023-06-03 15:36:05 -04:00
f85070abdc Make subfield & drop classes final 2023-06-03 15:36:00 -04:00
4de21d4a40 Remove redundant script event calling when changing the time 2023-06-03 15:35:04 -04:00
56f09e87a1 Fix ore dropping and implement subfields 2023-06-03 15:29:45 -04:00
9dae3cbcc7 Added localid missing actions (needs testing) 2023-06-03 15:27:02 -04:00
d18a8c31a6 Add SystemHintType enum 2023-06-03 15:23:27 -04:00
f977679c1c Fix handbook generation being performed when all conditions weren't met 2023-06-03 15:23:05 -04:00
8fc17ede99 Format code [skip actions] 2023-06-03 16:43:21 +00:00
73e181df9b Merge remote-tracking branch 'origin/development' into development 2023-06-03 12:41:51 -04:00
5441094e47 Fix NullPointerException when trying to find gadgets in a group suite 2023-06-03 12:41:20 -04:00
7fc7b5087c Format code [skip actions] 2023-06-03 14:55:55 +00:00
e28575c80f Fix battle in front of glowy stag god (#2188)
* Fix battle in front of glowy stag god

* Don't do a rollback when starting a quest. We're better than that.
2023-06-03 10:54:46 -04:00
853a67d48e Format code [skip actions] 2023-06-03 01:43:44 +00:00
e8bfdc3c01 Send system hint when a player joins/leaves a world in multiplayer 2023-06-02 21:41:47 -04:00
8870675dcd Remove dead entities on scene tick 2023-06-02 21:41:10 -04:00
43fa6efec9 Format code [skip actions] 2023-06-02 18:26:45 +00:00
d9e8810a5c Fix invalid JSON exception when querying gacha records 2023-06-02 14:15:39 -04:00
82189e03ed Add debug command for checking triggers on a group 2023-06-01 21:28:46 -04:00
cef8b53dd6 Fix quest chests not having drop data 2023-06-01 21:28:12 -04:00
43f3494073 Check for an invalid avatar in a team 2023-06-01 20:00:17 -04:00
20f0cda3e0 Fix chasing shadows (mostly) 2023-06-01 19:59:36 -04:00
8692405363 Wait for thread executors to shut down 2023-06-01 18:17:48 -04:00
9dd514a73b Catch exception when unable to write to KCP client 2023-06-01 18:17:15 -04:00
1940b22dc5 Fix statue unlocks, and probably other quests involving talks 2023-06-01 18:13:41 -04:00
bb1729c227 Bump version to 1.6.1 2023-06-01 14:35:01 -04:00
4870871b2c Move rewind data logger call to debug 2023-06-01 14:27:38 -04:00
2c7c8bf4fd Add option for enabling costumes on trial avatars 2023-06-01 14:23:12 -04:00
deaa13c2af Add check for legacy API method calls on plugins 2023-06-01 14:19:05 -04:00
fd40575cb4 Fix issue with time when a player reconnects without a world 2023-06-01 14:18:34 -04:00
3c0e834348 Fix FieldFetch not getting fields from superclasses 2023-06-01 14:18:12 -04:00
27be6c31e6 Fix a typo I left in Player.java (#2180)
ENTER_REGION_ ->LEAVE_REGION_
Took the opportunity to refactor it so that we only calculate the string once.
2023-06-01 12:30:19 -04:00
87269e9ded README.md (#2181)
Remove mention of unstable branch in README.md
2023-06-01 12:29:42 -04:00
46fee38217 Fix ability modifiers NullPointerException 2023-06-01 03:30:00 -04:00
6e5971df62 Fix stamina casting exception 2023-06-01 03:27:48 -04:00
98375deac9 Downgrade development version to 1.6.0 2023-06-01 02:37:01 -04:00
97c70f7877 Fix issues with regions (#2179)
Luckily, SceneRegion and TriggerExcelConfigData both have group numbers, so we can use those to differentiate regions!
2023-06-01 02:04:18 -04:00
9e5b57a043 Merge unstable into development (#2173)
* Remove more scene synchronized

* Fix worktop options not appearing

* Format code [skip actions]

* Fix delay with server tasks

* Format code [skip actions]

* Fully fix fairy clock (#2146)

* Fix scene transition

* fully fix fairy clock

* Re-add call to `Player#updatePlayerGameTime`

* Format code [skip actions]

* Initialize the script loader in `ResourceLoader#loadAll`

* Fix region removal checking

* Format code [skip actions]

* Use Lombok's `EqualsAndHashCode` for comparing scene regions

* Format code [skip actions]

* Move 'invalid gather object' to `trace`

* Add more information to the 'unknown condition handler' message

* Move invalid ability action to trace

* Make `KcpTunnel` public

* Validate the NPC being talked to

* Format code [skip actions]

* NPCs are not spawned server side; change logic to handle it

* Format code [skip actions]

* unload scene when there are no players (#2147)

* unload scene when there are no players

* Update src/main/java/emu/grasscutter/game/world/Scene.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Check if a command should be copied or HTTP should be used

* Lint Code [skip actions]

* Fix character names rendering incorrectly

* Add basic troubleshooting command

* Implement handbook teleporting

also a few formatting changes and sort data by logical sense

* Fix listener `ConcurrentModificationException` issue

* Add color change to `Join the Community!`

* Lint Code [skip actions]

* Make clickable buttons appear clickable

* Remove 'Mechanicus' entities from the list of entities

* Format code [skip actions]

* Fix going back returning a blank screen

* Implement entity spawning

* Add setting level to entity card

* Add support for 'plain text' mode

* Make descriptions of objects scrollable

* Lint Code [skip actions]

* Format code [skip actions]

* Change the way existing hooks work

* Format code [skip actions]

* Upgrade Javalin to 5.5.0 & Fix project warnings

* Upgrade logging libraries

* Fix gacha mappings static file issue

* Add temporary backwards compatability for `ServerHelper`

* Format code [skip actions]

* Remove artifact signatures from VCS

* Fix forge queue data protocol definition

* Run `spotlessApply`

* Format code [skip actions]

* Download data required for building artifacts

* Add call for Facebook logins

* Add the wiki page as a submodule

* Format code [skip actions]

* Update translation (#2150)

* Update translation

* Update translation

* Separate the dispatch and game servers (pt. 1)

gacha is still broken, handbook still needs to be done

* Format code [skip actions]

* Separate the dispatch and game servers (pt. 2)

this commit fixes the gacha page

* Add description for '/troubleshoot'

* Set default avatar talent level to 10

* Separate the dispatch and game servers (pt. 3)

implement handbook across servers!

* Format code [skip actions]

* Update GitHub Actions to use 'download-file' over 'wget'

* Gm handbook lmao (#2149)

* Fix font issue

* Fix avatars

* Fix text overflow in commands

* Fix virtualized lists and items page 😭😭

* magix why 💀

* use hover style in all minicards

* button

* remove console.log

* lint

* Add icons

* magix asked

* Fix overflow padding issue

* Fix achievement text overflow

* remove icons from repo

* Change command icon

* Add the wiki page as a submodule

* total magix moment

* fix text overflow in commands

* Fix discord button

* Make text scale on Minicard

* import icons and font from another source

* Add hover effects to siebar buttons

* move font and readme to submodule repo

* Make data folder a submodule

* import icons and font from data submodule

* Update README.md

* total magix moment

* magix moment v2

* submodule change

* Import `.webp` files

* Resize `HomeButton`

* Fix 'Copy Command' reappearing after changing pages

---------

Co-authored-by: KingRainbow44 <kobedo11@gmail.com>

* Lint Code [skip actions]

* Download data for the build, not for the lint

* format imports

this is really just to see if build handbook works kek

* Implement proper handbook authentication (pt. 1)

* Implement proper handbook authentication (pt. 2)

* Format code [skip actions]

* Add quest data dumping for the handbook

* Change colors to fit _something suitable_

* Format code [skip actions]

* Fix force pushing to branches after linting

* Fix logic of `SetPlayerPropReq`

* Move more group loading to `trace`

* Add handbook IP authentication in hybrid mode

* Fix player level up not displaying on the client properly

* Format code [skip actions]

* Fix game time locking

* Format code [skip actions]

* Update player properties

* Format code [skip actions]

* Move `warn`s for groups to `debug`

* Fix player pausing

* Move more logs to `trace`

* Use `removeItemById` for deleting items via quests

* Clean up logger more

* Pause in-game time when the world is paused

* Format code [skip actions]

* More player property documentation

* Multi-threaded resource loading

* Format code [skip actions]

* Add quest widgets

* Add quests page (basic impl.)

* Add/fix colors

also fix tailwind

* Remove banned packets

client modifications already perform the job of blocking malicious packets from being executed, no point in having this if self-windy is wanted

* Re-add `BeginCameraSceneLookNotify`

* Fix being unable to attack (#2157)

* Add `PlayerOpenChestEvent`

* Add methods to get players from the server

* Add static methods to register an event handler

* Add `PlayerEnterDungeonEvent`

* Remove legacy documentation from `PlayerMoveEvent`

* Add `PlayerChatEvent`

* Add defaults to `Position`

* Clean up `.utils`

* Revert `Multi-threaded resource loading`

* Fix changing target UID when talking to the server

* Lint Code [skip actions]

* Format code [skip actions]

* fix NPC talk triggering main quest in 46101 (#2158)

Make it so that only talks where the param matches the talkId are checked.

* Format code [skip actions]

* Partially fix Chasing Shadows (#2159)

* Partially fix Chasing Shadows

* Go ahead and move it before the return before Magix tells me to.

* Format code [skip actions]

* Bring back period lol (#2160)

* Disable SNI for the HTTPS server

* Add `EntityCreationEvent`

* Add initial startup message

this is so the server appears like its preparing to start

* Format code [skip actions]

* Enable debug mode for plugin loggers if enabled for the primary logger

* Add documentation about `WorldAreaConfigData`

* Make more fields in excels accessible

* Remove deprecated fields from `GetShopRsp`

* Run `spotlessApply` on definitions

* Add `PlayerEnterAreaEvent`

* Optimize event calls

* Fix event invokes

* Format code [skip actions]

* Remove manual autofinish for main quests. (#2162)

* Add world areas to the textmap cache

* Format code [skip actions]

* Don't overdefine variables in extended classes (#2163)

* Add dumper for world areas

* Format code [skip actions]

* instantiate personalLineList (#2165)

* Fix protocol definitions

thank you Nazrin! (+ hiro for raw definitions)

* Fix the background color leaking from the character widget

* Change HTML spacing to 2 spaces

* Implement hiding widgets

* Change scrollbar to a vibrant color

* Add _some_ scaling to the home buttons and its text

* Build the handbook with Gradle

* Fix the 'finer details' with the handbook UI

* Lint Code [skip actions]

* Fix target destination for the Gradle-built handbook

* Implement fetching a player across servers & Add a chainable JsonObject

useful for plugins! might be used in grasscutter eventually

* Fix GitHub actions

* Fix event calling & canceling

* Run `spotlessApply`

* Rename fields (might be wrong)

* Add/update all/more protocol definitions

* Add/update all/more protocol definitions

* Remove outdated packet

* Fix protocol definitions

* Format code [skip actions]

* Implement some lua variables for less console spam (#2172)

* Implement some lua variables for less console spam

* Add GetHostQuestState

This fixes some chapter 3 stuff.

* Format code [skip actions]

* Fix merge import

* Format code [skip actions]

* Fully fix fairy clock for real this time (#2167)

* Fully fix fairy clock For real this time

* Make it so relogging keeps the time lock state.

* Refactor out questLockTime

* Per Hartie, the client packet needs to be changed too

* Update src/main/java/emu/grasscutter/game/world/World.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Update src/main/java/emu/grasscutter/server/packet/recv/HandlerClientLockGameTimeNotify.java

* Remove all code not needed to get clock working

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Implement a proper ability system (#2166)

* Apply fix `21dec2fe`

* Apply fix `89d01d5f`

* Apply fix `d900f154`

this one was already implemented; updated to use call from previous commit

* Ability changing commit

TODO: change info to debug

* Remove use of deprecated methods/fields

* Temp commit v2
(Adding LoseHP and some fixes)

* Oopsie

* Probably fix monster battle

* Fix issue with reflecting into fields

* Fix some things

* Fix ability names for 3.6 resources

* Improve logging

---------

Co-authored-by: StartForKiller <jesussanz2003@gmail.com>

* Format code [skip actions]

* Add system for sending messages between servers

* Format some code

* Remove protocol definitions from Spotless

* Default debug to false; enable with `-debug`

* Implement completely useless global value copying

* HACK: Return the avatar which holds the weapon when the weapon is referred to by ID

* Add properties to `AbilityModifier`

* Change the way HTML is served after authentication

* Use thread executors to speed up the database loading process

* Format code [skip actions]

* Add system for setting handbook address and port

* Lint Code [skip actions]

* Format code [skip actions]

* Fix game-related data not saving

* Format code [skip actions]

* Fix handbook server details

* Lint Code [skip actions]

* Format code [skip actions]

* Use the headers provided by a context to get the IP address

should acknowledge #1975

* Format code [skip actions]

* Move more logs to `trace`

* Format code [skip actions]

* more trace

* Fix something and implement weapon entities

* Format code [skip actions]

* Fix `EntityWeapon`

* Remove deprecated API & Fix resource checking

* Fix unnecessary warning for first-time setup

* Implement handbook request limiting

* Format code [skip actions]

* Fix new avatar weapons being null

* Format code [skip actions]

* Fix issue with 35303 being un-completable & Try to fix fulfilled quest conditions being met

* Load activity config on server startup

* Require plugins to specify an API version and match with the server

* Add default open state ignore list

* Format code [skip actions]

* Quick fix for questing, needs more investigation
This would make the questing work again

* Remove existing hack for 35303

* Fix ignored open states from being set

* Format code [skip actions]

* fix the stupidest bug ive ever seen

* Optimize player kicking on server close

* Format code [skip actions]

* Re-add hack to fix 35303

* Update GitHub actions

* Format code [skip actions]

* Potentially fix issues with regions

* Download additional handbook data

* Revert "Potentially fix issues with regions"

This reverts commit 84e3823695.

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: scooterboo <lewasite@yahoo.com>
Co-authored-by: Tesutarin <105267106+Tesutarin@users.noreply.github.com>
Co-authored-by: Scald <104459145+Arikatsu@users.noreply.github.com>
Co-authored-by: StartForKiller <jesussanz2003@gmail.com>
2023-05-31 23:48:16 -04:00
f46fd372d2 Remove re-open condition from 'protect_files' 2023-05-30 03:18:51 -04:00
7f4fb20773 Fix boss names in boss bar (#2169)
* Boss bar fix

* Update src/main/java/emu/grasscutter/data/excels/MonsterData.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Update src/main/java/emu/grasscutter/data/excels/MonsterData.java

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>

* Update src/main/java/emu/grasscutter/data/excels/MonsterData.java

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
2023-05-27 16:23:52 -04:00
71f6198361 Upgrade to REL3.7 (#2164)
* Remove hardcoded quest data

* Remove deprecated fields

* Try to fix packet

* Apply fix for token exchange

* Upgrade to REL3.7

* Add obfuscated protocol definitions

* Add missing enum (other protos too maybe)

* Re-add field setters and add note on removal
2023-05-27 00:29:02 -04:00
19bf2dfc69 Fix cooking packet definitions
thanks nick!
2023-05-17 23:19:56 -04:00
c4f1208f45 Add support for game version 3.6 (#2110)
* Update to game version `3.6.0` (pt. 1)

not complete!

* Update to game version `3.6.0` (pt. 2)

not complete!

* Update compiled definitions
2023-04-30 22:08:54 -04:00
60e8106b01 use intstream instead of silly list in prop cmd (#2128) 2023-04-24 20:55:08 -04:00
016eae9b44 Update the README (#2126)
* Update the README

1. GNUify to maintain consistency 
2. Update troubleshooting

* Per Magix
2023-04-19 23:08:54 -04:00
8c6b166a42 fix co-op mode avatar animation interrupt (#2124) 2023-04-18 15:19:34 -04:00
abcabc9861 Parse dungeon entry info req from payload instead of player scene (#2122) 2023-04-17 01:08:08 -04:00
b302c2b73b forever engraved (#2120) 2023-04-15 02:35:15 -04:00
d1686bd4db Fix fields (#2102) 2023-04-11 16:55:22 -04:00
3c60f792ca reject clients on version mismatch (#2106) 2023-04-10 20:05:11 -04:00
c905d493af Add co-op lyre support (#2105) 2023-04-10 01:43:26 -04:00
9dbca6dc1b Remove outdated and grammatically incorrect instructions from PR template (#2100) 2023-04-10 00:14:21 -04:00
caf9521013 feat: add ability to buy resin with primogems (#2104)
* feat: add ability to buy resin with primogems

* ResinManager#buy returns RetCode value
2023-04-09 20:20:12 -04:00
7254f55762 Fix switched fields (#2098) 2023-04-05 21:19:04 -04:00
9181d1cbfd fix: mail system (#2096)
* fix: mail

* Simplify the mail handler

---------

Co-authored-by: KingRainbow44 <kobedo11@gmail.com>
2023-04-02 21:32:30 -04:00
27a9ded4bc Update README_vi-VN.md (#2094)
* Fix `#Building` anchor

Fixed `vi-VN`, `ja-JP` & `NL`'s `#Building` anchor

* Update `README_vi-VN.md`

Updated `README_VI-VN.md` for better translation
2023-04-02 20:41:01 -04:00
4a6ff4721c Fix #Building anchor (#2092)
Fixed `vi-VN`, `ja-JP` & `NL`'s `#Building` anchor
2023-03-31 16:23:58 -04:00
516e5975e1 Add support for v3.5.0 (#2090)
* Fix Dvalin battle

See https://github.com/Anime-Game-Servers/Grasscutter-Quests/pull/25.

This is entirely untested and there's a 99% chance it's broken, I'm just submitting it as a draft PR so that I don't forget about its existence.

Co-Authored-By: mjolsic <21289772+mjolsic@users.noreply.github.com>

* Update protos

* 3.4 protos

* Fix

Now builds successfully, don't have the time to check if I should have specified true instead of false for withChildQuests, or if this functions as intended.

* Change from false to true

Per what smileoflove has been told on Discord

* 3.5

* Remove the Dvalin crap from this PR

Git is so confusing

* Update version

* Apply README changes from `origin/development`

* Remove unnecessary debugging information

---------

Co-authored-by: mjolsic <21289772+mjolsic@users.noreply.github.com>
Co-authored-by: KingRainbow44 <kobedo11@gmail.com>
2023-03-31 15:13:32 -04:00
922f7bca51 Move alternate language README.mds to readme/
additionally: fix `id-ID` & `vi-VN`'s `#Building` anchor
2023-03-31 14:43:53 -04:00
yzr
cf4cd80010 Fix delombok package not exists error with proto generated files (#2083)
Fix javadoc & suppress no comments warning
Fix terminal interaction in IDEA
Update lombok onMethod to JDK8 version
Some code reformat
2023-03-31 02:16:32 -04:00
88d8310e7e Add vi-VN readme (#2091)
* Added vi-VN readme

* Added redirect vn readme to all
2023-03-31 02:15:36 -04:00
5f011b477b Update fr-FR.json (#2084) 2023-03-26 20:10:59 -04:00
8d09b8833c Update ru-RU.json (#2081) 2023-03-12 21:10:01 -04:00
fdaa487b2a Add support for the Chinese client (#2076)
* Add CNREL support

* Improve logic

* Maintain spacing

* Remove language keys & switch to debug

* Improve Format
2023-03-12 00:51:21 -05:00
fd60e66182 linux
not gnu/linux smh
2023-03-12 00:49:59 -05:00
3ab3d5bc04 Simply implement achievement system and add achievement command (#2068)
* Implement achievement system

* Update src/main/java/emu/grasscutter/command/commands/AchievementCommand.java

Co-authored-by: Der Chien <b03902015@ntu.edu.tw>

* fix: redundant codes

* fix: redundant codes

* Update language files

---------

Co-authored-by: Der Chien <b03902015@ntu.edu.tw>
2023-02-26 00:14:27 -05:00
51479e2abd fix: incorrect Japanese word order (#2072) 2023-02-26 00:11:26 -05:00
b209d91947 Add home resource gain (#2064) 2023-02-23 23:22:25 -05:00
220c23b960 feat: change game time (#2061)
* feat: change game time

* Update proto names
2023-02-23 23:21:44 -05:00
a078b5ae28 Fix particle generation (#2066) 2023-02-23 23:20:57 -05:00
9a67f93ee8 Update missed files (#2060) 2023-02-20 13:46:32 -05:00
71a1e31d37 update gc 3.4 (#2041)
* update 3.4

* update3.4

* update 3.4

* update 3.4

* Add files via upload

* Delete SetPropCommand.java

* update 3.4 area id

* update version

* exchange cmdid

* exchange cmdid

* exchange cmdid

* my fault

* update AiSyncInfo
2023-02-18 22:18:27 -05:00
39b4aa1387 Fix in-game display text (#2049) 2023-02-15 19:33:32 -05:00
1b2210f5a7 Improved satiation (#2055)
* Natural satiation decreasing
Graphic showing satiation when eating (usually)

* Reworking values to match original

* Little fixes

* Satiation bar matches real values
Revival correctly updates bar

* Greatly simplify handling
Some fixes

* Inline variables
Add TODO for bug

* Satiation works correctly
Finally it all works as intended

* Remove unnecessary packets

* Improve satiation reduction handling
2023-02-15 19:32:59 -05:00
b4b8f1ec38 Fix climb jump stamina (#2056)
* Fix climb jump stamina

* Update StaminaManager.java

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
2023-02-15 19:32:11 -05:00
d1c7ced0ef Fix load order (#2057) 2023-02-15 19:31:33 -05:00
11351d9866 Fixed only the issue about "BOOLEAN" occurring when importing resources. (#2028)
* Only Fix 'Exception in thread 'main' com.google.gson.JsonSyntaxException: java.io.IOException: Invalid DynamicFloat definition - BOOLEAN' problem.

* Update ResourceLoader.java

* Modify code indentation and optimization.

* Update JsonUtils.java

* Update JsonUtils.java

* Update DynamicFloat.java

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
2023-02-15 19:31:09 -05:00
1a50cccb38 Fix goal (#2052) 2023-02-09 17:12:01 +01:00
3b29ba032e Some fix about scene script and quest (#2029)
* [ScriptLib] Query player when not get entity from scene

* Fix NPE when doing quests

* Add QUEST_CONTENT_SKILL trigger

Q353 need it

* Add some missing fields that contain in scene scripts

* Add a lua table serializer implement with jackson

This do not replace the original one,it is useful when debug

* Fix point_array type error

* feat: fix space
2023-02-09 17:10:07 +01:00
ab5b49b7c5 Teapot Implementations & Fixes (#2032)
* Add realm switching
Fix realm unlock items

* Implement exiting teapot

* Implement home level rewards

* Fix small issues

* Fix call issue

* Add 'seen unlock' packets

* Fix Sumeru Main House bricking accounts
This is only for the house, not the full realm

* Fixed realm 5

Main house needs to be placed manually for Sumeru realm (module 5) as the resources for defaults in Sumeru realm are missing. Sumeru main house cannot be exited from the door, issue due to the same missing res.

* Fix Grass main house bricking accounts

* Remove references

* Formatting change (web editor)

* Whitespace & Formatting

* Whitespace

* Make 'seen' status persistent

* Fix misnamed field

* Revert "Fix misnamed field"

This reverts commit 21ef404e14.

* Implement gaining trust (realm exp)

Add gaining trust by crafting
Add gaining trust via `/give`
Show trust in djinn menu

* Interior check for prevScene

* Correct positions & rotations

Return to front of main house when exiting from inside

* Update HandlerBackMyWorldReq.java

---------

Co-authored-by: Magix <27646710+KingRainbow44@users.noreply.github.com>
Co-authored-by: GanyusLeftHorn <1244229+GanyusLeftHorn@users.noreply.github.com>
2023-02-09 17:00:16 +01:00
0fc578a243 Fix Cooking Compound Retrieval (#2039)
* Fix misnamed field

* Fix getter name
2023-02-02 14:48:42 +01:00
70e448d8bc Revert "Add the lombok Gradle plugin & run delombok"
This reverts commit 1f999113
2023-01-15 03:30:53 -05:00
56ac097c21 Bump to version 1.4.6 2023-01-15 03:14:43 -05:00
1f99911305 Add the lombok Gradle plugin & run delombok
`delombok` is ran only when generating JavaDocs due to how `@__` was introduced into the project
2023-01-15 03:13:54 -05:00
8a5a6ab83e Unlock hidden points (#2016) 2023-01-11 00:28:00 +01:00
668461a6f1 Clean-Up Startup Sequence
hey i like it clean ok.. dont judge..
2022-12-30 20:31:27 -05:00
fe80290bed Output the handbook based off the client language (#1993) 2022-12-26 20:09:21 +01:00
92fbaa8670 Update gc to 3.3 (#1981)
* replace the deprecated api

* update proto

* delete music game

* fixed codes

* fix costume switch

* fix mail bug

* Bump version number.

* Re-add max boss chest number

Co-authored-by: GanyusLeftHorn <1244229+GanyusLeftHorn@users.noreply.github.com>
2022-12-23 22:12:02 +01:00
8b83dbf58c Update Korean translation (#1977)
* updated ko-KR.json

Update Korean translation

* Update ko-KR.json
2022-12-11 01:22:34 +10:30
d6fef3252f Formalizing and changing untranslated words (#1973)
Changing non-formal word of "Sebahagian" to "Sebagian", Changing untranslated word, Making stuff slightly more clear
2022-12-10 10:26:46 +10:30
e73984bd41 Update CHS translation (#1965) 2022-12-02 10:25:15 +10:30
553e22ead8 Add more explicit NoSuchFileException message for excels 2022-11-28 21:04:39 +10:30
5878cb6f8d Accidentally left recent banner on test string 2022-11-26 16:50:56 +10:30
100d08ec5d Fix up pity tallies for new BannerTypes
Also fixes Beginner banner using Standard pity.
2022-11-26 02:03:11 +10:30
83b84408a1 Bake banner defaults into BannerType enum, and add every historic banner 2022-11-25 23:25:22 +10:30
da3981089d Add Position JsonAdapter for [x,y,z] format
Also add serializers for existing JsonAdapters
2022-11-25 00:29:26 +10:30
ad502a8568 Finally enforce deprecation of ancient Banners.json fields
Also add costItemId10 column so people know it exists, and removeC6FromPool column because it's a cool setting nobody knows about.
2022-11-24 23:56:13 +10:30
f6c84fdfbf Forgot about a 5star character that was added to the standard pool 2022-11-24 23:17:10 +10:30
1c4d263dd2 Add Data TSJ loading, replace and update Banners 2022-11-24 23:09:55 +10:30
35962542af Fix oversight on EnumTypeAdapterFactory 2022-11-24 01:36:58 +10:30
0b5329514b TSJ and TSV parsing (#1962)
* Deserialization support for tsv files

* Benchmarking

* Apparently moving the setter out of the lambda fixed the setAccessible issue

* Thread it

* Use AllArgsConstructor instead of field reflection

* Clean up AllArgsConstructor TSV deserialization

* Refactor TsvUtils

* Remove AllArgsConstructors from Excels

* Set field accessible

* [WIP] TSJ improvements

* [WIP] More TSV stuff

* [WIP] More TSV stuff

* Working TSV parser (slow)

* Load Excels in TSJ > JSON > TSV priority
2022-11-24 00:18:57 +10:30
46b0c7cf93 Work on French localization (#1958)
* Work on French localization

* Apply suggestions from code review
2022-11-22 20:48:39 +10:30
1e932ce144 added IT redeirect on all ReadME and typo fix (#1954)
* Added it-IT translaton

* added Italian readme

* readme redirect

add "it-IT" redirect on all readme

* added "it-IT" redirect on README.md

* Add files via upload

* added it to jp readme

* fix

* fix whitspasces

(vscode)
2022-11-20 22:45:43 +10:30
b1a9ed0226 Update DeforestationManager.java (#1955)
* Update DeforestationManager.java

* Update src/main/java/emu/grasscutter/game/managers/deforestation/DeforestationManager.java
2022-11-20 18:25:36 +10:30
676ed32a12 Added it-IT translaton (#1946)
* Added it-IT translaton

* added Italian readme
2022-11-14 11:19:35 +10:30
05fe62b49a [FIX] Language es-ES (spanish) (#1941) 2022-11-08 14:54:15 +10:30
b781e560e4 Version 1.4.4-dev [skip actions] 2022-11-05 12:49:35 +00:00
5c4c62c1ed Version 1.4.3
Update languages [skip actions]
Fix whitespace [skip actions]
Refactor Entity data
Clean up excels
Make PlayerBuffManager::removeBuff actually remove buff
Remove LinkedList usage https://twitter.com/joshbloch/status/583813919019573248
Add FIGHT_PROP_CUR_DEFENSE alias to setstats (closes #1929)
Update gradle wrapper (closes #1076)
Add warnings to ancient deprecated Banners.json fields Will probably turn these into runtime errors in 1.5.0, people need to stop sharing configs with dead fields and especially stop making PRs with them.
3.2 First Half Banners (closes #1932)
Reimplement namecard claiming (fixes #1882)
Kill console on IOError
Refactor command kwarg parsing
Update roomSceneId obfuscated names (#1926)
Add the new keys (3.2 Support) (#1923)
Update README_ja-JP.md (#1922)
Fix Mail SendToAll Freeze (#1913)
Remove deprecated constructor call
Debug system (#1894)
[Security][Bugfix] Fix directory traversal exploit (#1907)
Updated spanish translations (#1911)
Don't override en-us gacha strings with vietnamese
Fix gacha history internal server error
Fix CONTIBUTING typo in protect_files.yml
Remove compilation warning on Language.java
Version 1.4.3-dev [skip actions]
2022-11-05 12:49:35 +00:00
e2b59fbd8d Update languages [skip actions] 2022-11-05 12:49:35 +00:00
84bf783243 Fix whitespace [skip actions] 2022-11-05 12:49:35 +00:00
4d8caf5a8c Refactor Entity data 2022-11-05 23:18:33 +10:30
a30f16b0e1 Clean up excels 2022-11-05 23:12:03 +10:30
65915b7666 Make PlayerBuffManager::removeBuff actually remove buff 2022-11-05 17:26:20 +10:30
1ceda2a455 Remove LinkedList usage
https://twitter.com/joshbloch/status/583813919019573248
2022-11-05 17:04:15 +10:30
09f392bb5b Add FIGHT_PROP_CUR_DEFENSE alias to setstats (closes #1929) 2022-11-05 15:36:52 +10:30
944bfb76f3 Update gradle wrapper (closes #1076) 2022-11-05 15:03:00 +10:30
dc7b8d8ca6 Add warnings to ancient deprecated Banners.json fields
Will probably turn these into runtime errors in 1.5.0, people need to stop sharing configs with dead fields and especially stop making PRs with them.
2022-11-05 14:22:17 +10:30
9f00ea3573 3.2 First Half Banners
(closes #1932)
2022-11-05 13:56:27 +10:30
12316b36b1 Reimplement namecard claiming (fixes #1882) 2022-11-04 15:05:51 +10:30
0fb7d50acd Kill console on IOError 2022-11-04 13:55:39 +10:30
c926fe326c Refactor command kwarg parsing 2022-11-04 13:55:39 +10:30
e8930e92e1 Update roomSceneId obfuscated names (#1926) 2022-11-02 18:03:41 +10:30
4ed0b90c27 Add the new keys (3.2 Support) (#1923)
* Add the new keys

* Some improvements to the key loading system & Bump the game version
2022-11-01 23:28:04 +01:00
7bfb35ac39 Update README_ja-JP.md (#1922)
* Translate README.md into Japanese

Update README_ja-JP.md

* Update README_ja-JP.md

Update command link for account creation to take the reader closer to the actual command description.

Co-authored-by: GanyusLeftHorn <1244229+GanyusLeftHorn@users.noreply.github.com>
2022-11-01 03:43:19 +01:00
47911aa16e Fix Mail SendToAll Freeze (#1913)
* Avoid iterating over every offline player

* getAllPlayers by stream

* Use the new method without changing the old signature

* Annotate deprecated `getAllPlayers`
2022-10-30 20:03:30 +10:30
855d3182ab Remove deprecated constructor call 2022-10-30 00:40:00 +10:30
43b7d7a383 Debug system (#1894)
* Add build (compile) script: gradlew jar

* Move server and services log levels to ConfigContainer, ability to enable/disable show packet payload and loop packets

* Add some loop packets to known list
2022-10-29 23:31:28 +10:30
55928d9154 [Security][Bugfix] Fix directory traversal exploit (#1907)
* [Security][Bugfix] Fix directory traversal exploit

1.The first slash will act as root path when resolving local path, so directory traversal is possible
2.Filter the illegal payload to prevent directory traversal
3.This also fix the bug about not loading the files in data folder when querying  `/hk4e/announcement/`

* Fix formatting

* Update src/main/java/emu/grasscutter/server/http/handlers/AnnouncementsHandler.java
2022-10-29 23:19:46 +10:30
6219902e0f Updated spanish translations (#1911) 2022-10-29 23:06:44 +10:30
d7af52f94b Don't override en-us gacha strings with vietnamese 2022-10-29 00:11:44 +10:30
c21d216d8d Fix gacha history internal server error 2022-10-29 00:05:29 +10:30
60657b3b98 Fix CONTIBUTING typo in protect_files.yml 2022-10-28 22:23:13 +10:30
f07ce48b24 Remove compilation warning on Language.java 2022-10-28 22:13:13 +10:30
2dd644f28b Version 1.4.3-dev [skip actions] 2022-10-26 12:31:30 +00:00
229303f934 Version 1.4.2
Update languages [skip actions]
Fix whitespace [skip actions]
Update README and fil-PH (#1901)
Remove references to old repo
Make Player lazyload correct Account (should fix #1900)
Lombokify Grasscutter.java some more
Update ru-RU.json (#1895)
Extend setConstCommand "all" (#1884)
add Quest command alias (#1891)
Added zh-CN translaton for non-translated strings (#1890)
Updated Polish Translation (#1889)
Added "s" alias to SpawnCommand (closes #1840)
fix: unlocking home bgm doesn't work. (#1886)
Fix edge case on FileUtils::getFilenameWithoutPath
Medicine revival&Login white screen (#1883)
Save avatar in forceConstellationLevel (closes #1881)
Fix IllegalStateException when execute toMap (#1879)
Fix StackOverFlow when execute /give all (#1878)
Version 1.4.2-dev [skip actions]
2022-10-26 12:31:30 +00:00
a9148e1b66 Update languages [skip actions] 2022-10-26 12:31:30 +00:00
d99a50b80f Fix whitespace [skip actions] 2022-10-26 12:31:30 +00:00
877f747d01 Update README and fil-PH (#1901)
* made it more  c l e a r e r

* add .

* Update README.md

* Capitalised HTTPS

* update actions to build

* fixed typo

Fixed the bullet point spacing, removed http://mitm.it as the download page don't exist anymore, added `mitmproxy-ca-cert.cer` and save script into the instruction.

* added additional info about mitmproxy

* minor fixes

* Update README_fil-PH

Synced with the README
Removed bad words, insults like saying the user has skill issues
Added some professionally

* grammar fix
2022-10-26 12:15:08 +10:30
18360a6231 Remove references to old repo 2022-10-26 12:08:51 +10:30
a2c4895c16 Make Player lazyload correct Account (should fix #1900) 2022-10-25 18:31:55 +10:30
a5579368bb Lombokify Grasscutter.java some more 2022-10-25 15:49:14 +10:30
ae51f4c046 Update ru-RU.json (#1895) 2022-10-25 10:54:22 +10:30
5b6698f583 Extend setConstCommand "all" (#1884)
* Extend give command "talent"

* Update src/main/java/emu/grasscutter/data/excels/AvatarSkillDepotData.java

Shorten IntStream for getCombatSkills

Co-authored-by: Luke H-W <Birdulon@users.noreply.github.com>

* Fix setSkillLevel to work during avatar construction
Shortening getCombatSkills

* changeSkillLevel now acts as intermediate operation to fetch skillIds

* setSkillLevel changes to allow out of range levels to be normalized

* Update src/main/java/emu/grasscutter/command/commands/GiveCommand.java

Removing recalcStats since it's redundant

Co-authored-by: Luke H-W <Birdulon@users.noreply.github.com>

* Major changes and cleanup:
- AvatarSkillDepotData: removed getCombatSkills since it's unused
- TalentCommand: shortened /talent all using getSkillsAndEnergySkill
- GiveCommand: changed changeSkillLevel to setSkillLevel
- Avatar: delete changeSkillLevel and moved the operation inside setSkillLevel,updated skillId to Integer to catch special cases from GiveCommand

* Small cleanup:
Removed the special case from Avatar to be handled inside of GiveCommand

* Added "all" parameter to SetConst

* Changed all to [all] int SetConstCommand usage

Co-authored-by: Luke H-W <Birdulon@users.noreply.github.com>

Co-authored-by: Luke H-W <Birdulon@users.noreply.github.com>
2022-10-24 14:28:39 +10:30
496cd671da add Quest command alias (#1891) 2022-10-24 12:32:35 +10:30
fd6ed2f15f Added zh-CN translaton for non-translated strings (#1890)
Added zh-CN translation for non-translated strings
2022-10-24 10:34:51 +10:30
ceed05cd15 Updated Polish Translation (#1889) 2022-10-24 10:33:15 +10:30
7d1a7b501b Added "s" alias to SpawnCommand (closes #1840) 2022-10-24 10:32:10 +10:30
8b520b3883 fix: unlocking home bgm doesn't work. (#1886)
* fix: unlocking home bgm doesn't work.

* Update src/main/java/emu/grasscutter/game/home/GameHome.java

Co-authored-by: Luke H-W <Birdulon@users.noreply.github.com>

Co-authored-by: Luke H-W <Birdulon@users.noreply.github.com>
2022-10-23 15:08:17 +10:30
54ad108a14 Fix edge case on FileUtils::getFilenameWithoutPath 2022-10-22 17:15:43 +10:30
ccf182d692 Medicine revival&Login white screen (#1883)
* Update InventorySystem.java

-:[fix] Medicine revival

* Update GameMainQuest.java

-:[fix] Login white screen
2022-10-22 16:51:33 +10:30
c51f7610b2 Save avatar in forceConstellationLevel (closes #1881) 2022-10-22 12:45:27 +10:30
c331a7f288 Fix IllegalStateException when execute toMap (#1879) 2022-10-21 21:49:48 +10:30
be8fbcbc02 Fix StackOverFlow when execute /give all (#1878)
* Fix StackOverFlow when execute /give all

* Use more proper code
2022-10-20 20:22:10 +10:30
c5d30c44eb Version 1.4.2-dev [skip actions] 2022-10-18 14:56:27 +00:00
6146d14dc1 Version 1.4.1
Fix whitespace [skip actions]
Restore ability to run without jar (#1875)
Avoid NPE on CookingCompoundManager init
Extend give command "skill level" & shortening /talent all (#1865)
Remove stale item handling code
Fix gacha avatars (fixes #1870)
Refactor out some EntrySets
send CompoundDataNotify on Login;fix spelling mistakes. (#1869)
Change logging level on item use from info to debug
feat:cooking food ingredient(aka:compound) implementation (#1858)
Remove constellation charge and talent level bonuses from db
Fix ambiguous command regexes
feat: set emoji collection in chat screen (#1864)
feat: set friend enter home option (#1860)
Add a dictionary for Encryption public keys (#1862)
Refactor handbook generation to not use naked textmap getter
Accept resource enums of form "1"
Update ru-RU.json (#1855)
Version 1.4.1-dev [skip actions]
2022-10-18 14:56:27 +00:00
96da4b6117 Fix whitespace [skip actions] 2022-10-18 14:56:26 +00:00
026ef9c51b Restore ability to run without jar (#1875)
* Change JAR_FILE_SYSTEM to allow running from IDE without jar

* Just grab /defaults/data

* Restore FileUtils.getPathsFromResource
2022-10-19 01:26:11 +10:30
577772831c Avoid NPE on CookingCompoundManager init 2022-10-18 19:47:21 +10:30
2b08738043 Extend give command "skill level" & shortening /talent all (#1865)
* Extend give command "talent"

* Update src/main/java/emu/grasscutter/data/excels/AvatarSkillDepotData.java

Shorten IntStream for getCombatSkills

Co-authored-by: Luke H-W <Birdulon@users.noreply.github.com>

* Fix setSkillLevel to work during avatar construction
Shortening getCombatSkills

* changeSkillLevel now acts as intermediate operation to fetch skillIds

* setSkillLevel changes to allow out of range levels to be normalized

* Update src/main/java/emu/grasscutter/command/commands/GiveCommand.java

Removing recalcStats since it's redundant

Co-authored-by: Luke H-W <Birdulon@users.noreply.github.com>

* Major changes and cleanup:
- AvatarSkillDepotData: removed getCombatSkills since it's unused
- TalentCommand: shortened /talent all using getSkillsAndEnergySkill
- GiveCommand: changed changeSkillLevel to setSkillLevel
- Avatar: delete changeSkillLevel and moved the operation inside setSkillLevel,updated skillId to Integer to catch special cases from GiveCommand

* Small cleanup:
Removed the special case from Avatar to be handled inside of GiveCommand

Co-authored-by: Luke H-W <Birdulon@users.noreply.github.com>
2022-10-18 19:45:24 +10:30
b5940da36b Remove stale item handling code 2022-10-18 17:57:49 +10:30
aacf013c06 Fix gacha avatars (fixes #1870) 2022-10-18 15:11:33 +10:30
85f44ebdf3 Refactor out some EntrySets 2022-10-17 20:47:52 +10:30
b5f356ce4f send CompoundDataNotify on Login;fix spelling mistakes. (#1869) 2022-10-17 20:44:06 +10:30
84d02370df Change logging level on item use from info to debug 2022-10-17 19:21:14 +10:30
cf67c44f22 feat:cooking food ingredient(aka:compound) implementation (#1858)
* feat:cooking food ingredient(aka:compound) implementation

Implement food ingredient(compound) feature.Need a thorough test and still has some work to do.

* small bug fix;implement fish processing

* Update src/main/java/emu/grasscutter/server/packet/send/PacketItemAddHintNotify.java

Co-authored-by: Luke H-W <Birdulon@users.noreply.github.com>

* Update Inventory.java

* Update Inventory.java

Co-authored-by: Luke H-W <Birdulon@users.noreply.github.com>
2022-10-17 19:18:05 +10:30
1ecc3f4390 Remove constellation charge and talent level bonuses from db 2022-10-17 16:13:28 +10:30
cbd66a7437 Fix ambiguous command regexes 2022-10-17 13:53:53 +10:30
01e37cce39 feat: set emoji collection in chat screen (#1864) 2022-10-16 22:23:00 +10:30
610a364b9a feat: set friend enter home option (#1860) 2022-10-15 11:58:45 -04:00
a4747abfc9 Add a dictionary for Encryption public keys (#1862) 2022-10-16 00:36:37 +10:30
f3a5bc16a8 Refactor handbook generation to not use naked textmap getter 2022-10-15 23:58:33 +10:30
4a5a7bd6bd Accept resource enums of form "1" 2022-10-15 22:18:54 +10:30
130a01faa4 Update ru-RU.json (#1855) 2022-10-14 03:08:05 +10:30
06fe05bcf7 Version 1.4.1-dev [skip actions] 2022-10-13 13:32:11 +00:00
23f1298d6c Version 1.4.0
Fix whitespace [skip actions]
[BREAKING] Item Usage Overhaul
Updated MAX_FRIENDS (#1852)
Refactor GameData, remove deprecated getGsonFactory - Fix day-of-week dungeons - AvatarSkill max level enforcement from excels - Partial fix to bonus levels (need packet on talent update)
Lombokify and sort GameData
Extend talent command "all" (#1850)
fix: Solar Isotoma Elevator doesn't work in multiplayer mode (#1848)
fix: ConcurrentModificationError by removing gadget (#1849)
Add DynamicFloat class
fix: albedo elevator doesn't work (#1845)
Update GM Handbook with Spincrystal names and Monster strings
feat: unlock homeworld bgm and set homeworld bgm. (#1844)
Flatten language translation keys in-memory
feat: set namecards in profile editing. (#1843)
fix costumes are unable to be unlocked. (#1842)
Fix food decreasing (#1834)
Fix showing ban message box (#1826)
Don't need full Java stacktrace on Lua errors
Move Data, Plugin, Script, Packet access from Strings to Paths (#1839)
Add `shutdown` alias to StopCommand
Update Banners.json (#1813)
[BREAKING] Deobfuscate codex field, slight refactor (#1809)
3.1 Support (#1808)
refactor HandlerWidgetDoBagReq
Update README.md
Fixed a tons of errors to make the drop system to accord with that in the actual game
Allow loading Resources from zip files Move Resources loading from String filenames to Paths Add zip support
Add `-game` and `-dispatch` startup arguments that override the run mode in the config
Use reflection to map database classes and add missing mapped classes to the dispatch datastore
Version 1.3.2-dev [skip actions]
2022-10-13 13:32:11 +00:00
025e5d3c1c Fix whitespace [skip actions] 2022-10-13 13:32:10 +00:00
d1d39db56c [BREAKING] Item Usage Overhaul
-De-hardcode elemental orb values
-De-hardcode exp items
-Change ShopChest format (temporary, drop system overhaul will replace it entirely)
-Food healing actually uses Ability data for real HP amounts
2022-10-14 00:00:40 +10:30
5bb43ac074 Updated MAX_FRIENDS (#1852) 2022-10-13 18:32:58 +10:30
4e75361ad4 Refactor GameData, remove deprecated getGsonFactory
- Fix day-of-week dungeons
- AvatarSkill max level enforcement from excels
- Partial fix to bonus levels (need packet on talent update)
2022-10-13 18:31:34 +10:30
bb342f9114 Lombokify and sort GameData 2022-10-13 14:58:49 +10:30
953272489d Extend talent command "all" (#1850)
* Extend talent command "all":
Added talent option to set all talents (n, e, q) at once
Modified error message to cover edge cases when player entered talent level lower than 1

* Update src/main/java/emu/grasscutter/command/commands/TalentCommand.java

some suggested changes

Co-authored-by: Luke H-W <Birdulon@users.noreply.github.com>
2022-10-13 12:46:59 +10:30
ec3cdc040f fix: Solar Isotoma Elevator doesn't work in multiplayer mode (#1848) 2022-10-12 22:14:25 +10:30
ef55e5515c fix: ConcurrentModificationError by removing gadget (#1849) 2022-10-12 22:07:53 +10:30
558471237a Add DynamicFloat class 2022-10-12 21:58:39 +10:30
bf8ee32382 fix: albedo elevator doesn't work (#1845)
* Packet preparation

* elevator creation

* Make elevator work, scene time, entity removed event.

* Avoid referencing certain character name.
2022-10-12 17:26:45 +10:30
f801fe0305 Update GM Handbook with Spincrystal names and Monster strings 2022-10-12 16:01:22 +10:30
4da4c03ecc feat: unlock homeworld bgm and set homeworld bgm. (#1844)
* will be able to change home bgm.

* feat: unlock homeworld bgm and set homeworld bgm.

* Update src/main/java/emu/grasscutter/game/home/GameHome.java

* Update GameHome.java

* Get default unlocked home bgms from HomeWorldBgmData

* fix: duplicate home items by sending packet
2022-10-11 22:29:43 +10:30
98ac42a6c6 Flatten language translation keys in-memory 2022-10-09 12:21:05 +10:30
a4f10208de feat: set namecards in profile editing. (#1843)
* add: can set name cards in profile editing.

* some changes

* Update src/main/java/emu/grasscutter/game/player/Player.java

* Update src/main/java/emu/grasscutter/server/packet/recv/HandlerGetFriendShowNameCardInfoReq.java

* Update src/main/java/emu/grasscutter/server/packet/recv/HandlerUpdatePlayerShowNameCardListReq.java

* Update src/main/java/emu/grasscutter/server/packet/send/PacketGetFriendShowNameCardInfoRsp.java

* Update src/main/java/emu/grasscutter/server/packet/send/PacketUpdatePlayerShowNameCardListRsp.java

* Update src/main/java/emu/grasscutter/game/player/Player.java
2022-10-09 11:40:10 +10:30
e23536e7ba fix costumes are unable to be unlocked. (#1842)
* fix: costumes are able to be unlocked.

* Update AvatarCostumeData
2022-10-09 11:10:42 +10:30
004a765e5b Fix food decreasing (#1834)
* Update InventorySystem.java

Fix some food didn't reduce after use.

* Update InventorySystem.java
2022-10-08 01:44:29 +10:30
a520bc9416 Fix showing ban message box (#1826)
* fix: getplayertoken ban message popup

* feat: insure no packet handle when banned

* feat: using session state instead of account
2022-10-08 01:37:20 +10:30
0b9cab5ad5 Don't need full Java stacktrace on Lua errors 2022-10-07 23:06:26 +10:30
dd6e1bb8a3 Move Data, Plugin, Script, Packet access from Strings to Paths (#1839)
* Move Data, Plugin, Script, Packet access from Strings to Paths
- No longer dump default Data files to folder on launch
- Allow Scripts to be loaded from Resources zip
- Lay groundwork for Plugins to be loaded from zip
2022-10-07 23:01:08 +10:30
f6ce7e349d Add shutdown alias to StopCommand 2022-10-04 01:33:01 +10:30
960318651c Update Banners.json (#1813)
* Update Banners.json

* Update Banners.json
2022-09-28 21:08:13 +09:30
c2e620bf7c [BREAKING] Deobfuscate codex field, slight refactor (#1809)
* Deobfuscate codex field, slight refactor

* Fix relic sets in codex
2022-09-28 16:28:15 +09:30
5ffc07cf59 3.1 Support (#1808)
* Update 3.0 protos

* Update classes to match protos

* Fix RegionHandler versions

* 3.0 Opcodes

* Fixed Gadget Spawning

Original Commit Message: fixed gadget spawning ty MJDerp
Gitea Author: yh0Nathan

Co-authored-by: yh0Nathan <yhonathancaleb@gmail.com>

* Make PointData compatible with alternative PointData

Original Commit Message: Make PointData compatible with windied scene points.
Gitea Author: GanyusLeftHorn

Co-authored-by: GanyusLeftHorn <1244229+GanyusLeftHorn@users.noreply.github.com>

* Add scene tag for Vanarana.

Original Commit Message: Add scene tag for Vanarana.
Gitea Author: GanyusLeftHorn

Co-authored-by: GanyusLeftHorn <1244229+GanyusLeftHorn@users.noreply.github.com>

* Add Sumeru expeditions.

Original Commit Message: Add Sumeru expeditions.
Gitea Author: GanyusLeftHorn

Co-authored-by: GanyusLeftHorn <1244229+GanyusLeftHorn@users.noreply.github.com>

* Update game version to 3.0.0

* versionFix must be >= 50 not == 50 in RegionHandler

* Add new 3.0 Reliquary and SkillParticleGeneration data

Original Commit Message: Repair 3.0 added Reliquary 3-in-1 on the crafting table. Add skill particle generation info for Tighnari,Collei and Dori
Gitea Author: Roly

* Actually fix RegionHandler

* Remove asset names from json and comments

* Add scene areas for Sumeru desert to /prop um

* Added New MaterialType

* Change version to 3.1.0

* funny welcome message back

* Fix pyramid skill issue.

* Fix pyramid and event scene tags without ugly bruteforce.

* Remove backrooms chat welcome message.

* Incorporate suggestions.

* RoomSceneId and empty list checking.

Co-authored-by: Benj <benjamin7006@gmail.com>
Co-authored-by: yh0Nathan <yhonathancaleb@gmail.com>
Co-authored-by: Kokoboy <anushkumar222001@gmail.com>
Co-authored-by: nitro <31241699+nitrog0d@users.noreply.github.com>
Co-authored-by: Vexeone <vexeone@gmail.com>
2022-09-28 04:53:19 +02:00
4154229722 refactor HandlerWidgetDoBagReq 2022-09-26 18:41:05 +09:30
badda3626f Update README.md 2022-09-24 00:51:10 +09:30
2f2eb1dba0 Fixed a tons of errors to make the drop system to accord with that in the actual game 2022-09-23 22:48:06 +09:30
fbc0219cba Allow loading Resources from zip files
Move Resources loading from String filenames to Paths
Add zip support
2022-09-23 22:25:17 +09:30
a90455a7a4 Add -game and -dispatch startup arguments that override the run mode in the config 2022-09-18 20:52:30 -07:00
0d64e2e810 Use reflection to map database classes and add missing mapped classes to the dispatch datastore 2022-09-18 20:46:28 -07:00
794350aa63 Version 1.3.2-dev [skip actions] 2022-09-16 17:04:45 +00:00
ad64d71165 Version 1.3.1
Fix whitespace [skip actions]
Extend spawn command (#1777)
character and companionship exp gain to party not active character fixes #1787
fixed gadget hp properties and invincibility handling (#1773)
Add support for propperly showing activity shops (#1774)
Improve team respawn (#1752)
Update README.md (the origin) (#1736)
Update banners (closes #1760)
Update zh-CN.json (#1762)
Calculate Banner.previewPrefabPath
Forbid PRs from modifying certain files
Added a directive to fix some minor bugs (#1744)
remove accidentally committed symlink
Version 1.3.1-dev [skip actions]
2022-09-16 17:04:45 +00:00
e9f5d98466 Fix whitespace [skip actions] 2022-09-16 17:04:44 +00:00
08f361954a Extend spawn command (#1777)
* add missing EntityTypes

* small command refactorings and improvements
* move common command patterns and methods to CommandHelpers
* let the spawn command detect the entityType instead of spawning every entity as EntityVehicle
* add extra options for spawning gadgets for better debuging and testing

* More spawn command additions and cleanups+EntityVehicle changes
* Moved remaining patterns from GiveCommand and ClearCommand to CommandHelpers
* Added patterns for hp, maxhp, atk, def and (monster)ai for the spawn command
* Moved intParam parsing via regex to the CommandHelpers
* Read most of EntityVehicle stats from the ConfigGadget instead of hardcoding them

Co-authored-by: hartie95 <mail@hartie95.de>
2022-09-17 02:34:20 +09:30
9671a76af2 character and companionship exp gain to party not active character
fixes #1787
2022-09-17 01:33:48 +09:30
08fdcf6ed4 fixed gadget hp properties and invincibility handling (#1773)
* fixed gadget hp properties and invincibility handling

* Allow killing of hp locked entities, if the damage is higher then the hp

Co-authored-by: hartie95 <mail@hartie95.de>
2022-09-15 11:56:20 +09:30
21ff749dca Add support for propperly showing activity shops (#1774)
* Add support for propperly showing activity shops

* Update src/main/java/emu/grasscutter/data/excels/ActivityShopData.java

Co-authored-by: hartie95 <mail@hartie95.de>
2022-09-14 19:57:16 +09:30
070edd263a Improve team respawn (#1752)
* Pull request made after merging the latest version

* Update src/main/resources/languages/ja-JP.json

* first commit

* TeamRespawn_BigWorld

* Improving scene Loading

* Final commit

* optimize import

* optimize

* Update TeamManager.java

* Update src/main/java/emu/grasscutter/game/player/TeamManager.java
2022-09-12 23:25:10 +09:30
72c16d7ecb Update README.md (the origin) (#1736)
* made it more  c l e a r e r

* add .

* Update README.md

* Capitalised HTTPS

* update actions to build

* fixed typo

Fixed the bullet point spacing, removed http://mitm.it as the download page don't exist anymore, added `mitmproxy-ca-cert.cer` and save script into the instruction.

* added additional info about mitmproxy
2022-09-11 11:19:01 -04:00
767e598bea Update banners (closes #1760) 2022-09-11 21:05:16 +09:30
57bb747118 Update zh-CN.json (#1762)
* Update zh-CN.json

Translate Chinese briefly.

* bring into correspondence with

Same indentation
2022-09-09 22:32:38 +09:30
d3bf5b585f Calculate Banner.previewPrefabPath 2022-09-08 22:36:43 +09:30
a9ca80e490 Forbid PRs from modifying certain files 2022-09-07 15:38:27 +09:30
210e9e9732 Added a directive to fix some minor bugs (#1744)
* Pull request made after merging the latest version

* Update src/main/resources/languages/ja-JP.json
2022-09-05 23:53:40 +09:30
2ed4506074 remove accidentally committed symlink 2022-09-03 22:15:23 +09:30
6cf83b30ee Version 1.3.1-dev [skip actions] 2022-09-03 03:36:52 +00:00
155501058f Version 1.3.0
Update languages [skip actions]
Fix whitespace [skip actions]
Add version increments to lint branch
Plugin Manager localisation
Update ru-RU.json
fix serenitea pot main building
Add command targeting by account username
Fix elementless Traveler depotValue
[BREAKING] dummy commit for Express -> Javalin
Update contributing guidelines
Move the remaining `HttpUtils` function over to `Router`
Clean up http server content types
Replace express with javalin in logger
Update HttpServer & AuthenticationSystem to use Javalin
Remove ``java-express``. Add javalin as dependency
Custom Teams (#1731)
Console output player command (#1722)
Clean up adding extra embryo logic in Avatar::recalcStats
Clean up OpenStateData onLoad logic
Update default Banners.json (#1719)
fix serenitea pot (#1726)
fix: avatar energy transform in proudskill
Update README.md Sequel (#1717)
Add permission clear and list commands (#1715)
Fix offline account deletion (fixes #1716)
maybe drop my dev domain and use `grasscutter.io`
Fix up some japanese references
add dendro resonance
Update README_NL.md
Update readme interlinks
Jp support (#1712)
Update translation (#1711)
Merge pull request #1710 from pfyy/development
fix dungeon
Dutch language updates For README (#1709)
Fix weird conditional in `EquipAffixData`
partial fix of dungeon
Update `AvatarCostumeData` naming
Fix `ReliquarySetData` naming
Update README_zh-CN.md
Show accessAddress in bold yellow on startup This should make it easier to help people troubleshoot networked setups. Consider telling people to try connecting to the address with a web browser on the client's machine.
Update SetPropCommand strings, send cmd usage on target fail
refactor some itemdepot lookups for later
Fix account deletion
Fix HelpCommand missing aliases
Prevent material type from being null
Move vehicle fightprop hacks
Consolidate random point offsets
De-hardcode ChestBatchUse
Remove asset names from json and comments
Actually fix RegionHandler
Add new 3.0 Reliquary and SkillParticleGeneration data
versionFix must be >= 50 not == 50 in RegionHandler
Update game version to 3.0.0
Add Sumeru expeditions.
Add scene tag for Vanarana.
Make PointData compatible with alternative PointData
Fixed Gadget Spawning
3.0 Opcodes
Fix RegionHandler versions
Update classes to match protos
Update 3.0 protos
Fix QuestEncryptionKeys Path (#1696)
Update README.md (#1695)
More literate README_ru-RU.md
Avoid potential NPE on WL0 (#1693)
Make lint workflows ignore generated folder But run them on linter and workflow changes
Clean up some Position usage to avoid unneccessary unpacks
Fix healing skills being able to heal dead characters
Fix null pointer in `Avatar` if skill level map didnt already contain skill id
Delete quests from the player if there are errors loading them from the db
update zh-CN.json (#1684)
Update ru-RU.json
Rename lint_commit's job, don't fail on no changes
Fix lint commit reference
Allow adding constellations to playerless avatars Fixes #1682
Fix whitespace [skip actions]
Don't lint src/generated
Make TalentCommand show off new Translate function
Improve translate function Make commands pass ints and floats instead of manually casting them to string first
Hide resin from map when disabled
Replace protos with generated protos
small quest fixes (#1677)
Blossom Implement (#1606)
Merge pull request #1680 from 4Benj/development
Remove uncompiled protos from compiled jar
Remove crazy high AEXP drops from default chest rewards
Fix talentcommand message key
Refactor avatar skilldepot and constellation/talent changing Ensures Traveler retains talent levels and constellations on inactive elements when switching elements. Relevant for any other skillDepot-changing activities like Windtrace too, though keeping those in the db might not be as useful.
Add README_fil-PH.md (#1675)
Avoid allocations on Map::putIfAbsent usage Map::computeIfAbsent only runs the passed constructors when it needs to
Add iterable payItems methods Shame they could never be fully generic, but oh well
Change unlocked scenes from lists to sets
Handbooks: use some sorted maps
Stop vendoring fastutil
Lombokify some more getters
Remove erroneous references to excel skilldata instead of avatar skilldata Refactor team resonances and correct login behaviour and less-than-full-party behaviour
Add README_ko-KR.md (#1673)
Don't use UIDs as initial capacity for chat history
ChatSystem nitpick
Fix chat welcome messages and some slight refactoring.
Fix deprecated chat references
update zh-CN.json (#1662)
Refactoring (#1660)
chore: typo fix
Bump config version.
Update ConfigContainer.java (#1646)
make fishhook_tp configurable
Refactor Json helper functions to JsonUtils
Funnel all gson calls into helper functions
Remove beta message
Fix TalentCommand for Traveler
fix:command player said to server won't be shown at chat history (#1643)
Update install_without_dependencies.sh
Fixed install_without_dependencies.sh script
Handle Unlocking of Waypoints and Statues (#1608)
Stop language linter from fighting the main linter on \n
Fix an edge case that breaks embryos if resources are loaded early
Introduce a new arguments parser (#1629)
Fix Claiming BP Reward Chests (#1634)
Make missing languages not throw warnings
Unify gacha mappings generation
Remove vestigial references to gacha_mappings
Remove language hack from handbook generation
Generate handbooks on every launch, fix html docs
Refactor handbook generation, remove singular handbook
Cache used strings from TextMaps
Load in all the textmaps!
Implement working* burst/ultimate invincibility
Added Indonesian README
Added install_without_dependencies.sh file
Add invoke-level invulnerability for bursts.
Invoke `AbilityManager#onSkillStart` and `AbilityManager#onSkillEnd`
Add a method to be invoked on skill perform and end
Update README_pl-PL.md
Update README_ru-RU.md
Update README_es-ES.md
Update README_fr-FR.md
Update README_zh-TW.md
Update README_zh-CN.md
Update README.md
fix typo
Added Indonesian language
Added install_without_dependencies.sh file
Improve some documentation and JSON (#1618)
Add `EntityDamageEvent` and implementations
Add more events
Update HandlerSceneTransToPointReq.java
Update src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneTransToPointReq.java
Update src/main/java/emu/grasscutter/game/managers/mapmark/MapMarksManager.java
Update src/main/java/emu/grasscutter/server/packet/recv/HandlerTryEnterHomeReq.java
Polish README and setConst translation (#1614)
Update ru-RU.json
Create ko-KR.json
Add `PlayerUseFoodEvent` and implementations
Move `PlayerTeleportEvent` occurrences into `World`
Merge branch 'development' into more-events
Clean-up the energy manager
Explicitly declare the charset of a `FileReader` in `ConfigContainer`
Update zh-CN.json
Changed charset of FileReader in ConfigContainer from default to utf-8.
Add files via upload
Auto language lint
Add explicit encoding on manage_languages.py for windows users
Add lock function to SetStatsCommand
Improve message formatting to clients Replaces tab indents with an extra linebreak. Also adds / to the start of command usage. Neither of these changes affect messages to the server console log.
Update zh-CN.json
Update zh-CN.json
Merge pull request #1586 from Birdulon/development
Suppress stacktrace on missing questkeys file
Change loading quest keys from `info` to `debug`.
Update zh-CN.json
Fix an NPE in `EntityGadget` when `draft_id` isn't set
SceneScriptManager fix nullPointer error
Move `QuestEncryptionKeys` to `resources/`
Traditional Chinese | Translation Patches
fix nullPointer error
small nullpointer fix in EntityGadget, in case meta gadget is not set
Update ru-RU.json
Add spanish translation for constellation commands
Merge pull request #1553 from akatatsu27/questing
token fix
Merge branch 'development' into questing
Update ru-RU.json
[Bug] New avatars always created with C0 constellation Fixes #1552
2.7+ prerendered cutscene support
two small activity/event fixes * fixed GetAcitivityInfoReq proto * added draft to gadget Scene gatget, to let the client know the propper minigame for some entities
Set Constellation Command (#1565)
Update French translation
Fix remaining traces of `Player#getPos`
Attempt to fix the `teleport` command.
Add `PlayerTeamDeathEvent` and implementations
Add `EntityDeathEvent` and implementations
Add a `Location` class (Scene + Position)
Remove deprecated class
Merge branch 'development' into more-events
call deregisterRegion appropriately
Merge branch 'development' into questing
Read Open States from Excels (#1557)
and misc bug fixes
Major questing improvements
Merge branch 'development' into more-events
Translated new changes in languages files to Spanish
Fix taking battle pass rewards
Add `unlockall` command to unlock all openstates
Fix battle pass manager saving with 0 id
Set `setChooseAvatarGuid` properly
Implement food buffs
Use sorted containers for commands & aliases
Change commands to use new usage message method.
Refactor Command usage and description strings
Updated Russian localization (#1543)
Refactor excel datas (Mainly item data)
Add `kcpInterval` to the config
Rename `hasSentAvatarDataNotify()` to `hasSentLoginPackets()`
Fix host team size not changing when a player joins their world for the first time
Lower kcp interval to 20
Bump project version
Add `PlayerTeleportEvent`
Update to support `PlayerMoveEvent`
Remove `Cancellable` from `PlayerMoveEvent`
Implement `PlayerMoveEvent`
2022-09-03 03:36:52 +00:00
3b1b57b76f Update languages [skip actions] 2022-09-03 03:36:52 +00:00
6e5d986687 Fix whitespace [skip actions] 2022-09-03 03:36:51 +00:00
005a0bce96 Add version increments to lint branch 2022-09-03 13:06:18 +09:30
49aed23f3d Plugin Manager localisation
* Confugure Plugin Manager to use localised strings
* Add localisation strings for plugin manager
2022-09-02 20:27:05 -07:00
a7317f2f9a Update ru-RU.json 2022-09-02 20:26:56 -07:00
f93d998ff0 fix serenitea pot main building 2022-09-02 12:13:02 -07:00
735b48edca Add command targeting by account username 2022-09-02 22:20:42 +09:30
735f765320 Fix elementless Traveler depotValue 2022-09-02 21:57:02 +09:30
36585840d3 [BREAKING] dummy commit for Express -> Javalin 2022-09-02 19:38:32 +09:30
59290bbdfd Update contributing guidelines 2022-09-02 02:22:39 -04:00
4eaedae0b7 Move the remaining HttpUtils function over to Router 2022-09-01 13:20:42 -07:00
fee34c515d Clean up http server content types 2022-09-01 13:20:42 -07:00
a1c31d1779 Replace express with javalin in logger 2022-09-01 13:20:42 -07:00
b5bed6ceef Update HttpServer & AuthenticationSystem to use Javalin 2022-09-01 13:20:42 -07:00
bf9606222e Remove `java-express`. Add javalin as dependency 2022-09-01 13:20:42 -07:00
712d17631f Custom Teams (#1731)
* Add support for creating and deleting custom teams.

* Add support for creating and deleting custom teams.

* Move some logic to TeamInfo::toProto
2022-08-31 17:21:47 -07:00
4f015c1077 Console output player command (#1722)
* Console output player command

* Update CommandMap.java

* Add the Output_player_command option to the config

* Proper formatting for logging commands

* Log account usernames, not player nicknames

Co-authored-by: Melledy <52122272+Melledy@users.noreply.github.com>
2022-08-31 03:40:11 -07:00
bab6e6845e Clean up adding extra embryo logic in Avatar::recalcStats 2022-08-31 03:39:41 -07:00
45c08c5826 Clean up OpenStateData onLoad logic 2022-08-31 03:38:37 -07:00
4a675cc81d Update default Banners.json (#1719)
* Change default banners.json

* Weapon banner

* Remove banner comments with names from anime game

Co-authored-by: Melledy <52122272+Melledy@users.noreply.github.com>
2022-08-31 02:32:49 -07:00
96caa7db17 fix serenitea pot (#1726)
* partial fix of serenitea pot

* fix serenitea pot
2022-08-31 02:13:48 -07:00
7dd0c89927 fix: avatar energy transform in proudskill 2022-08-31 02:13:23 -07:00
4ad419ccc8 Update README.md Sequel (#1717)
* made it more  c l e a r e r

* add .

* Update README.md

* Capitalised HTTPS

* update actions to build
2022-08-27 21:54:38 +09:30
32289e2d80 Add permission clear and list commands (#1715)
* Add permission clear and list commands

* Add Account clear permission
2022-08-27 21:16:27 +09:30
656cb79b06 Fix offline account deletion (fixes #1716) 2022-08-27 21:11:18 +09:30
1a801192da maybe drop my dev domain and use grasscutter.io 2022-08-26 11:11:19 -04:00
6ee6e5c2cc Fix up some japanese references 2022-08-26 23:00:34 +09:30
7ececc3d42 add dendro resonance 2022-08-26 22:35:58 +09:30
87bcbb187b Update README_NL.md 2022-08-26 21:46:42 +09:30
41171a7ea7 Update readme interlinks 2022-08-26 18:15:51 +09:30
9768fc845a Jp support (#1712)
Original commits:
* Add files via upload

* Update README_jp-JP.md

* Update README_jp-JP.md

* Update README_jp-JP.md

* Update README_jp-JP.md

* Add files via upload

* Update and rename README_jp-JP.md to README_ja-JP.md

* Update README.md

* Update README_HE.md

* Apply suggestions from code review
2022-08-26 15:28:10 +09:30
36920cff6e Update translation (#1711)
* Update translation

* Update README_zh-CN.md
2022-08-26 14:22:29 +09:30
35ddc40796 Merge pull request #1710 from pfyy/development
fix dungeon
2022-08-25 19:25:50 -07:00
c96a1907da fix dungeon 2022-08-26 09:57:52 +08:00
eb42cc9c9e Dutch language updates For README (#1709)
* Create README-NL.md

* Update README.md

* Rename README-NL.md to README_NL.md

* Update README.md

* Create CODE_OF_CONDUCT_NL.md

* Update CODE_OF_CONDUCT_NL.md

* Delete CODE_OF_CONDUCT_NL.md

* Update README_NL.md

* Update README_NL.md

* Update README_NL.md

* Update README_NL.md
2022-08-25 15:21:20 -07:00
79323a05e3 Fix weird conditional in EquipAffixData 2022-08-25 12:03:26 -07:00
1c3a6fc837 partial fix of dungeon 2022-08-25 11:52:14 -07:00
a25c681274 Update AvatarCostumeData naming 2022-08-25 11:47:22 -07:00
0c906aa4ce Fix ReliquarySetData naming 2022-08-25 11:44:01 -07:00
1b31a0190c Update README_zh-CN.md 2022-08-25 11:36:58 -07:00
6d65b71512 Show accessAddress in bold yellow on startup
This should make it easier to help people troubleshoot networked setups.
Consider telling people to try connecting to the address with a web browser on the client's machine.
2022-08-25 21:37:49 +09:30
f5c8959688 Update SetPropCommand strings, send cmd usage on target fail 2022-08-25 15:15:17 +09:30
40eeba9d90 refactor some itemdepot lookups for later 2022-08-25 14:45:57 +09:30
5565a13df8 Fix account deletion 2022-08-25 10:52:10 +09:30
dd10dcc09b Fix HelpCommand missing aliases 2022-08-25 10:31:15 +09:30
466488ca7a Prevent material type from being null 2022-08-24 17:07:46 -07:00
fbf3dbbf77 Move vehicle fightprop hacks 2022-08-25 00:23:00 +09:30
9970aeb94d Consolidate random point offsets 2022-08-25 00:22:43 +09:30
6098b51e4f De-hardcode ChestBatchUse 2022-08-24 11:47:40 +09:30
1767833ebe Remove asset names from json and comments 2022-08-24 11:34:26 +09:30
6949711e09 Actually fix RegionHandler 2022-08-24 11:34:26 +09:30
ce1f9b2e6a Add new 3.0 Reliquary and SkillParticleGeneration data
Original Commit Message: Repair 3.0 added Reliquary 3-in-1 on the crafting table. Add skill particle generation info for Tighnari,Collei and Dori
Gitea Author: Roly
2022-08-24 11:34:26 +09:30
cc50baf26a versionFix must be >= 50 not == 50 in RegionHandler 2022-08-24 11:34:26 +09:30
a18a15bdfc Update game version to 3.0.0 2022-08-24 11:34:26 +09:30
6f7e240482 Add Sumeru expeditions.
Original Commit Message: Add Sumeru expeditions.
Gitea Author: GanyusLeftHorn

Co-authored-by: GanyusLeftHorn <1244229+GanyusLeftHorn@users.noreply.github.com>
2022-08-24 11:34:26 +09:30
6aa013d7d8 Add scene tag for Vanarana.
Original Commit Message: Add scene tag for Vanarana.
Gitea Author: GanyusLeftHorn

Co-authored-by: GanyusLeftHorn <1244229+GanyusLeftHorn@users.noreply.github.com>
2022-08-24 11:34:26 +09:30
d8816911a6 Make PointData compatible with alternative PointData
Original Commit Message: Make PointData compatible with windied scene points.
Gitea Author: GanyusLeftHorn

Co-authored-by: GanyusLeftHorn <1244229+GanyusLeftHorn@users.noreply.github.com>
2022-08-24 11:34:26 +09:30
cb97ac8250 Fixed Gadget Spawning
Original Commit Message: fixed gadget spawning ty MJDerp
Gitea Author: yh0Nathan

Co-authored-by: yh0Nathan <yhonathancaleb@gmail.com>
2022-08-24 11:34:26 +09:30
da06982d5d 3.0 Opcodes 2022-08-24 11:34:26 +09:30
e8e3fcbc9c Fix RegionHandler versions 2022-08-24 11:34:26 +09:30
c096d255fd Update classes to match protos 2022-08-24 11:34:26 +09:30
d575d1ccea Update 3.0 protos 2022-08-24 11:34:26 +09:30
5db73d2849 Fix QuestEncryptionKeys Path (#1696)
* Fix QuestEncryptionKeys Path

* Load resources QuestEncryptionKeys
2022-08-23 23:29:52 +09:30
1dd84d69b3 Update README.md (#1695)
* a lot

fixed action embed, embed to mitm & fiddler, small fixes and clarifications

* no more confusion

fixed the hosts file embed

* Revert Java SE

* Minor fix
2022-08-23 20:10:11 +09:30
b23c07a102 More literate README_ru-RU.md
Add note about Discord Community ("On English")
And somewhere changed the spelling
2022-08-23 17:26:10 +09:30
5aaa1bda2a Avoid potential NPE on WL0 (#1693) 2022-08-23 17:24:17 +09:30
6e35625f1a Make lint workflows ignore generated folder
But run them on linter and workflow changes
2022-08-23 10:33:32 +09:30
36b71d0198 Clean up some Position usage to avoid unneccessary unpacks 2022-08-22 17:08:34 +09:30
dbf2b91d03 Fix healing skills being able to heal dead characters 2022-08-21 22:35:05 -07:00
513924af7c Fix null pointer in Avatar if skill level map didnt already contain skill id 2022-08-21 22:20:54 -07:00
1e649cd804 Delete quests from the player if there are errors loading them from the db 2022-08-21 22:19:34 -07:00
c53697da82 update zh-CN.json (#1684)
* update

* update
2022-08-22 11:05:34 +09:30
20692cc4f8 Update ru-RU.json 2022-08-22 09:53:50 +09:30
30b20c8664 Rename lint_commit's job, don't fail on no changes 2022-08-22 01:58:55 +09:30
e38c6251f6 Fix lint commit reference 2022-08-22 01:49:50 +09:30
d9f85ba2a7 Allow adding constellations to playerless avatars
Fixes #1682
2022-08-22 01:35:11 +09:30
c517b8a2c9 Fix whitespace [skip actions] 2022-08-21 11:33:54 +00:00
a746d11b6f Don't lint src/generated 2022-08-21 21:02:44 +09:30
3fca950050 Make TalentCommand show off new Translate function 2022-08-21 20:53:37 +09:30
955004343f Improve translate function
Make commands pass ints and floats instead of manually casting them to string first
2022-08-21 20:53:37 +09:30
4b03770ec1 Hide resin from map when disabled 2022-08-21 19:38:38 +09:30
a436ae9fe1 Replace protos with generated protos
Protos can still be auto compiled from the `./proto/` folder.
2022-08-21 00:37:36 -07:00
77f2bcf5bf small quest fixes (#1677)
* small quest fixes

* uncomment hack
2022-08-21 00:08:37 -07:00
abd1e7569e Blossom Implement (#1606)
* Blossom!

* rename

* delete SpawnBlossomEntry.java

* use MAP

* use List

* use LIST

* use List

* useCondensedResin

* useCondensedResin

* fix build

* enhance

* fix bug

* REMOVE BOSS

* fix condensed resin

* fix condensed resin

* use POSITIVE_INFINITY

* use RewardPreviewData

* fix build

* fix resources

* add BLOSSOM_MONSTER_FIGHTING_VOLUME

* edit monster score

* edit monster score

* fix bug

* fix bug

* improve logic

* fix monsters level

* Deleted comment blocks

* nitpick

* Fix compilation problems

* nitpick

* Refactor + nitpick

* Clean up overall diff to develop

* Clean up other usage of condensed resin

* Clean up overall diff to develop

* Lombokify Scene.java

* Missed an odd getter name

* Unhardcode reward previews

* EDIT NAME

* remove leyline 1

* remove leyline 2

* Update BlossomManager.java

Co-authored-by: AnimeGitB <AnimeGitB@bigblueball.in>
2022-08-20 23:19:59 -07:00
957296fa2d Merge pull request #1680 from 4Benj/development
Remove uncompiled protos from compiled jar
2022-08-20 20:45:22 -07:00
825517c2ec Remove uncompiled protos from compiled jar 2022-08-21 11:39:21 +08:00
b3a7cde76c Remove crazy high AEXP drops from default chest rewards 2022-08-20 14:06:28 +09:30
48d31e45ed Fix talentcommand message key 2022-08-19 16:52:02 +09:30
fb1bacb0f8 Refactor avatar skilldepot and constellation/talent changing
Ensures Traveler retains talent levels and constellations on inactive elements when switching elements.
Relevant for any other skillDepot-changing activities like Windtrace too, though keeping those in the db might not be as useful.

Refactor avatar talent upgrade and access
Refactor skillExtraCharges
2022-08-19 16:43:57 +09:30
J
78b7fb70ac Add README_fil-PH.md (#1675)
* Add README_fil-PH.md

* Add README_fil-PH.md

* Update README_fil-PH.md

Co-authored-by: J <jcatrdev@gmail.com>
2022-08-19 15:37:02 +09:30
7d523efd41 Avoid allocations on Map::putIfAbsent usage
Map::computeIfAbsent only runs the passed constructors when it needs to
2022-08-19 12:47:50 +09:30
0cb75aeb5f Add iterable payItems methods
Shame they could never be fully generic, but oh well
2022-08-18 23:02:26 +09:30
efa69c007d Change unlocked scenes from lists to sets 2022-08-18 22:38:55 +09:30
c3450e8905 Handbooks: use some sorted maps 2022-08-18 22:06:08 +09:30
b3c80db417 Stop vendoring fastutil 2022-08-18 22:05:51 +09:30
9e0d6538e9 Lombokify some more getters 2022-08-17 21:11:40 +09:30
02deeb2852 Remove erroneous references to excel skilldata instead of avatar skilldata
Refactor team resonances and correct login behaviour and less-than-full-party behaviour
2022-08-17 21:07:29 +09:30
b4a2fe37e3 Add README_ko-KR.md (#1673)
* Add files via upload

Add README_ko-KR.md

* Update README.md

Add ko_KR

* Update README_HE.md

Add ko_KR

* Update README_es-ES.md

Add ko_KR

* Update README_fr-FR.md

Add ko_KR

* Update README_id-ID.md

Add ko_KR

* Update README_pl-PL.md

Add ko_KR

* Update README_ru-RU.md

Add ko_KR

* Update README_zh-CN.md

Add ko_KR

* Update README_zh-TW.md

Add ko_KR

* Update README_ko-KR.md

Add README_ko-KR.md

* Update README_HE.md
2022-08-17 16:20:11 +09:30
48cd9f6be2 Don't use UIDs as initial capacity for chat history 2022-08-17 03:20:06 +09:30
fab7e4a461 ChatSystem nitpick 2022-08-17 00:17:41 +09:30
dc153572dd Fix chat welcome messages and some slight refactoring. 2022-08-17 00:12:27 +09:30
97779fd35a Fix deprecated chat references 2022-08-16 15:13:51 +09:30
c115fe1abe update zh-CN.json (#1662)
Original commits:
* .
* Apply suggestions from code review
2022-08-16 10:11:26 +09:30
dc9cef8ab7 Refactoring (#1660)
* Refactor a couple of iterators

* Use side-effect instead of second iterator

* Make World::onTick return shouldDelete instead of success

* Replace Shop iterator with side effects

* Scene

* Clean up Expeditions

* Refactor Expeditions

* Clean up Expeditions, Player

* Limit Expeditions by AR

* Lombokify props

Co-authored-by: AnimeGitB <AnimeGitB@bigblueball.in>
2022-08-15 23:19:13 +09:30
bccf516ca7 chore: typo fix 2022-08-15 22:54:31 +09:30
3ec411b11a Bump config version. 2022-08-14 11:00:29 -04:00
3bd00fcb07 Update ConfigContainer.java (#1646)
make it more similar to official behavior.
2022-08-11 21:27:45 +09:30
823980046e make fishhook_tp configurable 2022-08-11 21:21:30 +09:30
46223c8976 Refactor Json helper functions to JsonUtils 2022-08-11 17:59:08 +09:30
c6323e9759 Funnel all gson calls into helper functions
Add deprecated getGsonFactory for plugin compat until 3.0
2022-08-11 17:59:08 +09:30
76fcbb477b Remove beta message 2022-08-11 16:21:59 +09:30
325fe6c44a Fix TalentCommand for Traveler 2022-08-11 16:21:27 +09:30
edd4c8ca88 fix:command player said to server won't be shown at chat history (#1643)
Original commits:

* fix:command player said to server won't be shown at chat history

* Update ChatManager.java
2022-08-11 15:20:08 +09:30
d286f1628e Update install_without_dependencies.sh
adapt to pr #1605 .(because this pr remove '-handbook' and '-gachamap' launch arguments as these are generated on startup)
2022-08-11 14:41:22 +09:30
a2b3033107 Fixed install_without_dependencies.sh script
## Description
Removed auto generation of Handbook since with the new versions GC won't exit when finished generating it, so the script was stuck, and for some reason if you stop GC manually, the script won't continue.
Added a recommendation to generate HB manually.

## Type of changes

- [x] Bug fix
- [ ] New feature 
- [x] Enhancement
- [ ] Documentation

## Checklist:

- [x] My code follows the style guidelines of this project
- [x] My pull request is unique and no other pull requests have been opened for these changes
- [x] I have read the [Contributing note](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md) and [Code of conduct](https://github.com/Grasscutters/Grasscutter/blob/development/CODE_OF_CONDUCT.md)
- [x] I am responsible for any copyright issues with my code if it occurs in the future.
2022-08-10 22:24:04 +09:30
04f0fae898 Handle Unlocking of Waypoints and Statues (#1608)
Original commits:

* Add necessary protos for scene point/area unlocking.

* Rename PlayerOpenStateManager to PlayerProgressManager and move data to Player.

* Handle unlocking of waypoints.

* Add primo rewards for waypoint unlock.

* Statue unlocking.

* Add statue quest on player login.

* I forgor to add an unlock command.

* Give EXP as reward, fire quest trigger, make EXP UI show up.
2022-08-10 19:33:47 +09:30
2d48fab799 Stop language linter from fighting the main linter on \n 2022-08-10 17:00:43 +09:30
c624479439 Fix an edge case that breaks embryos if resources are loaded early 2022-08-10 17:00:43 +09:30
3121e3e67d Introduce a new arguments parser (#1629)
Original commits:

* Clean-up

* Introduce a new application arguments parser & handler

* Clean-up and deprecate `Tools#getLanguageOption`

* Fix `-debug` and `-debugall` parameters

* found this while debugging, ...why

* Remove deprecated parameters

* Invoke startup argument parser before handbook generation

* Move command map instantiation to `Grasscutter `(prevent making 3 instances on startup)

* Ensure \n at EOF

Co-authored-by: AnimeGitB <AnimeGitB@bigblueball.in>
2022-08-10 11:54:43 +09:30
e20b185dc0 Fix Claiming BP Reward Chests (#1634)
Original commits:

* Fix claiming BP chests.

* Remove logging.
2022-08-10 11:04:22 +09:30
a2cdec02af Make missing languages not throw warnings 2022-08-09 04:57:44 -07:00
9c66ba137f Unify gacha mappings generation 2022-08-09 20:59:11 +09:30
ef805f26cc Remove vestigial references to gacha_mappings 2022-08-09 20:59:11 +09:30
0091fb87ea Remove language hack from handbook generation 2022-08-09 20:59:11 +09:30
c1ff7332fe Generate handbooks on every launch, fix html docs 2022-08-09 20:59:11 +09:30
e963419956 Refactor handbook generation, remove singular handbook 2022-08-09 20:59:11 +09:30
0994417261 Cache used strings from TextMaps 2022-08-09 20:59:11 +09:30
4790158ac6 Load in all the textmaps! 2022-08-09 20:59:11 +09:30
d56ca2091f Implement working* burst/ultimate invincibility
Merge pull request #1622 from Grasscutters/ult-invincibility
2022-08-07 00:26:57 -04:00
423b235c84 Added Indonesian README
Merge pull request #1621 from hmdnnrmn/development
2022-08-06 23:37:24 -04:00
957d4e5b1e Added install_without_dependencies.sh file
Merge pull request #1620 from RBNXI/development
2022-08-06 23:36:49 -04:00
6ec372e64f Add invoke-level invulnerability for bursts. 2022-08-06 23:35:57 -04:00
7df41f616b Invoke AbilityManager#onSkillStart and AbilityManager#onSkillEnd 2022-08-06 23:35:09 -04:00
6420428660 Add a method to be invoked on skill perform and end 2022-08-06 23:34:35 -04:00
1b925bc202 Update README_pl-PL.md 2022-08-07 08:10:36 +08:00
672c41be11 Update README_ru-RU.md 2022-08-07 08:10:17 +08:00
8a9e19ee57 Update README_es-ES.md 2022-08-07 08:09:51 +08:00
10ee796643 Update README_fr-FR.md 2022-08-07 08:09:32 +08:00
3852b35cfb Update README_zh-TW.md 2022-08-07 08:09:12 +08:00
3859048dc6 Update README_zh-CN.md 2022-08-07 08:08:53 +08:00
b2a1e4517e Update README.md 2022-08-07 08:08:29 +08:00
0fdb39380a fix typo 2022-08-07 08:05:14 +08:00
03b9fbdcc4 Added Indonesian language 2022-08-07 08:00:49 +08:00
88c549b0b6 Added install_without_dependencies.sh file
This is a modification of the current install.sh file, that works like that one, but without trying to install all the dependencies for you, which could cause some problems in outdated systems or not supported distros.
Also, install.sh file is outdated and doesn't work right now. This should be fixed, but for now, I prefer to have a separated and less intrusive script that does the same but without asking for dependencies.
This script can be also used for updating the current installation of Grasscutter if is run in the root folder of the server, removing the resources folder and giving some instructions on how to correctly update the server so you try them before starting to think that the update is just broken.
If you consider this unnecessary, please don't hesitate to cancel the PR.
2022-08-06 17:57:26 +00:00
352aa7d689 Improve some documentation and JSON (#1618)
Original commits:

* Updated instructions

* 更新说明

* 更新说明

* 更新说明

* 更新说明

* 更新说明

* Updated instructions

* Updated instructions
2022-08-05 19:05:44 +09:30
cf2832ae72 Add EntityDamageEvent and implementations 2022-08-04 21:36:00 -04:00
d05b3207e5 Add more events
Merge pull request #1516 from Grasscutters/more-events
2022-08-04 13:57:00 -04:00
a3e0f7f5f0 Update HandlerSceneTransToPointReq.java 2022-08-04 13:49:38 -04:00
d24c10eec5 Update src/main/java/emu/grasscutter/server/packet/recv/HandlerSceneTransToPointReq.java
Co-authored-by: Luke H-W <Birdulon@users.noreply.github.com>
2022-08-04 13:45:02 -04:00
164baa7251 Update src/main/java/emu/grasscutter/game/managers/mapmark/MapMarksManager.java
Co-authored-by: Luke H-W <Birdulon@users.noreply.github.com>
2022-08-04 13:44:56 -04:00
9cb9fe099c Update src/main/java/emu/grasscutter/server/packet/recv/HandlerTryEnterHomeReq.java
Co-authored-by: Luke H-W <Birdulon@users.noreply.github.com>
2022-08-04 13:44:50 -04:00
9a104f6f69 Polish README and setConst translation (#1614)
Original commits:
* setConst translation
* New pl README link
* Polish README
* fix
2022-08-04 18:02:34 +09:30
1a2f25d67b Update ru-RU.json 2022-08-04 18:01:26 +09:30
1b3963a83a Create ko-KR.json 2022-08-02 22:45:49 +09:30
faeb96927a Add PlayerUseFoodEvent and implementations 2022-08-01 21:32:30 -04:00
89575f587e Move PlayerTeleportEvent occurrences into World 2022-08-01 21:25:29 -04:00
1de402bd6f Merge branch 'development' into more-events 2022-08-01 21:13:19 -04:00
b9b4b6f428 Clean-up the energy manager 2022-08-01 21:12:57 -04:00
f25fb62942 Explicitly declare the charset of a FileReader in ConfigContainer
Changed charset of FileReader in ConfigContainer from default to utf-8.
Merge pull request #1600 from Someone999/development
2022-07-31 07:17:46 -04:00
5df46dab86 Update zh-CN.json
修正 用户登录提示
2022-07-30 13:57:27 +09:30
f3baa0b8e7 Changed charset of FileReader in ConfigContainer from default to utf-8. 2022-07-29 19:08:07 +08:00
66dadece8a Add files via upload 2022-07-28 21:07:17 +09:30
cb8b21d03d Auto language lint 2022-07-28 04:23:58 -07:00
0e406d9f05 Add explicit encoding on manage_languages.py for windows users 2022-07-28 04:23:58 -07:00
b80126fdda Add lock function to SetStatsCommand 2022-07-28 04:23:58 -07:00
0fa3d0e8d1 Improve message formatting to clients
Replaces tab indents with an extra linebreak.
Also adds / to the start of command usage.
Neither of these changes affect messages to the server console log.
2022-07-28 00:16:41 -07:00
24dfac65b2 Update zh-CN.json
Merge pull request #1584 from millet6/patch-1
2022-07-27 13:33:40 -04:00
f25dc4d2fc Update zh-CN.json 2022-07-27 13:32:11 -04:00
30540711eb Merge pull request #1586 from Birdulon/development
Suppress stacktrace on missing questkeys file
2022-07-27 13:29:30 -04:00
0d9116225c Suppress stacktrace on missing questkeys file 2022-07-27 21:10:32 +09:30
6ba4846e58 Change loading quest keys from info to debug.
Please for the love of god use `debug` for information not important to the enduser when starting the server.
2022-07-26 14:49:45 -04:00
d8f8aed816 Update zh-CN.json
更新汉化内容
Update Chinese content
2022-07-27 01:38:24 +08:00
9781d5e6c9 Fix an NPE in EntityGadget when draft_id isn't set
Merge pull request #1579 from Hartie95/nullfix
2022-07-26 12:14:08 -04:00
107111d3fc SceneScriptManager fix nullPointer error
Merge pull request #1581 from akatatsu27/development
2022-07-26 12:02:14 -04:00
7600f706b5 Move QuestEncryptionKeys to resources/ 2022-07-26 08:22:27 -07:00
2fe6bcf2cf Traditional Chinese | Translation Patches
Added missing some commands translation, and fixing up another mainlander's CHS = CHT mindset.
2022-07-27 00:28:44 +09:30
7ca947b05f fix nullPointer error 2022-07-26 17:58:28 +03:00
ah
964e73f0f6 small nullpointer fix in EntityGadget, in case meta gadget is not set 2022-07-26 16:09:52 +02:00
bb8ae4c443 Update ru-RU.json
- Add unlockall translations
2022-07-26 06:29:57 -07:00
5a3dfcd4b4 Add spanish translation for constellation commands 2022-07-26 22:56:36 +09:30
797afd4ccf Merge pull request #1553 from akatatsu27/questing
Major quest framework improvements
2022-07-26 06:10:03 -07:00
8bdcfb8908 token fix 2022-07-26 14:28:39 +03:00
92aeb79ac3 Merge branch 'development' into questing 2022-07-26 14:17:42 +03:00
1c5c3633d1 Update ru-RU.json 2022-07-26 18:58:15 +09:30
883b6f1fcc [Bug] New avatars always created with C0 constellation
Fixes #1552
2022-07-26 17:56:49 +09:30
ffeff92dd6 2.7+ prerendered cutscene support 2022-07-26 16:55:53 +09:30
938b54c2ee two small activity/event fixes
* fixed GetAcitivityInfoReq proto
* added draft to gadget Scene gatget, to let the client know the propper minigame for some entities
2022-07-26 16:49:52 +09:30
59a412cc83 Set Constellation Command (#1565)
Original commits:

* create `SetConstCommand` class and translations

* (partially) functional `setconst` command

* fixed punctuation

* added success message

* implemented `SetConstCommand`

* added translation keys

* update keys

* refactor + automatic reload

* Nitpick (Co-authored-by: AnimeGitB <AnimeGitB@bigblueball.in>)
2022-07-26 16:44:17 +09:30
63fd4dfe3a Update French translation 2022-07-26 10:35:05 +09:30
c35705010a Fix remaining traces of Player#getPos 2022-07-24 13:27:43 -04:00
41ec2316e4 Attempt to fix the teleport command. 2022-07-24 13:23:51 -04:00
818bfb8c5b Add PlayerTeamDeathEvent and implementations 2022-07-24 13:20:58 -04:00
886c2e2f43 Add EntityDeathEvent and implementations 2022-07-24 13:20:42 -04:00
a13725b1cb Add a Location class (Scene + Position) 2022-07-24 12:17:38 -04:00
7397c7f300 Remove deprecated class 2022-07-24 12:08:59 -04:00
90cded16d9 Merge branch 'development' into more-events 2022-07-24 12:05:35 -04:00
44d8a6482e call deregisterRegion appropriately 2022-07-24 13:33:48 +03:00
29bdb7f3f6 Merge branch 'development' into questing 2022-07-24 12:16:22 +03:00
d0edd39465 Read Open States from Excels (#1557)
* Make sure we never access PlayerOpenStateManager::map directly.

* Read OpenStates from excels.

* Add defaultState

* Replace hardcoded open states with the ones read from excels.

* Don't send change notify when unlocking on login.

* Add open state blacklist for default unlocks.

* Add a way to temporarily set open states for dev

* Remove old OpenState.java

* Fix UnlockAllCommand

* Change condType to an enum.
2022-07-24 00:12:07 -07:00
8050f0cc07 and misc bug fixes 2022-07-23 12:28:49 +03:00
02a56fcec4 Major questing improvements 2022-07-23 12:27:14 +03:00
956d4023c7 Merge branch 'development' into more-events
# Conflicts:
#	src/main/java/emu/grasscutter/command/commands/TeleportAllCommand.java
#	src/main/java/emu/grasscutter/game/entity/EntityAvatar.java
#	src/main/java/emu/grasscutter/game/entity/GameEntity.java
#	src/main/java/emu/grasscutter/game/managers/mapmark/MapMarksManager.java
2022-07-22 17:52:58 -04:00
89717f3c15 Translated new changes in languages files to Spanish
Just realized that some commits have changed the language files to add some new things, so this is the Spanish translation of those... things.
2022-07-23 03:01:58 +09:30
f4d1537aab Fix taking battle pass rewards 2022-07-22 09:47:41 -07:00
e5ff253624 Add unlockall command to unlock all openstates 2022-07-22 09:26:00 -07:00
705bee0595 Fix battle pass manager saving with 0 id 2022-07-22 08:35:37 -07:00
7254fe1612 Set setChooseAvatarGuid properly 2022-07-22 08:30:11 -07:00
0d17c4a088 Implement food buffs 2022-07-22 03:46:59 -07:00
e9a95b89cf Use sorted containers for commands & aliases 2022-07-22 19:08:26 +09:30
104e04f70a Change commands to use new usage message method. 2022-07-22 19:08:26 +09:30
2cfbe78184 Refactor Command usage and description strings 2022-07-22 19:08:26 +09:30
e9464784bb Updated Russian localization (#1543)
* updated russian localization

* Update ru-RU.json
2022-07-22 02:17:58 -07:00
f15262dd3e Refactor excel datas (Mainly item data) 2022-07-22 00:53:12 -07:00
c0418067d6 Add kcpInterval to the config 2022-07-21 18:39:39 -07:00
8651cdd12b Rename hasSentAvatarDataNotify() to hasSentLoginPackets() 2022-07-21 16:27:43 -07:00
b505b0825a Fix host team size not changing when a player joins their world for the first time 2022-07-21 16:24:04 -07:00
62e54010ad Lower kcp interval to 20 2022-07-21 16:23:59 -07:00
a07b3f21e6 Bump project version 2022-07-21 11:36:49 -04:00
f6b4016f1b Add PlayerTeleportEvent 2022-07-15 16:18:46 -04:00
02ca5cf23c Update to support PlayerMoveEvent 2022-07-15 16:12:22 -04:00
1b8df002d1 Remove Cancellable from PlayerMoveEvent 2022-07-15 12:48:55 -04:00
80e75fd023 Implement PlayerMoveEvent 2022-07-15 12:43:49 -04:00
3448 changed files with 971892 additions and 230889 deletions

View File

@ -5,10 +5,10 @@ charset = utf-8
end_of_line = lf end_of_line = lf
indent_size = 4 indent_size = 4
indent_style = space indent_style = space
insert_final_newline = false insert_final_newline = true
max_line_length = 120 max_line_length = 120
tab_width = 4 tab_width = 4
trim_trailing_whitespace = true trim_trailing_whitespace = true
[{*.json,*.xml}] [{*.json,*.xml,*.yml,*.html}]
indent_size = 2 indent_size = 2

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
* text=auto

View File

@ -1,7 +1,7 @@
## Description ## Description
Please carefully read the [Contributing note](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md) and [Code of conduct](https://github.com/Grasscutters/Grasscutter/blob/development/CODE_OF_CONDUCT.md) before making any pull requests. Please carefully read the [Contributing note](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md) and [Code of conduct](https://github.com/Grasscutters/Grasscutter/blob/development/CODE_OF_CONDUCT.md) before making any pull requests.
And, **Do not make a pull request to merge into stable unless it is a hotfix. Use the development branch instead.**
## Issues fixed by this PR ## Issues fixed by this PR
<!--- Put the links of issues that may be fixed by this PR here (if any). --> <!--- Put the links of issues that may be fixed by this PR here (if any). -->

View File

@ -7,6 +7,7 @@ on:
branches: branches:
- "stable" - "stable"
- "development" - "development"
- "unstable"
pull_request: pull_request:
paths: paths:
- "**.java" - "**.java"
@ -24,7 +25,7 @@ jobs:
uses: actions/setup-java@v3 uses: actions/setup-java@v3
with: with:
distribution: temurin distribution: temurin
java-version: '17' java-version: '21'
- name: Cache gradle files - name: Cache gradle files
uses: actions/cache@v2 uses: actions/cache@v2
with: with:

51
.github/workflows/build_container.yml vendored Normal file
View File

@ -0,0 +1,51 @@
name: Build Docker Container
on:
push:
release:
types: [published]
workflow_dispatch: ~
jobs:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout Project
uses: actions/checkout@v4
- name: Generate Docker Meta
uses: docker/metadata-action@v5
id: meta
with:
images: ghcr.io/${{ github.repository }}
tags: |
type=ref,event=branch
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=sha
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3.1.0
- name: Login to GitHub Container Registry
uses: docker/login-action@v3.0.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and Push Docker image
uses: docker/build-push-action@v5.2.0
with:
context: .
push: true
platforms: linux/amd64
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

78
.github/workflows/check_code.yml vendored Normal file
View File

@ -0,0 +1,78 @@
name: "Lint & Format Code"
on:
workflow_dispatch: ~
push:
paths:
- "src/main/**.java"
- "**.json"
branches:
- "development"
- "unstable"
jobs:
Format-Code:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Extract branch name
shell: bash
run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
id: extract_branch
- name: Setup Java
uses: actions/setup-java@v3
with:
distribution: temurin
java-version: '21'
- name: Cache gradle files
uses: actions/cache@v2
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
./.gradle/loom-cache
key: ${{ runner.os }}-gradle-${{ hashFiles('*.gradle', 'gradle.properties', '**/*.accesswidener') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Format Code
run: ./gradlew && ./gradlew spotlessApply
- run: git config --global user.name "github-actions"
- run: git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
- run: git stash
- run: git checkout ${{ steps.extract_branch.outputs.branch }} && git pull
- run: git stash pop || true
- name: Commit Code Changes
run: git add -u && git commit -m 'Format code [skip actions]' || true
- name: Push Code Changes
run: git push --set-upstream --force origin ${{ steps.extract_branch.outputs.branch }}
Update-Languages:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Extract branch name
shell: bash
run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
id: extract_branch
- name: Update Languages
run: python scripts/manage_languages.py -u
- run: git config --global user.name "github-actions"
- run: git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
- run: git stash
- run: git checkout ${{ steps.extract_branch.outputs.branch }} && git pull
- run: git stash pop || true
- name: Commit any language changes
run: git add -u && git commit -m 'Update languages [skip actions]' || true
- name: Push language changes
run: git push --set-upstream --force origin ${{ steps.extract_branch.outputs.branch }}

View File

@ -3,15 +3,20 @@ on:
workflow_dispatch: ~ workflow_dispatch: ~
push: push:
paths: paths:
- "**.java" - ".github/workflows/**"
- "src/main/**.java"
- "**.json" - "**.json"
- "scripts/manage_languages.py"
branches: branches:
- "stable" - "stable"
- "development" - "development"
- "unstable"
pull_request: pull_request:
paths: paths:
- "**.java" - ".github/workflows/**"
- "src/main/**.java"
- "**.json" - "**.json"
- "scripts/manage_languages.py"
types: types:
- opened - opened
- synchronize - synchronize
@ -24,4 +29,4 @@ jobs:
- uses: actions/setup-python@v4 - uses: actions/setup-python@v4
with: with:
python-version: '3.10' # Version range or exact version of a Python version to use, using SemVer's version range syntax python-version: '3.10' # Version range or exact version of a Python version to use, using SemVer's version range syntax
- run: python3 manage_languages.py -l - run: python3 scripts/manage_languages.py -l

View File

@ -1,41 +0,0 @@
name: "Lint whitespace and languages"
on:
workflow_dispatch: ~
push:
paths:
- "**.java"
- "**.json"
branches:
- "development"
jobs:
Build-Server-Jar:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Run Whitespace Linter
run: python format_whitespace.py
- run: git config --global user.name "github-actions"
- run: git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
- run: git stash
# - name: Remove Whitespace Linter's LintRatchet ref
# run: git branch -D LintRatchet
# - name: Fetch this repo's LintRatchet branch
# run: git fetch origin LintRatchet:LintRatchet
- run: git checkout LintRatchet
# - run: git merge development
- run: git reset --hard development
- run: git stash pop
- name: Commit any whitespace changes
run: git add -u && git commit -m 'Fix whitespace [skip actions]' || true
- name: Update Languages
run: python manage_languages.py -u
- name: Commit any language changes
run: git add -u && git commit -m 'Update languages [skip actions]' || true
- run: git push --set-upstream --force origin LintRatchet

22
.github/workflows/protect_files.yml vendored Normal file
View File

@ -0,0 +1,22 @@
name: Protect write-access files from being PR'd
on:
pull_request_target:
types:
- opened
branches:
- development
paths:
- '.github/'
- '.editorconfig'
- 'CODE_OF_CONDUCT.md'
- 'CONTRIBUTING.md'
- 'LICENSE'
jobs:
run:
runs-on: ubuntu-latest
steps:
- uses: superbrothers/close-pull-request@v3
with:
comment: "This PR has been closed for modifying protected files. See `CONTRIBUTING.md` for more information."

18
.gitignore vendored
View File

@ -52,6 +52,7 @@ tmp/
.vscode .vscode
# Grasscutter # Grasscutter
/cache
/resources /resources
/logs /logs
/plugins /plugins
@ -59,12 +60,14 @@ tmp/
/keys /keys
/language /language
/languages /languages
/src/generated /proto
/*.jar /*.jar
/*.sh /*.sh
!entrypoint.sh
GM Handbook*.txt
GM Handbook.txt
config.json config.json
mitmdump.exe mitmdump.exe
mongod.exe mongod.exe
@ -72,6 +75,7 @@ mongod.exe
gacha-mapping.js gacha-mapping.js
mappings.js mappings.js
BuildConfig.java BuildConfig.java
data/hk4e/announcement/
# lombok # lombok
/.apt_generated/ /.apt_generated/
@ -79,4 +83,12 @@ BuildConfig.java
# macOS # macOS
.DS_Store .DS_Store
.directory .directory
data/hk4e/announcement/
# Hotswap Agent
hotswap-agent.properties
# Debug patches
patches/*.patch
# Artifact Signatures
*.asc

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "docs/wiki"]
path = docs/wiki
url = https://github.com/Grasscutters/Grasscutter.wiki.git

View File

@ -12,3 +12,20 @@ Please note we have a code of conduct, please follow it in all your interactions
1. Ensure any install or build dependencies are removed before the end of the layer when doing a build. 1. Ensure any install or build dependencies are removed before the end of the layer when doing a build.
2. Update the README.md and wiki with details of changes to the interface, this includes new environment variables, exposed ports, useful file locations and container parameters. 2. Update the README.md and wiki with details of changes to the interface, this includes new environment variables, exposed ports, useful file locations and container parameters.
3. Write with detail on your pull request description what you have committed, to make it easier for the collaborators to make a changelog. 3. Write with detail on your pull request description what you have committed, to make it easier for the collaborators to make a changelog.
## Code Content
Your code should follow the standards set below:
- Your code can be run purely using a Java 17 JVM.
- Dependencies that use a separate language (ex. Kotlin) that can run on a JVM are acceptable.
- Dependencies that require the use of native code (ex. JNI) are prohibited.
- Directly adding foreign code (other languages, ex. Kotlin) into the main codebase is prohibited.
- Certain files and folders are forbidden to modify in Pull Requests and may only be changed by Write-Access members. The current list for this can be found in `.github/workflows/protect_files.yml`.
## Intellectual Property
Please avoid adding any direct references to the following, whenever possible:
- Game names
- Character names
- Notable weapon names

38
Dockerfile Normal file
View File

@ -0,0 +1,38 @@
# Builder
FROM gradle:jdk21-alpine as builder
RUN apk add --update nodejs npm
WORKDIR /app
COPY ./ /app/
RUN gradle jar --no-daemon
# Fetch Data
FROM bitnami/git:2.43.0-debian-11-r1 as data
ARG DATA_REPOSITORY=https://gitlab.com/YuukiPS/GC-Resources.git
ARG DATA_BRANCH=4.0
WORKDIR /app
RUN git clone --branch ${DATA_BRANCH} --depth 1 ${DATA_REPOSITORY}
# Result Container
FROM amazoncorretto:21-alpine
WORKDIR /app
# Copy built assets
COPY --from=builder /app/grasscutter-*.jar /app/grasscutter.jar
COPY --from=builder /app/keystore.p12 /app/keystore.p12
# Copy the resources
COPY --from=data /app/GC-Resources/Resources /app/resources/
# Copy startup files
COPY ./entrypoint.sh /app/
CMD [ "sh", "/app/entrypoint.sh" ]
EXPOSE 80 443 8888 22102

135
README.md
View File

@ -1,73 +1,84 @@
![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light) ![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light)
<div align="center"><img alt="Documentation" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/workflow/status/Grasscutters/Grasscutter/Build?logo=github&style=for-the-badge"></div> <div align="center"><img alt="Documentation" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/Grasscutters/Grasscutter/build.yml?branch=development&logo=github&style=for-the-badge"></div>
<div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div> <div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div>
EN | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md) [EN](README.md) | [简中](docs/README_zh-CN.md) | [繁中](docs/README_zh-TW.md) | [FR](docs/README_fr-FR.md) | [ES](docs/README_es-ES.md) | [HE](docs/README_HE.md) | [RU](docs/README_ru-RU.md) | [PL](docs/README_pl-PL.md) | [ID](docs/README_id-ID.md) | [KR](docs/README_ko-KR.md) | [FIL/PH](docs/README_fil-PH.md) | [NL](docs/README_NL.md) | [JP](docs/README_ja-JP.md) | [IT](docs/README_it-IT.md) | [VI](docs/README_vi-VN.md)
**Attention:** We always welcome contributors to the project. Before adding your contribution, please carefully read our [Code of Conduct](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md). **Attention:** We always welcome contributors to the project. Before adding your contribution, please carefully read our [Code of Conduct](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md).
## Current features ## Current features
* Logging in - Logging in
* Combat - Combat
* Friends list - Friends list
* Teleportation - Teleportation
* Gacha system - Gacha system
* Co-op *partially* works - Co-op works(-ish)
* Spawning monsters via console - Spawning monsters via console
* Inventory features (receiving items/characters, upgrading items/characters, etc) - Inventory features (receiving items/characters, upgrading items/characters, etc)
## Quick setup guide ## Quick setup guide
**Note:** For support please join our [Discord](https://discord.gg/T5vZU6UyeG). **Note**: For support please join our [Discord](https://discord.gg/T5vZU6UyeG).
### Requirements ### Quick Start (automatic)
* Java SE - 17 ([link](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)) <details>
**Note:** If you just want to **run it**, then **jre** only is fine. <summary>Windows quick start using Cultivation</summary>
* [MongoDB](https://www.mongodb.com/try/download/community) (recommended 4.0+) - Get [Java 21](https://www.oracle.com/java/technologies/javase/jdk21-archive-downloads.html)
- Get [MongoDB Community Server](https://www.mongodb.com/try/download/community)
- Get [game version REL5.0](#downloading-50)
* Proxy daemon: mitmproxy (mitmdump, recommended), Fiddler Classic, etc. - Download the [latest Cultivation version](https://github.com/Grasscutters/Cultivation/releases/latest). Use the `.msi` installer.
- After opening Cultivation (as admin), press the download button in the upper right corner.
- Click `Download All-in-One`
- Click the gear in the upper right corner
- Set the game Install path to where your game is located.
- Set the Custom Java Path to `C:\Program Files\Java\jdk-21\bin\java.exe`
- Leave all other settings on default
### Running - Click the small button next to launch.
- Click the launch button.
- Log in with whatever username you want. Password can be anything.
**Note:** If you updated from an older version, delete `config.json` to regenerate it. </details>
1. Get `grasscutter.jar` ### Downloading 5.0
- Download from [actions](https://github.com/Grasscutters/Grasscutter/suites/6895963598/artifacts/267483297)
- [Build by yourself](#Building)
2. Create a `resources` folder in the directory where grasscutter.jar is located and move your `BinOutput` and `ExcelBinOutput` folders there *(Check the [wiki](https://github.com/Grasscutters/Grasscutter/wiki) for more details how to get those.)*
3. Run Grasscutter with `java -jar grasscutter.jar`. **Make sure mongodb service is running as well.**
### Connecting with the client <details>
½. Create an account using [server console command](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting). <summary>Download Link Table</summary>
1. Redirect traffic: (choose one) **Note:** Scroll down to see patch files from 4.8 to 5.0.
- mitmdump: `mitmdump -s proxy.py -k`
Trust CA certificate: | Download link | Package size | Decompressed package size | MD5 checksum |
|:------------------------------------------------------------------------------------------------------------------------------------------------------:|:------------:|:-------------------------:|:--------------------------------:|
| [GenshinImpact_5.0.0.zip.001](https://autopatchhk.yuanshen.com/client_app/download/pc_zip/20240816185649_LtymMnnIZVQfbLZ2/GenshinImpact_5.0.0.zip.001) | 10.0 GB | 20.0 GB | 1ebf5dbcbe43bebcda7a57a8d789092e |
| [GenshinImpact_5.0.0.zip.002](https://autopatchhk.yuanshen.com/client_app/download/pc_zip/20240816185649_LtymMnnIZVQfbLZ2/GenshinImpact_5.0.0.zip.002) | 10.0 GB | 20.0 GB | 57a67026c45d57c28e5b52e24e84cc04 |
| [GenshinImpact_5.0.0.zip.003](https://autopatchhk.yuanshen.com/client_app/download/pc_zip/20240816185649_LtymMnnIZVQfbLZ2/GenshinImpact_5.0.0.zip.003) | 10.0 GB | 20.0 GB | 5e66ff28eaf6ba89e49f153c0f077d34 |
| [GenshinImpact_5.0.0.zip.004](https://autopatchhk.yuanshen.com/client_app/download/pc_zip/20240816185649_LtymMnnIZVQfbLZ2/GenshinImpact_5.0.0.zip.004) | 10.0 GB | 20.0 GB | 39f014a760e27f77abed1989739c74c6 |
| [GenshinImpact_5.0.0.zip.005](https://autopatchhk.yuanshen.com/client_app/download/pc_zip/20240816185649_LtymMnnIZVQfbLZ2/GenshinImpact_5.0.0.zip.005) | 10.0 GB | 20.0 GB | 15f9405a199afba833f18fce288b9c7f |
| [GenshinImpact_5.0.0.zip.006](https://autopatchhk.yuanshen.com/client_app/download/pc_zip/20240816185649_LtymMnnIZVQfbLZ2/GenshinImpact_5.0.0.zip.006) | 10.0 GB | 20.0 GB | 881432ceab27987b1297c9eefb39f192 |
| [GenshinImpact_5.0.0.zip.007](https://autopatchhk.yuanshen.com/client_app/download/pc_zip/20240816185649_LtymMnnIZVQfbLZ2/GenshinImpact_5.0.0.zip.007) | 3.78 GB | 7.57 GB | 951f91992b428385294baf9b6c764d49 |
| [Audio_Chinese_5.0.0.zip](https://autopatchhk.yuanshen.com/client_app/download/pc_zip/20240816185649_LtymMnnIZVQfbLZ2/Audio_Chinese_5.0.0.zip) | 14.77 GB | 29.56 GB | 216b3e53f3c5c7e1290891696b2bbc66 |
| [Audio_English(US)_5.0.0.zip](https://autopatchhk.yuanshen.com/client_app/download/pc_zip/20240816185649_LtymMnnIZVQfbLZ2/Audio_English(US)_5.0.0.zip) | 17.23 GB | 34.47 GB | ecd59f31ec48c50f9051fdad39603d67 |
| [Audio_Korean_5.0.0.zip](https://autopatchhk.yuanshen.com/client_app/download/pc_zip/20240816185649_LtymMnnIZVQfbLZ2/Audio_Korean_5.0.0.zip) | 14.51 GB | 29.04 GB | 8bf09bd07413189b69a5a0512df97335 |
| [Audio_Japanese_5.0.0.zip](https://autopatchhk.yuanshen.com/client_app/download/pc_zip/20240816185649_LtymMnnIZVQfbLZ2/Audio_Japanese_5.0.0.zip) | 19.37 GB | 38.76 GB | 95efbd23e1bde2eb574f8090cc118109 |
**Note:**The CA certificate is usually stored in `%USERPROFILE%\ .mitmproxy`, or you can download it from `http://mitm.it` ### 4.8 -> 5.0 Patch FIles
Double click for [install](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate) or ... | Download link | Package size | Decompressed package size | MD5 checksum |
|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:------------:|:-------------------------:|:--------------------------------:|
| [game_4.8.0_5.0.0_hdiff_wZvKsUhQtnBEutrh.zip](https://autopatchhk.yuanshen.com/client_app/update/hk4e_global/game_4.8.0_5.0.0_hdiff_wZvKsUhQtnBEutrh.zip) | 19.52 GB | 39.86 | ec0cc740e01c374cd53d48219c1a4aff |
| [audio_ko-kr_4.8.0_5.0.0_hdiff_gTmBNUAGPpXxrRKC.zip](https://autopatchhk.yuanshen.com/client_app/update/hk4e_global/audio_ko-kr_4.8.0_5.0.0_hdiff_gTmBNUAGPpXxrRKC.zip) | 0.60 GB | 1.31 GB | 64c52d4065a5d5983b37faeb9796a3eb |
| [audio_ja-jp_4.8.0_5.0.0_hdiff_LumPhRraNOjGJMnG.zip](https://autopatchhk.yuanshen.com/client_app/update/hk4e_global/audio_ja-jp_4.8.0_5.0.0_hdiff_LumPhRraNOjGJMnG.zip) | 0.71 GB | 1.63 GB | 934899593f7234bec937fca98c0b0bed |
| [audio_zh-cn_4.8.0_5.0.0_hdiff_ZZiDHvYQeHGKuFeP.zip](https://autopatchhk.yuanshen.com/client_app/update/hk4e_global/audio_zh-cn_4.8.0_5.0.0_hdiff_ZZiDHvYQeHGKuFeP.zip) | 0.62 GB | 1.35 GB | c1073373d6c7b3680217335dc346de50 |
| [audio_en-us_4.8.0_5.0.0_hdiff_vsfAECOkroqoZSqK.zip](https://autopatchhk.yuanshen.com/client_app/update/hk4e_global/audio_en-us_4.8.0_5.0.0_hdiff_vsfAECOkroqoZSqK.zip) | 0.74 GB | 1.58 GB | b5cb77749a0e2fc0e85b6b1ee319a7e9 |
- Via command line </details>
```shell
certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
```
- 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. Set network proxy to `127.0.0.1:8080` or the proxy port you specified.
**you can also use `start.cmd` to start servers and proxy daemons automatically, but you have to set up JAVA_HOME enviroment**
### Building ### Building
@ -75,34 +86,40 @@ Grasscutter uses Gradle to handle dependencies & building.
**Requirements:** **Requirements:**
- [Java SE Development Kits - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) - [Java Development Kit 21](https://www.oracle.com/java/technologies/javase/jdk21-archive-downloads.html) or higher
- [Git](https://git-scm.com/downloads) - [Git](https://git-scm.com/downloads)
##### Windows ##### Clone
```shell ```shell
git clone https://github.com/Grasscutters/Grasscutter.git git clone --recurse-submodules https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter cd Grasscutter
.\gradlew.bat # Setting up environments
.\gradlew jar # Compile
``` ```
##### Linux ##### Compile
Windows:
```shell
.\gradlew.bat # Setting up environments
.\gradlew jar
```
Linux (GNU):
```bash ```bash
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
chmod +x gradlew chmod +x gradlew
./gradlew jar # Compile ./gradlew jar
``` ```
You can find the output jar in the root of the project folder. ### Troubleshooting
### Commands have moved to the [wiki](https://github.com/Grasscutters/Grasscutter/wiki/Commands)! For a list of common issues and solutions and to ask for help, please join [our Discord server](https://discord.gg/T5vZU6UyeG) and go to the support channel.
# Quick Troubleshooting
* If compiling wasn't successful, please check your JDK installation (JDK 17 and validated JDK's bin PATH variable) ## Credits
* 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 > [!NOTE]
* Startup sequence: MongoDB > Grasscutter > Proxy daemon (mitmdump, fiddler, etc.) > Game > Protocol definitions are dumped from many parties, but they are not stated here. Thanks for contributing!
- [KCP Library](https://github.com/OcenWang-GI/AyakaPS-KCP) - `grasskcper` updated with the `byte_check_code`

View File

@ -1,107 +0,0 @@
![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light)
<div align="center"><img alt="Documention" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/workflow/status/Grasscutters/Grasscutter/Build?logo=github&style=for-the-badge"></div>
<div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div>
[EN](README.md) | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | FR | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md)
**Attention:** De nouveaux contributeurs sont toujours les bienvenus. Avant d'ajouter votre contribution, veuillez lire le [code de conduite](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md).
## Fonctionnalités actuelles :
* Connection
* Combat
* Liste d'amis
* Téléportation
* Système de gacha
* Le multijoueur fonctionne *partiellement*
* Apparition de monstres via la console
* Inventaire (obtention d'objets/de personnages, amélioration d'objets/personnages, etc)
## Guide de démarrage rapide
**Note:** Pour obtenir un support, rejoignez notre serveur [Discord](https://discord.gg/T5vZU6UyeG) (en anglais).
### Logiciels requis
* Java SE - 17 ([link](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html))
**Note:** Si vous voulez juste **l'exécuter**, Alors vous pouvez télécharger seulement le **jre**
* MongoDB (4.0+ recommandé)
* Proxy daemon: mitmproxy (mitmdump, recommended), Fiddler Classic, etc.
### Lancement
**Note:** Si vous avez mis à jour depuis une ancienne version, supprimez `config.json` pour le regénérer.
1. Obtenez `grasscutter.jar`
- Téléchargez le depuis les [actions](https://github.com/Grasscutters/Grasscutter/suites/6895963598/artifacts/267483297)
- [Buildez le par vous-même](#Building)
2. Créez un dossier `resources` dans le dossier où grasscutter.jar est situé et déplacez vos dossiers `BinOutput` et `ExcelBinOutput` ici *(Vérifiez le [wiki](https://github.com/Grasscutters/Grasscutter/wiki) pour plus de détails sur comment les obtenir.)*
3. Exécutez Grasscutter avec `java -jar grasscutter.jar`. **Soyez sûr que le service MongoDB est en cours d'exécution.**
### Connection avec le client
½. Créez un compte avec la [console de commande du serveur](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting).
1. Redirection du traffic: (Choisissez-en un)
- mitmdump: `mitmdump -s proxy.py -k`
Approuvez le certificat CA:
**Note:**Le certificat CA est généralement stocké sous `%USERPROFILE%\ .mitmproxy`, ou vous pouvez le télécharger depuis `http://mitm.it`
Double-cliquez pour [installer](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate) oo ...
- Via la ligne de commande
```shell
certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
```
- Fiddler Classic: Exécutez Fiddler Classic, Activez `Decrypt https traffic` dans les paramètres et changez le port par défaut ici (Tools -> Options -> Connections) à autre chose que `8888`, et chargez [ce script](https://github.lunatic.moe/fiddlerscript).
- [Fichier hosts](https://github.com/Melledy/Grasscutter/wiki/Running#traffic-route-map)
2. Définissez le proxy du réseau comme `127.0.0.1:8080` ou le port du proxy que vous avez spécifié.
**Vous pouvez aussi utiliser `start.cmd` to démarrer les serveurs et le proxy automatiquement, mais vous devez mettre en place la variable d'environnement JAVA_HOME**
### Building
Grasscutter utilise Gradle pour gérer les dépendances et la construction.
**Logiciels requis:**
- [Java SE Development Kits - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
- [Git](https://git-scm.com/downloads)
##### Windows
```shell
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
.\gradlew.bat # Mettre en place l'environnement
.\gradlew jar # Compiler
```
##### Linux
```bash
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
chmod +x gradlew
./gradlew jar # Compiler
```
Vous trouverez le fichier jar compilé à la racine du dossier du projet.
### Les commandes ont été déplacé vers le [wiki](https://github.com/Grasscutters/Grasscutter/wiki/Commands)! (en anglais)
# Dépannage rapide
* Si la compilation a échoué, veuillez vérifier votre installation de votre JDK (JDK 17 et le bon dossier bin du JDK dans la variable PATH)
* Mon client ne se connecte pas au serveur, impossible de se connecter a mon compte, 4206, etc... - La plupart du temps, *le problème* vient de la configuration de votre proxy. Si vous utilisez Fiddler, vérifiez s'il est exécuté sur un port autre que 8888
* Séquence de démarrage : MongoDB > Grasscutter > Proxy (mitmdump, fiddler, etc...) > Jeu

View File

@ -1,108 +0,0 @@
![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light)
<div align="center"><img alt="Documention" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/workflow/status/Grasscutters/Grasscutter/Build?logo=github&style=for-the-badge"></div>
<div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div>
[EN](README.md) | 简中 | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md)
**请注意:** 欢迎成为本项目的贡献者。在提交 PR 之前, 请仔细阅读[代码规范](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md)。
## 当前功能
* 登录
* 战斗
* 好友列表
* 传送系统
* 祈愿系统
* 从控制台生成魔物
* 多人游戏 *部分* 可用
* 物品栏相关 (接收物品/角色, 升级角色/武器等)
## 快速设置指南
**注意:** 如需帮助请加入 [Discord](https://discord.gg/T5vZU6UyeG)
### 环境需求
* Java SE - 17 ([链接](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html))
**注意:** 如果仅想**运行服务端**, 使用 **jre** 即可
* [MongoDB](https://www.mongodb.com/try/download/community) (推荐 4.0+)
* 代理程序: mitmproxy (推荐 mitmdump), Fiddler Classic 等
### 运行
**注意:** 从旧版本升级到新版本, 需要删除 `config.json`
1. 获取 `grasscutter.jar`
- 从 [actions](https://github.com/Grasscutters/Grasscutter/suites/6895963598/artifacts/267483297) 下载
- [自行编译](#编译)
2. 在 JAR 文件根目录中创建 `resources` 文件夹并复制 `BinOutput``ExcelBinOutput` *(查看 [wiki](https://github.com/Grasscutters/Grasscutter/wiki) 了解更多)*
3. 命令行 `java -jar grasscutter.jar` 运行 Grasscutter。**在此之前请确认 MongoDB 服务运行正常**
### 客户端连接
½. 在服务器控制台[创建账户](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting)
1. 重定向流量: (选择其中一个)
- mitmdump: `mitmdump -s proxy.py -k`
信任 CA 证书:
**注意:** mitmproxy 的 CA 证书通常存放在 `%USERPROFILE%\ .mitmproxy`, 或者在 `http://mitm.it` 下载证书
双击[安装根证书](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate)或者...
- 使用命令行
```shell
certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
```
- Fiddler Classic: 运行 Fiddler Classic, 在设置中开启 `解密 https 通信` 并将端口设为除 `8888` 以外的任意端口 (工具 -> 选项 -> 连接) 并加载[此脚本](https://github.lunatic.moe/fiddlerscript)
- [Hosts 文件](https://github.com/Grasscutters/Grasscutter/wiki/Running#traffic-route-map)
2. 设置代理为 `127.0.0.1:8080` 或你设置的端口
**也可直接运行 `start.cmd` 一键启动服务端并设置代理, 但必须设置 `JAVA_HOME` 环境变量**
### 编译
Grasscutter 使用 Gradle 来处理依赖及编译。
**依赖:**
- [Java SE Development Kits - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
- [Git](https://git-scm.com/downloads)
##### Windows
```shell
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
.\gradlew.bat # 建立开发环境
.\gradlew jar # 编译
```
##### Linux
```bash
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
chmod +x gradlew
./gradlew jar # 编译
```
编译后的 JAR 文件存放在根目录
### 命令列表请到 [wiki](https://github.com/Grasscutters/Grasscutter/wiki/Commands) 查看
# 快速排除问题
* 如果编译失败, 请检查 JDK 安装是否正确 (要求 JDK 17 并确认 JDK 处于环境变量 `PATH` 中)
* 客户端无法登录/连接, 4206, 其他问题... - 大部分情况是因为代理设置本身就是*问题*。
如果使用 Fiddler 请确认 Fiddler 监听端口不是 `8888`
* 启动顺序: MongoDB > Grasscutter > 代理程序 (mitmdump, fiddler 等) > 客户端

View File

@ -1,3 +1,5 @@
import org.gradle.plugins.ide.eclipse.model.SourceFolder
/* /*
* This file was generated by the Gradle 'init' task. * This file was generated by the Gradle 'init' task.
* *
@ -8,7 +10,7 @@
buildscript { buildscript {
repositories { repositories {
maven { url "https://plugins.gradle.org/m2/" } maven { url 'https://plugins.gradle.org/m2/' }
} }
dependencies { dependencies {
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.18' classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.18'
@ -16,38 +18,46 @@ buildscript {
} }
plugins { plugins {
// Apply the application plugin to add support for building a CLI application id 'java' // Apply the java plugin to add support for Java
id 'application' id 'java-library' // Apply the java-library plugin for API and implementation separation.
id 'application' // Apply the application plugin to add support for building a CLI application
id 'com.google.protobuf' version '0.8.18' // Apply the protobuf auto generator
id 'com.diffplug.spotless' version '6.25.0' // Apply the Spotless linter plugin.
// Apply the java plugin to add support for Java id 'eclipse' // Eclipse Support
id 'java' id 'idea' // IntelliJ Support
// Apply the protobuf auto generator id 'maven-publish' // Support for publishing to Maven repositories.
id 'com.google.protobuf' version "0.8.18" id 'signing' // Support for signing build artifacts.
// Eclipse Support id 'io.freefair.lombok' version '8.6' // Lombok for delombok'ification
id 'eclipse'
// IntelliJ Support
id 'idea'
// Maven
id 'maven-publish'
id 'signing'
} }
compileJava.options.encoding = "UTF-8" spotless {
compileTestJava.options.encoding = "UTF-8" java {
target fileTree(rootDir) {
include '**/*.java'
exclude '**/generated/**/*.*'
exclude '.idea/**/*.*'
}
sourceCompatibility = JavaVersion.VERSION_17 importOrder('io.grasscutter', '', 'java', 'javax', '\\#java', '\\#') // Configure import order.
targetCompatibility = JavaVersion.VERSION_17 googleJavaFormat('1.17.0') // Use Google's Java formatter.
formatAnnotations() // Reformat annotations.
endWithNewline() // Ensure files end with a newline.
indentWithTabs(2); indentWithSpaces(4) // Use 4 spaces for indentation.
toggleOffOn() // Toggle off/on.
}
}
group = 'xyz.grasscutters' compileJava.options.encoding = 'UTF-8'
version = '1.2.2-dev' compileTestJava.options.encoding = 'UTF-8'
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
sourceCompatibility = 17 group = 'io.grasscutter'
targetCompatibility = 17 version = '2.0.0-unstable'
java { java {
withJavadocJar() withJavadocJar()
@ -59,48 +69,79 @@ repositories {
} }
dependencies { dependencies {
// Additional JAR libraries.
implementation fileTree(dir: 'lib', include: ['*.jar']) implementation fileTree(dir: 'lib', include: ['*.jar'])
implementation group: 'org.slf4j', name: 'slf4j-api', version: '1.7.36' implementation group: 'it.unimi.dsi', name: 'fastutil', version: '8.5.8'
implementation group: 'ch.qos.logback', name: 'logback-core', version: '1.2.11'
implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.11'
implementation group: 'org.jline', name: 'jline', version: '3.21.0' // Logging libraries.
implementation group: 'org.slf4j', name: 'slf4j-api', version: '2.0.7'
implementation group: 'ch.qos.logback', name: 'logback-core', version: '1.4.14'
implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.4.12'
// Line reading libraries.
implementation group: 'org.jline', name: 'jline', version: '3.25.0'
implementation group: 'org.jline', name: 'jline-terminal-jna', version: '3.21.0' implementation group: 'org.jline', name: 'jline-terminal-jna', version: '3.21.0'
implementation group: 'net.java.dev.jna', name: 'jna', version: '5.10.0' implementation group: 'net.java.dev.jna', name: 'jna', version: '5.10.0'
implementation group: 'io.netty', name: 'netty-common', version: '4.1.79.Final' // Java Netty for networking.
implementation group: 'io.netty', name: 'netty-handler', version: '4.1.79.Final' implementation group: 'io.netty', name: 'netty-common', version: project.netty_version
implementation group: 'io.netty', name: 'netty-transport-native-epoll', version: '4.1.79.Final' implementation group: 'io.netty', name: 'netty-handler', version: project.netty_version
implementation group: 'io.netty', name: 'netty-transport-native-kqueue', version: '4.1.79.Final' implementation group: 'io.netty', name: 'netty-transport-native-epoll', version: project.netty_version
implementation group: 'io.netty', name: 'netty-transport-native-kqueue', version: project.netty_version
// Serialization.
implementation group: 'com.google.code.gson', name: 'gson', version: '2.9.0' implementation group: 'com.google.code.gson', name: 'gson', version: '2.9.0'
implementation group: 'com.google.protobuf', name: 'protobuf-java', version: '3.18.2' implementation group: 'com.google.protobuf', name: 'protobuf-java', version: '3.19.6'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.14.2'
implementation platform('com.fasterxml.jackson:jackson-bom:2.14.0')
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.14.2'
// Reflections libraries.
implementation group: 'org.reflections', name: 'reflections', version: '0.10.2' implementation group: 'org.reflections', name: 'reflections', version: '0.10.2'
implementation group: 'com.esotericsoftware', name: 'reflectasm', version: '1.11.9'
implementation group: 'com.github.davidmoten', name: 'rtree-multi', version: '0.1'
// MongoDB object mapper.
implementation group: 'dev.morphia.morphia', name: 'morphia-core', version: '2.2.7' implementation group: 'dev.morphia.morphia', name: 'morphia-core', version: '2.2.7'
// Utility libraries.
implementation group: 'org.greenrobot', name: 'eventbus-java', version: '3.3.1' implementation group: 'org.greenrobot', name: 'eventbus-java', version: '3.3.1'
//implementation group: 'org.danilopianini', name: 'java-quadtree', version: '0.1.9' // implementation group: 'org.danilopianini', name: 'java-quadtree', version: '0.1.9'
// Long-term scheduler.
implementation group: 'org.quartz-scheduler', name: 'quartz', version: '2.3.2' implementation group: 'org.quartz-scheduler', name: 'quartz', version: '2.3.2'
implementation group: 'org.quartz-scheduler', name: 'quartz-jobs', version: '2.3.2' implementation group: 'org.quartz-scheduler', name: 'quartz-jobs', version: '2.3.2'
// Lua script engine library.
implementation group: 'org.luaj', name: 'luaj-jse', version: '3.0.1' implementation group: 'org.luaj', name: 'luaj-jse', version: '3.0.1'
implementation group: 'com.esotericsoftware', name : 'reflectasm', version: '1.11.9' // Java HTTP server library.
implementation group: 'com.github.davidmoten', name : 'rtree-multi', version: '0.1' implementation group: 'io.javalin', name: 'javalin', version: '5.5.0'
// Java WebSocket server & client library.
implementation group: 'org.java-websocket', name: 'Java-WebSocket', version: '1.5.2'
// Google Protocol Buffer definitions.
// These are the raw '.proto' files.
protobuf files('proto/') protobuf files('proto/')
compileOnly 'org.projectlombok:lombok:1.18.24' // Testing libraries.
annotationProcessor 'org.projectlombok:lombok:1.18.24' testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.8.2'
testCompileOnly 'org.projectlombok:lombok:1.18.24' testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: '5.8.2'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.24' testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.8.2'
// HTTP client library for testing.
testImplementation group: 'com.squareup.okhttp3', name: 'okhttp', version: '4.10.0'
// Lombok.
compileOnly group: 'org.projectlombok', name: 'lombok', version: project.lombok_version
annotationProcessor group: 'org.projectlombok', name: 'lombok', version: project.lombok_version
testCompileOnly group: 'org.projectlombok', name: 'lombok', version: project.lombok_version
testAnnotationProcessor group: 'org.projectlombok', name: 'lombok', version: project.lombok_version
} }
configurations.all { configurations.configureEach {
exclude group: 'org.slf4j', module: 'slf4j' exclude group: 'org.slf4j', module: 'slf4j'
} }
@ -109,19 +150,22 @@ application {
getMainClass().set('emu.grasscutter.Grasscutter') getMainClass().set('emu.grasscutter.Grasscutter')
} }
jar { jar {
exclude '*.proto'
manifest { manifest {
attributes 'Main-Class': 'emu.grasscutter.Grasscutter' attributes 'Main-Class': 'emu.grasscutter.Grasscutter'
} }
archiveBaseName = 'grasscutter' archiveBaseName = 'grasscutter'
if (project.hasProperty('jarFilename')) { if (project.hasProperty('jarFilename')) {
archiveFileName = "${jarFilename}.${extension}" archiveFileName = "${jarFilename}.${archiveExtension}"
} }
from { from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } configurations.runtimeClasspath.collect {
it.isDirectory() ? it : zipTree(it)
}
} }
duplicatesStrategy = DuplicatesStrategy.INCLUDE duplicatesStrategy = DuplicatesStrategy.INCLUDE
@ -130,7 +174,12 @@ jar {
include '*.xml' include '*.xml'
} }
destinationDirectory = file(".") destinationDirectory = file('.')
}
test {
useJUnitPlatform()
setMaxHeapSize('4G')
} }
publishing { publishing {
@ -146,26 +195,22 @@ publishing {
fromResolutionResult() fromResolutionResult()
} }
} }
pom { pom {
name = 'Grasscutter' name = 'Grasscutter'
description = 'A server software reimplementation for an anime game.' description = 'A server software reimplementation for an anime game.'
url = 'https://github.com/Grasscutters/Grasscutter' url = 'https://github.com/Grasscutters/Grasscutter'
licenses { licenses {
license { license {
name = 'The Apache License, Version 2.0' name = 'GNU Affero General Public License, Version 3.0'
url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' url = 'https://www.gnu.org/licenses/agpl-3.0.txt'
} }
} }
developers { developers {
developer { developer {
id = 'meledy' id = 'meledy'
name = 'Meledy' name = 'Meledy'
email = 'meledy@xigam.tech' // not a real email kek email = 'meledy@grasscutter.io' // not a real email kek
}
developer {
id = 'magix'
name = 'Magix'
email = 'magix@xigam.tech'
} }
} }
scm { scm {
@ -176,18 +221,14 @@ publishing {
} }
} }
} }
repositories { repositories {
maven { maven {
if(version.endsWith('-dev')) { if (!version.endsWith('-dev')) {
println ("Publishing to 4benj-maven") if (publish.state.executing) {
url 'https://repo.4benj.com/releases' println('Publishing artifact to Sonatype repository...')
name '4benj-maven'
credentials {
username System.getenv('benj_maven_username')
password System.getenv('benj_maven_token')
} }
} else {
println ("Publishing to sonatype")
def releasesRepoUrl = 'https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/' def releasesRepoUrl = 'https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/'
def snapshotsRepoUrl = 'https://s01.oss.sonatype.org/content/repositories/snapshots/' def snapshotsRepoUrl = 'https://s01.oss.sonatype.org/content/repositories/snapshots/'
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
@ -208,7 +249,7 @@ protobuf {
// The artifact spec for the Protobuf Compiler // The artifact spec for the Protobuf Compiler
artifact = 'com.google.protobuf:protoc:3.18.1' artifact = 'com.google.protobuf:protoc:3.18.1'
} }
// generatedFilesBaseDir = "$projectDir/src/main/java/emu/grasscutter/net/proto/"
generatedFilesBaseDir = "$projectDir/src/generated/" generatedFilesBaseDir = "$projectDir/src/generated/"
} }
@ -219,7 +260,7 @@ sourceSets {
srcDir 'src/generated' srcDir 'src/generated'
} }
java { java {
srcDir 'src/java' srcDir 'src/generated/main/java'
} }
} }
} }
@ -229,50 +270,66 @@ idea {
// proto files and generated Java files are automatically added as // proto files and generated Java files are automatically added as
// source dirs. // source dirs.
// If you have additional sources, add them here: // If you have additional sources, add them here:
sourceDirs += file("/proto/"); sourceDirs += file('/proto/')
} }
} }
eclipse { eclipse {
classpath { classpath {
file.whenMerged { cp -> file.whenMerged {
cp.entries.add( new org.gradle.plugins.ide.eclipse.model.SourceFolder('src/generated/main/java', null) ) cp -> cp.entries.add(new SourceFolder('src/generated/main/java', null))
} }
} }
} }
signing { signing {
if(!version.endsWith('-dev')) { if (!version.endsWith('-dev')) {
sign publishing.publications.mavenJava sign publishing.publications.mavenJava
} }
} }
javadoc { javadoc {
options.encoding = 'UTF-8' options.encoding = 'UTF-8'
if(JavaVersion.current().isJava9Compatible()) { if (JavaVersion.current().isJava9Compatible()) {
options.addBooleanOption('html5', true) options.addBooleanOption('html5', true)
} }
// Add this to avoid warning caused by lack of comments in proto generated java files
options.addStringOption('Xdoclint:none', '-quiet')
exclude '**/*.md'
exclude 'src/generated/**/*.*'
} }
task injectGitHash { tasks.register('injectGitHash') {
def gitCommitHash = { def gitCommitHash = {
try { try {
return 'git rev-parse --verify --short HEAD'.execute().text.trim() return 'git rev-parse --verify --short HEAD'.execute().text.trim()
} catch (ignored) { } catch (ignored) {
return "GIT_NOT_FOUND" return 'GIT_NOT_FOUND'
} }
} }
new File(projectDir, "src/main/java/emu/grasscutter/BuildConfig.java").text = new File(projectDir, 'src/main/java/emu/grasscutter/BuildConfig.java').text = """package emu.grasscutter;
"""package emu.grasscutter;
public final class BuildConfig { public final class BuildConfig {
public static final String VERSION = \"${version}\"; public static final String VERSION = \"${version}\";
public static final String GIT_HASH = \"${gitCommitHash()}\"; public static final String GIT_HASH = \"${gitCommitHash()}\";
}""" }"""
} }
processResources { processResources {
dependsOn "generateProto" dependsOn 'generateProto'
}
sourcesJar {
dependsOn 'generateProto'
}
delombok {
dependsOn 'generateProto'
}
// For terminal interacting in IDEA running
run {
standardInput = System.in
} }

View File

@ -0,0 +1,81 @@
package emu.grasscutter.gen;
import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.TaskAction;
import org.gradle.api.tasks.options.Option;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import static java.lang.System.lineSeparator;
import static java.nio.file.Files.readAllLines;
import static java.nio.file.Files.writeString;
/**
* Task that can be used for generating/updating activity conditions enum. These
* activities come from Resources/ExcelBinOutput/NewActivityCondExcelConfigData.json
* resource file. Format file with formatter after this job is executed
* <br />
* Usage example: <i>./gradlew generateActivityConditions --conf-file=/Users/xxx/IdeaProjects/Grasscutter_Resources/Resources/ExcelBinOutput/NewActivityCondExcelConfigData.json</i>
*/
public class GenerateActivityConditions extends DefaultTask {
private static final Logger log = LoggerFactory.getLogger(GenerateActivityConditions.class);
private static final String ACTIVITY_CONDITIONS_SRC = "/src/main/java/emu/grasscutter/game/activity/condition/ActivityConditions.java";
private static final String activityClassStart = """
package emu.grasscutter.game.activity;
public enum ActivityConditions {
""";
@Option(option = "conf-file", description = "Path to NewActivityCondExcelConfigData.json")
String confFile;
@SuppressWarnings("unused") //Used by Gradle
public void setConfFile(String confFile) {
this.confFile = confFile;
}
@TaskAction
void run() {
List<String> configFileContent = getFileContent(confFile);
Set<String> configEnums = configFileContent.stream()
.filter(s -> s.contains("\"type\":"))
.map(s -> s.split("\"")[3])
.map(s -> " " + s)
.collect(Collectors.toSet());
String finalActivityClass =
activityClassStart +
String.join("," + lineSeparator(), configEnums) + lineSeparator() + "}";
writeFile(finalActivityClass, Path.of(getProject().getProjectDir() + ACTIVITY_CONDITIONS_SRC));
log.info("Successfully added {} enums to {}", configEnums.size(), ACTIVITY_CONDITIONS_SRC);
}
private List<String> getFileContent(String path) {
try {
return readAllLines(Path.of(confFile));
} catch (IOException e) {
log.error("Cannot read file: {}", path);
throw new RuntimeException(e);
}
}
private void writeFile(String content, Path path) {
try {
writeString(path, content, StandardCharsets.UTF_8);
} catch (IOException e) {
log.error("Cannot read file: {}", path);
throw new RuntimeException(e);
}
}
}

View File

@ -1,9 +1,10 @@
![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light) ![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light)
<div align="center"><img alt="Documention" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/workflow/status/Grasscutters/Grasscutter/Build?logo=github&style=for-the-badge"></div> <div align="center"><img alt="Documention" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/Grasscutters/Grasscutter/build.yml?branch=development&logo=github&style=for-the-badge"></div>
<div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div> <div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div>
עברית | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [EN](README.md) | [ES](README_es-ES.md) | [RU](README_ru-RU.md) [EN](../README.md) | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md) | [PL](README_pl-PL.md) | [ID](README_id-ID.md) | [KR](README_ko-KR.md) | [FIL/PH](README_fil-PH.md) | [NL](README_NL.md) | [JP](README_ja-JP.md) | [IT](README_it-IT.md) | [VI](README_vi-VN.md) | [हिंदी](README_hn-IN.md)
**תשומת לב בבקשה:** אנחנו מקבלים עזרה בפיתוח התוכנה. לפני שאתם תורמים לפרויקט בבקשה תקראו את [תנאי השימוש](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md). **תשומת לב בבקשה:** אנחנו מקבלים עזרה בפיתוח התוכנה. לפני שאתם תורמים לפרויקט בבקשה תקראו את [תנאי השימוש](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md).
## אפשרויות זמינות כרגע ## אפשרויות זמינות כרגע
@ -65,7 +66,7 @@ certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
-עריכת [קובץ הHosts](https://github.com/Melledy/Grasscutter/wiki/Running#traffic-route-map) -עריכת [קובץ הHosts](https://github.com/Grasscutters/Grasscutter/wiki/Running#traffic-route-map)
2. תשנו את שרת בproxy שלכם ל`127.0.0.1:8080` 2. תשנו את שרת בproxy שלכם ל`127.0.0.1:8080`

126
docs/README_NL.md Normal file
View File

@ -0,0 +1,126 @@
![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light)
<div align="center"><img alt="Documentation" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/Grasscutters/Grasscutter/build.yml?branch=development&logo=github&style=for-the-badge"></div>
<div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div>
[EN](../README.md) | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md) | [PL](README_pl-PL.md) | [ID](README_id-ID.md) | [KR](README_ko-KR.md) | [FIL/PH](README_fil-PH.md) | [NL](README_NL.md) | [JP](README_ja-JP.md) | [IT](README_it-IT.md) | [VI](README_vi-VN.md) | [हिंदी](README_hn-IN.md)
**Aantekening:** We verwelkomen altijd bijdragers aan het project. Lees onze [Gedragscode](https://github.com/Grasscutters/Grasscutter/blob/development/README_NL.md#bijdragen-aan-het-project) zorgvuldig door voordat u uw bijdrage toevoegt.
## Huidige functies
* inloggen
* Combat
* Vriendenlijst
* Teleportatie
* Gacha systeem
* Co-op werkt (gedeeltelijk)
* Monsters spawnen via console
* Inventaris functies (ontvangen van items / karakters, upgraden van items / karakters, enz.)
## Snelle installatie gids
**Note:** Voor ondersteuning kunt u lid worden van onze [Discord](https://discord.gg/T5vZU6UyeG).
### Vereisten
* [Java SE - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
**Note:** Als u het alleen wilt **draaien**, dan is **jre** alleen prima.
* [MongoDB](https://www.mongodb.com/try/download/community) (aanbevolen 4.0+)
* Proxy Daemon: [mitmproxy](https://mitmproxy.org/) (mitmdump, aanbevolen), [Fiddler Classic](https://telerik-fiddler.s3.amazonaws.com/fiddler/FiddlerSetup.exe), enz.
### Opstarten
**Note:** Als u vanaf een oudere versie heeft geupdate, verwijder dan `config.json` om het te regenereren.
1. Verkrijg `grasscutter.jar`
- Download van [actions](https://github.com/Grasscutters/Grasscutter/actions) of [bouw de jar zelf](#Bouwen)
2. Maak een `resources` map aan in de directory waar grasscutter.jar staat en verplaats je `BinOutput, ExcelBinOutput, Readables, Scripts, Subtitle, TextMap` mappen daarheen *(Check de [wiki](https://github.com/Grasscutters/Grasscutter/wiki) voor meer details hoe je die krijgt.)*
3. Start Grasscutter met `java -jar grasscutter.jar`. **Zorg ervoor dat de mongodb service ook draait.**
### Verbinden met de client
½. Maak een account aan met [server console command](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting).
1. Verkeer omleiden: (kies er een)
- mitmdump: `mitmdump -s proxy.py -k`
Vertrouw CA certificaat:
**Note:** Het CA certificaat is meestal opgeslagen in `%USERPROFILE%.mitmproxy`, of je kan het downloaden van `http://mitm.it`
Dubbelklik voor [install](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate) of ...
- Via de commandoregel
```Shell
certutil -addstore root %USERPROFILE%%%.mitmproxymitmproxy-ca-cert.cer
```
- Fiddler Classic: Start Fiddler Classic, zet `Decrypt https traffic` aan in setting en verander de standaard poort daar (Tools -> Options -> Connections) in iets anders dan `8888`, en laad [dit script](https://github.com/Grasscutters/Grasscutter/wiki/Resources#fiddler-classic-jscript).
- [Hosts file](https://github.com/Grasscutters/Grasscutter/wiki/Resources#hosts-file)
2. Stel de netwerk proxy in op `127.0.0.1:8080` of de proxy poort die u heeft opgegeven.
**U kunt ook `start.cmd` gebruiken om servers en proxy daemons automatisch te starten, maar dan moet u JAVA_HOME enviroment en `start_config.cmd` instellen.**
### Bouwen
Grasscutter gebruikt Gradle om afhankelijkheden en bouwen af te handelen.
**Vereisten:**
- [Java SE Development Kits - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
- [Git](https://git-scm.com/downloads)
##### Windows
```Shell
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
.\gradlew.bat # Instellen van omgevingen
.gradlew jar # Compileren
```
##### Linux
```bash
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
chmod +x gradlew
./gradlew jar # Compileer
```
U kunt de output jar vinden in de root van de project map.
### Commando's zijn verplaatst naar de [wiki](https://github.com/Grasscutters/Grasscutter/wiki/Commands)!
# Quick Troubleshooting
* Als het compileren niet succesvol was, controleer dan je JDK installatie (JDK 17 en gevalideerde JDK's bin PATH variabele)
* Mijn client maakt geen verbinding, logt niet in, 4206, etc... - Meestal is je proxy daemon setup *het probleem*, als je
Fiddler gebruik, zorg ervoor dat het op een andere poort draait behalve 8888
* Opstart volgorde: MongoDB > Grasscutter > Proxy daemon (mitmdump, fiddler, enz.) > Game
# Bijdragen aan het project
Let op: we hebben een gedragscode, volg deze alsjeblieft in al je interacties met het project. Als je nog vragen hebt, maak dan een issue aan of vraag het in de Discord server.
- Repareer/toevoeg alleen de functionaliteit in kwestie OF pak wijdverspreide witruimte/stijl problemen aan, niet beide.
- Pak een enkel probleem aan met zo min mogelijk gewijzigde regels.
**Maak geen pull request om samen te voegen in stable tenzij het een hotfix is. Gebruik in plaats daarvan de development branch.**
## Pull Request Proces
1. Zorg ervoor dat alle installatie- of build-afhankelijkheden verwijderd zijn voor het einde van de laag wanneer u een build doet.
2. 2. Werk de README.md en wiki bij met details van wijzigingen aan de interface, inclusief nieuwe omgevingsvariabelen, blootgestelde poorten, nuttige bestandslocaties en containerparameters.
3. Schrijf met detail op je pull request beschrijving wat je hebt gecommit, om het makkelijker te maken voor de medewerkers om een changelog te maken.

View File

@ -1,9 +1,9 @@
![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light) ![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light)
<div align="center"><img alt="Documentation" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/workflow/status/Grasscutters/Grasscutter/Build?logo=github&style=for-the-badge"></div> <div align="center"><img alt="Documentation" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/Grasscutters/Grasscutter/build.yml?branch=development&logo=github&style=for-the-badge"></div>
<div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div> <div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div>
[EN](README.md) | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [HE](README_HE.md) | ES | [RU](README_ru-RU.md) [EN](../README.md) | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md) | [PL](README_pl-PL.md) | [ID](README_id-ID.md) | [KR](README_ko-KR.md) | [FIL/PH](README_fil-PH.md) | [NL](README_NL.md) | [JP](README_ja-JP.md) | [IT](README_it-IT.md) | [VI](README_vi-VN.md) | [हिंदी](README_hn-IN.md)
**Atención:** Siempre damos la bienvenida a contribuidores del proyecto. Antes de añadir tu contribución, por favor lee cuidadosamente nuestro [Código de conducta](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md). **Atención:** Siempre damos la bienvenida a contribuidores del proyecto. Antes de añadir tu contribución, por favor lee cuidadosamente nuestro [Código de conducta](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md).
@ -63,11 +63,11 @@
- Fiddler Classic: Ejecuta Fiddler Classic, activa `Decrypt https traffic` en las opciones y cambia el puerto por defecto ahí (Herramientas -> Opciones -> Conexiones) a alguno que no sea `8888`, y carga [este script](https://github.lunatic.moe/fiddlerscript). - Fiddler Classic: Ejecuta Fiddler Classic, activa `Decrypt https traffic` en las opciones y cambia el puerto por defecto ahí (Herramientas -> Opciones -> Conexiones) a alguno que no sea `8888`, y carga [este script](https://github.lunatic.moe/fiddlerscript).
- [Archivo Hosts](https://github.com/Melledy/Grasscutter/wiki/Running#traffic-route-map) - [Archivo Hosts](https://github.com/Grasscutters/Grasscutter/wiki/Running#traffic-route-map)
2. Establece el proxy de red a `127.0.0.1:8080` o el puerto de proxy que pusiste. 2. Establece el proxy de red a `127.0.0.1:8080` o el puerto de proxy que pusiste.
**también puedes usar `start.cmd` para iniciar el servidor y el servicio de proxy automáticamente, pero tienes que configurar el entorno JAVA_HOME** **También puedes usar `start.cmd` para iniciar el servidor y el servicio de proxy automáticamente, pero tienes que configurar el entorno JAVA_HOME**
### Construcción ### Construcción
@ -106,4 +106,3 @@ Podrás encontrar el jar generado en la carpeta raíz del proyecto.
* Mi cliente no conecta, no inicia sesión, 4206, etc... - Probablemente, tu configuración del proxy es *el problema*, si usas * Mi cliente no conecta, no inicia sesión, 4206, etc... - Probablemente, tu configuración del proxy es *el problema*, si usas
Fiddler asegúrate de que está usando un puerto distinto al 8888 Fiddler asegúrate de que está usando un puerto distinto al 8888
* Secuencia de inicio: MongoDB > Grasscutter > Servicio de proxy (mitmdump, fiddler, etc.) > Juego * Secuencia de inicio: MongoDB > Grasscutter > Servicio de proxy (mitmdump, fiddler, etc.) > Juego

106
docs/README_fil-PH.md Normal file
View File

@ -0,0 +1,106 @@
![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light)
<div align="center"><img alt="Documentation" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/Grasscutters/Grasscutter/build.yml?branch=development&logo=github&style=for-the-badge"></div>
<div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div>
[EN](../README.md) | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md) | [PL](README_pl-PL.md) | [ID](README_id-ID.md) | [KR](README_ko-KR.md) | [FIL/PH](README_fil-PH.md) | [NL](README_NL.md) | [JP](README_ja-JP.md) | [IT](README_it-IT.md) | [VI](README_vi-VN.md) | [हिंदी](README_hn-IN.md)
**Atensyon:** Ang mga kontributor ay laging welcome sa proyektong ito. Bago mag-bigay ng kontribusyon, basahin muna ng mabuti ang [Code of Conduct](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md).
## Ang mga kasalukuyang features
* Logging in
* Combat
* Friends list
* Teleportation
* Gacha system
* Co-op *partially* works
* Spawning monsters via console
* Inventory features (receiving items/characters, upgrading items/characters, etc)
## Quick setup guide
**Atensyon:** Para sa mga nangangailangan ng suporta, maaari kang sumali sa aming server [Discord](https://discord.gg/T5vZU6UyeG).
### Ang mga kailangan
* [Java SE - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) or higher
**Atensyon:** Kung gusto mo lang **paganahin** ang server, pwede naman ang **jre**.
* [MongoDB](https://www.mongodb.com/try/download/community) (recommended 4.0+)
* Proxy Daemon: [mitmproxy](https://mitmproxy.org/) (mitmdump, recommended), [Fiddler Classic](https://telerik-fiddler.s3.amazonaws.com/fiddler/FiddlerSetup.exe), etc.
### Running
**Atensyon:** Kung nag-update ka galing sa lumang version, paki-delete ang `config.json` para mag-regenerate ulit.
1. Get `grasscutter.jar`
- I-download mo sa [releases](https://github.com/Grasscutters/Grasscutter/releases/latest) o sa [actions](https://github.com/Grasscutters/Grasscutter/actions/workflows/build.yml) o [bumuo ng iyong sariling server](#building).
2. Gawa ka ng `resources` folder sa directory kung nasaan ang grasscutter.jar at ilagay ang `BinOutput, ExcelBinOutput, Readables, Scripts, Subtitle, TextMap` folders sa loob ng resources folder *(Tingnan mo ang [wiki](https://github.com/Grasscutters/Grasscutter/wiki) para malaman mo kung saan mo makukuha yan)*
3. Paandarin ang Grasscutter gamit ang command na `java -jar grasscutter.jar`. **Siguraduhin mo na ang mongodb service ay naka-open din.**
### Connecting with the client
½. Gumawa ng account sa server console gamit ang [command](https://github.com/Grasscutters/Grasscutter/wiki/Commands#:~:text=account%20%3Ccreate|delete%3E%20%3Cusername%3E%20[UID]) na ito.
1. Redirect traffic: (pumili lang dapat ng isa)
- mitmdump: `mitmdump -s proxy.py -k`
- Trust CA certificate:
- Ang CA certificate ay nasa `%USERPROFILE%\.mitmproxy`, i-double click ang `mitmproxy-ca-cert.cer` para ma-[install](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate) o...
- Via command line *(kailangan ng administration privileges)*
```shell
certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
```
- Fiddler Classic: Paadarin ang Fiddler Classic, turn on mo yung `Decrypt https traffic` sa (Tools -> Options -> HTTPS) at baguhin mo ang default port na nakalagay (Tools -> Options -> Connections) sa anumang numero maliban sa `8888`, i-load ang [script](https://github.com/Grasscutters/Grasscutter/wiki/Resources#fiddler-classic-jscript) na ito (copy and paste ang script sa `FiddlerScript` tab) at i-click ang `Save Script` button.
- [Hosts file](https://github.com/Grasscutters/Grasscutter/wiki/Resources#hosts-file)
2. Set mo ung proxy sa `127.0.0.1:8080` or dun sa proxy port na iyong inilagay.
- Para sa mitmproxy: Pagkatapos mong i-setup ang network proxy at sa pag-install ng certificate, tingnan mo sa http://mitm.it/ kung ang traffic ay dumadaan sa mitmproxy.
**Pwede mo rin gamitin ang `start.cmd` to start the servers and proxy daemons automatically, pero kailagan mong i-setup ang JAVA_HOME environment at i-configure ang `start_config.cmd` file.**
### Building
Ang Grasscutter ay gumagamit ng Gradle para sa depedencies at building.
**Mga kailangan:**
- [Java SE Development Kits - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) or higher
- [Git](https://git-scm.com/downloads)
##### Windows
```shell
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
.\gradlew.bat # Setting up environments
.\gradlew jar # Compile jar
```
##### Linux
```bash
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
chmod +x gradlew
./gradlew jar # Compile jar
```
Pag-katapos mong i-compile, check mo yung project directory at makikita mo yung jar na kinompile mo. Usually pag-dev version, ang dapat nakalagay diyan ay `grasscutter-<version>-dev.jar`.
### Ang mga server commands ay nasa [wiki](https://github.com/Grasscutters/Grasscutter/wiki/Commands) na!
# Quick Troubleshooting
* Kung hindi nag-compile, paki-check ung JDK installation mo (JDK 17 at JDK's bin PATH variable).
* Hindi ako maka-connect, ayaw mag-login, 4206, etc... - Mostly ang proxy setup mo ang may kasalanan niyan, kung gamit mo ay Fiddler, paki-sigurado na naka-set ung port sa kahit ano except sa 8888.
* Ang pagkakasunud-sunod: MongoDB > Grasscutter > Proxy Daemon (mitmdump, fiddler, etc.) > Game

74
docs/README_fr-FR.md Normal file
View File

@ -0,0 +1,74 @@
![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light)
<div align="center"><img alt="Documention" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/Grasscutters/Grasscutter/build.yml?branch=development&logo=github&style=for-the-badge"></div>
<div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div>
[EN](../README.md) | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md) | [PL](README_pl-PL.md) | [ID](README_id-ID.md) | [KR](README_ko-KR.md) | [FIL/PH](README_fil-PH.md) | [NL](README_NL.md) | [JP](README_ja-JP.md) | [IT](README_it-IT.md) | [VI](README_vi-VN.md) | [हिंदी](README_hn-IN.md)
**Attention:** De nouveaux contributeurs sont toujours les bienvenus. Avant d'ajouter votre contribution, veuillez lire le [code de conduite](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md).
## Fonctionnalités actuelles :
* Connection
* Combat
* Liste d'amis
* Téléportation
* Système de gacha
* Le multijoueur fonctionne *partiellement*
* Apparition de monstres via la console
* Inventaire (obtention d'objets/de personnages, amélioration d'objets/personnages, etc)
## Guide d'installation rapide
**Note:** Pour obtenir un support, rejoignez notre serveur [Discord](https://discord.gg/T5vZU6UyeG) (en anglais).
### Démarage rapide (Automatique)
- Téléchargez Java 17: https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html
- Téléchargez [MongoDB Community Server](https://www.mongodb.com/try/download/community)
- Téléchargez la version du jeu REL3.7 (Le client de jeut peut être obtenu ici si vous ne l'avez pas): https://github.com/MAnggiarMustofa/GI-Download-Library/blob/main/GenshinImpact/Client/3.7.0.md
- Téléchargez la [dernière version de Cultivation](https://github.com/Grasscutters/Cultivation/releases/latest). Ulilisez l'installateur en `.msi`.
- Après avoir ouvert Cultivation (en administrateur), appuyez sur le bouton de téléchargement en haut a droite.
- Cliquez sur le bouton `Téléchargez tout-en-un`
- Cliquez sur l'engrenage dans le coin en haut a droite.
- Définisez l'emplacement d'installation du jeu.
- Définisez le chemin Java personnalisé à `C:\Program Files\Java\jdk-17\bin\java.exe`
- Laissez tous les autres paramètes par défauts
- Appuyez sur le bouton a coté de Lancer.
- Appuyez sur le bouton Lancer.
- Connectez vous avec le nom d'utilisateur que vous voulez. Le mot de passe n'a pas d'importance.
### Compilation
Grasscutter utilise Gradle pour la gestion des dépendances et la compilation.
**Prérequis**
- [Java SE Development Kits - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) ou plus récent
- [Git](https://git-scm.com/downloads)
##### Windows
```shell
git clone --recurse-submodules https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
.\gradlew.bat # Setting up environments
.\gradlew jar # Compile
```
##### Linux (GNU)
```bash
git clone --recurse-submodules https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
chmod +x gradlew
./gradlew jar # Compile
```
Vous pouvez trouver le jar de sortie dans la racine du dossier du projet.
### Dépanage
Pour une liste des problèmes communs et leur solution et pour demander de l'aide, veuillez rejoindre [notre serveur Discord](https://discord.gg/T5vZU6UyeG) (en anglais) et dirigez vous vers le salon de support.

78
docs/README_hn-IN.md Normal file
View File

@ -0,0 +1,78 @@
![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light)
<div align="center"><img alt="Documentation" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/Grasscutters/Grasscutter/build.yml?branch=development&logo=github&style=for-the-badge"></div>
<div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div>
[EN](../README.md) | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md) | [PL](README_pl-PL.md) | [ID](README_id-ID.md) | [KR](README_ko-KR.md) | [FIL/PH](README_fil-PH.md) | [NL](README_NL.md) | [JP](README_ja-JP.md) | [IT](README_it-IT.md) | [VI](README_vi-VN.md) | [हिंदी](README_hn-IN.md)
**ध्यान:** हम हमेशा परियोजना में योगदानकर्ताओं का स्वागत करते हैं।. अपना योगदान जोड़ने से पहले कृपया हमारा ध्यानपूर्वक पढ़ें [आचार संहिता](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md).
## वर्तमान सुविधाएँ
* लॉग इन करना
* युद्ध
* मित्रों की सूची
* टेलीपोर्टेशन
* गाचा प्रणाली
* सह-ऑप * आंशिक रूप से * काम करता है
* कंसोल के माध्यम से राक्षसों को जन्म देना
* इन्वेंट्री सुविधाएँ (आइटम / वर्ण प्राप्त करना, आइटम / वर्णों को अपग्रेड करना, आदि)
## त्वरित सेटअप गाइड
**टिप्पणी**: समर्थन के लिए कृपया हमसे जुड़ें [Discord](https://discord.gg/T5vZU6UyeG).
### त्वरित प्रारंभ (स्वचालित)
- Get Java 17: https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html
**ध्यान दें:** बस **सर्वर शुरू करने** के लिए, आपको बस **jre** की आवश्यकता है।
- Get [MongoDB Community Server](https://www.mongodb.com/try/download/community)
* प्रॉक्सी: मिटमडंप (अनुशंसित), मिटमप्रॉक्सी, फिडलर क्लासिक, आदि।
- गेम संस्करण REL3.7 प्राप्त करें (यदि आपके पास 3.7 क्लाइंट नहीं है तो उसे यहां पाया जा सकता है):: https://github.com/MAnggiarMustofa/GI-Download-Library/blob/main/GenshinImpact/Client/3.7.0.md
- डाउनलोड करें [latest Cultivation version](https://github.com/Grasscutters/Cultivation/releases/latest). उपयोग `.msi` इंस्टालरr.
- कलिवेशन (एडमिन के रूप में) खोलने के बाद, ऊपरी दाएं कोने में डाउनलोड बटन दबाएं।
- `डाउनलोड ऑल-इन-वन` पर क्लिक करें
- ऊपरी दाएं कोने में गियर पर क्लिक करें
- गेम इंस्टॉल पथ को उस स्थान पर सेट करें जहां आपका गेम स्थित है.
- कस्टम जावा पथ को इस पर सेट करें `C:\Program Files\Java\jdk-17\bin\java.exe`
- अन्य सभी सेटिंग्स को डिफ़ॉल्ट पर छोड़ दें
- लॉन्च करने के लिए आगे छोटे बटन पर क्लिक करें.
- लॉन्च बटन पर क्लिक करें.
- आप जो भी उपयोगकर्ता नाम चाहते हैं उसके साथ लॉग इन करें। पासवर्ड कोई मायने नहीं रखता.
### इमारत
ग्रासकटर निर्भरता और निर्माण को संभालने के लिए ग्रैडल का उपयोग करता है।
**आवश्यकताएं:**
- [Java SE Development Kits - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) or higher
- [Git](https://git-scm.com/downloads)
##### विंडोज
```shell
git clone --recurse-submodules https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
.\gradlew.bat # Setting up environments
.\gradlew jar # Compile
```
##### लिनक्स (जीएनयू)
```bash
git clone --recurse-submodules https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
chmod +x gradlew
./gradlew jar # Compile
```
आप आउटपुट जार को प्रोजेक्ट फ़ोल्डर के रूट में पा सकते हैं।.
### समस्या निवारण
सामान्य मुद्दों और समाधानों की सूची और सहायता मांगने के लिए कृपया शामिल हों [our Discord server](https://discord.gg/T5vZU6UyeG) और सपोर्ट चैनल पर जाएं.

108
docs/README_id-ID.md Normal file
View File

@ -0,0 +1,108 @@
![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light)
<div align="center"><img alt="Documentation" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/Grasscutters/Grasscutter/build.yml?branch=development&logo=github&style=for-the-badge"></div>
<div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div>
[EN](../README.md) | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md) | [PL](README_pl-PL.md) | [ID](README_id-ID.md) | [KR](README_ko-KR.md) | [FIL/PH](README_fil-PH.md) | [NL](README_NL.md) | [JP](README_ja-JP.md) | [IT](README_it-IT.md) | [VI](README_vi-VN.md) | [हिंदी](README_hn-IN.md)
**Perhatian:** Kami selalu menyambut kontributor untuk proyek ini. Sebelum menambahkan kontribusi Anda, harap baca [Kode Etik](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md) kami.
## Fitur terkini
* Logging in
* Pertempuran
* Daftar teman
* Teleportasi
* Sistem gacha
* Co-op *sebagian* berfungsi
* Memunculkan monster melalui konsol
* Fitur inventaris (menerima item/karakter, meng-upgrade item/karakter, dll)
## Panduan penyiapan cepat
**Catatan:** Untuk dukungan, silakan bergabung dengan [Discord](https://discord.gg/T5vZU6UyeG) kami.
### Requirements
* Java SE - 17 ([link](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html))
**Catatan:** Jika Anda hanya ingin **menjalankannya**, maka **jre** saja sudah cukup.
* [MongoDB](https://www.mongodb.com/try/download/community) (recommended 4.0+)
* Daemon proksi: mitmproxy (mitmdump, direkomendasikan), Fiddler Classic, etc.
### Menjalankan
**Catatan:** Jika Anda memperbarui dari versi lama, hapus `config.json` untuk membuatnya kembali.
1. Dapatkan `grasscutter.jar`
- Download dari [actions](https://github.com/Grasscutters/Grasscutter/suites/6895963598/artifacts/267483297)
- [Bangun sendiri](#Membangun)
2. Buat folder `resources` di direktori tempat grasscutter.jar berada dan pindahkan folder `BinOutput` dan `ExcelBinOutput` ke sana *(Periksa [wiki](https://github.com/Grasscutters/Grasscutter/wiki) untuk detail lebih lanjut tentang cara mendapatkannya.)*
3. Jalankan Grasscutter dengan `java -jar grasscutter.jar`. **Pastikan layanan mongodb juga berjalan.**
### Connecting to the client
½. Buat akun dengan menggunakan [server console command](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting).
1. Pengalihan traffic: (pilih salah satu)
- mitmdump: `mitmdump -s proxy.py -k`
Trust CA certificate:
**Catatan:** Sertifikat CA biasanya disimpan di `%USERPROFILE%\ .mitmproxy`, atau anda dapat download dari `http://mitm.it`
klik dua kali untuk [menginstall](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate) ataupun juga
- melalui command line
```shell
certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
```
- Fiddler Classic: Jalankan Fiddler Classic, nyalakan `Decrypt https traffic` dalam setting dan ubah port default di sana (Tools -> Options -> Connections) ke apa pun selain `8888`, dan muat [skrip ini](https://github.lunatic.moe/fiddlerscript).
- [File host](https://github.com/Grasscutters/Grasscutter/wiki/Running#traffic-route-map)
2. Atur proxy jaringan ke `127.0.0.1:8080` atau port proxy yang anda tentukan.
**Anda juga dapat menggunakan `start.cmd` untuk memulai server dan proxy daemon secara otomatis, tetapi Anda harus mengatur JAVA_HOME enviroment**
### Membangun
Grasscutter menggunakan Gradle untuk menangani dependensi & pembangunan.
**Requirements:**
- [Java SE Development Kits - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
- [Git](https://git-scm.com/downloads)
##### Windows
```shell
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
.\gradlew.bat # Setting up environments
.\gradlew jar # Compile
```
##### Linux
```bash
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
chmod +x gradlew
./gradlew jar # Compile
```
Anda bisa menemukan output jar di root folder proyek.
### Commands telah dipindahkan ke [wiki](https://github.com/Grasscutters/Grasscutter/wiki/Commands)!
# Quick Troubleshooting
* Jika kompilasi tidak berhasil, periksa instalasi JDK Anda (JDK 17 dan validasi variabel bin PATH JDK)
* Klien saya tidak terhubung, tidak login, 4206, dan lain-lain - Sebagian besar pengaturan daemon proxy Anda adalah *masalahnya*, jika menggunakan
Fiddler pastikan berjalan pada port lain kecuali 8888
* Urutan startup: MongoDB > Grasscutter > Proxy daemon (mitmdump, fiddler, etc.) > Game

108
docs/README_it-IT.md Normal file
View File

@ -0,0 +1,108 @@
![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light)
<div align="center"><img alt="Documentation" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/Grasscutters/Grasscutter/build.yml?branch=development&logo=github&style=for-the-badge"></div>
<div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div>
[EN](../README.md) | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md) | [PL](README_pl-PL.md) | [ID](README_id-ID.md) | [KR](README_ko-KR.md) | [FIL/PH](README_fil-PH.md) | [NL](README_NL.md) | [JP](README_ja-JP.md) | [IT](README_it-IT.md) | [VI](README_vi-VN.md) | [हिंदी](README_hn-IN.md)
**Attenzione:** Diamo sempre il benvenuto ai contributori del progetto. Prima di contribuire, leggi attentamente il nostro [Codice di condotta](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md).
## Funzionalità attuali
* Login
* Combattimento
* Lista di amici
* Teletrasporto
* Sistema Gacha
* Cooperativa *parzialmente* funzionale
* Evocazione nemici usando la console
* Inventario (ricevi e aggiorna oggetti/personaggi, ecc.)
## Guida rapida all'installazione
**Nota:** Se hai bisogno di aiuto, unisciti al nostro [Discord](https://discord.gg/T5vZU6UyeG).
### Requisiti
* Java SE - 17 ([link](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html))
**Nota:** se vuoi solo **eseguirlo**, **jre** è sufficiente.
* [MongoDB](https://www.mongodb.com/try/download/community) (consigliato 4.0+)
* Servizi proxy: mitmproxy (mitmdump, consigliato), Fiddler Classic, ecc.
### Esecuzione
**Nota:** Se hai aggiornato da una versione precedente, elimina `config.json` in modo che venga generato di nuovo.
1. Ottieni "grasscutter.jar".
- Scarica da [azioni](https://github.com/Grasscutters/Grasscutter/suites/6895963598/artifacts/267483297)
- [Compilalo tu stesso](#Compilazione)
2. Crea una cartella chiamata `resources` nella directory in cui si trova grasscutter.jar e sposta lì le cartelle `BinOutput` ed `ExcelBinOutput` *(Vedi il [wiki](https://github.com/Grasscutters/Grasscutter/wiki ) per maggiori dettagli su come ottenerli.)*
3. Esegui Grasscutter con `java -jar grasscutter.jar`. **Assicurati che il servizio mongodb sia attivo.**
### Connessione al client
½. Crea un account usando [il comando corrispondente nella console del server](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting).
1. Reindirizza il traffico: (scegli uno)
- Con mitmdump: `mitmdump -s proxy.py -k`
Autorizza il certificato CA:
**Nota:**Il certificato CA si trova solitamente in `%USERPROFILE%\ .mitmproxy`, oppure puoi scaricarlo da `http://mitm.it`
Fai doppio clic su [installa](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate) o ...
- Con riga di comando
```shell
certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
```
- Con Fiddler Classic: esegui Fiddler Classic, abilita `Decrypt https traffic` nelle opzioni e cambia la porta predefinita in (Strumenti -> Opzioni -> Connessioni) in qualcosa di diverso da `8888`, e carica [questo script](https://github.lunatic.moe/fiddlerscript).
- [File host](https://github.com/Grasscutters/Grasscutter/wiki/Running#traffic-route-map)
2. Imposta il proxy di rete a `127.0.0.1:8080` o la porta proxy impostata.
**Puoi anche usare `start.cmd` per avviare automaticamente il server e il servizio proxy, ma devi impostare l'ambiente JAVA_HOME**
### Compilazione
Grasscutter usa Gradle per gestire le dipendenze e le build.
**Requisiti:**
- [Kit di sviluppo Java SE - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
- [Git](https://git-scm.com/downloads)
##### Windows
```shell
git clone https://github.com/Grasscutters/Grasscutter.git
cd grasscutter
.\gradlew.bat # Impostazioni dell'ambiente
.\gradlew jar # Compila
```
##### Linux
```bash
git clone https://github.com/Grasscutters/Grasscutter.git
cd grasscutter
chmod +x gradlew
./gradlew jar # Compila
```
Puoi trovare il jar generato nella cartella principale del progetto.
### I comandi sono stati spostati al [wiki](https://github.com/Grasscutters/Grasscutter/wiki/Commands)!
# Soluzioni agli errori comuni
* Se la compilazione non riesce, controlla l'installazione di JDK (JDK 17 e convalida la variabile JDK bin PATH)
* Se il tuo client non si connette, non accede, da errore 4206, ecc... - Probabilmente *il problema* sono le tue impostazioni proxy, se usi
Fiddler assicurati di utilizzare una porta diversa da 8888
* Sequenza di avvio: MongoDB > Grasscutter > Servizio proxy (mitmdump, fiddler, ecc.) > Gioco

100
docs/README_ja-JP.md Normal file
View File

@ -0,0 +1,100 @@
![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light)
<div align="center"><img alt="Documentation" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/Grasscutters/Grasscutter/build.yml?branch=development&logo=github&style=for-the-badge"></div>
<div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div>
[EN](../README.md) | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md) | [PL](README_pl-PL.md) | [ID](README_id-ID.md) | [KR](README_ko-KR.md) | [FIL/PH](README_fil-PH.md) | [NL](README_NL.md) | [JP](README_ja-JP.md) | [IT](README_it-IT.md) | [VI](README_vi-VN.md) | [HI](README_hn-IN.md)
**Attention:** 私たちはプロジェクトへのコントリビュータをいつでも歓迎します。コントリビュートする前に、私たちの [行動規範](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md)をよくお読みください。
## 現在実装されている機能
* ログイン
* 戦闘
* フレンドリスト
* テレポート
* 祈願 (ガチャ)
* マルチプレイ (一部)
* コンソールを通したモンスターのスポーン
* インベントリ機能 (アイテム/キャラクターの受け取り、アイテム/キャラクターのアップグレードなど)
## かんたんセットアップガイド
**Note:** サポートが必要な場合はGrasscutterの[Discordサーバー](https://discord.gg/T5vZU6UyeG)に参加してください。
### パパっとスタートアップ
- [Java (バージョン17以降)](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) を用意する
- [MongoDB Community Server](https://www.mongodb.com/try/download/community) を用意する
- ゲームバージョンがREL4.0.Xのクライアントを用意する (4.0.Xのクライアントを持っていない場合は右のリンクからダウンロード): [Github](https://github.com/JRSKelvin/GenshinRepository/blob/main/Version%204.0.0.md), [クラウド(123云盘)](https://www.123pan.com/s/HoqUVv-U7SBA.html)
- [最新の Cultivation](https://github.com/Grasscutters/Cultivation/releases/latest)をダウンロードする。`.msi`インストーラを使ってください。
- 管理者権限を付与して Cultivation を実行した後、右上端にあるダウンロードアイコンのボタンを押す。
- `Download All-in-One` をクリックする
- 右上端にある歯車アイコンのボタンをクリックする。
- `Game Install Path` にゲームファイルのパスを指定する。
- `Custom Java Path` に、自分が用意したJavaのパスを指定する。 (例: `C:\Program Files\Java\jdk-17\bin\java.exe`)
- その他の設定には手を付けず次の段階に進む。
- Launch の隣にある小さいボタンを押す。
- Launchボタンを押す
- 好きなユーザ名でログインする。ログインに関する設定がデフォルトの場合、パスワードは何を入れてもいい。
### ビルド
Grasscutterは依存関係とビルドの処理にGradleを使用しています。
**必要要件:**
- [Java SE Development Kit 17以降](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
- [Git](https://git-scm.com/downloads)
- [NodeJS](https://nodejs.org/en/download) (任意、ハンドブックの生成に必要)
##### Clone
```shell
git clone --recurse-submodules https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
```
##### Compile
**Note:** 環境によってはハンドブックの生成が失敗する場合があります。ハンドブックの生成をさせない場合は `gradlew jar` コマンドに `-PskipHandbook=1` を付け加えてください。
Windows:
```shell
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
.\gradlew.bat # コンパイル環境の構築
.\gradlew jar # コンパイル
```
Linux:
```bash
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
chmod +x gradlew
./gradlew jar # コンパイル
```
##### 手動によるハンドブックの生成
Gradleを使用する場合:
```shell
./gradlew generateHandbook
```
NPMを使用する場合:
```shell
cd src/handbook
npm install
npm run build
```
生成されたjarファイルはプロジェクトのルートフォルダにあります。
### トラブルシューティング
よく散見されるトラブルとそれに対する解決策のまとめリストや、質問し誰かの助けを得たい場合は、Grasscutterの[Discordサーバー](https://discord.gg/T5vZU6UyeG)に参加し、サポートチャンネルを参照してください。

115
docs/README_ko-KR.md Normal file
View File

@ -0,0 +1,115 @@
![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light)
<div align="center"><img alt="Documentation" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/Grasscutters/Grasscutter/build.yml?branch=development&logo=github&style=for-the-badge"></div>
<div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div>
[EN](../README.md) | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md) | [PL](README_pl-PL.md) | [ID](README_id-ID.md) | [KR](README_ko-KR.md) | [FIL/PH](README_fil-PH.md) | [NL](README_NL.md) | [JP](README_ja-JP.md) | [IT](README_it-IT.md) | [VI](README_vi-VN.md) | [हिंदी](README_hn-IN.md)
**주의 :** 우리는 항상 프로젝트에 기여하는 사람들을 환영합니다. 기여를 하기 전, [행동 지침](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md)을 주의 깊게 읽어주세요.
## 현재 기능들
* 로그인
* 전투
* 친구 목록
* 워프 (TP)
* 기원
* 다인 모드 (부분적으로 작동)
* 콘솔을 통한 몬스터 스폰
* 인벤토리 기능 (캐릭터, 아이템 수령 및 캐릭터, 아이템 업그레이드 등)
## 설치 가이드
**각주 :** 도움이 필요할 경우 [Discord](https://discord.gg/T5vZU6UyeG)에 가입하세요.
### 설치에 필요한 것들
* Java SE - 17 ([링크](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html))
**각주 :** **실행**만을 원한다면, **jre**만 있어도 괜찮습니다.
* [MongoDB](https://www.mongodb.com/try/download/community) (4.0 이상의 버전 추천)
* 프록시 데몬 : mitmproxy (mitmdump 추천), Fiddler Classic 등.
### 실행
**각주 :** 구버전에서 업데이트 했을 경우, `config.json` 파일을 재생성하기 위해 파일을 삭제하세요.
1. `grasscutter.jar` 얻기
- [Actions](https://github.com/Grasscutters/Grasscutter/suites/6895963598/artifacts/267483297) 탭에서 다운로드
- [직접 빌드하기](#빌드하기)
2. grasscutter.jar 파일이 위치한 폴더에 `resources` 폴더를 생성하고, `BinOutput``ExcelBinOutput` 폴더를 생성한 폴더 내로 옮기세요. *(이 파일들을 얻는 더 자세한 방법에 대해서는 [위키](https://github.com/Grasscutters/Grasscutter/wiki)를 참조하세요.)*
3. Grasscutter를 `java -jar grasscutter.jar` 명령어로 실행합니다. **MongoDB 서비스가 정상적으로 실행되고 있는지 확인하세요.**
### 클라이언트와의 연결
½. [서버 콘솔 명령어](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting)를 이용해서 계정을 생성합니다.
1. 리다이렉트 트래픽 : (1가지 선택)
- mitmdump: `mitmdump -s proxy.py -k`
신뢰하는 인증 기관 인증서 (CA Cert) :
**각주 :** CA 인증서는 보통 `%USERPROFILE%\ .mitmproxy` 경로에 저장되며, `http://mitm.it`에서 다운로드 받을 수도 있습니다.
더블 클릭하여 [설치](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate) 또는 ...
- 명령어를 통해서
```shell
certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
```
- Fiddler Classic : Fiddler Classic을 실행한 후, Setting에서 `Decrypt https traffic` 옵션을 켜고, Tools -> Options -> Connections에 있는 기본 포트를 `8888`을 제외한 다른 포트로 지정합니다. 그리고 [이 스크립트](https://github.lunatic.moe/fiddlerscript)를 불러옵니다.
- [호스트 파일](https://github.com/Grasscutters/Grasscutter/wiki/Running#traffic-route-map)
2. 네트워크 프록시를 `127.0.0.1:8080` 로 설정하거나 지정한 프록시 포트로 설정합니다.
**또한 `start.cmd`를 실행함으로써, 서버와 프록시 데몬을 자동으로 실행되게 할 수 있습니다. 이를 이용하기 위해서는 JAVA_HOME 환경 변수를 등록해야 합니다.**
### 빌드하기
Grasscutter는 종속성 및 컴파일 처리를 위해 Gradle을 이용합니다.
**빌드하기 위해 필요한 것들 :**
- [Java SE 개발 키트 - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
- [Git](https://git-scm.com/downloads)
##### 윈도우 (온라인)
```shell
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
.\gradlew.bat # 개발 환경 설정
.\gradlew jar # 컴파일
```
##### 윈도우 (로컬)
```shell
cd <로컬 주소>/Grasscutter
.\gradlew.bat # 개발 환경 설정
.\gradlew jar # 컴파일
```
##### 리눅스
```bash
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
chmod +x gradlew
./gradlew jar # 컴파일
```
프로젝트 폴더의 최상단에서 jar 파일을 찾을 수 있습니다.
### 명령어들은 [위키](https://github.com/Grasscutters/Grasscutter/wiki/Commands)에서 확인할 수 있습니다.
# 빠른 문제 해결
* 만약 컴파일링이 정상적으로 완료되지 않을 경우, JDK 설치를 확인하세요. (JDK 버전 17 및 JDK의 bin 경로 변수 등록을 확인)
* 클라이언트가 연결되지 않거나, 로그인이 안 되거나, 4206 오류가 뜨는 등의 경우 - 대부분 프록시 데몬의 설치에 문제가 있을 것입니다. Fiddler를 사용하고 있다면, 8888을 제외한 다른 포트에서 구동되고 있는지 확인하세요.
* 구동 순서 : MongoDB > Grasscutter > 프록시 데몬 (mitmdump, fiddler 등) > 게임

107
docs/README_pl-PL.md Normal file
View File

@ -0,0 +1,107 @@
![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light)
<div align="center"><img alt="Documentation" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/Grasscutters/Grasscutter/build.yml?branch=development&logo=github&style=for-the-badge"></div>
<div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div>
[EN](../README.md) | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md) | [PL](README_pl-PL.md) | [ID](README_id-ID.md) | [KR](README_ko-KR.md) | [FIL/PH](README_fil-PH.md) | [NL](README_NL.md) | [JP](README_ja-JP.md) | [IT](README_it-IT.md) | [VI](README_vi-VN.md) | [हिंदी](README_hn-IN.md)
**Uwaga:** Zawsze jesteśmy otwarci na wasz wkład w projekt. Przed zaproponowaniem zmian przeczytaj [zasady postępowania (ENG)](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md).
## Obecne funkcje
* Logowanie się
* Walka
* Lista przyjaciół
* Teleportacja
* System losowania
* *Częściowo* działający co-op
* Wzywanie potworów przez konsolę
* Działający ekwipunek (otrzymywanie przedmiotów/postaci, ulepszanie przedmiotów/postaci, itp)
## Poradnik uruchamiania
**Uwaga:** Dla dodatkowej pomocy dołącz na nasz [Discord](https://discord.gg/T5vZU6UyeG).
### Wymagania
* Java SE - 17 ([link](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html))
**Uwaga:** Jeśli chcesz tylko **uruchomić** serwer, samo **jre** powinno wystarczyć.
* [MongoDB](https://www.mongodb.com/try/download/community) (rekomendowane 4.0+)
* Aplikacja proxy: mitmproxy (mitmdump, rekomendowane), Fiddler Classic, itp.
### Uruchamianie
**Uwaga:** Jeśli aktualizujesz ze starszej wersji, usuń `config.json` aby wygenerować go ponownie.
1. Zdobądź `grasscutter.jar`
- Pobierz z [akcji](https://github.com/Grasscutters/Grasscutter/suites/6895963598/artifacts/267483297)
- [Lub zbuduj to samemu](#Budowanie)
2. Utwórz folder `resources` w tym samym folderze gdzie znajduje się grasscutter.jar oraz przenieś foldery `BinOutput` i `ExcelBinOutput` do folderu `resources` *(Sprawdź na [wiki](https://github.com/Grasscutters/Grasscutter/wiki) skąd możesz je pozyskać).*
3. Uruchom Grasscuttera komendą `java -jar grasscutter.jar`. **Upewnij się, że mongodb service działa w tle.**
### Łączenie się z klientem
½. Utwórz konto za pomocą [komend konsoli serwera](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting).
1. Przekieruj połączenia: (wybierz jedno)
- mitmdump: `mitmdump -s proxy.py -k`
Certyfikat CA:
**Uwaga:** CA certyfikat zazwyczaj znajduje się w `%USERPROFILE%\.mitmproxy`, albo możesz pobrać go stąd `http://mitm.it`
Naciśnij podwójnie, aby [zainstalować](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate) lub ...
- Za pomocą wierszu poleceń (lub PowerShella) wpisz
```shell
certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
```
- Fiddler Classic: Uruchom Fiddler Classic, włącz `Decrypt https traffic` w ustawieniach oraz zmień domyślny port (Tools -> Options -> Connections) na dowolny inny niż `8888`, i wczytaj [ten skrypt](https://github.lunatic.moe/fiddlerscript) (w polu FiddlerScript).
- [Plik hosts](https://github.com/Grasscutters/Grasscutter/wiki/Running#traffic-route-map)
2. Ustaw serwer proxy na `127.0.0.1:8080` albo inny wybrany przez ciebie port.
**Możesz także użyć `start.cmd` aby uruchomić serwer gry i proxy, ale do tego musisz ustawić środowisko JAVA_HOME**
### Budowanie
Grasscutter używa Gradle, aby zajął się wymaganymi pakietami i kompilowaniem.
**Wymagania:**
- [Java SE Development Kits - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
- [Git](https://git-scm.com/downloads)
##### Windows
```shell
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
.\gradlew.bat # Konfigurowanie środowiska
.\gradlew jar # Kompilowanie
```
##### Linux
```bash
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
chmod +x gradlew
./gradlew jar # Kompilowanie
```
Gotowy plik `jar` możesz znaleźć w głównym folderze Grasscuttera.
### Komendy zostały przeniesione do [wiki](https://github.com/Grasscutters/Grasscutter/wiki/Commands)!
# Rozwiązywanie problemów
* Jeśli kompilowanie się nie powiodło, sprawdź swoje zainstalowane JDK (JDK 17 oraz wartość ścieżki (PATH) folderu bin należącego do JDK)
* Mój klient nie może się połączyć, nie działa logowanie, 4206, itp... - Prawdopodobnie twoje proxy jest *problemem*, jeśli używasz Fiddlera upewnij się, że działa na innym porcie niż 8888
* Sekwencja, którą powinieneś uruchamiać: MongoDB > Grasscutter > Proxy daemon (mitmdump, fiddler, etc.) > Game

View File

@ -1,12 +1,11 @@
![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light) ![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light)
<div align="center"><img alt="Documention" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/workflow/status/Grasscutters/Grasscutter/Build?logo=github&style=for-the-badge"></div> <div align="center"><img alt="Documention" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/Grasscutters/Grasscutter/build.yml?branch=development&logo=github&style=for-the-badge"></div>
<div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div> <div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div>
[EN](README.md) | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [HE](README_HE.md) | RU [EN](../README.md) | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md) | [PL](README_pl-PL.md) | [ID](README_id-ID.md) | [KR](README_ko-KR.md) | [FIL/PH](README_fil-PH.md) | [NL](README_NL.md) | [JP](README_ja-JP.md) | [IT](README_it-IT.md) | [VI](README_vi-VN.md) | [हिंदी](README_hn-IN.md)
**Внимание:** Мы всегда рады новому вкладу в проекте. Однако, перед тем, как сделать свой вклад, пожалуйста, прочтите наш [кодекс делового поведения](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md). **Внимание:** Мы всегда рады новому вкладу в проект. Однако, перед тем, как сделать свой вклад, пожалуйста, прочтите наш [кодекс делового поведения](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md).
## Реализованные функции ## Реализованные функции
@ -15,15 +14,15 @@
* Список друзей * Список друзей
* Телепортация * Телепортация
* Гача-система * Гача-система
* Кооп работает *частично* * Кооп *работает частично*
* Спавн монстров через консоль * Спавн монстров через консоль
* Функции инвентаря (получение предметов/персонажей, улучшение предметов/персонажей, и т.п.) * Функции инвентаря (получение предметов/персонажей, улучшение предметов/персонажей, и т.п.)
## Краткое руководство по установке ## Краткое руководство по установке
**Заметка:** Для получения поддержки, присоединитесь к нашему серверу [Discord](https://discord.gg/T5vZU6UyeG). **Заметка:** Если вам требуется помощь, присоединитесь к нашему серверу [Discord](https://discord.gg/T5vZU6UyeG) (На Английском).
### Требуется ### Зависимости
* Java SE - 17 ([link](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)) * Java SE - 17 ([link](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html))
@ -31,44 +30,44 @@
* [MongoDB](https://www.mongodb.com/try/download/community) (рекомендуются версии 4.0+) * [MongoDB](https://www.mongodb.com/try/download/community) (рекомендуются версии 4.0+)
* Прокси-демон: mitmproxy (mitmdump, рекомендуется), Fiddler Classic и т.п. * Прокси: mitmdump (рекомендуется), mitmproxy, Fiddler Classic и т.п.
### Запуск ### Запуск
**Заметка:** При обновлении с более старой версии, удалите файл `config.json` для того, чтобы заново его сгенерировать. **Заметка:** Для обновления с более старой версии, удалите файл `config.json`, чтобы сгенерировать его заново.
1. Получите файл `grasscutter.jar` одним из следующих образов: 1. Получите файл `grasscutter.jar` одним из следующих способов:
- Скачайте напрямую со вкладки [Actions](https://github.com/Grasscutters/Grasscutter/suites/6895963598/artifacts/267483297) - Скачайте напрямую со вкладки [Actions](https://github.com/Grasscutters/Grasscutter/suites/6895963598/artifacts/267483297)
- [Соберите самостоятельно](#Сборка) - [Соберите самостоятельно](#Сборка)
2. Создайте папку `resources` в той же директории, что и grasscutter.jar, и переместите туда свои папки `BinOutput` и `ExcelBinOutput` *(Посетите [вики](https://github.com/Grasscutters/Grasscutter/wiki) для получения более подробной информации о том, где их найти.)* 2. Создайте папку `resources` в той же директории, что и grasscutter.jar, и переместите туда свои папки `BinOutput` и `ExcelBinOutput` *(Посетите [вики](https://github.com/Grasscutters/Grasscutter/wiki) для получения более подробной информации о том, где их найти.)*
3. Запустите Grasscutter с помощью команды `java -jar grasscutter.jar`. **Убедитесь, что в этот момент запущена служба mongodb.** 3. Запустите Grasscutter с помощью команды `java -jar grasscutter.jar`. **Убедитесь, что в этот момент запущен сервер mongodb.**
### Подключение с помощью клиента ### Соединение с клиентом
½. Создайте аккаунт, введя [соответствующую команду в консоли сервера](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting). ½. Создайте аккаунт, введя [соответствующую команду в консоли сервера](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting).
1. Перенаправьте трафик: (выберите один из методов) 1. Перенаправьте трафик: (воспользуйтесь одиним из способов)
- mitmdump: `mitmdump -s proxy.py -k` - mitmdump: `mitmdump -s proxy.py -k`
Доверьтесь сертификату CA: Доверьтесь сертификату CA:
**Заметка:**Обычно, сертификат CA хранится в папке `%USERPROFILE%\ .mitmproxy`. Также, вы можете скачать его с `http://mitm.it` **Заметка:** Обычно, сертификат CA хранится в папке `%USERPROFILE%\ .mitmproxy`. Также, вы можете скачать его с `http://mitm.it`
Два раза нажмите для [установки](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate), либо ... Дважды нажмите для [установки](https://docs.microsoft.com/ru-ru/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate), или же ...
- Через командную строку - С помощью командной строки
```shell ```shell
certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
``` ```
- Fiddler Classic: Запустите Fiddler Classic, включите настройку `Decrypt https traffic` в опциях и измените порт по умолчанию (Tools -> Options -> Connections) на что-то не равное `8888`, после чего запустите [этот скрипт](https://github.lunatic.moe/fiddlerscript). - Fiddler Classic: Запустите Fiddler Classic, включите настройку `Decrypt https traffic` в опциях и измените порт по умолчанию (Меню -> Tools -> Options -> Connections) на что-то не равное `8888`, после чего запустите [этот скрипт](https://github.lunatic.moe/fiddlerscript) во вкладке FiddlerSrcipt.
- [Файл hosts](https://github.com/Melledy/Grasscutter/wiki/Running#traffic-route-map) - [Файл hosts](https://github.com/Grasscutters/Grasscutter/wiki/Running#traffic-route-map)
2. Установите прокси сети в `127.0.0.1:8080`, либо в тот порт прокси, который вы задали. 2. Установите прокси сети в `127.0.0.1:8080`, либо в тот порт прокси, который вы задали.
**Также, вы можете использовать `start.cmd` для автоматического запуска прокси-демонов и серверов, но для этого необходимо задать переменную среды JAVA_HOME** **Также, вы можете использовать `start.cmd` для автоматического запуска прокси и серверов, но для этого необходимо задать переменную среды JAVA_HOME**
### Сборка ### Сборка
@ -103,7 +102,7 @@ chmod +x gradlew
# Краткое руководство по решению проблем # Краткое руководство по решению проблем
* Если не компилируется, то проверьте инсталляцию своего JDK (JDK 17 и валидированная переменная JDK bin PATH) * Если скомпилировать не удается, то проверьте установку своего JDK (JDK 17 и валидность переменных JDK, bin, PATH)
* Клиент не подключается, не входит, выдаёт ошибку 4206 и т.д. - Скорее всего, проблема в том, *как именно* вы настроили прокси-демонов. При использовании * Клиент не подключается, не входит, выдаёт ошибку 4206 и т.д. - Скорее всего, проблема в том, *как именно* вы настроили прокси. При использовании
Fiddler убедитесь, что он запущен на любом порте, кроме 8888 Fiddler убедитесь, что он запущен на любом порте, кроме 8888
* Порядок запуска: MongoDB > Grasscutter > Прокси-демон (mitmdump, fiddler и т.д.) > Игра * Порядок запуска: MongoDB > Grasscutter > Прокси (mitmdump, fiddler и т.д.) > Игра

106
docs/README_vi-VN.md Normal file
View File

@ -0,0 +1,106 @@
![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light)
<div align="center"><img alt="Documentation" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/Grasscutters/Grasscutter/build.yml?branch=development&logo=github&style=for-the-badge"></div>
<div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div>
[EN](../README.md) | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md) | [PL](README_pl-PL.md) | [ID](README_id-ID.md) | [KR](README_ko-KR.md) | [FIL/PH](README_fil-PH.md) | [NL](README_NL.md) | [JP](README_ja-JP.md) | [IT](README_it-IT.md) | [VI](README_vi-VN.md) | [हिंदी](README_hn-IN.md)
**Chú ý:** Chúng tôi luôn chào đón những người đóng góp cho dự án. Trước khi đóng góp, xin vui lòng đọc kỹ ["các quy tắc" (Code of Conduct)](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md) của chúng tôi .
## Các tính năng hiện tại
* Đăng nhập
* Chiến đấu, giao tranh
* Danh sách bạn bè
* Dịch chuyển
* Hệ thống cầu nguyện (gacha)
* *Một phần* của tính năng chơi chung (co-op)
* Gọi ra quái vật từ bảng điều khiển (console)
* Vật phẩm/Nhân vật (nhận vật phẩm/nhân vật, nâng cấp vật phẩm/nhân vật)
## Hướng dẫn cài đặt nhanh
**Ghi chú:** Để được hỗ trợ, vui lòng tham gia [Discord](https://discord.gg/T5vZU6UyeG).
### Phần mềm cần thiết
* [Java SE - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) hoặc cao hơn
**Ghi chú:** Nếu bạn chỉ muốn **sử dụng**, vậy thì cài đặt **jre** là đủ.
* [MongoDB](https://www.mongodb.com/try/download/community) (khuyến khích sử dụng phiên bản từ 4.0 trở lên)
* Proxy Daemon: [mitmproxy](https://mitmproxy.org/) (nên sử dụng mitmdump), [Fiddler Classic](https://telerik-fiddler.s3.amazonaws.com/fiddler/FiddlerSetup.exe), v.v.
### Chạy chương trình (server)
**Ghi chú:** Nếu bạn đã cập nhật từ phiên bản cũ hơn, hãy xóa `config.json` để tạo lại.
1. Tải `grasscutter.jar`
- Tài về từ [releases (bản phát hành)](https://github.com/Grasscutters/Grasscutter/releases/latest) hoặc [actions (các hoạt động)](https://github.com/Grasscutters/Grasscutter/actions/workflows/build.yml) hoặc [tự tạo của chính bạn](#tự-tạo-server-building).
2. Tạo một thư mục `resources` trong cùng thư mục với Grasscutter.jar và chuyển các thư mục `BinOutput, ExcelBinOutput, Readables, Scripts, Subtitle, TextMap` của bạn đến `resources` _(Xem [wiki](https://github.com/Grasscutters/Grasscutter/wiki) để biết cách lấy các thư mục đó)_
3. Chạy Grasscutter với câu lệnh `java -jar grasscutter.jar`. **Hãy chắc rằng mongodb của bạn đã được chạy**
### Kết nối với game (client)
½. Tạo một tài khoản từ bảng điều khiển máy chủ (server console), sử dụng [câu lệnh (command)](https://github.com/Grasscutters/Grasscutter/wiki/Commands#:~:text=account%20%3Ccreate|delete%3E%20%3Cusername%3E%20[UID]).
1. Chương trình chuyển hướng lưu lượng truy cập: (chỉ sử dụng 1)
- mitmdump: `mitmdump -s proxy.py -k`
- Chứng chỉ CA tin cậy:
- Chứng chỉ CA thường được lưu trữ trong `%USERPROFILE%\.mitmproxy`, click đúp `mitmproxy-ca-cert.cer` để [cài đặt](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate) hoặc...
- Sử dụng với command line (cmd) *(yêu cầu quyền quản trị viên)*
```shell
certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
```
- Fiddler Classic: Mở Fiddler Classic, bật tùy chọn `Decrypt HTTPS traffic` trong (Tools -> Options -> HTTPS) và thay đổi cổng (port) mặc định (Tools -> Options -> Connections) khác `8888`, chạy [script này](https://github.com/Grasscutters/Grasscutter/wiki/Resources#fiddler-classic-jscript) (sao chép và dán script vào trong `FiddlerScript`) và bấm `Save Script`.
- [Hosts file](https://github.com/Grasscutters/Grasscutter/wiki/Resources#hosts-file)
2. Cài đặt network proxy thành `127.0.0.1:8080` hoặc cổng proxy mà bạn đã chỉ định.
- Với mitmproxy: Sau khi thiết lập proxy và cài đặt chứng chỉ, hãy kiểm tra http://mitm.it/ để xem liệu lưu lượng có đang thông qua mitmproxy hay không.
**Bạn cũng có thể sử dụng `start.cmd` để tự động khởi động máy chủ (servers) và proxy daemons, nhưng trước đó bạn phải thiết lập biến môi trường `JAVA_HOME` và cấu hình tệp `start_config.cmd`.**
### Tự tạo server (Building)
Grasscutter sử dụng Gradle để xử lý các phần phụ thuộc và xây dựng.
**Phần mềm cần thiết:**
- [Java SE Development Kits - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) hoặc cao hơn
- [Git](https://git-scm.com/downloads)
##### Windows
```shell
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
.\gradlew.bat # Thiết lập môi trường (Setting up environments)
.\gradlew jar # Biên dịch (Compile)
```
##### Linux
```bash
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
chmod +x gradlew
./gradlew jar # Biên dịch (Compile)
```
Bạn có thể tìm thấy tệp jar đã được biên dịch tại thư mục gốc của dự án.
### Các câu lệnh (commands) đã được chuyển đến [wiki](https://github.com/Grasscutters/Grasscutter/wiki/Commands)!
# Khắc phục nhanh các sụ cố
- Nếu quá trình biên dịch (compile) không thành công, hãy kiểm tra cài đặt JDK của bạn (Đảm bảo rằng JDK phải từ phiên bản 17 trở lên và PATH của JDK đã được cài đặt).
- Không thể kết nối, không thể đăng nhập, 4206, v.v. - *Vấn đề* thường là do cài đặt proxy (proxy daemon) của bạn. Nếu bạn đang sử dụng Fiddler, hãy đổi cổng (port) mặc định sang bất cứ cổng nào khác 8888.
- Thứ tự khởi động: MongoDB > Grasscutter > Proxy Daemon (mitmdump, fiddler, v.v.) > Game

76
docs/README_zh-CN.md Normal file
View File

@ -0,0 +1,76 @@
![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light)
<div align="center"><img alt="Documentation" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/Grasscutters/Grasscutter/build.yml?branch=development&logo=github&style=for-the-badge"></div>
<div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div>
[EN](../README.md) | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md) | [PL](README_pl-PL.md) | [ID](README_id-ID.md) | [KR](README_ko-KR.md) | [FIL/PH](README_fil-PH.md) | [NL](README_NL.md) | [JP](README_ja-JP.md) | [IT](README_it-IT.md) | [VI](README_vi-VN.md) | [हिंदी](README_hn-IN.md)
**注意:** 我们始终欢迎项目的贡献者。但在做贡献之前,请仔细阅读我们的[代码规范](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md)。
## 当前功能
* 登录
* 战斗
* 好友
* 传送
* 祈愿
* 多人游戏 *部分* 可用
* 从控制台生成魔物
* 背包功能(接收或升级物品、角色等)。
## 快速安装指南
**注意:** 如需帮助,请加入我们的[Discord](https://discord.gg/T5vZU6UyeG)。
### 快速开始(全自动)
- 获取Java 17https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html
- 获取[MongoDB社区版](https://www.mongodb.com/try/download/community)
- 获取游戏4.0正式版 (如果你没有4.0的客户端,可以在这里找到):
[123pan share](https://www.123pan.com/s/HoqUVv-U7SBA.html)
[github](https://github.com/JRSKelvin/GenshinRepository/blob/main/Version%204.0.0.md)
- 下载[最新的Cultivation版本](https://github.com/Grasscutters/Cultivation/releases/latest)(使用以“.msi”为后缀的安装包
- 以管理员身份打开Cultivation按右上角的下载按钮。
- 点击“下载 Grasscutter 一体化”
- 点击右上角的齿轮
- 将游戏安装路径设置为你游戏所在的位置。
- 将自定义Java路径设置为`C:\Program Files\Java\jdk-17\bin\java.exe`
- 保持所有其它设置为默认值
- 点击“启动”按钮旁边的小按钮。
- 点击“启动”按钮。
- 随便想一个用户名登录,不需要密码。
### 构建
Grasscutter使用Gradle来处理依赖和构建。
**前置:**
- [Java SE Development Kits - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)或更高版本
- [Git](https://git-scm.com/downloads)
##### Windows
```shell
git clone --recurse-submodules https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
.\gradlew.bat # 设置开发环境
.\gradlew jar # 编译
```
##### LinuxGNU
```bash
git clone --recurse-submodules https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
chmod +x gradlew
./gradlew jar # 编译
```
你可以在项目的根目录找到输出的jar。
### 故障排除
获取常见问题的解决方案或寻求帮助,请加入[我们的Discord服务器](https://discord.gg/T5vZU6UyeG)并进入“support”频道。

View File

@ -1,9 +1,9 @@
![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light) ![Grasscutter](https://socialify.git.ci/Grasscutters/Grasscutter/image?description=1&forks=1&issues=1&language=1&logo=https%3A%2F%2Fs2.loli.net%2F2022%2F04%2F25%2FxOiJn7lCdcT5Mw1.png&name=1&owner=1&pulls=1&stargazers=1&theme=Light)
<div align="center"><img alt="Documention" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/workflow/status/Grasscutters/Grasscutter/Build?logo=github&style=for-the-badge"></div> <div align="center"><img alt="Documention" src="https://img.shields.io/badge/Wiki-Grasscutter-blue?style=for-the-badge&link=https://github.com/Grasscutters/Grasscutter/wiki&link=https://github.com/Grasscutters/Grasscutter/wiki"> <img alt="GitHub release (latest by date)" src="https://img.shields.io/github/v/release/Grasscutters/Grasscutter?logo=java&style=for-the-badge"> <img alt="GitHub" src="https://img.shields.io/github/license/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/Grasscutters/Grasscutter?style=for-the-badge"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/Grasscutters/Grasscutter/build.yml?branch=development&logo=github&style=for-the-badge"></div>
<div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div> <div align="center"><a href="https://discord.gg/T5vZU6UyeG"><img alt="Discord - Grasscutter" src="https://img.shields.io/discord/965284035985305680?label=Discord&logo=discord&style=for-the-badge"></a></div>
[EN](README.md) | [简中](README_zh-CN.md) | 繁中 | [FR](README_fr-FR.md) | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md) [EN](../README.md) | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | [FR](README_fr-FR.md) | [ES](README_es-ES.md) | [HE](README_HE.md) | [RU](README_ru-RU.md) | [PL](README_pl-PL.md) | [ID](README_id-ID.md) | [KR](README_ko-KR.md) | [FIL/PH](README_fil-PH.md) | [NL](README_NL.md) | [JP](README_ja-JP.md) | [IT](README_it-IT.md) | [VI](README_vi-VN.md) | [हिंदी](README_hn-IN.md)
**請注意:** 歡迎成為本專案的貢獻者。在提交 PR 之前, 請仔細閱讀[程式碼規範](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md)。 **請注意:** 歡迎成為本專案的貢獻者。在提交 PR 之前, 請仔細閱讀[程式碼規範](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md)。
@ -22,52 +22,23 @@
**注意:** 如需幫助請加入 [Discord](https://discord.gg/T5vZU6UyeG) **注意:** 如需幫助請加入 [Discord](https://discord.gg/T5vZU6UyeG)
### 環境需求 ### 快速開始(全自動)
* Java SE - 17 ([連結](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)) - 下載 Java 17https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html
- 下載 [MongoDB 社區伺服器](https://www.mongodb.com/try/download/community)
- 下載遊戲版本 REL3.7(如果你沒有的話,可以在[這裡](https://github.com/MAnggiarMustofa/GI-Download-Library/blob/main/GenshinImpact/Client/3.7.0.md)找到 3.7 客戶端)
**注意:** 如果僅想**執行服務端**, 使用 **jre** 即可 - 下載 [最新的 Cultivation 版本](https://github.com/Grasscutters/Cultivation/releases/latest)。使用 `.msi` 安裝程式。
- 以管理員身分打開 Cultivation按右上角的下載按鈕。
- 點擊 `Download All-in-One`
- 點擊右上角的齒輪
- 將遊戲安裝路徑設置為你的遊戲所在的位置。
- 將自定義 Java 路徑設置為 `C:\Program Files\Java\jdk-17\bin\java.exe`
- 其他設置保持預設
* [MongoDB](https://www.mongodb.com/try/download/community) (推薦 4.0+) - 點擊啟動旁邊的小按鈕。
- 點擊啟動按鈕。
* 代理程式: mitmproxy (推薦 mitmdump), Fiddler Classic 等 - 用你想要的用戶名登錄,密碼無所謂。
### 執行
**注意:** 從舊版本升級到新版本, 需要刪除 `config.json`
1. 獲取 `grasscutter.jar`
- 從 [actions](https://github.com/Grasscutters/Grasscutter/suites/6895963598/artifacts/267483297) 下載
- [自行編譯](#編譯)
2. 在 JAR 檔案根目錄中建立 `resources` 資料夾並複製 `BinOutput``ExcelBinOutput` *(查看 [wiki](https://github.com/Grasscutters/Grasscutter/wiki) 瞭解更多)*
3. 命令列 `java -jar grasscutter.jar` 執行 Grasscutter。**在此之前請確認 MongoDB 服務執行正常**
### 客戶端連線
½. 在伺服器控制台[建立賬戶](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting)
1. 重定向流量: (選擇其中一個)
- mitmdump: `mitmdump -s proxy.py -k`
信任 CA 證書:
**注意:** mitmproxy 的 CA 證書通常存放在 `%USERPROFILE%\ .mitmproxy`, 或者在 `http://mitm.it` 下載證書
雙擊[安裝根證書](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate)或者...
- 使用命令列
```shell
certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
```
- Fiddler Classic: 執行 Fiddler Classic, 在設定中開啟 `解密 https 通訊` 並將通訊埠設為除 `8888` 以外的任意通訊埠 (工具 -> 選項 -> 連線) 並載入[此指令碼](https://github.lunatic.moe/fiddlerscript)
- [Hosts 檔案](https://github.com/Grasscutters/Grasscutter/wiki/Running#traffic-route-map)
2. 設定代理為 `127.0.0.1:8080` 或你設定的通訊埠
**也可直接執行 `start.cmd` 一鍵啟動服務端並設定代理, 但必須設定 `JAVA_HOME` 環境變數**
### 編譯 ### 編譯

View File

@ -0,0 +1,188 @@
# Hide and Seek!
Documentation on how the **Hide and Seek** game works.\
Externally dubbed: `Windtrace`.
# Map IDs
TODO: Document the map IDs of Windtrace.
TODO: Investigate `ServerGlobalValueChangeNotify`
# Asking Players to Play in a Co-Op Game
1. The client will send `DraftOwnerStartInviteReq`
2. The server will send `DraftOwnerInviteNotify` to all clients.
3. The server will send `DraftOwnerStartInviteRsp`
# Matching in a Co-Op Game
1. World owner talks to Gygax and begins a Windtrace game.
2. The packet `DraftOwnerInviteNotify` is sent to clients.
3. Clients will respond with `DraftGuestReplyInviteReq` (client-side)
4. The server will respond with `DraftGuestReplyInviteRsp`
5. The server will respond with `DraftInviteResultNotify`
# Starting Windtrace
1. If `DraftInviteResultNotify` is a success, the server will send a series of packets.
1. A series of `SceneEntityAppearNotify` packets.
2. `NpcTalkStateNotify`
3. `PlayerEnterSceneNotify`
4. `MultistagePlayInfoNotify`
2. The players are then teleported to the Windtrace map in their locations.
3. Server will send packets to clients. (this is server boilerplate)
4. The server sends another `MultistagePlayInfoNotify` to clients.
# Changing Avatars - Others
1. The server will send a `AvatarEquipChangeNotify` packet to clients.
2. The server will send a `SceneTeamUpdateNotify` packet to clients.
3. The server will send a `HideAndSeekPlayerSetAvatarNotify` packet to clients.
# Getting Ready
1. The client will send `HideAndSeekSetReadyReq` to the server.
2. The server will reply with `HideAndSeekPlayerReadyNotify` to clients.
3. The server will send `MultistagePlayInfoNotify` to clients.
4. The server will reply with `HideAndSeekSetReadyRsp` to the client.
5. If all players are ready, the server will move on to start Windtrace.
# Starting Windtrace
1. When all players are ready, the server will send a series of packets to players.
1. `GalleryStartNotify`
2. `SceneGalleryInfoNotify`
3. `MultistagePlayInfoNotify`
4. `MultistagePlayStageEndNotify`
5. This will only get sent at the `1.` countdown.
### Notes:
- `GuestReplyInviteRsp` is sent **after** `DraftInviteResultNotify`.
## `DraftOwnerInviteNotify`
- `invite_deadline_time` - This is the time when the invite expires.
- `draft_id` - The value is always `3001` for Windtrace.
## `DraftOwnerStartInviteReq`
- `draft_id` - The value is always `3001` for Windtrace.
## `DraftOwnerStartInviteRsp`
- `draft_id` - The value is always `3001` for Windtrace.
- `invite_fail_info_list` - A list of players who weren't invited.
- `retcode` - The response code.
- `wrong_uid` - Always `0`. (undocumented)
## `DraftGuestReplyInviteReq`
- `draft_id` - The value is always `3001` for Windtrace.
- `is_agree` - A boolean value for whether the client accepts the invite.
## `DraftGuestReplyInviteRsp`
- `draft_id` - The value is always `3001` for Windtrace.
- `retcode` - Response code for the request.
- `is_agree` - A boolean value for whether the server acknowledges the client's invite acceptation.
## `DraftInviteResultNotify`
- `draft_id` - The value is always `3001` for Windtrace.
- `is_all_agree` - A boolean value for whether all clients accepted the invite.
## `NpcTalkStateNotify`
- `is_ban` - This value is always true when entering Windtrace.
## `PlayerEnterSceneNotify`
- `pos` - This is where the player will be teleported to.
- This value depends on if the player is a hunter or a runner.
- This value is set by the server and must be hardcoded/read from a JSON file.
## `MultistagePlayStageEndNotify`
- `play_index` - Value picked by the server. (use 1)
- `group_id` - This value is always `133002121` for Windtrace.
## `MultistagePlayInfoNotify` - Initial + PostEnterSceneReq
- Image Reference: ![img.png](images/multistageplayinfo.png)
- `info` - MultistagePlayInfo data.
- `group_id` - The value is always `133002121` for Windtrace.
- `play_index` - Value picked by the server. (use 1)
- `hide_and_seek_info` - Information about Windtrace.
- `hider_uid_list` - A list of UIDs (ints) of the hiders.
- `hunter_uid` - The UID (int) of the hunter.
- `map_id` - The ID of the Windtrace map.
- `stage_type` - Windtrace state.
- This will be `HIDE_AND_SEEK_STAGE_TYPE_PREPARE`.
- `battle_info_map` - Contains a dictionary of UID -> `HideAndSeekPlayerBattleInfo` objects.
- `skill_list` - Array of 3 values of skill IDs chosen by the player.
- `avatar_id` - The ID of the avatar the player wants to use.
- `is_ready` - The player's in-game ready state.
- `costume_id` - The costume the player's avatar is wearing.
## `MultistagePlayInfoNotify` - Picking Avatars
- Image Reference: ![img.png](images/pickavatar.png)
- **Note:** This packet matches the initial structure and data.
- `info.hide_and_seek_info.stage_type` - This will be `HIDE_AND_SEEK_STAGE_TYPE_PICK`.
## `MultistagePlayInfoNotify` - Starting Windtrace
- Image Reference: ![img.png](images/startwindtrace.png)
- **Note:** This packet matches the initial structure and data.
- `info.hide_and_seek_info.stage_type` - This will be `HIDE_AND_SEEK_STAGE_TYPE_HIDE`.
## `MultistagePlayInfoNotify` - Seeking Time
- Image Reference: ![img.png](images/seektime.png)
- **Note:** This packet matches the initial structure and data.
- `info.hide_and_seek_info.stage_type` - This will be `HIDE_AND_SEEK_STAGE_TYPE_SEEK`.
## `MultistagePlayInfoNotify` - Finish Windtrace
- Image Reference: ![img.png](images/seektime.png)
- **Note:** This packet matches the initial structure and data.
- `info.hide_and_seek_info.stage_type` - This will be `HIDE_AND_SEEK_STAGE_TYPE_SETTLE`.
## `HideAndSeekPlayerSetAvatarNotify`
- `avatar_id` - The ID of the new avatar the player wants to use.
- `uid` - The UID of the player who changed their avatar.
- `costume_id` - The costume the player's avatar is wearing.
## `HideAndSeekSetReadyRsp`
- `retcode` - Response code for the request.
## `HideAndSeekPlayerReadyNotify`
- `uid_list` - A list of UIDs (ints) of the players who are ready.
## `GalleryStartNotify`
- `gallery_id` - TODO: Check if this value is always `7056` for Windtrace.
- `start_time` - This value is always `2444` for Windtrace.
- This value is `200` when displaying game end statistics.
- `owner_uid` - The UID of the player who started the Windtrace game.
- `player_count` - The number of players in the Windtrace game.
- `end_time` - This value is always the same as `start_time`.
## `SceneGalleryInfoNotify` - Starting Windtrace
- `gallery_info` - SceneGalleryInfo data.
- `end_time` - This value is always the same as `start_time`.
- `start_time` - This value is always `2444` for Windtrace.
- This value is `200` when displaying game end statistics.
- `gallery_id` - This value is always the same as `gallery_id` from `GalleryStartNotify`.
- `stage` - The current stage of the gallery.
- This will be `GALLERY_STAGE_TYPE_START`.
- `owner_uid` - The UID of the player who started the Windtrace game.
- `hide_and_seek_info` - SceneGalleryHideAndSeekInfo
- `visible_uid_list` - List of UIDs (ints) of the players who were left alive.
- `caught_uid_list` - List of UIDs (ints) of the players who have been caught.
- `player_count` - The amount of players in the Windtrace game.
- `pre_start_end_time` - This value is always `0` for Windtrace.
## `HideAndSeekSettleNotify`
- `reason` - The reason for the game ending.
- `winner_list` - A list of UIDs (ints) of the players who won the game.
- `settle_info_list` - HideAndSeekSettleInfo data.
- This is a list of players who participated in the game.
## `HideAndSeekSettleInfo`
- `card_list` - A collection of `ExhibitionDisplayInfo`
- If unknown: hardcode the specified values. ![img.png](images/defaultexhibitioninfo.png)
- These values are repeated during testing.
- `uid` - The UID of the player who participated in the game.
- `nickname` - The player's nickname.
- `head_image` - This value is always `0`.
- `online_id` - This value is always blank.
- `profile_picture` - `ProfilePicture` object.
- `play_index` - Value picked by the server. (use 1)
- `stage_type` - The stage type. (inconclusive; TODO)
- `cost_time` - The amount of time the player took to complete the game.
- `score_list` - A list of player scores.
## `ExhibitionDisplayInfo`
- `id` - The ID of the reward.
- `param` - The amount of the reward given.
- `detail_param` - This value is *mostly* 0.
- This value **matches** param when the reward is of the amount of time spent playing. (participation reward)

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View File

@ -0,0 +1,214 @@
## World Bosses
* Oceanid_Boss_1_4
* V1_6/Oceanid_Boss_1_6
* DrakePrimoRockBoss
* V2_3/Boss_Hound
## Dungeons
* V2_1/Boss_Shougun_Beta
* V2_1/Boss_LaSignora
## Activities/Events
### Aster (unreconciled stars)
* AsterMiddle
* AsterBig
### FleurFair (windblume)
* FleurFair_Parachute
* FleurFair_BalloonShoot
### NEW_ACTIVITY_DRAGONSPINE (The Chalk Prince and the Dragon)
* IceFlowerBossBattle
### NEW_ACTIVITY_WINTER_CAMP (Shadows Amidst Snowstorms)
* V2_3/WinterCampDevice
* V2_3/WinterCampGacha
* V2_3/WinterCampMimik
* V2_3/WinterCampMimik_Watcher
* V2_3/WinterCampMimik_Quest
* V2_3/WinterCampParkour
* V2_3/WinterCampSnowman
### NEW_ACTIVITY_TREASURE_MAP
* TreasureMapEvent
* V2_0/TreasureMapEventV2
### unordered
* Activity_ArenaChallengeSub
* Activity_ArenaChallengeMain
## Scene1
* Fishing_EventTest
* test_New_LuaCallType
* V2_5/TEST_Require
## Scene 500030
* SGV_Test
## Other/Unordered
* Activity_Endora
* AttachChildChallenge
* BlackBoxPlay/ChargingPort
* BlackBoxPlay/DrawOneLine
* BlackBoxPlay/DrawOneLinePlus
* BlackBoxPlay/EnergyAmplifier
* BlackBoxPlay/LightResonanceStone
* BlackBoxPlay/LightSquare
* BlackBoxPlay/LightSquareV2
* BlackBoxPlay/MagneticGear
* BlackBoxPlay/TeleportHighway
* BubbleGame
* BulletGame
* DragonSpineBlossomA
* DragonSpineBlossomB
* FlyChallenge
* MonsterQuickDeath
* SnowDungeon
* TowerDefense_Challenge
* TowerDefense_Gear
* TowerDefense_Monster
* TowerDefense_Monster02
* TowerDefense_Trap
* WindFlora
* WindFlora_Arenashake
* WindFlora_Boss_RandomList
* WindFlora_Laser
* WindFlora_Main
* WindFlora_RecordFloorBreakable
* WindFlora_RecordFloorMemory
* WindFlora_RecordFloorTransparent
* WindFlora_ReTrans
* V1_5/Challenge_SetEyePoint
* V1_5/HideAndSeek_Gallery
* V1_5/HideAndSeek_Skill
* V1_5/HilichurlLevel
* V1_6/TuneStone
* V1_6/BoatRace
* V1_6/General_Watcher
* V1_6/KeleeBombBattle
* V1_6/Multi_Badminton
* V1_6/Optimization
* V1_6/ScoreChallenge
* V1_6/TuneStone
* V1_6/VehicleBattle
* V2_0/BlitzRush_Watcher
* V2_0/BlossomGroup
* V2_0/DrawOneLine_TreasureMap
* V2_0/ElectricCore
* V2_0/ElectricCore02
* V2_0/ElementFloor
* V2_0/ExhibitionRoleElectricBomb
* V2_0/ExhibitionRoleElectricPowerSource
* V2_0/OreBlossomGroup
* V2_0/PhotoTakenSuccessfully
* V2_0/RaioCotter
* V2_0/SetPerformanceOptimizationWithRegion_V2.0
* V2_0/SetPerformanceOptimizationWithRegion_V3.0
* V2_0/SetPerformanceOptimizationWithRegion_Event_V2.0
* V2_0/TemariChallenge
* V2_0/TemariChallengePreQuest
* V2_0/ThunderFloor
* V2_0/TowerDefense_Challenge_V2.0
* V2_0/TowerDefense_Gear_V2.0
* V2_0/TowerDefense_Monster_V2.0
* V2_0/TowerDefense_MonsterWaveConfig_V2.0
* V2_1/Boss_Raijin
* V2_1/FightingStage
* V2_1/FishingChallenge
* V2_1/FishingChallenge_Moonfin
* V2_1/ImmortalPot
* V2_1/ImmortalPotEx
* V2_1/Monster_Tide_Test
* V2_1/MoonlitCamp
* V2_1/PirateHelm
* V2_1/PirateShoji
* V2_1/Wakura
* V2_1/WoodFloorPlayOrder
* V2_1/WoodFloorPlaySame
* V2_1/SeaGodStatue
* V2_2/Ayesha
* V2_2/Circuit
* V2_2/DayFinishSuite
* V2_2/DecalDecode
* V2_2/Dig
* V2_2/PillarMove
* V2_2/SelfLoopSeeli
* V2_2/ShowDecals
* V2_2/RogueDungeon_BOSS
* V2_2/RogueDungeon_ChestRoom
* V2_2/RoqueDungeon_FirstRoom
* V2_2/RogueDungeon_Main
* V2_2/RogueDungeon_Require
* V2_2/TsurumiBirdFather
* V2_2/TsurumiStoneSeq
* V2_2/TsurumiTorch
* V2_3/EnergyDisk
* V2_3/EnergyDisk_Dungeon
* V2_3/HachiBattle
* V2_3/HachiDungeon
* V2_3/HachiSneak
* V2_3/MistTrialV2
* V2_3/MistTrialV2_BuffLog
* V2_4/BoxPusher
* V2_4/DeepSeaDrakeBoss
* V2_4/EnvStateManage
* V2_4/EnvState
* V2_4/EnvStateControl
* V2_4/EnvStateWorktop
* V2_4/Firecracker
* V2_4/HideAndSeek_Gallery_V2
* V2_4/HideAndSeek_Skill_V2"
* V2_4/MiniOsial
* V2_4/Monster_CombatEnd_Handle
* V2_4/PotionStage
* V2_4/QunyugeDebris
* V2_4/QunyugeDebris_Stop_Balloon
* V2_4/SeaLamp_Challenge_Manager
* V2_4/SealedAltar
* V2_4/WallMaze
* V2_5/DarkPressure
* V2_5/DarkStair
* V2_5/FightingStage_ByNum
* V2_5/FightingStage_ByTime
* V2_5/GiliGiliI_Boss
* V2_5/GiliGiliI_Quest
* V2_5/HM_BalloonGallery
* V2_5/Huarongdao
* V2_5/RecircleChallenge
* V2_5/ReviveBoss
* V2_5/ReviveCrystalEnergy
* V2_5/UGCDungeon_Reforge
* V2_5/UGCDungeon
* V2_5/Watcher_Energy
* V2_5/Watcher_Puzzle
* V2_5/Watcher_Tower
* V2_6/BW_LightRoadTrack
* V2_6/BW_RandomLoadSuite
* V2_6/CalculateBulletForward
* V2_6/CrystalLink
* V2_6/CYJY_Enter_Trans_Player
* V2_6/DigPlay
* V2_6/DropRockAbyssBulletTrigger
* V2_6/HM_WoodenStakeChallenge
* V2_6/IrodoriMaster
* V2_6/PhotographActivity
* V2_6/TowerDefense_Challenge_V3.0
* V2_6/TowerDefense_Gear_V3.0
* V2_6/TowerDefense_Monster_V3.0
* V2_6/TowerDefense_MonsterWaveConfig_V3.0"
* V2_6/TowerDefense_SpecialGears_V3.0
* V2_7/rogue_rotate_whitebox
* V2_7/Activity_GachaSync
* V2_7/Activity_LumenArena
* V2_7/Activity_LumenProtect
* V2_7/Activity_LumenCharge
* V2_7/Activity_LumenWipeout
* V2_7/BW_NearBossAuthorityChange
* V2_7/HM_FindTubby
* V2_7/Rogue_Cell
* V2_7/rogue_rotate_whitebox
* V2_7/Rogue_Terrain_1
* V2_7/Rogue_Terrain_2
* V2_7/Rogue_Terrain_3
* V2_7/YeLan_BoxPusher
* TD_Lib

6
docs/quests/README.md Normal file
View File

@ -0,0 +1,6 @@
# Quest Documentation
These are the [Wiki Files](https://github.com/Anime-Game-Servers/Grasscutter-Quests/wiki) from Grasscutter-Quests.\
## Sections
- [**Missing Scripts**](Missing-Scripts.md) - These are Lua scripts which are required for functionality of certain game elements.
- [The Outlander Who Caught the Wind (Prologue Act 1)](lines/The-Outlander-Who-Caught-the-Wind-(Prologue-Act-1).md)

View File

@ -0,0 +1,124 @@
# The Outlander Who Caught the Wind (Prologue Act 1)
To start/enable quests run `/quests enable` or activate questing in the server settings.
## Reading The Table
* ✔️ Natural Progression _possible_; works as intended
* ⚠️ Natural Progression _possible_; bugs occur, see note
* ❌ Natural Progression _not possible_; see note(s)
* ❓ Unknown Behavior
* bw = 'big-world scripts' enabled
* m = Main Quest
| [The Outlander Who Caught the Wind (Prologue Act 1)](https://genshin-impact.fandom.com/wiki/The_Outlander_Who_Caught_the_Wind) | Works (bw-on) | Works (bw-off) | Log in/out Works | Problems/Notes |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------|----------------|------------------|------------------------------------------------------------------------------------------------------------------------------------------------------|
| **m351 : Wanderer's Trail**<br />[500 CExp, 225 AExp, 975 Mora] | ✔️ | ⚠️ | ✔️ | completion possible without commands |
| 35104 : Traveler and Paimon Intro Cutscene | ✔️ | ✔️ | ✔️ |
| 35100 : Go to Paimon | ✔️ | ❓ | ✔️ |
| 35107 : #QUEST_HIDDEN | ✔️ | ❓ | ✔️ |
| 35101 : Follow Paimon | ✔️ | ❓ | ✔️ |
| 35106 : Unlock the Teleport Waypoint | ✔️ | ✔️ | ✔️ |
| 35105 : Go to the foot of the cliff | ✔️ | ❓ | ✔️ | If not relogging, Paimon will now be with you and move with you. |
| 35103 : [N/A] 469284815 #QUEST_HIDDEN | ✔️ | ❓ | ✔️ |
| 35102 : Climb to the top of the rock face | ✔️ | ❓ | ✔️ | Quest 35200 was automatically added to the In Progress list. |
|   |   |   |   |   |
| **m352 : Bird's Eye View**<br />(Teyvat Archon Quest Prologue: Act 1 - 1)<br />[500 CExp, 225 AExp, 975 Mora] | ✔️ | ❓ |  ✔️ | completion possible without commands |
| 35200 : Follow the path | ✔️ | ❓ | ✔️ | No new quest marker is automatically added. Opening the quest journal and selecting navigate will added it to the screen in the correct location. |
| 35201 : Go to Paimon | ✔️ | ❓ | ✔️ | Paimon will stay with the player. |
| 35202 : Talk to Paimon | ✔️ | ❓ | ✔️ |
| 35203 : Follow Paimon | ✔️ | ❓ | ✔️ | After logout it resets the user to 35202 |
| 35204 : Swim to the island in Starfell Lake | ✔️ | ❓ | ✔️ |
| 35205 : Bird's Eye View - Statue of The Seven (I) unlocked | ✔️ | ❓ | ✔️ | TODO check logout |
|   |   |   |   |   |
| **m353 : Unexpected Power**<br />(Teyvat Archon Quest Prologue: Act 1 - 2)<br />[20 Primo, 575 CExp, 250 AExp, 1100 Mora, 10 Sweet Madame, 10 Teyvat Fried Egg] | ✔️ | ❓ |  ✔️ | completion possible without commands, but slime multiply every time you log out and back in [#20](https://github.com/Hartie95/Grasscutter/issues/20) |
| 35301 : Unexpected Power - Talk to Paimon | ✔️ | ❓ | ✔️ |
| 35312 : Unexpected Power - Exit area rollback failed | ✔️ | ❓ | ✔️ | Player exits area before triggering 35301, you can call add 35312 which will trigger cutscene, but you will have a UI bug |
| 35302 : Unexpected Power - Unleash Your Elemental Skill | ✔️ | ❓ | ✔️ |
| 35309 : Unexpected Power - Defeat the slimes | ✔️ | ❓ | ✔️ |
| 35303 : Unexpected Power - Hold Elemental Skill | ✔️ | ❓ | ✔️ | holding progressbar is missing |
| 35310 : Unexpected Power - Defeat the slimes | ✔️ | ❓ | ✔️ |
| 35304 : Unexpected Power - Use Elemental Burst | ✔️ | ❓ | ✔️ |
| 35311 : Unexpected Power - Defeat the slimes | ✔️ | ❓ | ✔️ |
|   |   |   |   |   |
| **m355 : Forest Rendezvous**<br />(Teyvat Archon Quest Prologue: Act 1 - 3)<br />[575 CExp, 250 AExp, 1100 Mora] | ✔️ | ❓ | ✔️  | natural progression possible |
| 35501 : Go to Mondstadt | ✔️ | ❓ | ✔️  | Wait until Dvalin flies over. |
| 36100 : #QUEST_HIDDEN | ✔️ | ❓ | ✔️ | Cutscene trigger for dvalin flying over the players head |
| 36101 : #QUEST_HIDDEN | ✔️ | ❓ | ✔️  |
| 35502 : Advance to the heart of the forest | ✔️ | ❓ | ✔️ |
| 35503 : Talk to Paimon | ✔️ | ❓ | ✔️ |
| 35504 : Investigate what Paimon has found | ✔️ | ❓ | ✔️  |
| 35505 : Talk to Paimon | ✔️ | ❓ | ✔️ |
|   |   |   |   |   |
| **m354 : Wind-Riding Knight**<br />(Teyvat Archon Quest Prologue: Act 1 - 4)<br />[625 CExp, 275AExp, 1200 Mora] | ✔️ | ❓ |  ✔️ | |
| 35401 : Keep heading towards Mondstadt | ✔️ | ❓ | ✔️ |
| 35402 : Talk to the perky girl | ✔️ | ❓ | ✔️ | |
| 35404 : Use Amber to defeat the airborne slimes | ✔️ | ❓ | ✔️ |
| 35405 : #QUEST_HIDDEN | ✔️ | ❓ | ✔️ | wait until the talk is finished |
| 35403 : Go to the location designated by Amber | ✔️ | ❓ | ✔️ | |
|   |   |   |   |   |
| **m360 : Going Upon the Breeze**<br />(Teyvat Archon Quest Prologue: Act 1 - 5)<br />[20 Primo, 972 CExp, 275 AExp, 1800 Mora, 8 EnOre, 1 Recurve Bow] | ✔️ | ❓ |  ⚠️ | completion possible without commands, but with some smaller bugs |
| 36001 : Defeat the nearby hilichurls | ✔️ | ❓ |  ⚠️ | goal location might be wrong after logout. Monsters might multiply after logout |
| 36003 : Clear out the nearby hilichurl camp | ✔️ | ❌ |  ✔️ | There are more hillichurls then there should be. If bw script are disabled, changing the chest to open will break the script and hinder progress |
| 36004 : Talk to Amber | ✔️ | ❓ |  ✔️ | |
| 36005 : Keep heading towards Mondstadt | ✔️ | ❓ |  ✔️ | |
|   |   |   |   |   |
| **m356 : City of Freedom**<br />(Teyvat Archon Quest Prologue: Act 1 - 6)<br />[850 CExp, 250 AExp, 1625 Mora, 7 EnOre] | ⚠️ | ❓ |  ⚠️ | completion possible, but with some smaller bugs |
| 35601 : Talk to Amber | ✔️ | ❓ |  ✔️ | |
| 35602 : [CHS] - (test)跟随安柏#QUEST_HIDDEN | ⚠️ | ❓ |  ⚠️ | softlock during showing of tipps possible |
| 35603 : Go to the location designated by Amber | ✔️ | ❓ |  ✔️ | |
| 35604 : Talk to Amber | ✔️ | ❓ |  ✔️ |   |
| 35605 : [CHS] - (test)开始飞行教学#QUEST_HIDDEN | ✔️ | ❓ |  ✔️ | |
| 35606 : Meet Amber at the fountain plaza | ✔️ | ❓ |  ✔️ | |
|   |   |   |   |   |
| **m357 : Dragon Storm**<br />(Teyvat Archon Quest Prologue: Act 1 - 7)<br />[20 Primo, 1250 CExp, 275 AExp, 2400 Mora, 2 FineEnOre] | ✔️ | ❓ |  ✔️ | completion possible with smaller bugs |
| 35721 : Dvalin's Assault #QUEST_HIDDEN | ✔️ | ❓ |  ✔️ | Watch the cutscene and then wait to be airborne |
| 35722 : Fend off Stormterror | ⚠️ | ❓ |  ✔️ | Using the movement keys (W,A,S,D) in the Dvalin fight might kick you out of the instance. **INVESTIGATE FURTHER** |
| 35725 : [CHS] - (test)地城内cs#QUEST_HIDDEN | ✔️ | ❓ |  ✔️ | You will return to the main world |
| 35723 : Talk to Amber | ⚠️ | ❓ |  ✔️ | Weather is not stormy. Finish conversation with Amber and Kaeya, the go the KoF Headquarters |
| 35724 : Go to the Knights of Favonius Headquarters | ✔️ | ❓ |  ✔️ | |
|   |   |   |   | |
| **m358 : Knights of Favonius**<br />(Teyvat Archon Quest Prologue: Act 1 - 8)<br />[1025 CExp, 225 AExp, 1950 Mora, 43 EnOre] | ✔️ | ❓ |  ✔️ | completion possible |
| 35800 : #QUEST_HIDDEN | ⚠️ | ❓ |  ✔️ | wait two day via time forward to progress |
| 35801 : Enter the Knights of Favonius Headquarters | ✔️ | ❓ |  ✔️ | |
| 35802 : Knights of Favonius - Talk to Jean | ✔️ | ❓ |  ✔️ | |
|   |   |   |   | |
| **m306 : Winds of the Past**<br />(Teyvat Archon Quest Prologue: Act 1 - 9.1)<br />[20 Primo, 1550 CExp, 275 AExp, 3000 Mora, 3 FineEnOre] | ✔️ | ❓ |  ✔️ | completion possible with two commands |
| 30600 : Meet Amber at the temple | ✔️ | ❓ |  ✔️ | |
| 30601 : Talk to Amber | ✔️ | ❓ |  ✔️ | |
| 30602 : Enter the temple | ✔️ | ❓ |  ✔️ | Use /dungeon 1001 to go inside the dungeon |
| 30607 : [CHS] - (test)到教学点1#QUEST_HIDDEN | ✔️ | ❓ |  ✔️ | |
| 30608 : [CHS] - (test)到教学点2#QUEST_HIDDEN (Tutorial on how to aim and fire using Amber) | ✔️ | ❓ |  ✔️ | |
| 30609 : [CHS] - (test)到教学点3#QUEST_HIDDEN | ✔️ | ❓ |  ✔️ | |
| 30612 : [CHS] - (test)到垂直风场#QUEST_HIDDEN (Tutorial on how to burn stuff with Pyro) | ✔️ | ❓ |  ✔️ | |
| 30611 : [CHS] - (test)地城失败#QUEST_HIDDEN (Seems to be in case the dungeon is failed) | ✔️ | ❓ |  ✔️ | Walk forward and detroy the Dragon's Breath |
| 30603 : Explore the temple's depths | ✔️ | ❓ |  ✔️ | |
| 30610 : Winds of the Past - Talk to Amber | ✔️ | ❓ |  ✔️ | |
| 30604 : Winds of the Past - Leave Domain (Will not show on HUD) | ✔️ | ❓ |  ✔️ | |
|   |   |   |   |   |
| **m307 : Crash Course**<br />(Teyvat Archon Quest Prologue: Act 1 - 9.2)<br />[20 Primo, 1550 CExp, 275 AExp, 3000 Mora, 3 FineEnOre, 1 Traveler's Handy Sword, Kaeya lv1 c0] | ✔️ | ⚠️ |  ✔️ | completion possible with smaller bugs |
| 30700 : Meet Kaeya at the temple | ✔️ | ❓ |  ✔️ | |
| 30701 : Talk to Kaeya | ✔️ | ❓ |  ✔️ | |
| 30702 : Enter the temple | ✔️ | ⚠️ |  ✔️ | |
| 30710 : Talk to Kaeya | ✔️ | ✔️ |  ✔️ | |
| 30707 : [CHS] - (test)到教学点1#QUEST_HIDDEN | ✔️ | ✔️ |  ✔️ | |
| 30708 : [CHS] - (test)到教学点2#QUEST_HIDDEN (Cryo freezing tutorial) | ✔️ | ✔️ |  ✔️ | Freezing is not working, dashing though the fire works though |
| 30712 : [CHS] - (test)到教学点4#QUEST_HIDDEN (Hydro Amber tutorial) | ✔️ | ✔️ |  ✔️ | |
| 30711 : [CHS] - (test)地城失败#QUEST_HIDDEN (fail dungeon fallback) | ✔️ | ✔️ |  ✔️ | |
| 30709 : [CHS] - (test)到教学点3#QUEST_HIDDEN | ✔️ | ✔️ |  ✔️ | | 30702 | Spikes are broken and will make the player stuck, afterwards only tp or leaving the dungeon helps.<br /> finish via one of those solutions:<br />Move forward with `/teleport 440 -25 198`<br />Get early Kaeya with `/give 10000015 lv1 c0`<br />Jump over the spikes with other means.   |
| 30703 : Explore the temple's depths | ✔️ | ✔️ |  ✔️ | destroy the Dragons Breath |
| 30715 : Talk to Kaeya | ✔️ | ✔️ |  ✔️ | |
| 30713 : Kaeya cutscene | ✔️ | ✔️ |  ✔️ | |
| 30704 : Leave Domain | ✔️ | ✔️ |  ✔️ | |
|   |   |   |   |   |
| **m308 : Sparks Amongst the Pages**<br />(Teyvat Archon Quest Prologue: Act 1 - 9.3)<br />[20 Primo, 1550 CExp, 275 AExp, 3000 Mora, 3 FineEnOre, 1 Otherworldly Story, Lisa lv1 c0] | ✔️ | ⚠️ |  ✔️ | completion possible with a few commands |
| 30800 : Meet Lisa at the temple | ✔️ | ❓ |  ✔️ | |
| 30801 : Talk to Lisa | ✔️ | ❓ |  ✔️ | |
| 30802 : Enter the temple | ✔️ | ❌ |  ✔️ | |
| 30810 : Talk to Lisa | ✔️ | ✔️ |  ✔️ | |
| 30807 : [CHS] - (test)到教学点1#QUEST_HIDDEN | ✔️ | ✔️ |  ✔️ | |
| 30812 : [CHS] - (test)到教学点#QUEST_HIDDEN | ✔️ | ⚠️ |  ✔️ | |
| 30809 : [CHS] - (test)到教学点3#QUEST_HIDDEN | ✔️ | ✔️ |  ✔️ | |
| 30808 : [CHS] - (test)到教学点2#QUEST_HIDDEN | ✔️ | ✔️ |  ✔️ | | |
| 30811 : [CHS] - (test)地城失败#QUEST_HIDDEN (fail dungeon fallback) | ✔️ | ✔️ |  ✔️ | |
| 30803 : Explore the temple's depths | ✔️ | ✔️ |  ✔️ | |
| 30814 : Talk to Lisa | ✔️ | ✔️ |  ✔️ | |
| 30804 : Leave Domain | ✔️ | ✔️ |  ✔️ | no autoprogression | |

View File

@ -0,0 +1,17 @@
Excels:
- WorldAreaConfigData.json
- scene3_point.json (BinOutput/Scene/Trans)
textmaps contain the names of the areas
if a world area has an 'AreaType' of 'LEVEL_1', it has the following properties:
- there is not an 'AreaID2' field
- there is an 'elementType' field
- this is a PRIMARY region
if a world area has an 'AreaType' of 'LEVEL_2', it has the following properties:
- there is not an 'elementType' field
- the 'AreaID1' field is inherited from its parent area
- this is a SECONDARY region
the textmap hash is of the secondary region's name, unless it's a primary region

1
docs/wiki Submodule

Submodule docs/wiki added at 36d465c912

3
entrypoint.sh Normal file
View File

@ -0,0 +1,3 @@
#/bin/sh
java -jar /app/grasscutter.jar

6
gradle.properties Normal file
View File

@ -0,0 +1,6 @@
org.gradle.jvmargs=-Xmx8G
netty_version=4.1.111.Final
lombok_version=1.18.34
# spikehd was here :)

Binary file not shown.

View File

@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

270
gradlew vendored
View File

@ -1,7 +1,7 @@
#!/usr/bin/env sh #!/bin/sh
# #
# Copyright 2015 the original author or authors. # Copyright © 2015-2021 the original authors.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -17,78 +17,113 @@
# #
############################################################################## ##############################################################################
## #
## Gradle start up script for UN*X # Gradle start up script for POSIX generated by Gradle.
## #
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
############################################################################## ##############################################################################
# Attempt to set APP_HOME # Attempt to set APP_HOME
# Resolve links: $0 may be a link # Resolve links: $0 may be a link
PRG="$0" app_path=$0
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do # Need this for daisy-chained symlinks.
ls=`ls -ld "$PRG"` while
link=`expr "$ls" : '.*-> \(.*\)$'` APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
if expr "$link" : '/.*' > /dev/null; then [ -h "$app_path" ]
PRG="$link" do
else ls=$( ls -ld "$app_path" )
PRG=`dirname "$PRG"`"/$link" link=${ls#*' -> '}
fi case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle" APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"` APP_BASE_NAME=${0##*/}
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value. # Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum" MAX_FD=maximum
warn () { warn () {
echo "$*" echo "$*"
} } >&2
die () { die () {
echo echo
echo "$*" echo "$*"
echo echo
exit 1 exit 1
} } >&2
# OS specific support (must be 'true' or 'false'). # OS specific support (must be 'true' or 'false').
cygwin=false cygwin=false
msys=false msys=false
darwin=false darwin=false
nonstop=false nonstop=false
case "`uname`" in case "$( uname )" in #(
CYGWIN* ) CYGWIN* ) cygwin=true ;; #(
cygwin=true Darwin* ) darwin=true ;; #(
;; MSYS* | MINGW* ) msys=true ;; #(
Darwin* ) NONSTOP* ) nonstop=true ;;
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM. # Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables # IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java" JAVACMD=$JAVA_HOME/jre/sh/java
else else
JAVACMD="$JAVA_HOME/bin/java" JAVACMD=$JAVA_HOME/bin/java
fi fi
if [ ! -x "$JAVACMD" ] ; then if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@ -97,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation." location of your Java installation."
fi fi
else else
JAVACMD="java" JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the Please set the JAVA_HOME variable in your environment to match the
@ -105,84 +140,95 @@ location of your Java installation."
fi fi
# Increase the maximum file descriptors if we can. # Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
MAX_FD_LIMIT=`ulimit -H -n` case $MAX_FD in #(
if [ $? -eq 0 ] ; then max*)
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then MAX_FD=$( ulimit -H -n ) ||
MAX_FD="$MAX_FD_LIMIT" warn "Could not query maximum file descriptor limit"
fi esac
ulimit -n $MAX_FD case $MAX_FD in #(
if [ $? -ne 0 ] ; then '' | soft) :;; #(
warn "Could not set maximum file descriptor limit: $MAX_FD" *)
fi ulimit -n "$MAX_FD" ||
else warn "Could not set maximum file descriptor limit to $MAX_FD"
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac esac
fi fi
# Escape application args # Collect all arguments for the java command, stacking in reverse order:
save () { # * args from the command line
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done # * the main class name
echo " " # * -classpath
} # * -D...appname settings
APP_ARGS=$(save "$@") # * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# Collect all arguments for the java command, following the shell quoting and substitution rules # For Cygwin or MSYS, switch paths to Windows format before running java
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong JAVACMD=$( cygpath --unix "$JAVACMD" )
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
cd "$(dirname "$0")" # Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@" exec "$JAVACMD" "$@"

27
gradlew.bat vendored
View File

@ -29,15 +29,18 @@ if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0 set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME% set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" set DEFAULT_JVM_OPTS="-Xmx4G" "-Xms64m"
@rem Find java.exe @rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1 %JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init if "%ERRORLEVEL%" == "0" goto execute
echo. echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@ -51,7 +54,7 @@ goto fail
set JAVA_HOME=%JAVA_HOME:"=% set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init if exist "%JAVA_EXE%" goto execute
echo. echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
@ -61,28 +64,14 @@ echo location of your Java installation.
goto fail goto fail
:init
@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
:execute :execute
@rem Setup the command line @rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle @rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end :end
@rem End local scope for the variables with windows NT shell @rem End local scope for the variables with windows NT shell

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,63 +1,68 @@
{ {
"$schema": "http://json-schema.org/draft-07/schema#", "$schema": "http://json-schema.org/draft-07/schema#",
"title": "JSON schema for a Grasscutter Plugin", "title": "JSON schema for a Grasscutter Plugin",
"type": "object", "type": "object",
"additionalProperties": true, "additionalProperties": true,
"definitions": { "definitions": {
"plugin-name": { "plugin-name": {
"type": "string", "type": "string",
"pattern": "^[A-Za-z\\d_.-]+$" "pattern": "^[A-Za-z\\d_.-]+$"
}
},
"required": [
"name",
"description",
"mainClass"
],
"properties": {
"name": {
"description": "The unique name of plugin.",
"$ref": "#/definitions/plugin-name"
},
"mainClass": {
"description": "The plugin's initial class file.",
"type": "string",
"pattern": "^(?!org\\.bukkit\\.)([a-zA-Z_$][a-zA-Z\\d_$]*\\.)*[a-zA-Z_$][a-zA-Z\\d_$]*$"
},
"version": {
"description": "A plugin revision identifier.",
"type": [
"string",
"number"
]
},
"description": {
"description": "Human readable plugin summary.",
"type": "string"
},
"author": {
"description": "The plugin author.",
"type": "string"
},
"authors": {
"description": "The plugin contributors.",
"type": "array",
"items": {
"type": "string"
}
},
"website": {
"title": "Website",
"description": "The URL to the plugin's site",
"type": "string",
"format": "uri"
},
"loadAfter": {
"description": "Plugins to load before this plugin.",
"type": "array",
"items": {
"type": "string"
}
}
} }
},
"required": [
"name",
"description",
"mainClass",
"api"
],
"properties": {
"name": {
"description": "The unique name of plugin.",
"$ref": "#/definitions/plugin-name"
},
"mainClass": {
"description": "The plugin's initial class file.",
"type": "string",
"pattern": "^(?!org\\.bukkit\\.)([a-zA-Z_$][a-zA-Z\\d_$]*\\.)*[a-zA-Z_$][a-zA-Z\\d_$]*$"
},
"version": {
"description": "A plugin revision identifier.",
"type": [
"string",
"number"
]
},
"api": {
"description": "The API revision the plugin is using.",
"type": "number"
},
"description": {
"description": "Human readable plugin summary.",
"type": "string"
},
"author": {
"description": "The plugin author.",
"type": "string"
},
"authors": {
"description": "The plugin contributors.",
"type": "array",
"items": {
"type": "string"
}
},
"website": {
"title": "Website",
"description": "The URL to the plugin's site",
"type": "string",
"format": "uri"
},
"loadAfter": {
"description": "Plugins to load before this plugin.",
"type": "array",
"items": {
"type": "string"
}
}
}
} }

View File

@ -4,7 +4,7 @@ import subprocess
UPSTREAM = 'https://github.com/Grasscutters/Grasscutter.git' UPSTREAM = 'https://github.com/Grasscutters/Grasscutter.git'
RATCHET = 'LintRatchet' RATCHET = 'LintRatchet'
RATCHET_FALLBACK = '8e3deb9' RATCHET_FALLBACK = 'c517b8a2c95473811eb07e12e73c4a69e59fbbdc'
re_leading_whitespace = re.compile(r'^[ \t]+', re.MULTILINE) # Replace with \1.replace('\t', ' ') re_leading_whitespace = re.compile(r'^[ \t]+', re.MULTILINE) # Replace with \1.replace('\t', ' ')
@ -53,7 +53,7 @@ def format_file(filename: str) -> bool:
def main(): def main():
filelist = [f for f in get_changed_filelist() if f.endswith('.java')] filelist = [f for f in get_changed_filelist() if f.endswith('.java') and not f.startswith('src/generated')]
replaced = 0 replaced = 0
not_found = 0 not_found = 0
if not filelist: if not filelist:

View File

@ -0,0 +1,4 @@
@echo off
call ..\gradlew clean
pause

4
scripts/gradlew-jar.bat Normal file
View File

@ -0,0 +1,4 @@
@echo off
call ..\gradlew jar
pause

View File

@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Grasscutter install script for linux # Grasscutter install script for GNU/Linux
# Made by TurtleIdiot # Made by TurtleIdiot
# Stops the installer if any command has a non-zero exit status # Stops the installer if any command has a non-zero exit status

View File

@ -0,0 +1,220 @@
#!/usr/bin/env bash
# Grasscutter install script for GNU/Linux - Simpler version
# This installer doesn't ask you to install dependencies, you have to install them manually
# Made by TurtleIdiot and modified by syktyvkar (and then again modified by Blue)
# Stops the installer if any command has a non-zero exit status
set -e
# Checks for root
if [ $EUID != 0 ]; then
echo "Please run the installer as root (sudo)!"
exit
fi
is_command() {
# Checks if given command is available
local check_command="$1"
command -v "${check_command}" > /dev/null 2>&1
}
# IP validation
valid_ip() {
local ip=$1
local stat=1
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
OIFS=$IFS
IFS="."
ip=($ip)
IFS=$OIFS
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 \
&& ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
stat=$?
fi
return $stat
}
echo "#################################"
echo ""
echo "This script will take for granted that you have all dependencies installed (mongodb, openjdk-17-jre/jre17-openjdk, wget, openssl, unzip, git, curl, base-devel), in fact, this script is recommended to update your current server installation, and it should run from the same folder as grasscutter.jar"
echo "#################################"
echo ""
echo "If you are using version > 2.8 of the client, make sure to use the patched metadata if you don't use Cultivation."
echo "Search for METADATA here: https://discord.gg/grasscutter."
echo ""
echo "#################################"
echo "You can find plugins here: https://discord.com/channels/965284035985305680/970830969919664218"
echo ""
echo "Grasscutter will be installed to script's running directory"
echo "Do you wish to proceed and install Grasscutter?"
select yn in "Yes" "No" ; do
case $yn in
Yes ) break;;
No )
echo "Aborting..."
exit;;
esac
done
if [ -d "./resources" ]
then
echo "It's recommended to remove resources folder"
echo "Remove resources folder?"
select yn in "Yes" "No" ; do
case $yn in
Yes )
rm -rf resources
break;;
No )
echo "Aborting..."
exit;;
esac
done
echo "You may need to remove data folder and config.json to apply some updates"
echo "#################################"
fi
# Allows choice between stable and dev branch
echo "Please select the branch you wish to install"
echo -e "!!NOTE!!: stable is the recommended branch.\nDo *NOT* use development unless you have a reason to and know what you're doing"
select branch in "stable" "development" ; do
case $branch in
stable )
break;;
development )
break;;
esac
done
echo -e "Using $branch branch for installing server \n"
# Prompt IP address for config.json and for generating new keystore.p12 file
echo "Please enter the IP address that will be used to connect to the server"
echo "This can be a local or a public IP address"
echo "This IP address will be used to generate SSL certificates, so it is important it is correct!"
while : ; do
read -p "Enter server IP: " SERVER_IP
if valid_ip $SERVER_IP; then
break;
else
echo "Invalid IP address. Try again."
fi
done
echo "Beginning Grasscutter installation..."
# Download resources
echo "Downloading Grasscutter BinOutputs..."
git clone --single-branch https://github.com/Koko-boya/Grasscutter_Resources.git Grasscutter-bins
mv ./Grasscutter-bins/Resources ./resources
rm -rf Grasscutter-bins # takes ~350M of drive space after moving BinOutputs... :sob:
# Download and build jar
echo "Downloading Grasscutter source code..."
git clone --single-branch -b $branch https://github.com/Grasscutters/Grasscutter.git Grasscutter-src #change this to download a fork
echo "Building grasscutter.jar..."
cd Grasscutter-src
chmod +x ./gradlew #just in case
./gradlew --no-daemon jar
mv $(find -name "grasscutter*.jar" -type f) ../grasscutter.jar
echo "Building grasscutter.jar done!"
cd ..
# Generate handbook/config
echo "Grasscutter will be started to generate data files"
java -jar grasscutter.jar -version
# Replaces "127.0.0.1" with given IP
echo "Replacing IP address in server config..."
sed -i "s/127.0.0.1/$SERVER_IP/g" config.json
# Generates new keystore.p12 with the server's IP address
# This is done to prevent a "Connection Timed Out" error from appearing
# after clicking to enter the door in the main menu/title screen
# This issue only exists when connecting to a server *other* than localhost
# since the default keystore.p12 has only been made for localhost
mkdir certs
cd certs
echo "Generating CA key and certificate pair..."
openssl req -x509 -nodes -days 25202 -newkey rsa:2048 -subj "/C=GB/ST=Essex/L=London/O=Grasscutters/OU=Grasscutters/CN=$SERVER_IP" -keyout CAkey.key -out CAcert.crt
echo "Generating SSL key and certificate pair..."
openssl genpkey -out ssl.key -algorithm rsa
# Creates a conf file in order to generate a csr
cat > csr.conf <<EOF
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[ dn ]
C = GB
ST = Essex
L = London
O = Grasscutters
OU = Grasscutters
CN = $SERVER_IP
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
IP.1 = $SERVER_IP
EOF
# Creates csr using key and conf
openssl req -new -key ssl.key -out ssl.csr -config csr.conf
# Creates conf to finalise creation of certificate
cat > cert.conf <<EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, keyAgreement, dataEncipherment
subjectAltName = @alt_names
[alt_names]
IP.1 = $SERVER_IP
EOF
# Creates SSL cert
openssl x509 -req -in ssl.csr -CA CAcert.crt -CAkey CAkey.key -CAcreateserial -out ssl.crt -days 25202 -sha256 -extfile cert.conf
echo "Generating keystore.p12 from key and certificate..."
openssl pkcs12 -export -out keystore.p12 -inkey ssl.key -in ssl.crt -certfile CAcert.crt -passout pass:123456
cd ../
mv ./certs/keystore.p12 ./keystore.p12
echo "Done!"
# Running scripts as sudo makes all Grasscutter files to be owned by root
# which may cause problems editing .jsons...
if [ $SUDO_USER ]; then
echo "Changing Grasscutter files owner to current user..."
chown -R $SUDO_USER:$SUDO_USER ./*
fi
echo "Removing unnecessary files..."
rm -rf ./certs ./Grasscutter-src
echo "All done!"
echo "-=-=-=-=-=--- !! IMPORTANT !! ---=-=-=-=-=-"
echo "Please make sure that ports 80, 443, 8888 and 22102 are OPEN (both tcp and udp)"
echo "In order to run the server, run the following command:"
echo " sudo java -jar grasscutter.jar"
echo "The GM Handbook of all supported languages will be generated automatically when you start the server for the first time."
echo "You must run it using sudo as port 443 is a privileged port"
echo "To play, use the IP you provided earlier ($SERVER_IP) via GrassClipper or Fiddler"
echo ""
exit

View File

@ -23,13 +23,14 @@ def ppprint(data):
class JsonHelpers: class JsonHelpers:
@staticmethod @staticmethod
def load(filename: str) -> dict: def load(filename: str) -> dict:
with open(filename, 'r') as file: with open(filename, 'r', encoding='utf-8') as file:
return json.load(file) return json.load(file)
@staticmethod @staticmethod
def save(filename: str, data: dict) -> None: def save(filename: str, data: dict) -> None:
with open(filename, 'w', encoding='utf-8', newline='\n') as file: with open(filename, 'w', encoding='utf-8', newline='\n') as file:
json.dump(data, file, ensure_ascii=False, indent=INDENT) json.dump(data, file, ensure_ascii=False, indent=INDENT)
file.write('\n') # json.dump doesn't terminate last line
@staticmethod @staticmethod
def flatten(data: dict, prefix='') -> dict: def flatten(data: dict, prefix='') -> dict:
@ -90,6 +91,7 @@ class JsonHelpers:
class LanguageManager: class LanguageManager:
TRANSLATION_KEY = re.compile(r'[Tt]ranslate.*"(\w+\.[\w\.]+)"') TRANSLATION_KEY = re.compile(r'[Tt]ranslate.*"(\w+\.[\w\.]+)"')
POTENTIAL_KEY = re.compile(r'"(\w+\.[\w\.]+)"') POTENTIAL_KEY = re.compile(r'"(\w+\.[\w\.]+)"')
COMMAND_LABEL = re.compile(r'@Command\s*\([\W\w]*?label\s*=\s*"(\w+)"', re.MULTILINE) # [\W\w] is a cheeky way to match everything including \n
def __init__(self): def __init__(self):
self.load_jsons() self.load_jsons()
@ -116,12 +118,14 @@ class LanguageManager:
for file in files: for file in files:
if file.rpartition('.')[-1] in SOURCE_EXTENSIONS: if file.rpartition('.')[-1] in SOURCE_EXTENSIONS:
filename = os.path.join(root, file) filename = os.path.join(root, file)
with open(filename, 'r') as f: with open(filename, 'r', encoding='utf-8') as f:
data = f.read() # Loads in entire file at once data = f.read() # Loads in entire file at once
for k in self.TRANSLATION_KEY.findall(data): for k in self.TRANSLATION_KEY.findall(data):
used.add(k) used.add(k)
for k in self.POTENTIAL_KEY.findall(data): for k in self.POTENTIAL_KEY.findall(data):
potential.add(k) potential.add(k)
for label in self.COMMAND_LABEL.findall(data):
used.add(f'commands.{label}.description')
return used | (potential & expected_keys) return used | (potential & expected_keys)
def _lint_report_language(self, lang: str, keys: set, flattened: dict, primary_language_flattened: dict) -> None: def _lint_report_language(self, lang: str, keys: set, flattened: dict, primary_language_flattened: dict) -> None:

View File

@ -68,7 +68,7 @@ class MlgmXyysd_Animation_Company_Proxy:
] ]
def request(self, flow: http.HTTPFlow) -> None: def request(self, flow: http.HTTPFlow) -> None:
if flow.request.host in self.LIST_DOMAINS: if flow.request.pretty_host in self.LIST_DOMAINS:
if USE_SSL: if USE_SSL:
flow.request.scheme = "https" flow.request.scheme = "https"
else: else:

View File

@ -0,0 +1,333 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
public final class Ability {
private Ability() {}
public static void registerAllExtensions(
com.google.protobuf.ExtensionRegistryLite registry) {
}
public static void registerAllExtensions(
com.google.protobuf.ExtensionRegistry registry) {
registerAllExtensions(
(com.google.protobuf.ExtensionRegistryLite) registry);
}
static final com.google.protobuf.Descriptors.Descriptor
internal_static_AbilityInvocationsNotify_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_AbilityInvocationsNotify_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_AbilityInvokeEntryHead_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_AbilityInvokeEntryHead_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_AbilityInvokeEntry_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_AbilityInvokeEntry_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_AbilityChangeNotify_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_AbilityChangeNotify_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_ClientAbilityChangeNotify_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_ClientAbilityChangeNotify_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_EntityAbilityInvokeEntry_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_EntityAbilityInvokeEntry_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_AbilityInvocationFixedNotify_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_AbilityInvocationFixedNotify_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_ClientAbilityInitFinishNotify_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_ClientAbilityInitFinishNotify_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_AbilityInvocationFailNotify_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_AbilityInvocationFailNotify_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_ServerGlobalValueChangeNotify_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_ServerGlobalValueChangeNotify_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_ClientAbilitiesInitFinishCombineNotify_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_ClientAbilitiesInitFinishCombineNotify_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\rability.proto\032\013fight.proto\032\014define.pro" +
"to\"D\n\030AbilityInvocationsNotify\022(\n\013JJBLBL" +
"MDPHC\030\t \003(\0132\023.AbilityInvokeEntry\"\325\001\n\026Abi" +
"lityInvokeEntryHead\022\021\n\ttarget_id\030\r \001(\r\022 " +
"\n\030modifier_config_local_id\030\005 \001(\005\022\027\n\017serv" +
"er_buff_uid\030\002 \001(\r\022\036\n\026is_serverbuff_modif" +
"ier\030\004 \001(\010\022\035\n\025instanced_modifier_id\030\003 \001(\r" +
"\022\034\n\024instanced_ability_id\030\010 \001(\r\022\020\n\010local_" +
"id\030\001 \001(\005\"\222\002\n\022AbilityInvokeEntry\022\024\n\014abili" +
"ty_data\030\017 \001(\014\022%\n\004head\030\004 \001(\0132\027.AbilityInv" +
"okeEntryHead\022\026\n\016is_ignore_auth\030\006 \001(\010\022\021\n\t" +
"entity_id\030\013 \001(\r\022\"\n\014forward_type\030\t \001(\0162\014." +
"ForwardType\022\023\n\013JPHBOKDMDAH\030\r \001(\r\022\027\n\017tota" +
"l_tick_time\030\n \001(\001\022-\n\rargument_type\030\007 \001(\016" +
"2\026.AbilityInvokeArgument\022\023\n\013HNOGKEHFLHE\030" +
"\010 \001(\r\"]\n\023AbilityChangeNotify\0223\n\025ability_" +
"control_block\030\t \001(\0132\024.AbilityControlBloc" +
"k\022\021\n\tentity_id\030\014 \001(\r\"n\n\031ClientAbilityCha" +
"ngeNotify\022(\n\013JJBLBLMDPHC\030\017 \003(\0132\023.Ability" +
"InvokeEntry\022\024\n\014is_init_hash\030\014 \001(\010\022\021\n\tent" +
"ity_id\030\n \001(\r\"W\n\030EntityAbilityInvokeEntry" +
"\022(\n\013JJBLBLMDPHC\030\n \003(\0132\023.AbilityInvokeEnt" +
"ry\022\021\n\tentity_id\030\013 \001(\r\"\232\002\n\034AbilityInvocat" +
"ionFixedNotify\022(\n\013CNLHMFMMMOL\030\017 \001(\0132\023.Ab" +
"ilityInvokeEntry\022(\n\013KJADOHHDHNJ\030\001 \001(\0132\023." +
"AbilityInvokeEntry\022(\n\013FADGNFKGNOG\030\013 \001(\0132" +
"\023.AbilityInvokeEntry\022(\n\013PEJIJNIJGOO\030\014 \001(" +
"\0132\023.AbilityInvokeEntry\022(\n\013HBIDFELECFF\030\016 " +
"\001(\0132\023.AbilityInvokeEntry\022(\n\013IMELONLCKII\030" +
"\010 \001(\0132\023.AbilityInvokeEntry\"\\\n\035ClientAbil" +
"ityInitFinishNotify\022(\n\013JJBLBLMDPHC\030\017 \003(\013" +
"2\023.AbilityInvokeEntry\022\021\n\tentity_id\030\004 \001(\r" +
"\"e\n\033AbilityInvocationFailNotify\022\016\n\006reaso" +
"n\030\016 \001(\t\022#\n\006invoke\030\006 \001(\0132\023.AbilityInvokeE" +
"ntry\022\021\n\tentity_id\030\t \001(\r\"S\n\035ServerGlobalV" +
"alueChangeNotify\022\r\n\005value\030\r \001(\002\022\020\n\010key_h" +
"ash\030\t \001(\r\022\021\n\tentity_id\030\001 \001(\r\"_\n&ClientAb" +
"ilitiesInitFinishCombineNotify\0225\n\022entity" +
"_invoke_list\030\006 \003(\0132\031.EntityAbilityInvoke" +
"Entry*\326)\n\025AbilityInvokeArgument\022&\n\"Abili" +
"tyInvokeArgument_ABILITY_NONE\020\000\0226\n2Abili" +
"tyInvokeArgument_ABILITY_META_MODIFIER_C" +
"HANGE\020\001\022F\nBAbilityInvokeArgument_ABILITY" +
"_META_COMMAND_MODIFIER_CHANGE_REQUEST\020\002\022" +
"=\n9AbilityInvokeArgument_ABILITY_META_SP" +
"ECIAL_FLOAT_ARGUMENT\020\003\0225\n1AbilityInvokeA" +
"rgument_ABILITY_META_OVERRIDE_PARAM\020\004\022;\n" +
"7AbilityInvokeArgument_ABILITY_META_CLEA" +
"R_OVERRIDE_PARAM\020\005\0229\n5AbilityInvokeArgum" +
"ent_ABILITY_META_REINIT_OVERRIDEMAP\020\006\0229\n" +
"5AbilityInvokeArgument_ABILITY_META_GLOB" +
"AL_FLOAT_VALUE\020\007\022?\n;AbilityInvokeArgumen" +
"t_ABILITY_META_CLEAR_GLOBAL_FLOAT_VALUE\020" +
"\010\022?\n;AbilityInvokeArgument_ABILITY_META_" +
"ABILITY_ELEMENT_STRENGTH\020\t\022E\nAAbilityInv" +
"okeArgument_ABILITY_META_ADD_OR_GET_ABIL" +
"ITY_AND_TRIGGER\020\n\0228\n4AbilityInvokeArgume" +
"nt_ABILITY_META_SET_KILLED_SETATE\020\013\022:\n6A" +
"bilityInvokeArgument_ABILITY_META_SET_AB" +
"ILITY_TRIGGER\020\014\0226\n2AbilityInvokeArgument" +
"_ABILITY_META_ADD_NEW_ABILITY\020\r\0225\n1Abili" +
"tyInvokeArgument_ABILITY_META_REMOVE_ABI" +
"LITY\020\016\022@\n<AbilityInvokeArgument_ABILITY_" +
"META_SET_MODIFIER_APPLY_ENTITY\020\017\022A\n=Abil" +
"ityInvokeArgument_ABILITY_META_MODIFIER_" +
"DURABILITY_CHANGE\020\020\022>\n:AbilityInvokeArgu" +
"ment_ABILITY_META_ELEMENT_REACTION_VISUA" +
"L\020\021\0229\n5AbilityInvokeArgument_ABILITY_MET" +
"A_SET_POSE_PARAMETER\020\022\022B\n>AbilityInvokeA" +
"rgument_ABILITY_META_UPDATE_BASE_REACTIO" +
"N_DAMAGE\020\023\022?\n;AbilityInvokeArgument_ABIL" +
"ITY_META_TRIGGER_ELEMENT_REACTION\020\024\022.\n*A" +
"bilityInvokeArgument_ABILITY_META_LOSE_H" +
"P\020\025\0229\n5AbilityInvokeArgument_ABILITY_MET" +
"A_DURABILITY_IS_ZERO\020\026\022=\n9AbilityInvokeA" +
"rgument_ABILITY_META_TRIGGER_ARKHE_REACT" +
"ION\020\027\0227\n3AbilityInvokeArgument_ABILITY_M" +
"ETA_CHANGE_NYX_VALUE\020\030\0228\n4AbilityInvokeA" +
"rgument_ABILITY_ACTION_TRIGGER_ABILITY\0202" +
"\0229\n5AbilityInvokeArgument_ABILITY_ACTION" +
"_SET_CRASH_DAMAGE\0203\022/\n+AbilityInvokeArgu" +
"ment_ABILITY_ACTION_EFFECT\0204\022/\n+AbilityI" +
"nvokeArgument_ABILITY_ACTION_SUMMON\0205\022.\n" +
"*AbilityInvokeArgument_ABILITY_ACTION_BL" +
"INK\0206\0226\n2AbilityInvokeArgument_ABILITY_A" +
"CTION_CREATE_GADGET\0207\022=\n9AbilityInvokeAr" +
"gument_ABILITY_ACTION_APPLY_LEVEL_MODIFI" +
"ER\0208\022;\n7AbilityInvokeArgument_ABILITY_AC" +
"TION_GENERATE_ELEM_BALL\0209\022F\nBAbilityInvo" +
"keArgument_ABILITY_ACTION_SET_RANDOM_OVE" +
"RRIDE_MAP_VALUE\020:\022;\n7AbilityInvokeArgume" +
"nt_ABILITY_ACTION_SERVER_MONSTER_LOG\020;\0224" +
"\n0AbilityInvokeArgument_ABILITY_ACTION_C" +
"REATE_TILE\020<\0225\n1AbilityInvokeArgument_AB" +
"ILITY_ACTION_DESTROY_TILE\020=\0229\n5AbilityIn" +
"vokeArgument_ABILITY_ACTION_FIRE_AFTER_I" +
"MAGE\020>\0227\n3AbilityInvokeArgument_ABILITY_" +
"ACTION_DEDUCT_STAMINA\020?\0223\n/AbilityInvoke" +
"Argument_ABILITY_ACTION_HIT_EFFECT\020@\022@\n<" +
"AbilityInvokeArgument_ABILITY_ACTION_SET" +
"_BULLET_TRACK_TARGET\020A\0228\n4AbilityInvokeA" +
"rgument_ABILITY_ACTION_FIREWORK_EFFECT\020B" +
"\022=\n9AbilityInvokeArgument_ABILITY_ACTION" +
"_LEVEL_BANK_ADD_STUFF\020C\022A\n=AbilityInvoke" +
"Argument_ABILITY_ACTION_GET_MATERIAL_PAR" +
"AM_FLOAT\020D\022B\n>AbilityInvokeArgument_ABIL" +
"ITY_ACTION_GET_MATERIAL_PARAM_VECTOR\020E\022H" +
"\nDAbilityInvokeArgument_ABILITY_ACTION_S" +
"PECTACLE_BUILD_RECREATE_GADGET\020F\022>\n:Abil" +
"ityInvokeArgument_ABILITY_MIXIN_AVATAR_S" +
"TEER_BY_CAMERA\020d\0226\n2AbilityInvokeArgumen" +
"t_ABILITY_MIXIN_MONSTER_DEFEND\020e\0221\n-Abil" +
"ityInvokeArgument_ABILITY_MIXIN_WIND_ZON" +
"E\020f\0224\n0AbilityInvokeArgument_ABILITY_MIX" +
"IN_COST_STAMINA\020g\0224\n0AbilityInvokeArgume" +
"nt_ABILITY_MIXIN_ELITE_SHIELD\020h\0226\n2Abili" +
"tyInvokeArgument_ABILITY_MIXIN_ELEMENT_S" +
"HIELD\020i\0225\n1AbilityInvokeArgument_ABILITY" +
"_MIXIN_GLOBAL_SHIELD\020j\0222\n.AbilityInvokeA" +
"rgument_ABILITY_MIXIN_SHIELD_BAR\020k\0229\n5Ab" +
"ilityInvokeArgument_ABILITY_MIXIN_WIND_S" +
"EED_SPAWNER\020l\022E\nAAbilityInvokeArgument_A" +
"BILITY_MIXIN_DO_ACTION_BY_ELEMENT_REACTI" +
"ON\020m\022A\n=AbilityInvokeArgument_ABILITY_MI" +
"XIN_FIELD_ENTITY_COUNT_CHANGE\020n\0227\n3Abili" +
"tyInvokeArgument_ABILITY_MIXIN_SCENE_PRO" +
"P_SYNC\020o\0229\n5AbilityInvokeArgument_ABILIT" +
"Y_MIXIN_WIDGET_MP_SUPPORT\020p\022[\nWAbilityIn" +
"vokeArgument_ABILITY_MIXIN_DO_ACTION_BY_" +
"SELF_MODIFIER_ELEMENT_DURABILITY_RATIO\020q" +
"\022:\n6AbilityInvokeArgument_ABILITY_MIXIN_" +
"FIREWORKS_LAUNCHER\020r\022B\n>AbilityInvokeArg" +
"ument_ABILITY_MIXIN_ATTACK_RESULT_CREATE" +
"_COUNT\020s\0228\n4AbilityInvokeArgument_ABILIT" +
"Y_MIXIN_UGC_TIME_CONTROL\020t\0225\n1AbilityInv" +
"okeArgument_ABILITY_MIXIN_AVATAR_COMBAT\020" +
"u\022F\nBAbilityInvokeArgument_ABILITY_MIXIN" +
"_DEATH_ZONE_REGIONAL_PLAY_MIXIN\020v\0223\n/Abi" +
"lityInvokeArgument_ABILITY_MIXIN_UI_INTE" +
"RACT\020w\0229\n5AbilityInvokeArgument_ABILITY_" +
"MIXIN_SHOOT_FROM_CAMERA\020x\022<\n8AbilityInvo" +
"keArgument_ABILITY_MIXIN_ERASE_BRICK_ACT" +
"IVITY\020y\0220\n,AbilityInvokeArgument_ABILITY" +
"_MIXIN_BREAKOUT\020z\0223\n/AbilityInvokeArgume" +
"nt_ABILITY_MIXIN_DAMAGE_LOAN\020{\0224\n0Abilit" +
"yInvokeArgument_ABILITY_MIXIN_BROADCAST_" +
"GV\020|\0222\n.AbilityInvokeArgument_ABILITY_MI" +
"XIN_RECEIVE_GV\020}\022=\n9AbilityInvokeArgumen" +
"t_ABILITY_MIXIN_RAYCAST_SELECT_TARGET\020~\022" +
"=\n9AbilityInvokeArgument_ABILITY_MIXIN_E" +
"NERGY_CRYSTAL_TARGET\020\177\022?\n:AbilityInvokeA" +
"rgument_ABILITY_MIXIN_ROTATION_FOLLOW_CA" +
"MERA\020\200\001\0226\n1AbilityInvokeArgument_ABILITY" +
"_MIXIN_BUOYANT_FORCE\020\201\001\022;\n6AbilityInvoke" +
"Argument_ABILITY_MIXIN_FILMFEST_BALL_GAM" +
"E\020\202\001\022:\n5AbilityInvokeArgument_ABILITY_MI" +
"XIN_CHECK_SCAN_ENTITY\020\203\001\022:\n5AbilityInvok" +
"eArgument_ABILITY_MIXIN_TIME_TRACK_PLAYE" +
"R\020\205\001\0224\n/AbilityInvokeArgument_ABILITY_MI" +
"XIN_PART_FOLLOW\020\206\001\022:\n5AbilityInvokeArgum" +
"ent_ABILITY_MIXIN_CHANGE_PHLOGISTON\020\207\001\022Q" +
"\nLAbilityInvokeArgument_ABILITY_MIXIN_HU" +
"MAN_DRAGON_COLLAB_PICK_PHLOGISTON_BALL\020\210" +
"\001\022=\n8AbilityInvokeArgument_ABILITY_MIXIN" +
"_FREQUENCY_SHIELD_BAR\020\211\001\022;\n6AbilityInvok" +
"eArgument_ABILITY_MIXIN_SHAMAN_VIEW_TARG" +
"ET\020\212\001\022H\nCAbilityInvokeArgument_ABILITY_M" +
"IXIN_ATTACH_MODIFIER_TO_GLOBAL_VALUE\020\213\001\022" +
"5\n0AbilityInvokeArgument_ABILITY_MIXIN_B" +
"RICK_MATRIX\020\214\001\022@\n;AbilityInvokeArgument_" +
"ABILITY_MIXIN_VEHICLE_STEER_BY_CAMERA\020\215\001" +
"\022<\n7AbilityInvokeArgument_ABILITY_MIXIN_" +
"AVATAR_SPECIAL_MOVE\020\217\001B$\n io.grasscutter" +
".net.proto.abilityP\001b\006proto3"
};
descriptor = com.google.protobuf.Descriptors.FileDescriptor
.internalBuildGeneratedFileFrom(descriptorData,
new com.google.protobuf.Descriptors.FileDescriptor[] {
io.grasscutter.net.proto.fight.Fight.getDescriptor(),
io.grasscutter.net.proto.define.Define.getDescriptor(),
});
internal_static_AbilityInvocationsNotify_descriptor =
getDescriptor().getMessageTypes().get(0);
internal_static_AbilityInvocationsNotify_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_AbilityInvocationsNotify_descriptor,
new java.lang.String[] { "JJBLBLMDPHC", });
internal_static_AbilityInvokeEntryHead_descriptor =
getDescriptor().getMessageTypes().get(1);
internal_static_AbilityInvokeEntryHead_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_AbilityInvokeEntryHead_descriptor,
new java.lang.String[] { "TargetId", "ModifierConfigLocalId", "ServerBuffUid", "IsServerbuffModifier", "InstancedModifierId", "InstancedAbilityId", "LocalId", });
internal_static_AbilityInvokeEntry_descriptor =
getDescriptor().getMessageTypes().get(2);
internal_static_AbilityInvokeEntry_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_AbilityInvokeEntry_descriptor,
new java.lang.String[] { "AbilityData", "Head", "IsIgnoreAuth", "EntityId", "ForwardType", "JPHBOKDMDAH", "TotalTickTime", "ArgumentType", "HNOGKEHFLHE", });
internal_static_AbilityChangeNotify_descriptor =
getDescriptor().getMessageTypes().get(3);
internal_static_AbilityChangeNotify_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_AbilityChangeNotify_descriptor,
new java.lang.String[] { "AbilityControlBlock", "EntityId", });
internal_static_ClientAbilityChangeNotify_descriptor =
getDescriptor().getMessageTypes().get(4);
internal_static_ClientAbilityChangeNotify_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_ClientAbilityChangeNotify_descriptor,
new java.lang.String[] { "JJBLBLMDPHC", "IsInitHash", "EntityId", });
internal_static_EntityAbilityInvokeEntry_descriptor =
getDescriptor().getMessageTypes().get(5);
internal_static_EntityAbilityInvokeEntry_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_EntityAbilityInvokeEntry_descriptor,
new java.lang.String[] { "JJBLBLMDPHC", "EntityId", });
internal_static_AbilityInvocationFixedNotify_descriptor =
getDescriptor().getMessageTypes().get(6);
internal_static_AbilityInvocationFixedNotify_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_AbilityInvocationFixedNotify_descriptor,
new java.lang.String[] { "CNLHMFMMMOL", "KJADOHHDHNJ", "FADGNFKGNOG", "PEJIJNIJGOO", "HBIDFELECFF", "IMELONLCKII", });
internal_static_ClientAbilityInitFinishNotify_descriptor =
getDescriptor().getMessageTypes().get(7);
internal_static_ClientAbilityInitFinishNotify_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_ClientAbilityInitFinishNotify_descriptor,
new java.lang.String[] { "JJBLBLMDPHC", "EntityId", });
internal_static_AbilityInvocationFailNotify_descriptor =
getDescriptor().getMessageTypes().get(8);
internal_static_AbilityInvocationFailNotify_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_AbilityInvocationFailNotify_descriptor,
new java.lang.String[] { "Reason", "Invoke", "EntityId", });
internal_static_ServerGlobalValueChangeNotify_descriptor =
getDescriptor().getMessageTypes().get(9);
internal_static_ServerGlobalValueChangeNotify_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_ServerGlobalValueChangeNotify_descriptor,
new java.lang.String[] { "Value", "KeyHash", "EntityId", });
internal_static_ClientAbilitiesInitFinishCombineNotify_descriptor =
getDescriptor().getMessageTypes().get(10);
internal_static_ClientAbilitiesInitFinishCombineNotify_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_ClientAbilitiesInitFinishCombineNotify_descriptor,
new java.lang.String[] { "EntityInvokeList", });
io.grasscutter.net.proto.fight.Fight.getDescriptor();
io.grasscutter.net.proto.define.Define.getDescriptor();
}
// @@protoc_insertion_point(outer_class_scope)
}

View File

@ -0,0 +1,679 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
/**
* <pre>
* CmdId: 5798
* </pre>
*
* Protobuf type {@code AbilityChangeNotify}
*/
public final class AbilityChangeNotify extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:AbilityChangeNotify)
AbilityChangeNotifyOrBuilder {
private static final long serialVersionUID = 0L;
// Use AbilityChangeNotify.newBuilder() to construct.
private AbilityChangeNotify(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
super(builder);
}
private AbilityChangeNotify() {
}
@java.lang.Override
@SuppressWarnings({"unused"})
protected java.lang.Object newInstance(
UnusedPrivateParameter unused) {
return new AbilityChangeNotify();
}
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private AbilityChangeNotify(
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 74: {
io.grasscutter.net.proto.define.AbilityControlBlock.Builder subBuilder = null;
if (abilityControlBlock_ != null) {
subBuilder = abilityControlBlock_.toBuilder();
}
abilityControlBlock_ = input.readMessage(io.grasscutter.net.proto.define.AbilityControlBlock.parser(), extensionRegistry);
if (subBuilder != null) {
subBuilder.mergeFrom(abilityControlBlock_);
abilityControlBlock_ = subBuilder.buildPartial();
}
break;
}
case 96: {
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 (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 io.grasscutter.net.proto.ability.Ability.internal_static_AbilityChangeNotify_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.ability.Ability.internal_static_AbilityChangeNotify_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.ability.AbilityChangeNotify.class, io.grasscutter.net.proto.ability.AbilityChangeNotify.Builder.class);
}
public static final int ABILITY_CONTROL_BLOCK_FIELD_NUMBER = 9;
private io.grasscutter.net.proto.define.AbilityControlBlock abilityControlBlock_;
/**
* <code>.AbilityControlBlock ability_control_block = 9;</code>
* @return Whether the abilityControlBlock field is set.
*/
@java.lang.Override
public boolean hasAbilityControlBlock() {
return abilityControlBlock_ != null;
}
/**
* <code>.AbilityControlBlock ability_control_block = 9;</code>
* @return The abilityControlBlock.
*/
@java.lang.Override
public io.grasscutter.net.proto.define.AbilityControlBlock getAbilityControlBlock() {
return abilityControlBlock_ == null ? io.grasscutter.net.proto.define.AbilityControlBlock.getDefaultInstance() : abilityControlBlock_;
}
/**
* <code>.AbilityControlBlock ability_control_block = 9;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.define.AbilityControlBlockOrBuilder getAbilityControlBlockOrBuilder() {
return getAbilityControlBlock();
}
public static final int ENTITY_ID_FIELD_NUMBER = 12;
private int entityId_;
/**
* <code>uint32 entity_id = 12;</code>
* @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 (abilityControlBlock_ != null) {
output.writeMessage(9, getAbilityControlBlock());
}
if (entityId_ != 0) {
output.writeUInt32(12, entityId_);
}
unknownFields.writeTo(output);
}
@java.lang.Override
public int getSerializedSize() {
int size = memoizedSize;
if (size != -1) return size;
size = 0;
if (abilityControlBlock_ != null) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(9, getAbilityControlBlock());
}
if (entityId_ != 0) {
size += com.google.protobuf.CodedOutputStream
.computeUInt32Size(12, 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 io.grasscutter.net.proto.ability.AbilityChangeNotify)) {
return super.equals(obj);
}
io.grasscutter.net.proto.ability.AbilityChangeNotify other = (io.grasscutter.net.proto.ability.AbilityChangeNotify) obj;
if (hasAbilityControlBlock() != other.hasAbilityControlBlock()) return false;
if (hasAbilityControlBlock()) {
if (!getAbilityControlBlock()
.equals(other.getAbilityControlBlock())) 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();
if (hasAbilityControlBlock()) {
hash = (37 * hash) + ABILITY_CONTROL_BLOCK_FIELD_NUMBER;
hash = (53 * hash) + getAbilityControlBlock().hashCode();
}
hash = (37 * hash) + ENTITY_ID_FIELD_NUMBER;
hash = (53 * hash) + getEntityId();
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
}
public static io.grasscutter.net.proto.ability.AbilityChangeNotify parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.AbilityChangeNotify parseFrom(
java.nio.ByteBuffer data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.AbilityChangeNotify parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.AbilityChangeNotify parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.AbilityChangeNotify parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.AbilityChangeNotify parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.AbilityChangeNotify parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.AbilityChangeNotify 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 io.grasscutter.net.proto.ability.AbilityChangeNotify parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.AbilityChangeNotify 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 io.grasscutter.net.proto.ability.AbilityChangeNotify parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.AbilityChangeNotify 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(io.grasscutter.net.proto.ability.AbilityChangeNotify 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;
}
/**
* <pre>
* CmdId: 5798
* </pre>
*
* Protobuf type {@code AbilityChangeNotify}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:AbilityChangeNotify)
io.grasscutter.net.proto.ability.AbilityChangeNotifyOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.ability.Ability.internal_static_AbilityChangeNotify_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.ability.Ability.internal_static_AbilityChangeNotify_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.ability.AbilityChangeNotify.class, io.grasscutter.net.proto.ability.AbilityChangeNotify.Builder.class);
}
// Construct using io.grasscutter.net.proto.ability.AbilityChangeNotify.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();
if (abilityControlBlockBuilder_ == null) {
abilityControlBlock_ = null;
} else {
abilityControlBlock_ = null;
abilityControlBlockBuilder_ = null;
}
entityId_ = 0;
return this;
}
@java.lang.Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return io.grasscutter.net.proto.ability.Ability.internal_static_AbilityChangeNotify_descriptor;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityChangeNotify getDefaultInstanceForType() {
return io.grasscutter.net.proto.ability.AbilityChangeNotify.getDefaultInstance();
}
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityChangeNotify build() {
io.grasscutter.net.proto.ability.AbilityChangeNotify result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityChangeNotify buildPartial() {
io.grasscutter.net.proto.ability.AbilityChangeNotify result = new io.grasscutter.net.proto.ability.AbilityChangeNotify(this);
if (abilityControlBlockBuilder_ == null) {
result.abilityControlBlock_ = abilityControlBlock_;
} else {
result.abilityControlBlock_ = abilityControlBlockBuilder_.build();
}
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 io.grasscutter.net.proto.ability.AbilityChangeNotify) {
return mergeFrom((io.grasscutter.net.proto.ability.AbilityChangeNotify)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(io.grasscutter.net.proto.ability.AbilityChangeNotify other) {
if (other == io.grasscutter.net.proto.ability.AbilityChangeNotify.getDefaultInstance()) return this;
if (other.hasAbilityControlBlock()) {
mergeAbilityControlBlock(other.getAbilityControlBlock());
}
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 {
io.grasscutter.net.proto.ability.AbilityChangeNotify parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (io.grasscutter.net.proto.ability.AbilityChangeNotify) e.getUnfinishedMessage();
throw e.unwrapIOException();
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private io.grasscutter.net.proto.define.AbilityControlBlock abilityControlBlock_;
private com.google.protobuf.SingleFieldBuilderV3<
io.grasscutter.net.proto.define.AbilityControlBlock, io.grasscutter.net.proto.define.AbilityControlBlock.Builder, io.grasscutter.net.proto.define.AbilityControlBlockOrBuilder> abilityControlBlockBuilder_;
/**
* <code>.AbilityControlBlock ability_control_block = 9;</code>
* @return Whether the abilityControlBlock field is set.
*/
public boolean hasAbilityControlBlock() {
return abilityControlBlockBuilder_ != null || abilityControlBlock_ != null;
}
/**
* <code>.AbilityControlBlock ability_control_block = 9;</code>
* @return The abilityControlBlock.
*/
public io.grasscutter.net.proto.define.AbilityControlBlock getAbilityControlBlock() {
if (abilityControlBlockBuilder_ == null) {
return abilityControlBlock_ == null ? io.grasscutter.net.proto.define.AbilityControlBlock.getDefaultInstance() : abilityControlBlock_;
} else {
return abilityControlBlockBuilder_.getMessage();
}
}
/**
* <code>.AbilityControlBlock ability_control_block = 9;</code>
*/
public Builder setAbilityControlBlock(io.grasscutter.net.proto.define.AbilityControlBlock value) {
if (abilityControlBlockBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
abilityControlBlock_ = value;
onChanged();
} else {
abilityControlBlockBuilder_.setMessage(value);
}
return this;
}
/**
* <code>.AbilityControlBlock ability_control_block = 9;</code>
*/
public Builder setAbilityControlBlock(
io.grasscutter.net.proto.define.AbilityControlBlock.Builder builderForValue) {
if (abilityControlBlockBuilder_ == null) {
abilityControlBlock_ = builderForValue.build();
onChanged();
} else {
abilityControlBlockBuilder_.setMessage(builderForValue.build());
}
return this;
}
/**
* <code>.AbilityControlBlock ability_control_block = 9;</code>
*/
public Builder mergeAbilityControlBlock(io.grasscutter.net.proto.define.AbilityControlBlock value) {
if (abilityControlBlockBuilder_ == null) {
if (abilityControlBlock_ != null) {
abilityControlBlock_ =
io.grasscutter.net.proto.define.AbilityControlBlock.newBuilder(abilityControlBlock_).mergeFrom(value).buildPartial();
} else {
abilityControlBlock_ = value;
}
onChanged();
} else {
abilityControlBlockBuilder_.mergeFrom(value);
}
return this;
}
/**
* <code>.AbilityControlBlock ability_control_block = 9;</code>
*/
public Builder clearAbilityControlBlock() {
if (abilityControlBlockBuilder_ == null) {
abilityControlBlock_ = null;
onChanged();
} else {
abilityControlBlock_ = null;
abilityControlBlockBuilder_ = null;
}
return this;
}
/**
* <code>.AbilityControlBlock ability_control_block = 9;</code>
*/
public io.grasscutter.net.proto.define.AbilityControlBlock.Builder getAbilityControlBlockBuilder() {
onChanged();
return getAbilityControlBlockFieldBuilder().getBuilder();
}
/**
* <code>.AbilityControlBlock ability_control_block = 9;</code>
*/
public io.grasscutter.net.proto.define.AbilityControlBlockOrBuilder getAbilityControlBlockOrBuilder() {
if (abilityControlBlockBuilder_ != null) {
return abilityControlBlockBuilder_.getMessageOrBuilder();
} else {
return abilityControlBlock_ == null ?
io.grasscutter.net.proto.define.AbilityControlBlock.getDefaultInstance() : abilityControlBlock_;
}
}
/**
* <code>.AbilityControlBlock ability_control_block = 9;</code>
*/
private com.google.protobuf.SingleFieldBuilderV3<
io.grasscutter.net.proto.define.AbilityControlBlock, io.grasscutter.net.proto.define.AbilityControlBlock.Builder, io.grasscutter.net.proto.define.AbilityControlBlockOrBuilder>
getAbilityControlBlockFieldBuilder() {
if (abilityControlBlockBuilder_ == null) {
abilityControlBlockBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
io.grasscutter.net.proto.define.AbilityControlBlock, io.grasscutter.net.proto.define.AbilityControlBlock.Builder, io.grasscutter.net.proto.define.AbilityControlBlockOrBuilder>(
getAbilityControlBlock(),
getParentForChildren(),
isClean());
abilityControlBlock_ = null;
}
return abilityControlBlockBuilder_;
}
private int entityId_ ;
/**
* <code>uint32 entity_id = 12;</code>
* @return The entityId.
*/
@java.lang.Override
public int getEntityId() {
return entityId_;
}
/**
* <code>uint32 entity_id = 12;</code>
* @param value The entityId to set.
* @return This builder for chaining.
*/
public Builder setEntityId(int value) {
entityId_ = value;
onChanged();
return this;
}
/**
* <code>uint32 entity_id = 12;</code>
* @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:AbilityChangeNotify)
}
// @@protoc_insertion_point(class_scope:AbilityChangeNotify)
private static final io.grasscutter.net.proto.ability.AbilityChangeNotify DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new io.grasscutter.net.proto.ability.AbilityChangeNotify();
}
public static io.grasscutter.net.proto.ability.AbilityChangeNotify getDefaultInstance() {
return DEFAULT_INSTANCE;
}
private static final com.google.protobuf.Parser<AbilityChangeNotify>
PARSER = new com.google.protobuf.AbstractParser<AbilityChangeNotify>() {
@java.lang.Override
public AbilityChangeNotify parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new AbilityChangeNotify(input, extensionRegistry);
}
};
public static com.google.protobuf.Parser<AbilityChangeNotify> parser() {
return PARSER;
}
@java.lang.Override
public com.google.protobuf.Parser<AbilityChangeNotify> getParserForType() {
return PARSER;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityChangeNotify getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}

View File

@ -0,0 +1,30 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
public interface AbilityChangeNotifyOrBuilder extends
// @@protoc_insertion_point(interface_extends:AbilityChangeNotify)
com.google.protobuf.MessageOrBuilder {
/**
* <code>.AbilityControlBlock ability_control_block = 9;</code>
* @return Whether the abilityControlBlock field is set.
*/
boolean hasAbilityControlBlock();
/**
* <code>.AbilityControlBlock ability_control_block = 9;</code>
* @return The abilityControlBlock.
*/
io.grasscutter.net.proto.define.AbilityControlBlock getAbilityControlBlock();
/**
* <code>.AbilityControlBlock ability_control_block = 9;</code>
*/
io.grasscutter.net.proto.define.AbilityControlBlockOrBuilder getAbilityControlBlockOrBuilder();
/**
* <code>uint32 entity_id = 12;</code>
* @return The entityId.
*/
int getEntityId();
}

View File

@ -0,0 +1,817 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
/**
* <pre>
* CmdId: 23877
* </pre>
*
* Protobuf type {@code AbilityInvocationFailNotify}
*/
public final class AbilityInvocationFailNotify extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:AbilityInvocationFailNotify)
AbilityInvocationFailNotifyOrBuilder {
private static final long serialVersionUID = 0L;
// Use AbilityInvocationFailNotify.newBuilder() to construct.
private AbilityInvocationFailNotify(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
super(builder);
}
private AbilityInvocationFailNotify() {
reason_ = "";
}
@java.lang.Override
@SuppressWarnings({"unused"})
protected java.lang.Object newInstance(
UnusedPrivateParameter unused) {
return new AbilityInvocationFailNotify();
}
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private AbilityInvocationFailNotify(
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 50: {
io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder subBuilder = null;
if (invoke_ != null) {
subBuilder = invoke_.toBuilder();
}
invoke_ = input.readMessage(io.grasscutter.net.proto.ability.AbilityInvokeEntry.parser(), extensionRegistry);
if (subBuilder != null) {
subBuilder.mergeFrom(invoke_);
invoke_ = subBuilder.buildPartial();
}
break;
}
case 72: {
entityId_ = input.readUInt32();
break;
}
case 114: {
java.lang.String s = input.readStringRequireUtf8();
reason_ = s;
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 io.grasscutter.net.proto.ability.Ability.internal_static_AbilityInvocationFailNotify_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.ability.Ability.internal_static_AbilityInvocationFailNotify_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.ability.AbilityInvocationFailNotify.class, io.grasscutter.net.proto.ability.AbilityInvocationFailNotify.Builder.class);
}
public static final int REASON_FIELD_NUMBER = 14;
private volatile java.lang.Object reason_;
/**
* <code>string reason = 14;</code>
* @return The reason.
*/
@java.lang.Override
public java.lang.String getReason() {
java.lang.Object ref = reason_;
if (ref instanceof java.lang.String) {
return (java.lang.String) ref;
} else {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
reason_ = s;
return s;
}
}
/**
* <code>string reason = 14;</code>
* @return The bytes for reason.
*/
@java.lang.Override
public com.google.protobuf.ByteString
getReasonBytes() {
java.lang.Object ref = reason_;
if (ref instanceof java.lang.String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
reason_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
public static final int INVOKE_FIELD_NUMBER = 6;
private io.grasscutter.net.proto.ability.AbilityInvokeEntry invoke_;
/**
* <code>.AbilityInvokeEntry invoke = 6;</code>
* @return Whether the invoke field is set.
*/
@java.lang.Override
public boolean hasInvoke() {
return invoke_ != null;
}
/**
* <code>.AbilityInvokeEntry invoke = 6;</code>
* @return The invoke.
*/
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvokeEntry getInvoke() {
return invoke_ == null ? io.grasscutter.net.proto.ability.AbilityInvokeEntry.getDefaultInstance() : invoke_;
}
/**
* <code>.AbilityInvokeEntry invoke = 6;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getInvokeOrBuilder() {
return getInvoke();
}
public static final int ENTITY_ID_FIELD_NUMBER = 9;
private int entityId_;
/**
* <code>uint32 entity_id = 9;</code>
* @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 (invoke_ != null) {
output.writeMessage(6, getInvoke());
}
if (entityId_ != 0) {
output.writeUInt32(9, entityId_);
}
if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(reason_)) {
com.google.protobuf.GeneratedMessageV3.writeString(output, 14, reason_);
}
unknownFields.writeTo(output);
}
@java.lang.Override
public int getSerializedSize() {
int size = memoizedSize;
if (size != -1) return size;
size = 0;
if (invoke_ != null) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(6, getInvoke());
}
if (entityId_ != 0) {
size += com.google.protobuf.CodedOutputStream
.computeUInt32Size(9, entityId_);
}
if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(reason_)) {
size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, reason_);
}
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 io.grasscutter.net.proto.ability.AbilityInvocationFailNotify)) {
return super.equals(obj);
}
io.grasscutter.net.proto.ability.AbilityInvocationFailNotify other = (io.grasscutter.net.proto.ability.AbilityInvocationFailNotify) obj;
if (!getReason()
.equals(other.getReason())) return false;
if (hasInvoke() != other.hasInvoke()) return false;
if (hasInvoke()) {
if (!getInvoke()
.equals(other.getInvoke())) 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) + REASON_FIELD_NUMBER;
hash = (53 * hash) + getReason().hashCode();
if (hasInvoke()) {
hash = (37 * hash) + INVOKE_FIELD_NUMBER;
hash = (53 * hash) + getInvoke().hashCode();
}
hash = (37 * hash) + ENTITY_ID_FIELD_NUMBER;
hash = (53 * hash) + getEntityId();
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
}
public static io.grasscutter.net.proto.ability.AbilityInvocationFailNotify parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.AbilityInvocationFailNotify parseFrom(
java.nio.ByteBuffer data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.AbilityInvocationFailNotify parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.AbilityInvocationFailNotify parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.AbilityInvocationFailNotify parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.AbilityInvocationFailNotify parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.AbilityInvocationFailNotify parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.AbilityInvocationFailNotify 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 io.grasscutter.net.proto.ability.AbilityInvocationFailNotify parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.AbilityInvocationFailNotify 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 io.grasscutter.net.proto.ability.AbilityInvocationFailNotify parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.AbilityInvocationFailNotify 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(io.grasscutter.net.proto.ability.AbilityInvocationFailNotify 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;
}
/**
* <pre>
* CmdId: 23877
* </pre>
*
* Protobuf type {@code AbilityInvocationFailNotify}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:AbilityInvocationFailNotify)
io.grasscutter.net.proto.ability.AbilityInvocationFailNotifyOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.ability.Ability.internal_static_AbilityInvocationFailNotify_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.ability.Ability.internal_static_AbilityInvocationFailNotify_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.ability.AbilityInvocationFailNotify.class, io.grasscutter.net.proto.ability.AbilityInvocationFailNotify.Builder.class);
}
// Construct using io.grasscutter.net.proto.ability.AbilityInvocationFailNotify.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();
reason_ = "";
if (invokeBuilder_ == null) {
invoke_ = null;
} else {
invoke_ = null;
invokeBuilder_ = null;
}
entityId_ = 0;
return this;
}
@java.lang.Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return io.grasscutter.net.proto.ability.Ability.internal_static_AbilityInvocationFailNotify_descriptor;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvocationFailNotify getDefaultInstanceForType() {
return io.grasscutter.net.proto.ability.AbilityInvocationFailNotify.getDefaultInstance();
}
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvocationFailNotify build() {
io.grasscutter.net.proto.ability.AbilityInvocationFailNotify result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvocationFailNotify buildPartial() {
io.grasscutter.net.proto.ability.AbilityInvocationFailNotify result = new io.grasscutter.net.proto.ability.AbilityInvocationFailNotify(this);
result.reason_ = reason_;
if (invokeBuilder_ == null) {
result.invoke_ = invoke_;
} else {
result.invoke_ = invokeBuilder_.build();
}
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 io.grasscutter.net.proto.ability.AbilityInvocationFailNotify) {
return mergeFrom((io.grasscutter.net.proto.ability.AbilityInvocationFailNotify)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(io.grasscutter.net.proto.ability.AbilityInvocationFailNotify other) {
if (other == io.grasscutter.net.proto.ability.AbilityInvocationFailNotify.getDefaultInstance()) return this;
if (!other.getReason().isEmpty()) {
reason_ = other.reason_;
onChanged();
}
if (other.hasInvoke()) {
mergeInvoke(other.getInvoke());
}
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 {
io.grasscutter.net.proto.ability.AbilityInvocationFailNotify parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (io.grasscutter.net.proto.ability.AbilityInvocationFailNotify) e.getUnfinishedMessage();
throw e.unwrapIOException();
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private java.lang.Object reason_ = "";
/**
* <code>string reason = 14;</code>
* @return The reason.
*/
public java.lang.String getReason() {
java.lang.Object ref = reason_;
if (!(ref instanceof java.lang.String)) {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
reason_ = s;
return s;
} else {
return (java.lang.String) ref;
}
}
/**
* <code>string reason = 14;</code>
* @return The bytes for reason.
*/
public com.google.protobuf.ByteString
getReasonBytes() {
java.lang.Object ref = reason_;
if (ref instanceof String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
reason_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
}
}
/**
* <code>string reason = 14;</code>
* @param value The reason to set.
* @return This builder for chaining.
*/
public Builder setReason(
java.lang.String value) {
if (value == null) {
throw new NullPointerException();
}
reason_ = value;
onChanged();
return this;
}
/**
* <code>string reason = 14;</code>
* @return This builder for chaining.
*/
public Builder clearReason() {
reason_ = getDefaultInstance().getReason();
onChanged();
return this;
}
/**
* <code>string reason = 14;</code>
* @param value The bytes for reason to set.
* @return This builder for chaining.
*/
public Builder setReasonBytes(
com.google.protobuf.ByteString value) {
if (value == null) {
throw new NullPointerException();
}
checkByteStringIsUtf8(value);
reason_ = value;
onChanged();
return this;
}
private io.grasscutter.net.proto.ability.AbilityInvokeEntry invoke_;
private com.google.protobuf.SingleFieldBuilderV3<
io.grasscutter.net.proto.ability.AbilityInvokeEntry, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder, io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder> invokeBuilder_;
/**
* <code>.AbilityInvokeEntry invoke = 6;</code>
* @return Whether the invoke field is set.
*/
public boolean hasInvoke() {
return invokeBuilder_ != null || invoke_ != null;
}
/**
* <code>.AbilityInvokeEntry invoke = 6;</code>
* @return The invoke.
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntry getInvoke() {
if (invokeBuilder_ == null) {
return invoke_ == null ? io.grasscutter.net.proto.ability.AbilityInvokeEntry.getDefaultInstance() : invoke_;
} else {
return invokeBuilder_.getMessage();
}
}
/**
* <code>.AbilityInvokeEntry invoke = 6;</code>
*/
public Builder setInvoke(io.grasscutter.net.proto.ability.AbilityInvokeEntry value) {
if (invokeBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
invoke_ = value;
onChanged();
} else {
invokeBuilder_.setMessage(value);
}
return this;
}
/**
* <code>.AbilityInvokeEntry invoke = 6;</code>
*/
public Builder setInvoke(
io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder builderForValue) {
if (invokeBuilder_ == null) {
invoke_ = builderForValue.build();
onChanged();
} else {
invokeBuilder_.setMessage(builderForValue.build());
}
return this;
}
/**
* <code>.AbilityInvokeEntry invoke = 6;</code>
*/
public Builder mergeInvoke(io.grasscutter.net.proto.ability.AbilityInvokeEntry value) {
if (invokeBuilder_ == null) {
if (invoke_ != null) {
invoke_ =
io.grasscutter.net.proto.ability.AbilityInvokeEntry.newBuilder(invoke_).mergeFrom(value).buildPartial();
} else {
invoke_ = value;
}
onChanged();
} else {
invokeBuilder_.mergeFrom(value);
}
return this;
}
/**
* <code>.AbilityInvokeEntry invoke = 6;</code>
*/
public Builder clearInvoke() {
if (invokeBuilder_ == null) {
invoke_ = null;
onChanged();
} else {
invoke_ = null;
invokeBuilder_ = null;
}
return this;
}
/**
* <code>.AbilityInvokeEntry invoke = 6;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder getInvokeBuilder() {
onChanged();
return getInvokeFieldBuilder().getBuilder();
}
/**
* <code>.AbilityInvokeEntry invoke = 6;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getInvokeOrBuilder() {
if (invokeBuilder_ != null) {
return invokeBuilder_.getMessageOrBuilder();
} else {
return invoke_ == null ?
io.grasscutter.net.proto.ability.AbilityInvokeEntry.getDefaultInstance() : invoke_;
}
}
/**
* <code>.AbilityInvokeEntry invoke = 6;</code>
*/
private com.google.protobuf.SingleFieldBuilderV3<
io.grasscutter.net.proto.ability.AbilityInvokeEntry, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder, io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>
getInvokeFieldBuilder() {
if (invokeBuilder_ == null) {
invokeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
io.grasscutter.net.proto.ability.AbilityInvokeEntry, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder, io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>(
getInvoke(),
getParentForChildren(),
isClean());
invoke_ = null;
}
return invokeBuilder_;
}
private int entityId_ ;
/**
* <code>uint32 entity_id = 9;</code>
* @return The entityId.
*/
@java.lang.Override
public int getEntityId() {
return entityId_;
}
/**
* <code>uint32 entity_id = 9;</code>
* @param value The entityId to set.
* @return This builder for chaining.
*/
public Builder setEntityId(int value) {
entityId_ = value;
onChanged();
return this;
}
/**
* <code>uint32 entity_id = 9;</code>
* @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:AbilityInvocationFailNotify)
}
// @@protoc_insertion_point(class_scope:AbilityInvocationFailNotify)
private static final io.grasscutter.net.proto.ability.AbilityInvocationFailNotify DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new io.grasscutter.net.proto.ability.AbilityInvocationFailNotify();
}
public static io.grasscutter.net.proto.ability.AbilityInvocationFailNotify getDefaultInstance() {
return DEFAULT_INSTANCE;
}
private static final com.google.protobuf.Parser<AbilityInvocationFailNotify>
PARSER = new com.google.protobuf.AbstractParser<AbilityInvocationFailNotify>() {
@java.lang.Override
public AbilityInvocationFailNotify parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new AbilityInvocationFailNotify(input, extensionRegistry);
}
};
public static com.google.protobuf.Parser<AbilityInvocationFailNotify> parser() {
return PARSER;
}
@java.lang.Override
public com.google.protobuf.Parser<AbilityInvocationFailNotify> getParserForType() {
return PARSER;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvocationFailNotify getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}

View File

@ -0,0 +1,42 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
public interface AbilityInvocationFailNotifyOrBuilder extends
// @@protoc_insertion_point(interface_extends:AbilityInvocationFailNotify)
com.google.protobuf.MessageOrBuilder {
/**
* <code>string reason = 14;</code>
* @return The reason.
*/
java.lang.String getReason();
/**
* <code>string reason = 14;</code>
* @return The bytes for reason.
*/
com.google.protobuf.ByteString
getReasonBytes();
/**
* <code>.AbilityInvokeEntry invoke = 6;</code>
* @return Whether the invoke field is set.
*/
boolean hasInvoke();
/**
* <code>.AbilityInvokeEntry invoke = 6;</code>
* @return The invoke.
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntry getInvoke();
/**
* <code>.AbilityInvokeEntry invoke = 6;</code>
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getInvokeOrBuilder();
/**
* <code>uint32 entity_id = 9;</code>
* @return The entityId.
*/
int getEntityId();
}

View File

@ -0,0 +1,99 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
public interface AbilityInvocationFixedNotifyOrBuilder extends
// @@protoc_insertion_point(interface_extends:AbilityInvocationFixedNotify)
com.google.protobuf.MessageOrBuilder {
/**
* <code>.AbilityInvokeEntry CNLHMFMMMOL = 15;</code>
* @return Whether the cNLHMFMMMOL field is set.
*/
boolean hasCNLHMFMMMOL();
/**
* <code>.AbilityInvokeEntry CNLHMFMMMOL = 15;</code>
* @return The cNLHMFMMMOL.
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntry getCNLHMFMMMOL();
/**
* <code>.AbilityInvokeEntry CNLHMFMMMOL = 15;</code>
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getCNLHMFMMMOLOrBuilder();
/**
* <code>.AbilityInvokeEntry KJADOHHDHNJ = 1;</code>
* @return Whether the kJADOHHDHNJ field is set.
*/
boolean hasKJADOHHDHNJ();
/**
* <code>.AbilityInvokeEntry KJADOHHDHNJ = 1;</code>
* @return The kJADOHHDHNJ.
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntry getKJADOHHDHNJ();
/**
* <code>.AbilityInvokeEntry KJADOHHDHNJ = 1;</code>
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getKJADOHHDHNJOrBuilder();
/**
* <code>.AbilityInvokeEntry FADGNFKGNOG = 11;</code>
* @return Whether the fADGNFKGNOG field is set.
*/
boolean hasFADGNFKGNOG();
/**
* <code>.AbilityInvokeEntry FADGNFKGNOG = 11;</code>
* @return The fADGNFKGNOG.
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntry getFADGNFKGNOG();
/**
* <code>.AbilityInvokeEntry FADGNFKGNOG = 11;</code>
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getFADGNFKGNOGOrBuilder();
/**
* <code>.AbilityInvokeEntry PEJIJNIJGOO = 12;</code>
* @return Whether the pEJIJNIJGOO field is set.
*/
boolean hasPEJIJNIJGOO();
/**
* <code>.AbilityInvokeEntry PEJIJNIJGOO = 12;</code>
* @return The pEJIJNIJGOO.
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntry getPEJIJNIJGOO();
/**
* <code>.AbilityInvokeEntry PEJIJNIJGOO = 12;</code>
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getPEJIJNIJGOOOrBuilder();
/**
* <code>.AbilityInvokeEntry HBIDFELECFF = 14;</code>
* @return Whether the hBIDFELECFF field is set.
*/
boolean hasHBIDFELECFF();
/**
* <code>.AbilityInvokeEntry HBIDFELECFF = 14;</code>
* @return The hBIDFELECFF.
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntry getHBIDFELECFF();
/**
* <code>.AbilityInvokeEntry HBIDFELECFF = 14;</code>
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getHBIDFELECFFOrBuilder();
/**
* <code>.AbilityInvokeEntry IMELONLCKII = 8;</code>
* @return Whether the iMELONLCKII field is set.
*/
boolean hasIMELONLCKII();
/**
* <code>.AbilityInvokeEntry IMELONLCKII = 8;</code>
* @return The iMELONLCKII.
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntry getIMELONLCKII();
/**
* <code>.AbilityInvokeEntry IMELONLCKII = 8;</code>
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getIMELONLCKIIOrBuilder();
}

View File

@ -0,0 +1,778 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
/**
* <pre>
* CmdId: 7193
* </pre>
*
* Protobuf type {@code AbilityInvocationsNotify}
*/
public final class AbilityInvocationsNotify extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:AbilityInvocationsNotify)
AbilityInvocationsNotifyOrBuilder {
private static final long serialVersionUID = 0L;
// Use AbilityInvocationsNotify.newBuilder() to construct.
private AbilityInvocationsNotify(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
super(builder);
}
private AbilityInvocationsNotify() {
jJBLBLMDPHC_ = java.util.Collections.emptyList();
}
@java.lang.Override
@SuppressWarnings({"unused"})
protected java.lang.Object newInstance(
UnusedPrivateParameter unused) {
return new AbilityInvocationsNotify();
}
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private AbilityInvocationsNotify(
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 74: {
if (!((mutable_bitField0_ & 0x00000001) != 0)) {
jJBLBLMDPHC_ = new java.util.ArrayList<io.grasscutter.net.proto.ability.AbilityInvokeEntry>();
mutable_bitField0_ |= 0x00000001;
}
jJBLBLMDPHC_.add(
input.readMessage(io.grasscutter.net.proto.ability.AbilityInvokeEntry.parser(), extensionRegistry));
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 {
if (((mutable_bitField0_ & 0x00000001) != 0)) {
jJBLBLMDPHC_ = java.util.Collections.unmodifiableList(jJBLBLMDPHC_);
}
this.unknownFields = unknownFields.build();
makeExtensionsImmutable();
}
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.ability.Ability.internal_static_AbilityInvocationsNotify_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.ability.Ability.internal_static_AbilityInvocationsNotify_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.ability.AbilityInvocationsNotify.class, io.grasscutter.net.proto.ability.AbilityInvocationsNotify.Builder.class);
}
public static final int JJBLBLMDPHC_FIELD_NUMBER = 9;
private java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry> jJBLBLMDPHC_;
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
@java.lang.Override
public java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry> getJJBLBLMDPHCList() {
return jJBLBLMDPHC_;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
@java.lang.Override
public java.util.List<? extends io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>
getJJBLBLMDPHCOrBuilderList() {
return jJBLBLMDPHC_;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
@java.lang.Override
public int getJJBLBLMDPHCCount() {
return jJBLBLMDPHC_.size();
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvokeEntry getJJBLBLMDPHC(int index) {
return jJBLBLMDPHC_.get(index);
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getJJBLBLMDPHCOrBuilder(
int index) {
return jJBLBLMDPHC_.get(index);
}
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 {
for (int i = 0; i < jJBLBLMDPHC_.size(); i++) {
output.writeMessage(9, jJBLBLMDPHC_.get(i));
}
unknownFields.writeTo(output);
}
@java.lang.Override
public int getSerializedSize() {
int size = memoizedSize;
if (size != -1) return size;
size = 0;
for (int i = 0; i < jJBLBLMDPHC_.size(); i++) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(9, jJBLBLMDPHC_.get(i));
}
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 io.grasscutter.net.proto.ability.AbilityInvocationsNotify)) {
return super.equals(obj);
}
io.grasscutter.net.proto.ability.AbilityInvocationsNotify other = (io.grasscutter.net.proto.ability.AbilityInvocationsNotify) obj;
if (!getJJBLBLMDPHCList()
.equals(other.getJJBLBLMDPHCList())) 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 (getJJBLBLMDPHCCount() > 0) {
hash = (37 * hash) + JJBLBLMDPHC_FIELD_NUMBER;
hash = (53 * hash) + getJJBLBLMDPHCList().hashCode();
}
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
}
public static io.grasscutter.net.proto.ability.AbilityInvocationsNotify parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.AbilityInvocationsNotify parseFrom(
java.nio.ByteBuffer data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.AbilityInvocationsNotify parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.AbilityInvocationsNotify parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.AbilityInvocationsNotify parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.AbilityInvocationsNotify parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.AbilityInvocationsNotify parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.AbilityInvocationsNotify 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 io.grasscutter.net.proto.ability.AbilityInvocationsNotify parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.AbilityInvocationsNotify 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 io.grasscutter.net.proto.ability.AbilityInvocationsNotify parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.AbilityInvocationsNotify 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(io.grasscutter.net.proto.ability.AbilityInvocationsNotify 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;
}
/**
* <pre>
* CmdId: 7193
* </pre>
*
* Protobuf type {@code AbilityInvocationsNotify}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:AbilityInvocationsNotify)
io.grasscutter.net.proto.ability.AbilityInvocationsNotifyOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.ability.Ability.internal_static_AbilityInvocationsNotify_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.ability.Ability.internal_static_AbilityInvocationsNotify_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.ability.AbilityInvocationsNotify.class, io.grasscutter.net.proto.ability.AbilityInvocationsNotify.Builder.class);
}
// Construct using io.grasscutter.net.proto.ability.AbilityInvocationsNotify.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private Builder(
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessageV3
.alwaysUseFieldBuilders) {
getJJBLBLMDPHCFieldBuilder();
}
}
@java.lang.Override
public Builder clear() {
super.clear();
if (jJBLBLMDPHCBuilder_ == null) {
jJBLBLMDPHC_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
} else {
jJBLBLMDPHCBuilder_.clear();
}
return this;
}
@java.lang.Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return io.grasscutter.net.proto.ability.Ability.internal_static_AbilityInvocationsNotify_descriptor;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvocationsNotify getDefaultInstanceForType() {
return io.grasscutter.net.proto.ability.AbilityInvocationsNotify.getDefaultInstance();
}
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvocationsNotify build() {
io.grasscutter.net.proto.ability.AbilityInvocationsNotify result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvocationsNotify buildPartial() {
io.grasscutter.net.proto.ability.AbilityInvocationsNotify result = new io.grasscutter.net.proto.ability.AbilityInvocationsNotify(this);
int from_bitField0_ = bitField0_;
if (jJBLBLMDPHCBuilder_ == null) {
if (((bitField0_ & 0x00000001) != 0)) {
jJBLBLMDPHC_ = java.util.Collections.unmodifiableList(jJBLBLMDPHC_);
bitField0_ = (bitField0_ & ~0x00000001);
}
result.jJBLBLMDPHC_ = jJBLBLMDPHC_;
} else {
result.jJBLBLMDPHC_ = jJBLBLMDPHCBuilder_.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 io.grasscutter.net.proto.ability.AbilityInvocationsNotify) {
return mergeFrom((io.grasscutter.net.proto.ability.AbilityInvocationsNotify)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(io.grasscutter.net.proto.ability.AbilityInvocationsNotify other) {
if (other == io.grasscutter.net.proto.ability.AbilityInvocationsNotify.getDefaultInstance()) return this;
if (jJBLBLMDPHCBuilder_ == null) {
if (!other.jJBLBLMDPHC_.isEmpty()) {
if (jJBLBLMDPHC_.isEmpty()) {
jJBLBLMDPHC_ = other.jJBLBLMDPHC_;
bitField0_ = (bitField0_ & ~0x00000001);
} else {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.addAll(other.jJBLBLMDPHC_);
}
onChanged();
}
} else {
if (!other.jJBLBLMDPHC_.isEmpty()) {
if (jJBLBLMDPHCBuilder_.isEmpty()) {
jJBLBLMDPHCBuilder_.dispose();
jJBLBLMDPHCBuilder_ = null;
jJBLBLMDPHC_ = other.jJBLBLMDPHC_;
bitField0_ = (bitField0_ & ~0x00000001);
jJBLBLMDPHCBuilder_ =
com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
getJJBLBLMDPHCFieldBuilder() : null;
} else {
jJBLBLMDPHCBuilder_.addAllMessages(other.jJBLBLMDPHC_);
}
}
}
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 {
io.grasscutter.net.proto.ability.AbilityInvocationsNotify parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (io.grasscutter.net.proto.ability.AbilityInvocationsNotify) e.getUnfinishedMessage();
throw e.unwrapIOException();
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private int bitField0_;
private java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry> jJBLBLMDPHC_ =
java.util.Collections.emptyList();
private void ensureJJBLBLMDPHCIsMutable() {
if (!((bitField0_ & 0x00000001) != 0)) {
jJBLBLMDPHC_ = new java.util.ArrayList<io.grasscutter.net.proto.ability.AbilityInvokeEntry>(jJBLBLMDPHC_);
bitField0_ |= 0x00000001;
}
}
private com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.ability.AbilityInvokeEntry, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder, io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder> jJBLBLMDPHCBuilder_;
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
public java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry> getJJBLBLMDPHCList() {
if (jJBLBLMDPHCBuilder_ == null) {
return java.util.Collections.unmodifiableList(jJBLBLMDPHC_);
} else {
return jJBLBLMDPHCBuilder_.getMessageList();
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
public int getJJBLBLMDPHCCount() {
if (jJBLBLMDPHCBuilder_ == null) {
return jJBLBLMDPHC_.size();
} else {
return jJBLBLMDPHCBuilder_.getCount();
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntry getJJBLBLMDPHC(int index) {
if (jJBLBLMDPHCBuilder_ == null) {
return jJBLBLMDPHC_.get(index);
} else {
return jJBLBLMDPHCBuilder_.getMessage(index);
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
public Builder setJJBLBLMDPHC(
int index, io.grasscutter.net.proto.ability.AbilityInvokeEntry value) {
if (jJBLBLMDPHCBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.set(index, value);
onChanged();
} else {
jJBLBLMDPHCBuilder_.setMessage(index, value);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
public Builder setJJBLBLMDPHC(
int index, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder builderForValue) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.set(index, builderForValue.build());
onChanged();
} else {
jJBLBLMDPHCBuilder_.setMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
public Builder addJJBLBLMDPHC(io.grasscutter.net.proto.ability.AbilityInvokeEntry value) {
if (jJBLBLMDPHCBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.add(value);
onChanged();
} else {
jJBLBLMDPHCBuilder_.addMessage(value);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
public Builder addJJBLBLMDPHC(
int index, io.grasscutter.net.proto.ability.AbilityInvokeEntry value) {
if (jJBLBLMDPHCBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.add(index, value);
onChanged();
} else {
jJBLBLMDPHCBuilder_.addMessage(index, value);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
public Builder addJJBLBLMDPHC(
io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder builderForValue) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.add(builderForValue.build());
onChanged();
} else {
jJBLBLMDPHCBuilder_.addMessage(builderForValue.build());
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
public Builder addJJBLBLMDPHC(
int index, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder builderForValue) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.add(index, builderForValue.build());
onChanged();
} else {
jJBLBLMDPHCBuilder_.addMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
public Builder addAllJJBLBLMDPHC(
java.lang.Iterable<? extends io.grasscutter.net.proto.ability.AbilityInvokeEntry> values) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
com.google.protobuf.AbstractMessageLite.Builder.addAll(
values, jJBLBLMDPHC_);
onChanged();
} else {
jJBLBLMDPHCBuilder_.addAllMessages(values);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
public Builder clearJJBLBLMDPHC() {
if (jJBLBLMDPHCBuilder_ == null) {
jJBLBLMDPHC_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
onChanged();
} else {
jJBLBLMDPHCBuilder_.clear();
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
public Builder removeJJBLBLMDPHC(int index) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.remove(index);
onChanged();
} else {
jJBLBLMDPHCBuilder_.remove(index);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder getJJBLBLMDPHCBuilder(
int index) {
return getJJBLBLMDPHCFieldBuilder().getBuilder(index);
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getJJBLBLMDPHCOrBuilder(
int index) {
if (jJBLBLMDPHCBuilder_ == null) {
return jJBLBLMDPHC_.get(index); } else {
return jJBLBLMDPHCBuilder_.getMessageOrBuilder(index);
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
public java.util.List<? extends io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>
getJJBLBLMDPHCOrBuilderList() {
if (jJBLBLMDPHCBuilder_ != null) {
return jJBLBLMDPHCBuilder_.getMessageOrBuilderList();
} else {
return java.util.Collections.unmodifiableList(jJBLBLMDPHC_);
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder addJJBLBLMDPHCBuilder() {
return getJJBLBLMDPHCFieldBuilder().addBuilder(
io.grasscutter.net.proto.ability.AbilityInvokeEntry.getDefaultInstance());
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder addJJBLBLMDPHCBuilder(
int index) {
return getJJBLBLMDPHCFieldBuilder().addBuilder(
index, io.grasscutter.net.proto.ability.AbilityInvokeEntry.getDefaultInstance());
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
public java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder>
getJJBLBLMDPHCBuilderList() {
return getJJBLBLMDPHCFieldBuilder().getBuilderList();
}
private com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.ability.AbilityInvokeEntry, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder, io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>
getJJBLBLMDPHCFieldBuilder() {
if (jJBLBLMDPHCBuilder_ == null) {
jJBLBLMDPHCBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.ability.AbilityInvokeEntry, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder, io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>(
jJBLBLMDPHC_,
((bitField0_ & 0x00000001) != 0),
getParentForChildren(),
isClean());
jJBLBLMDPHC_ = null;
}
return jJBLBLMDPHCBuilder_;
}
@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:AbilityInvocationsNotify)
}
// @@protoc_insertion_point(class_scope:AbilityInvocationsNotify)
private static final io.grasscutter.net.proto.ability.AbilityInvocationsNotify DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new io.grasscutter.net.proto.ability.AbilityInvocationsNotify();
}
public static io.grasscutter.net.proto.ability.AbilityInvocationsNotify getDefaultInstance() {
return DEFAULT_INSTANCE;
}
private static final com.google.protobuf.Parser<AbilityInvocationsNotify>
PARSER = new com.google.protobuf.AbstractParser<AbilityInvocationsNotify>() {
@java.lang.Override
public AbilityInvocationsNotify parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new AbilityInvocationsNotify(input, extensionRegistry);
}
};
public static com.google.protobuf.Parser<AbilityInvocationsNotify> parser() {
return PARSER;
}
@java.lang.Override
public com.google.protobuf.Parser<AbilityInvocationsNotify> getParserForType() {
return PARSER;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvocationsNotify getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}

View File

@ -0,0 +1,33 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
public interface AbilityInvocationsNotifyOrBuilder extends
// @@protoc_insertion_point(interface_extends:AbilityInvocationsNotify)
com.google.protobuf.MessageOrBuilder {
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry>
getJJBLBLMDPHCList();
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntry getJJBLBLMDPHC(int index);
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
int getJJBLBLMDPHCCount();
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
java.util.List<? extends io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>
getJJBLBLMDPHCOrBuilderList();
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 9;</code>
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getJJBLBLMDPHCOrBuilder(
int index);
}

View File

@ -0,0 +1,887 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
/**
* Protobuf enum {@code AbilityInvokeArgument}
*/
public enum AbilityInvokeArgument
implements com.google.protobuf.ProtocolMessageEnum {
/**
* <code>AbilityInvokeArgument_ABILITY_NONE = 0;</code>
*/
AbilityInvokeArgument_ABILITY_NONE(0),
/**
* <code>AbilityInvokeArgument_ABILITY_META_MODIFIER_CHANGE = 1;</code>
*/
AbilityInvokeArgument_ABILITY_META_MODIFIER_CHANGE(1),
/**
* <code>AbilityInvokeArgument_ABILITY_META_COMMAND_MODIFIER_CHANGE_REQUEST = 2;</code>
*/
AbilityInvokeArgument_ABILITY_META_COMMAND_MODIFIER_CHANGE_REQUEST(2),
/**
* <code>AbilityInvokeArgument_ABILITY_META_SPECIAL_FLOAT_ARGUMENT = 3;</code>
*/
AbilityInvokeArgument_ABILITY_META_SPECIAL_FLOAT_ARGUMENT(3),
/**
* <code>AbilityInvokeArgument_ABILITY_META_OVERRIDE_PARAM = 4;</code>
*/
AbilityInvokeArgument_ABILITY_META_OVERRIDE_PARAM(4),
/**
* <code>AbilityInvokeArgument_ABILITY_META_CLEAR_OVERRIDE_PARAM = 5;</code>
*/
AbilityInvokeArgument_ABILITY_META_CLEAR_OVERRIDE_PARAM(5),
/**
* <code>AbilityInvokeArgument_ABILITY_META_REINIT_OVERRIDEMAP = 6;</code>
*/
AbilityInvokeArgument_ABILITY_META_REINIT_OVERRIDEMAP(6),
/**
* <code>AbilityInvokeArgument_ABILITY_META_GLOBAL_FLOAT_VALUE = 7;</code>
*/
AbilityInvokeArgument_ABILITY_META_GLOBAL_FLOAT_VALUE(7),
/**
* <code>AbilityInvokeArgument_ABILITY_META_CLEAR_GLOBAL_FLOAT_VALUE = 8;</code>
*/
AbilityInvokeArgument_ABILITY_META_CLEAR_GLOBAL_FLOAT_VALUE(8),
/**
* <code>AbilityInvokeArgument_ABILITY_META_ABILITY_ELEMENT_STRENGTH = 9;</code>
*/
AbilityInvokeArgument_ABILITY_META_ABILITY_ELEMENT_STRENGTH(9),
/**
* <code>AbilityInvokeArgument_ABILITY_META_ADD_OR_GET_ABILITY_AND_TRIGGER = 10;</code>
*/
AbilityInvokeArgument_ABILITY_META_ADD_OR_GET_ABILITY_AND_TRIGGER(10),
/**
* <code>AbilityInvokeArgument_ABILITY_META_SET_KILLED_SETATE = 11;</code>
*/
AbilityInvokeArgument_ABILITY_META_SET_KILLED_SETATE(11),
/**
* <code>AbilityInvokeArgument_ABILITY_META_SET_ABILITY_TRIGGER = 12;</code>
*/
AbilityInvokeArgument_ABILITY_META_SET_ABILITY_TRIGGER(12),
/**
* <code>AbilityInvokeArgument_ABILITY_META_ADD_NEW_ABILITY = 13;</code>
*/
AbilityInvokeArgument_ABILITY_META_ADD_NEW_ABILITY(13),
/**
* <code>AbilityInvokeArgument_ABILITY_META_REMOVE_ABILITY = 14;</code>
*/
AbilityInvokeArgument_ABILITY_META_REMOVE_ABILITY(14),
/**
* <code>AbilityInvokeArgument_ABILITY_META_SET_MODIFIER_APPLY_ENTITY = 15;</code>
*/
AbilityInvokeArgument_ABILITY_META_SET_MODIFIER_APPLY_ENTITY(15),
/**
* <code>AbilityInvokeArgument_ABILITY_META_MODIFIER_DURABILITY_CHANGE = 16;</code>
*/
AbilityInvokeArgument_ABILITY_META_MODIFIER_DURABILITY_CHANGE(16),
/**
* <code>AbilityInvokeArgument_ABILITY_META_ELEMENT_REACTION_VISUAL = 17;</code>
*/
AbilityInvokeArgument_ABILITY_META_ELEMENT_REACTION_VISUAL(17),
/**
* <code>AbilityInvokeArgument_ABILITY_META_SET_POSE_PARAMETER = 18;</code>
*/
AbilityInvokeArgument_ABILITY_META_SET_POSE_PARAMETER(18),
/**
* <code>AbilityInvokeArgument_ABILITY_META_UPDATE_BASE_REACTION_DAMAGE = 19;</code>
*/
AbilityInvokeArgument_ABILITY_META_UPDATE_BASE_REACTION_DAMAGE(19),
/**
* <code>AbilityInvokeArgument_ABILITY_META_TRIGGER_ELEMENT_REACTION = 20;</code>
*/
AbilityInvokeArgument_ABILITY_META_TRIGGER_ELEMENT_REACTION(20),
/**
* <code>AbilityInvokeArgument_ABILITY_META_LOSE_HP = 21;</code>
*/
AbilityInvokeArgument_ABILITY_META_LOSE_HP(21),
/**
* <code>AbilityInvokeArgument_ABILITY_META_DURABILITY_IS_ZERO = 22;</code>
*/
AbilityInvokeArgument_ABILITY_META_DURABILITY_IS_ZERO(22),
/**
* <code>AbilityInvokeArgument_ABILITY_META_TRIGGER_ARKHE_REACTION = 23;</code>
*/
AbilityInvokeArgument_ABILITY_META_TRIGGER_ARKHE_REACTION(23),
/**
* <code>AbilityInvokeArgument_ABILITY_META_CHANGE_NYX_VALUE = 24;</code>
*/
AbilityInvokeArgument_ABILITY_META_CHANGE_NYX_VALUE(24),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_TRIGGER_ABILITY = 50;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_TRIGGER_ABILITY(50),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_SET_CRASH_DAMAGE = 51;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_SET_CRASH_DAMAGE(51),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_EFFECT = 52;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_EFFECT(52),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_SUMMON = 53;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_SUMMON(53),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_BLINK = 54;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_BLINK(54),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_CREATE_GADGET = 55;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_CREATE_GADGET(55),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_APPLY_LEVEL_MODIFIER = 56;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_APPLY_LEVEL_MODIFIER(56),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_GENERATE_ELEM_BALL = 57;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_GENERATE_ELEM_BALL(57),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_SET_RANDOM_OVERRIDE_MAP_VALUE = 58;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_SET_RANDOM_OVERRIDE_MAP_VALUE(58),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_SERVER_MONSTER_LOG = 59;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_SERVER_MONSTER_LOG(59),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_CREATE_TILE = 60;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_CREATE_TILE(60),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_DESTROY_TILE = 61;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_DESTROY_TILE(61),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_FIRE_AFTER_IMAGE = 62;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_FIRE_AFTER_IMAGE(62),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_DEDUCT_STAMINA = 63;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_DEDUCT_STAMINA(63),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_HIT_EFFECT = 64;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_HIT_EFFECT(64),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_SET_BULLET_TRACK_TARGET = 65;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_SET_BULLET_TRACK_TARGET(65),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_FIREWORK_EFFECT = 66;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_FIREWORK_EFFECT(66),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_LEVEL_BANK_ADD_STUFF = 67;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_LEVEL_BANK_ADD_STUFF(67),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_GET_MATERIAL_PARAM_FLOAT = 68;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_GET_MATERIAL_PARAM_FLOAT(68),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_GET_MATERIAL_PARAM_VECTOR = 69;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_GET_MATERIAL_PARAM_VECTOR(69),
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_SPECTACLE_BUILD_RECREATE_GADGET = 70;</code>
*/
AbilityInvokeArgument_ABILITY_ACTION_SPECTACLE_BUILD_RECREATE_GADGET(70),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_AVATAR_STEER_BY_CAMERA = 100;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_AVATAR_STEER_BY_CAMERA(100),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_MONSTER_DEFEND = 101;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_MONSTER_DEFEND(101),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_WIND_ZONE = 102;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_WIND_ZONE(102),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_COST_STAMINA = 103;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_COST_STAMINA(103),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_ELITE_SHIELD = 104;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_ELITE_SHIELD(104),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_ELEMENT_SHIELD = 105;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_ELEMENT_SHIELD(105),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_GLOBAL_SHIELD = 106;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_GLOBAL_SHIELD(106),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_SHIELD_BAR = 107;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_SHIELD_BAR(107),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_WIND_SEED_SPAWNER = 108;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_WIND_SEED_SPAWNER(108),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_DO_ACTION_BY_ELEMENT_REACTION = 109;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_DO_ACTION_BY_ELEMENT_REACTION(109),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_FIELD_ENTITY_COUNT_CHANGE = 110;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_FIELD_ENTITY_COUNT_CHANGE(110),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_SCENE_PROP_SYNC = 111;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_SCENE_PROP_SYNC(111),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_WIDGET_MP_SUPPORT = 112;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_WIDGET_MP_SUPPORT(112),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_DO_ACTION_BY_SELF_MODIFIER_ELEMENT_DURABILITY_RATIO = 113;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_DO_ACTION_BY_SELF_MODIFIER_ELEMENT_DURABILITY_RATIO(113),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_FIREWORKS_LAUNCHER = 114;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_FIREWORKS_LAUNCHER(114),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_ATTACK_RESULT_CREATE_COUNT = 115;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_ATTACK_RESULT_CREATE_COUNT(115),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_UGC_TIME_CONTROL = 116;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_UGC_TIME_CONTROL(116),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_AVATAR_COMBAT = 117;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_AVATAR_COMBAT(117),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_DEATH_ZONE_REGIONAL_PLAY_MIXIN = 118;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_DEATH_ZONE_REGIONAL_PLAY_MIXIN(118),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_UI_INTERACT = 119;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_UI_INTERACT(119),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_SHOOT_FROM_CAMERA = 120;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_SHOOT_FROM_CAMERA(120),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_ERASE_BRICK_ACTIVITY = 121;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_ERASE_BRICK_ACTIVITY(121),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_BREAKOUT = 122;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_BREAKOUT(122),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_DAMAGE_LOAN = 123;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_DAMAGE_LOAN(123),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_BROADCAST_GV = 124;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_BROADCAST_GV(124),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_RECEIVE_GV = 125;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_RECEIVE_GV(125),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_RAYCAST_SELECT_TARGET = 126;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_RAYCAST_SELECT_TARGET(126),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_ENERGY_CRYSTAL_TARGET = 127;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_ENERGY_CRYSTAL_TARGET(127),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_ROTATION_FOLLOW_CAMERA = 128;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_ROTATION_FOLLOW_CAMERA(128),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_BUOYANT_FORCE = 129;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_BUOYANT_FORCE(129),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_FILMFEST_BALL_GAME = 130;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_FILMFEST_BALL_GAME(130),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_CHECK_SCAN_ENTITY = 131;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_CHECK_SCAN_ENTITY(131),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_TIME_TRACK_PLAYER = 133;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_TIME_TRACK_PLAYER(133),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_PART_FOLLOW = 134;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_PART_FOLLOW(134),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_CHANGE_PHLOGISTON = 135;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_CHANGE_PHLOGISTON(135),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_HUMAN_DRAGON_COLLAB_PICK_PHLOGISTON_BALL = 136;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_HUMAN_DRAGON_COLLAB_PICK_PHLOGISTON_BALL(136),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_FREQUENCY_SHIELD_BAR = 137;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_FREQUENCY_SHIELD_BAR(137),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_SHAMAN_VIEW_TARGET = 138;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_SHAMAN_VIEW_TARGET(138),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_ATTACH_MODIFIER_TO_GLOBAL_VALUE = 139;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_ATTACH_MODIFIER_TO_GLOBAL_VALUE(139),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_BRICK_MATRIX = 140;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_BRICK_MATRIX(140),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_VEHICLE_STEER_BY_CAMERA = 141;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_VEHICLE_STEER_BY_CAMERA(141),
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_AVATAR_SPECIAL_MOVE = 143;</code>
*/
AbilityInvokeArgument_ABILITY_MIXIN_AVATAR_SPECIAL_MOVE(143),
UNRECOGNIZED(-1),
;
/**
* <code>AbilityInvokeArgument_ABILITY_NONE = 0;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_NONE_VALUE = 0;
/**
* <code>AbilityInvokeArgument_ABILITY_META_MODIFIER_CHANGE = 1;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_MODIFIER_CHANGE_VALUE = 1;
/**
* <code>AbilityInvokeArgument_ABILITY_META_COMMAND_MODIFIER_CHANGE_REQUEST = 2;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_COMMAND_MODIFIER_CHANGE_REQUEST_VALUE = 2;
/**
* <code>AbilityInvokeArgument_ABILITY_META_SPECIAL_FLOAT_ARGUMENT = 3;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_SPECIAL_FLOAT_ARGUMENT_VALUE = 3;
/**
* <code>AbilityInvokeArgument_ABILITY_META_OVERRIDE_PARAM = 4;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_OVERRIDE_PARAM_VALUE = 4;
/**
* <code>AbilityInvokeArgument_ABILITY_META_CLEAR_OVERRIDE_PARAM = 5;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_CLEAR_OVERRIDE_PARAM_VALUE = 5;
/**
* <code>AbilityInvokeArgument_ABILITY_META_REINIT_OVERRIDEMAP = 6;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_REINIT_OVERRIDEMAP_VALUE = 6;
/**
* <code>AbilityInvokeArgument_ABILITY_META_GLOBAL_FLOAT_VALUE = 7;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_GLOBAL_FLOAT_VALUE_VALUE = 7;
/**
* <code>AbilityInvokeArgument_ABILITY_META_CLEAR_GLOBAL_FLOAT_VALUE = 8;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_CLEAR_GLOBAL_FLOAT_VALUE_VALUE = 8;
/**
* <code>AbilityInvokeArgument_ABILITY_META_ABILITY_ELEMENT_STRENGTH = 9;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_ABILITY_ELEMENT_STRENGTH_VALUE = 9;
/**
* <code>AbilityInvokeArgument_ABILITY_META_ADD_OR_GET_ABILITY_AND_TRIGGER = 10;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_ADD_OR_GET_ABILITY_AND_TRIGGER_VALUE = 10;
/**
* <code>AbilityInvokeArgument_ABILITY_META_SET_KILLED_SETATE = 11;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_SET_KILLED_SETATE_VALUE = 11;
/**
* <code>AbilityInvokeArgument_ABILITY_META_SET_ABILITY_TRIGGER = 12;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_SET_ABILITY_TRIGGER_VALUE = 12;
/**
* <code>AbilityInvokeArgument_ABILITY_META_ADD_NEW_ABILITY = 13;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_ADD_NEW_ABILITY_VALUE = 13;
/**
* <code>AbilityInvokeArgument_ABILITY_META_REMOVE_ABILITY = 14;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_REMOVE_ABILITY_VALUE = 14;
/**
* <code>AbilityInvokeArgument_ABILITY_META_SET_MODIFIER_APPLY_ENTITY = 15;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_SET_MODIFIER_APPLY_ENTITY_VALUE = 15;
/**
* <code>AbilityInvokeArgument_ABILITY_META_MODIFIER_DURABILITY_CHANGE = 16;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_MODIFIER_DURABILITY_CHANGE_VALUE = 16;
/**
* <code>AbilityInvokeArgument_ABILITY_META_ELEMENT_REACTION_VISUAL = 17;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_ELEMENT_REACTION_VISUAL_VALUE = 17;
/**
* <code>AbilityInvokeArgument_ABILITY_META_SET_POSE_PARAMETER = 18;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_SET_POSE_PARAMETER_VALUE = 18;
/**
* <code>AbilityInvokeArgument_ABILITY_META_UPDATE_BASE_REACTION_DAMAGE = 19;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_UPDATE_BASE_REACTION_DAMAGE_VALUE = 19;
/**
* <code>AbilityInvokeArgument_ABILITY_META_TRIGGER_ELEMENT_REACTION = 20;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_TRIGGER_ELEMENT_REACTION_VALUE = 20;
/**
* <code>AbilityInvokeArgument_ABILITY_META_LOSE_HP = 21;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_LOSE_HP_VALUE = 21;
/**
* <code>AbilityInvokeArgument_ABILITY_META_DURABILITY_IS_ZERO = 22;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_DURABILITY_IS_ZERO_VALUE = 22;
/**
* <code>AbilityInvokeArgument_ABILITY_META_TRIGGER_ARKHE_REACTION = 23;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_TRIGGER_ARKHE_REACTION_VALUE = 23;
/**
* <code>AbilityInvokeArgument_ABILITY_META_CHANGE_NYX_VALUE = 24;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_META_CHANGE_NYX_VALUE_VALUE = 24;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_TRIGGER_ABILITY = 50;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_TRIGGER_ABILITY_VALUE = 50;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_SET_CRASH_DAMAGE = 51;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_SET_CRASH_DAMAGE_VALUE = 51;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_EFFECT = 52;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_EFFECT_VALUE = 52;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_SUMMON = 53;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_SUMMON_VALUE = 53;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_BLINK = 54;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_BLINK_VALUE = 54;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_CREATE_GADGET = 55;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_CREATE_GADGET_VALUE = 55;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_APPLY_LEVEL_MODIFIER = 56;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_APPLY_LEVEL_MODIFIER_VALUE = 56;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_GENERATE_ELEM_BALL = 57;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_GENERATE_ELEM_BALL_VALUE = 57;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_SET_RANDOM_OVERRIDE_MAP_VALUE = 58;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_SET_RANDOM_OVERRIDE_MAP_VALUE_VALUE = 58;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_SERVER_MONSTER_LOG = 59;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_SERVER_MONSTER_LOG_VALUE = 59;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_CREATE_TILE = 60;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_CREATE_TILE_VALUE = 60;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_DESTROY_TILE = 61;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_DESTROY_TILE_VALUE = 61;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_FIRE_AFTER_IMAGE = 62;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_FIRE_AFTER_IMAGE_VALUE = 62;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_DEDUCT_STAMINA = 63;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_DEDUCT_STAMINA_VALUE = 63;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_HIT_EFFECT = 64;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_HIT_EFFECT_VALUE = 64;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_SET_BULLET_TRACK_TARGET = 65;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_SET_BULLET_TRACK_TARGET_VALUE = 65;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_FIREWORK_EFFECT = 66;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_FIREWORK_EFFECT_VALUE = 66;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_LEVEL_BANK_ADD_STUFF = 67;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_LEVEL_BANK_ADD_STUFF_VALUE = 67;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_GET_MATERIAL_PARAM_FLOAT = 68;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_GET_MATERIAL_PARAM_FLOAT_VALUE = 68;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_GET_MATERIAL_PARAM_VECTOR = 69;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_GET_MATERIAL_PARAM_VECTOR_VALUE = 69;
/**
* <code>AbilityInvokeArgument_ABILITY_ACTION_SPECTACLE_BUILD_RECREATE_GADGET = 70;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_ACTION_SPECTACLE_BUILD_RECREATE_GADGET_VALUE = 70;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_AVATAR_STEER_BY_CAMERA = 100;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_AVATAR_STEER_BY_CAMERA_VALUE = 100;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_MONSTER_DEFEND = 101;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_MONSTER_DEFEND_VALUE = 101;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_WIND_ZONE = 102;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_WIND_ZONE_VALUE = 102;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_COST_STAMINA = 103;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_COST_STAMINA_VALUE = 103;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_ELITE_SHIELD = 104;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_ELITE_SHIELD_VALUE = 104;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_ELEMENT_SHIELD = 105;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_ELEMENT_SHIELD_VALUE = 105;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_GLOBAL_SHIELD = 106;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_GLOBAL_SHIELD_VALUE = 106;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_SHIELD_BAR = 107;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_SHIELD_BAR_VALUE = 107;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_WIND_SEED_SPAWNER = 108;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_WIND_SEED_SPAWNER_VALUE = 108;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_DO_ACTION_BY_ELEMENT_REACTION = 109;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_DO_ACTION_BY_ELEMENT_REACTION_VALUE = 109;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_FIELD_ENTITY_COUNT_CHANGE = 110;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_FIELD_ENTITY_COUNT_CHANGE_VALUE = 110;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_SCENE_PROP_SYNC = 111;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_SCENE_PROP_SYNC_VALUE = 111;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_WIDGET_MP_SUPPORT = 112;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_WIDGET_MP_SUPPORT_VALUE = 112;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_DO_ACTION_BY_SELF_MODIFIER_ELEMENT_DURABILITY_RATIO = 113;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_DO_ACTION_BY_SELF_MODIFIER_ELEMENT_DURABILITY_RATIO_VALUE = 113;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_FIREWORKS_LAUNCHER = 114;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_FIREWORKS_LAUNCHER_VALUE = 114;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_ATTACK_RESULT_CREATE_COUNT = 115;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_ATTACK_RESULT_CREATE_COUNT_VALUE = 115;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_UGC_TIME_CONTROL = 116;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_UGC_TIME_CONTROL_VALUE = 116;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_AVATAR_COMBAT = 117;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_AVATAR_COMBAT_VALUE = 117;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_DEATH_ZONE_REGIONAL_PLAY_MIXIN = 118;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_DEATH_ZONE_REGIONAL_PLAY_MIXIN_VALUE = 118;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_UI_INTERACT = 119;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_UI_INTERACT_VALUE = 119;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_SHOOT_FROM_CAMERA = 120;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_SHOOT_FROM_CAMERA_VALUE = 120;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_ERASE_BRICK_ACTIVITY = 121;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_ERASE_BRICK_ACTIVITY_VALUE = 121;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_BREAKOUT = 122;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_BREAKOUT_VALUE = 122;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_DAMAGE_LOAN = 123;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_DAMAGE_LOAN_VALUE = 123;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_BROADCAST_GV = 124;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_BROADCAST_GV_VALUE = 124;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_RECEIVE_GV = 125;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_RECEIVE_GV_VALUE = 125;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_RAYCAST_SELECT_TARGET = 126;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_RAYCAST_SELECT_TARGET_VALUE = 126;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_ENERGY_CRYSTAL_TARGET = 127;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_ENERGY_CRYSTAL_TARGET_VALUE = 127;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_ROTATION_FOLLOW_CAMERA = 128;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_ROTATION_FOLLOW_CAMERA_VALUE = 128;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_BUOYANT_FORCE = 129;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_BUOYANT_FORCE_VALUE = 129;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_FILMFEST_BALL_GAME = 130;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_FILMFEST_BALL_GAME_VALUE = 130;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_CHECK_SCAN_ENTITY = 131;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_CHECK_SCAN_ENTITY_VALUE = 131;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_TIME_TRACK_PLAYER = 133;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_TIME_TRACK_PLAYER_VALUE = 133;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_PART_FOLLOW = 134;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_PART_FOLLOW_VALUE = 134;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_CHANGE_PHLOGISTON = 135;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_CHANGE_PHLOGISTON_VALUE = 135;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_HUMAN_DRAGON_COLLAB_PICK_PHLOGISTON_BALL = 136;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_HUMAN_DRAGON_COLLAB_PICK_PHLOGISTON_BALL_VALUE = 136;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_FREQUENCY_SHIELD_BAR = 137;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_FREQUENCY_SHIELD_BAR_VALUE = 137;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_SHAMAN_VIEW_TARGET = 138;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_SHAMAN_VIEW_TARGET_VALUE = 138;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_ATTACH_MODIFIER_TO_GLOBAL_VALUE = 139;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_ATTACH_MODIFIER_TO_GLOBAL_VALUE_VALUE = 139;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_BRICK_MATRIX = 140;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_BRICK_MATRIX_VALUE = 140;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_VEHICLE_STEER_BY_CAMERA = 141;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_VEHICLE_STEER_BY_CAMERA_VALUE = 141;
/**
* <code>AbilityInvokeArgument_ABILITY_MIXIN_AVATAR_SPECIAL_MOVE = 143;</code>
*/
public static final int AbilityInvokeArgument_ABILITY_MIXIN_AVATAR_SPECIAL_MOVE_VALUE = 143;
public final int getNumber() {
if (this == UNRECOGNIZED) {
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 AbilityInvokeArgument 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 AbilityInvokeArgument forNumber(int value) {
switch (value) {
case 0: return AbilityInvokeArgument_ABILITY_NONE;
case 1: return AbilityInvokeArgument_ABILITY_META_MODIFIER_CHANGE;
case 2: return AbilityInvokeArgument_ABILITY_META_COMMAND_MODIFIER_CHANGE_REQUEST;
case 3: return AbilityInvokeArgument_ABILITY_META_SPECIAL_FLOAT_ARGUMENT;
case 4: return AbilityInvokeArgument_ABILITY_META_OVERRIDE_PARAM;
case 5: return AbilityInvokeArgument_ABILITY_META_CLEAR_OVERRIDE_PARAM;
case 6: return AbilityInvokeArgument_ABILITY_META_REINIT_OVERRIDEMAP;
case 7: return AbilityInvokeArgument_ABILITY_META_GLOBAL_FLOAT_VALUE;
case 8: return AbilityInvokeArgument_ABILITY_META_CLEAR_GLOBAL_FLOAT_VALUE;
case 9: return AbilityInvokeArgument_ABILITY_META_ABILITY_ELEMENT_STRENGTH;
case 10: return AbilityInvokeArgument_ABILITY_META_ADD_OR_GET_ABILITY_AND_TRIGGER;
case 11: return AbilityInvokeArgument_ABILITY_META_SET_KILLED_SETATE;
case 12: return AbilityInvokeArgument_ABILITY_META_SET_ABILITY_TRIGGER;
case 13: return AbilityInvokeArgument_ABILITY_META_ADD_NEW_ABILITY;
case 14: return AbilityInvokeArgument_ABILITY_META_REMOVE_ABILITY;
case 15: return AbilityInvokeArgument_ABILITY_META_SET_MODIFIER_APPLY_ENTITY;
case 16: return AbilityInvokeArgument_ABILITY_META_MODIFIER_DURABILITY_CHANGE;
case 17: return AbilityInvokeArgument_ABILITY_META_ELEMENT_REACTION_VISUAL;
case 18: return AbilityInvokeArgument_ABILITY_META_SET_POSE_PARAMETER;
case 19: return AbilityInvokeArgument_ABILITY_META_UPDATE_BASE_REACTION_DAMAGE;
case 20: return AbilityInvokeArgument_ABILITY_META_TRIGGER_ELEMENT_REACTION;
case 21: return AbilityInvokeArgument_ABILITY_META_LOSE_HP;
case 22: return AbilityInvokeArgument_ABILITY_META_DURABILITY_IS_ZERO;
case 23: return AbilityInvokeArgument_ABILITY_META_TRIGGER_ARKHE_REACTION;
case 24: return AbilityInvokeArgument_ABILITY_META_CHANGE_NYX_VALUE;
case 50: return AbilityInvokeArgument_ABILITY_ACTION_TRIGGER_ABILITY;
case 51: return AbilityInvokeArgument_ABILITY_ACTION_SET_CRASH_DAMAGE;
case 52: return AbilityInvokeArgument_ABILITY_ACTION_EFFECT;
case 53: return AbilityInvokeArgument_ABILITY_ACTION_SUMMON;
case 54: return AbilityInvokeArgument_ABILITY_ACTION_BLINK;
case 55: return AbilityInvokeArgument_ABILITY_ACTION_CREATE_GADGET;
case 56: return AbilityInvokeArgument_ABILITY_ACTION_APPLY_LEVEL_MODIFIER;
case 57: return AbilityInvokeArgument_ABILITY_ACTION_GENERATE_ELEM_BALL;
case 58: return AbilityInvokeArgument_ABILITY_ACTION_SET_RANDOM_OVERRIDE_MAP_VALUE;
case 59: return AbilityInvokeArgument_ABILITY_ACTION_SERVER_MONSTER_LOG;
case 60: return AbilityInvokeArgument_ABILITY_ACTION_CREATE_TILE;
case 61: return AbilityInvokeArgument_ABILITY_ACTION_DESTROY_TILE;
case 62: return AbilityInvokeArgument_ABILITY_ACTION_FIRE_AFTER_IMAGE;
case 63: return AbilityInvokeArgument_ABILITY_ACTION_DEDUCT_STAMINA;
case 64: return AbilityInvokeArgument_ABILITY_ACTION_HIT_EFFECT;
case 65: return AbilityInvokeArgument_ABILITY_ACTION_SET_BULLET_TRACK_TARGET;
case 66: return AbilityInvokeArgument_ABILITY_ACTION_FIREWORK_EFFECT;
case 67: return AbilityInvokeArgument_ABILITY_ACTION_LEVEL_BANK_ADD_STUFF;
case 68: return AbilityInvokeArgument_ABILITY_ACTION_GET_MATERIAL_PARAM_FLOAT;
case 69: return AbilityInvokeArgument_ABILITY_ACTION_GET_MATERIAL_PARAM_VECTOR;
case 70: return AbilityInvokeArgument_ABILITY_ACTION_SPECTACLE_BUILD_RECREATE_GADGET;
case 100: return AbilityInvokeArgument_ABILITY_MIXIN_AVATAR_STEER_BY_CAMERA;
case 101: return AbilityInvokeArgument_ABILITY_MIXIN_MONSTER_DEFEND;
case 102: return AbilityInvokeArgument_ABILITY_MIXIN_WIND_ZONE;
case 103: return AbilityInvokeArgument_ABILITY_MIXIN_COST_STAMINA;
case 104: return AbilityInvokeArgument_ABILITY_MIXIN_ELITE_SHIELD;
case 105: return AbilityInvokeArgument_ABILITY_MIXIN_ELEMENT_SHIELD;
case 106: return AbilityInvokeArgument_ABILITY_MIXIN_GLOBAL_SHIELD;
case 107: return AbilityInvokeArgument_ABILITY_MIXIN_SHIELD_BAR;
case 108: return AbilityInvokeArgument_ABILITY_MIXIN_WIND_SEED_SPAWNER;
case 109: return AbilityInvokeArgument_ABILITY_MIXIN_DO_ACTION_BY_ELEMENT_REACTION;
case 110: return AbilityInvokeArgument_ABILITY_MIXIN_FIELD_ENTITY_COUNT_CHANGE;
case 111: return AbilityInvokeArgument_ABILITY_MIXIN_SCENE_PROP_SYNC;
case 112: return AbilityInvokeArgument_ABILITY_MIXIN_WIDGET_MP_SUPPORT;
case 113: return AbilityInvokeArgument_ABILITY_MIXIN_DO_ACTION_BY_SELF_MODIFIER_ELEMENT_DURABILITY_RATIO;
case 114: return AbilityInvokeArgument_ABILITY_MIXIN_FIREWORKS_LAUNCHER;
case 115: return AbilityInvokeArgument_ABILITY_MIXIN_ATTACK_RESULT_CREATE_COUNT;
case 116: return AbilityInvokeArgument_ABILITY_MIXIN_UGC_TIME_CONTROL;
case 117: return AbilityInvokeArgument_ABILITY_MIXIN_AVATAR_COMBAT;
case 118: return AbilityInvokeArgument_ABILITY_MIXIN_DEATH_ZONE_REGIONAL_PLAY_MIXIN;
case 119: return AbilityInvokeArgument_ABILITY_MIXIN_UI_INTERACT;
case 120: return AbilityInvokeArgument_ABILITY_MIXIN_SHOOT_FROM_CAMERA;
case 121: return AbilityInvokeArgument_ABILITY_MIXIN_ERASE_BRICK_ACTIVITY;
case 122: return AbilityInvokeArgument_ABILITY_MIXIN_BREAKOUT;
case 123: return AbilityInvokeArgument_ABILITY_MIXIN_DAMAGE_LOAN;
case 124: return AbilityInvokeArgument_ABILITY_MIXIN_BROADCAST_GV;
case 125: return AbilityInvokeArgument_ABILITY_MIXIN_RECEIVE_GV;
case 126: return AbilityInvokeArgument_ABILITY_MIXIN_RAYCAST_SELECT_TARGET;
case 127: return AbilityInvokeArgument_ABILITY_MIXIN_ENERGY_CRYSTAL_TARGET;
case 128: return AbilityInvokeArgument_ABILITY_MIXIN_ROTATION_FOLLOW_CAMERA;
case 129: return AbilityInvokeArgument_ABILITY_MIXIN_BUOYANT_FORCE;
case 130: return AbilityInvokeArgument_ABILITY_MIXIN_FILMFEST_BALL_GAME;
case 131: return AbilityInvokeArgument_ABILITY_MIXIN_CHECK_SCAN_ENTITY;
case 133: return AbilityInvokeArgument_ABILITY_MIXIN_TIME_TRACK_PLAYER;
case 134: return AbilityInvokeArgument_ABILITY_MIXIN_PART_FOLLOW;
case 135: return AbilityInvokeArgument_ABILITY_MIXIN_CHANGE_PHLOGISTON;
case 136: return AbilityInvokeArgument_ABILITY_MIXIN_HUMAN_DRAGON_COLLAB_PICK_PHLOGISTON_BALL;
case 137: return AbilityInvokeArgument_ABILITY_MIXIN_FREQUENCY_SHIELD_BAR;
case 138: return AbilityInvokeArgument_ABILITY_MIXIN_SHAMAN_VIEW_TARGET;
case 139: return AbilityInvokeArgument_ABILITY_MIXIN_ATTACH_MODIFIER_TO_GLOBAL_VALUE;
case 140: return AbilityInvokeArgument_ABILITY_MIXIN_BRICK_MATRIX;
case 141: return AbilityInvokeArgument_ABILITY_MIXIN_VEHICLE_STEER_BY_CAMERA;
case 143: return AbilityInvokeArgument_ABILITY_MIXIN_AVATAR_SPECIAL_MOVE;
default: return null;
}
}
public static com.google.protobuf.Internal.EnumLiteMap<AbilityInvokeArgument>
internalGetValueMap() {
return internalValueMap;
}
private static final com.google.protobuf.Internal.EnumLiteMap<
AbilityInvokeArgument> internalValueMap =
new com.google.protobuf.Internal.EnumLiteMap<AbilityInvokeArgument>() {
public AbilityInvokeArgument findValueByNumber(int number) {
return AbilityInvokeArgument.forNumber(number);
}
};
public final com.google.protobuf.Descriptors.EnumValueDescriptor
getValueDescriptor() {
if (this == UNRECOGNIZED) {
throw new java.lang.IllegalStateException(
"Can't get the descriptor of an unrecognized enum value.");
}
return getDescriptor().getValues().get(ordinal());
}
public final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptorForType() {
return getDescriptor();
}
public static final com.google.protobuf.Descriptors.EnumDescriptor
getDescriptor() {
return io.grasscutter.net.proto.ability.Ability.getDescriptor().getEnumTypes().get(0);
}
private static final AbilityInvokeArgument[] VALUES = values();
public static AbilityInvokeArgument 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 value;
private AbilityInvokeArgument(int value) {
this.value = value;
}
// @@protoc_insertion_point(enum_scope:AbilityInvokeArgument)
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,868 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
/**
* Protobuf type {@code AbilityInvokeEntryHead}
*/
public final class AbilityInvokeEntryHead extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:AbilityInvokeEntryHead)
AbilityInvokeEntryHeadOrBuilder {
private static final long serialVersionUID = 0L;
// Use AbilityInvokeEntryHead.newBuilder() to construct.
private AbilityInvokeEntryHead(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
super(builder);
}
private AbilityInvokeEntryHead() {
}
@java.lang.Override
@SuppressWarnings({"unused"})
protected java.lang.Object newInstance(
UnusedPrivateParameter unused) {
return new AbilityInvokeEntryHead();
}
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private AbilityInvokeEntryHead(
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: {
localId_ = input.readInt32();
break;
}
case 16: {
serverBuffUid_ = input.readUInt32();
break;
}
case 24: {
instancedModifierId_ = input.readUInt32();
break;
}
case 32: {
isServerbuffModifier_ = input.readBool();
break;
}
case 40: {
modifierConfigLocalId_ = input.readInt32();
break;
}
case 64: {
instancedAbilityId_ = input.readUInt32();
break;
}
case 104: {
targetId_ = input.readUInt32();
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 io.grasscutter.net.proto.ability.Ability.internal_static_AbilityInvokeEntryHead_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.ability.Ability.internal_static_AbilityInvokeEntryHead_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.ability.AbilityInvokeEntryHead.class, io.grasscutter.net.proto.ability.AbilityInvokeEntryHead.Builder.class);
}
public static final int TARGET_ID_FIELD_NUMBER = 13;
private int targetId_;
/**
* <code>uint32 target_id = 13;</code>
* @return The targetId.
*/
@java.lang.Override
public int getTargetId() {
return targetId_;
}
public static final int MODIFIER_CONFIG_LOCAL_ID_FIELD_NUMBER = 5;
private int modifierConfigLocalId_;
/**
* <code>int32 modifier_config_local_id = 5;</code>
* @return The modifierConfigLocalId.
*/
@java.lang.Override
public int getModifierConfigLocalId() {
return modifierConfigLocalId_;
}
public static final int SERVER_BUFF_UID_FIELD_NUMBER = 2;
private int serverBuffUid_;
/**
* <code>uint32 server_buff_uid = 2;</code>
* @return The serverBuffUid.
*/
@java.lang.Override
public int getServerBuffUid() {
return serverBuffUid_;
}
public static final int IS_SERVERBUFF_MODIFIER_FIELD_NUMBER = 4;
private boolean isServerbuffModifier_;
/**
* <code>bool is_serverbuff_modifier = 4;</code>
* @return The isServerbuffModifier.
*/
@java.lang.Override
public boolean getIsServerbuffModifier() {
return isServerbuffModifier_;
}
public static final int INSTANCED_MODIFIER_ID_FIELD_NUMBER = 3;
private int instancedModifierId_;
/**
* <code>uint32 instanced_modifier_id = 3;</code>
* @return The instancedModifierId.
*/
@java.lang.Override
public int getInstancedModifierId() {
return instancedModifierId_;
}
public static final int INSTANCED_ABILITY_ID_FIELD_NUMBER = 8;
private int instancedAbilityId_;
/**
* <code>uint32 instanced_ability_id = 8;</code>
* @return The instancedAbilityId.
*/
@java.lang.Override
public int getInstancedAbilityId() {
return instancedAbilityId_;
}
public static final int LOCAL_ID_FIELD_NUMBER = 1;
private int localId_;
/**
* <code>int32 local_id = 1;</code>
* @return The localId.
*/
@java.lang.Override
public int getLocalId() {
return localId_;
}
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 (localId_ != 0) {
output.writeInt32(1, localId_);
}
if (serverBuffUid_ != 0) {
output.writeUInt32(2, serverBuffUid_);
}
if (instancedModifierId_ != 0) {
output.writeUInt32(3, instancedModifierId_);
}
if (isServerbuffModifier_ != false) {
output.writeBool(4, isServerbuffModifier_);
}
if (modifierConfigLocalId_ != 0) {
output.writeInt32(5, modifierConfigLocalId_);
}
if (instancedAbilityId_ != 0) {
output.writeUInt32(8, instancedAbilityId_);
}
if (targetId_ != 0) {
output.writeUInt32(13, targetId_);
}
unknownFields.writeTo(output);
}
@java.lang.Override
public int getSerializedSize() {
int size = memoizedSize;
if (size != -1) return size;
size = 0;
if (localId_ != 0) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(1, localId_);
}
if (serverBuffUid_ != 0) {
size += com.google.protobuf.CodedOutputStream
.computeUInt32Size(2, serverBuffUid_);
}
if (instancedModifierId_ != 0) {
size += com.google.protobuf.CodedOutputStream
.computeUInt32Size(3, instancedModifierId_);
}
if (isServerbuffModifier_ != false) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(4, isServerbuffModifier_);
}
if (modifierConfigLocalId_ != 0) {
size += com.google.protobuf.CodedOutputStream
.computeInt32Size(5, modifierConfigLocalId_);
}
if (instancedAbilityId_ != 0) {
size += com.google.protobuf.CodedOutputStream
.computeUInt32Size(8, instancedAbilityId_);
}
if (targetId_ != 0) {
size += com.google.protobuf.CodedOutputStream
.computeUInt32Size(13, targetId_);
}
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 io.grasscutter.net.proto.ability.AbilityInvokeEntryHead)) {
return super.equals(obj);
}
io.grasscutter.net.proto.ability.AbilityInvokeEntryHead other = (io.grasscutter.net.proto.ability.AbilityInvokeEntryHead) obj;
if (getTargetId()
!= other.getTargetId()) return false;
if (getModifierConfigLocalId()
!= other.getModifierConfigLocalId()) return false;
if (getServerBuffUid()
!= other.getServerBuffUid()) return false;
if (getIsServerbuffModifier()
!= other.getIsServerbuffModifier()) return false;
if (getInstancedModifierId()
!= other.getInstancedModifierId()) return false;
if (getInstancedAbilityId()
!= other.getInstancedAbilityId()) return false;
if (getLocalId()
!= other.getLocalId()) 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) + TARGET_ID_FIELD_NUMBER;
hash = (53 * hash) + getTargetId();
hash = (37 * hash) + MODIFIER_CONFIG_LOCAL_ID_FIELD_NUMBER;
hash = (53 * hash) + getModifierConfigLocalId();
hash = (37 * hash) + SERVER_BUFF_UID_FIELD_NUMBER;
hash = (53 * hash) + getServerBuffUid();
hash = (37 * hash) + IS_SERVERBUFF_MODIFIER_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getIsServerbuffModifier());
hash = (37 * hash) + INSTANCED_MODIFIER_ID_FIELD_NUMBER;
hash = (53 * hash) + getInstancedModifierId();
hash = (37 * hash) + INSTANCED_ABILITY_ID_FIELD_NUMBER;
hash = (53 * hash) + getInstancedAbilityId();
hash = (37 * hash) + LOCAL_ID_FIELD_NUMBER;
hash = (53 * hash) + getLocalId();
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
}
public static io.grasscutter.net.proto.ability.AbilityInvokeEntryHead parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.AbilityInvokeEntryHead parseFrom(
java.nio.ByteBuffer data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.AbilityInvokeEntryHead parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.AbilityInvokeEntryHead parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.AbilityInvokeEntryHead parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.AbilityInvokeEntryHead parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.AbilityInvokeEntryHead parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.AbilityInvokeEntryHead 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 io.grasscutter.net.proto.ability.AbilityInvokeEntryHead parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.AbilityInvokeEntryHead 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 io.grasscutter.net.proto.ability.AbilityInvokeEntryHead parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.AbilityInvokeEntryHead 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(io.grasscutter.net.proto.ability.AbilityInvokeEntryHead 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 AbilityInvokeEntryHead}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:AbilityInvokeEntryHead)
io.grasscutter.net.proto.ability.AbilityInvokeEntryHeadOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.ability.Ability.internal_static_AbilityInvokeEntryHead_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.ability.Ability.internal_static_AbilityInvokeEntryHead_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.ability.AbilityInvokeEntryHead.class, io.grasscutter.net.proto.ability.AbilityInvokeEntryHead.Builder.class);
}
// Construct using io.grasscutter.net.proto.ability.AbilityInvokeEntryHead.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();
targetId_ = 0;
modifierConfigLocalId_ = 0;
serverBuffUid_ = 0;
isServerbuffModifier_ = false;
instancedModifierId_ = 0;
instancedAbilityId_ = 0;
localId_ = 0;
return this;
}
@java.lang.Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return io.grasscutter.net.proto.ability.Ability.internal_static_AbilityInvokeEntryHead_descriptor;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvokeEntryHead getDefaultInstanceForType() {
return io.grasscutter.net.proto.ability.AbilityInvokeEntryHead.getDefaultInstance();
}
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvokeEntryHead build() {
io.grasscutter.net.proto.ability.AbilityInvokeEntryHead result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvokeEntryHead buildPartial() {
io.grasscutter.net.proto.ability.AbilityInvokeEntryHead result = new io.grasscutter.net.proto.ability.AbilityInvokeEntryHead(this);
result.targetId_ = targetId_;
result.modifierConfigLocalId_ = modifierConfigLocalId_;
result.serverBuffUid_ = serverBuffUid_;
result.isServerbuffModifier_ = isServerbuffModifier_;
result.instancedModifierId_ = instancedModifierId_;
result.instancedAbilityId_ = instancedAbilityId_;
result.localId_ = localId_;
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 io.grasscutter.net.proto.ability.AbilityInvokeEntryHead) {
return mergeFrom((io.grasscutter.net.proto.ability.AbilityInvokeEntryHead)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(io.grasscutter.net.proto.ability.AbilityInvokeEntryHead other) {
if (other == io.grasscutter.net.proto.ability.AbilityInvokeEntryHead.getDefaultInstance()) return this;
if (other.getTargetId() != 0) {
setTargetId(other.getTargetId());
}
if (other.getModifierConfigLocalId() != 0) {
setModifierConfigLocalId(other.getModifierConfigLocalId());
}
if (other.getServerBuffUid() != 0) {
setServerBuffUid(other.getServerBuffUid());
}
if (other.getIsServerbuffModifier() != false) {
setIsServerbuffModifier(other.getIsServerbuffModifier());
}
if (other.getInstancedModifierId() != 0) {
setInstancedModifierId(other.getInstancedModifierId());
}
if (other.getInstancedAbilityId() != 0) {
setInstancedAbilityId(other.getInstancedAbilityId());
}
if (other.getLocalId() != 0) {
setLocalId(other.getLocalId());
}
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 {
io.grasscutter.net.proto.ability.AbilityInvokeEntryHead parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (io.grasscutter.net.proto.ability.AbilityInvokeEntryHead) e.getUnfinishedMessage();
throw e.unwrapIOException();
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private int targetId_ ;
/**
* <code>uint32 target_id = 13;</code>
* @return The targetId.
*/
@java.lang.Override
public int getTargetId() {
return targetId_;
}
/**
* <code>uint32 target_id = 13;</code>
* @param value The targetId to set.
* @return This builder for chaining.
*/
public Builder setTargetId(int value) {
targetId_ = value;
onChanged();
return this;
}
/**
* <code>uint32 target_id = 13;</code>
* @return This builder for chaining.
*/
public Builder clearTargetId() {
targetId_ = 0;
onChanged();
return this;
}
private int modifierConfigLocalId_ ;
/**
* <code>int32 modifier_config_local_id = 5;</code>
* @return The modifierConfigLocalId.
*/
@java.lang.Override
public int getModifierConfigLocalId() {
return modifierConfigLocalId_;
}
/**
* <code>int32 modifier_config_local_id = 5;</code>
* @param value The modifierConfigLocalId to set.
* @return This builder for chaining.
*/
public Builder setModifierConfigLocalId(int value) {
modifierConfigLocalId_ = value;
onChanged();
return this;
}
/**
* <code>int32 modifier_config_local_id = 5;</code>
* @return This builder for chaining.
*/
public Builder clearModifierConfigLocalId() {
modifierConfigLocalId_ = 0;
onChanged();
return this;
}
private int serverBuffUid_ ;
/**
* <code>uint32 server_buff_uid = 2;</code>
* @return The serverBuffUid.
*/
@java.lang.Override
public int getServerBuffUid() {
return serverBuffUid_;
}
/**
* <code>uint32 server_buff_uid = 2;</code>
* @param value The serverBuffUid to set.
* @return This builder for chaining.
*/
public Builder setServerBuffUid(int value) {
serverBuffUid_ = value;
onChanged();
return this;
}
/**
* <code>uint32 server_buff_uid = 2;</code>
* @return This builder for chaining.
*/
public Builder clearServerBuffUid() {
serverBuffUid_ = 0;
onChanged();
return this;
}
private boolean isServerbuffModifier_ ;
/**
* <code>bool is_serverbuff_modifier = 4;</code>
* @return The isServerbuffModifier.
*/
@java.lang.Override
public boolean getIsServerbuffModifier() {
return isServerbuffModifier_;
}
/**
* <code>bool is_serverbuff_modifier = 4;</code>
* @param value The isServerbuffModifier to set.
* @return This builder for chaining.
*/
public Builder setIsServerbuffModifier(boolean value) {
isServerbuffModifier_ = value;
onChanged();
return this;
}
/**
* <code>bool is_serverbuff_modifier = 4;</code>
* @return This builder for chaining.
*/
public Builder clearIsServerbuffModifier() {
isServerbuffModifier_ = false;
onChanged();
return this;
}
private int instancedModifierId_ ;
/**
* <code>uint32 instanced_modifier_id = 3;</code>
* @return The instancedModifierId.
*/
@java.lang.Override
public int getInstancedModifierId() {
return instancedModifierId_;
}
/**
* <code>uint32 instanced_modifier_id = 3;</code>
* @param value The instancedModifierId to set.
* @return This builder for chaining.
*/
public Builder setInstancedModifierId(int value) {
instancedModifierId_ = value;
onChanged();
return this;
}
/**
* <code>uint32 instanced_modifier_id = 3;</code>
* @return This builder for chaining.
*/
public Builder clearInstancedModifierId() {
instancedModifierId_ = 0;
onChanged();
return this;
}
private int instancedAbilityId_ ;
/**
* <code>uint32 instanced_ability_id = 8;</code>
* @return The instancedAbilityId.
*/
@java.lang.Override
public int getInstancedAbilityId() {
return instancedAbilityId_;
}
/**
* <code>uint32 instanced_ability_id = 8;</code>
* @param value The instancedAbilityId to set.
* @return This builder for chaining.
*/
public Builder setInstancedAbilityId(int value) {
instancedAbilityId_ = value;
onChanged();
return this;
}
/**
* <code>uint32 instanced_ability_id = 8;</code>
* @return This builder for chaining.
*/
public Builder clearInstancedAbilityId() {
instancedAbilityId_ = 0;
onChanged();
return this;
}
private int localId_ ;
/**
* <code>int32 local_id = 1;</code>
* @return The localId.
*/
@java.lang.Override
public int getLocalId() {
return localId_;
}
/**
* <code>int32 local_id = 1;</code>
* @param value The localId to set.
* @return This builder for chaining.
*/
public Builder setLocalId(int value) {
localId_ = value;
onChanged();
return this;
}
/**
* <code>int32 local_id = 1;</code>
* @return This builder for chaining.
*/
public Builder clearLocalId() {
localId_ = 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:AbilityInvokeEntryHead)
}
// @@protoc_insertion_point(class_scope:AbilityInvokeEntryHead)
private static final io.grasscutter.net.proto.ability.AbilityInvokeEntryHead DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new io.grasscutter.net.proto.ability.AbilityInvokeEntryHead();
}
public static io.grasscutter.net.proto.ability.AbilityInvokeEntryHead getDefaultInstance() {
return DEFAULT_INSTANCE;
}
private static final com.google.protobuf.Parser<AbilityInvokeEntryHead>
PARSER = new com.google.protobuf.AbstractParser<AbilityInvokeEntryHead>() {
@java.lang.Override
public AbilityInvokeEntryHead parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new AbilityInvokeEntryHead(input, extensionRegistry);
}
};
public static com.google.protobuf.Parser<AbilityInvokeEntryHead> parser() {
return PARSER;
}
@java.lang.Override
public com.google.protobuf.Parser<AbilityInvokeEntryHead> getParserForType() {
return PARSER;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvokeEntryHead getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}

View File

@ -0,0 +1,51 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
public interface AbilityInvokeEntryHeadOrBuilder extends
// @@protoc_insertion_point(interface_extends:AbilityInvokeEntryHead)
com.google.protobuf.MessageOrBuilder {
/**
* <code>uint32 target_id = 13;</code>
* @return The targetId.
*/
int getTargetId();
/**
* <code>int32 modifier_config_local_id = 5;</code>
* @return The modifierConfigLocalId.
*/
int getModifierConfigLocalId();
/**
* <code>uint32 server_buff_uid = 2;</code>
* @return The serverBuffUid.
*/
int getServerBuffUid();
/**
* <code>bool is_serverbuff_modifier = 4;</code>
* @return The isServerbuffModifier.
*/
boolean getIsServerbuffModifier();
/**
* <code>uint32 instanced_modifier_id = 3;</code>
* @return The instancedModifierId.
*/
int getInstancedModifierId();
/**
* <code>uint32 instanced_ability_id = 8;</code>
* @return The instancedAbilityId.
*/
int getInstancedAbilityId();
/**
* <code>int32 local_id = 1;</code>
* @return The localId.
*/
int getLocalId();
}

View File

@ -0,0 +1,82 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
public interface AbilityInvokeEntryOrBuilder extends
// @@protoc_insertion_point(interface_extends:AbilityInvokeEntry)
com.google.protobuf.MessageOrBuilder {
/**
* <code>bytes ability_data = 15;</code>
* @return The abilityData.
*/
com.google.protobuf.ByteString getAbilityData();
/**
* <code>.AbilityInvokeEntryHead head = 4;</code>
* @return Whether the head field is set.
*/
boolean hasHead();
/**
* <code>.AbilityInvokeEntryHead head = 4;</code>
* @return The head.
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntryHead getHead();
/**
* <code>.AbilityInvokeEntryHead head = 4;</code>
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntryHeadOrBuilder getHeadOrBuilder();
/**
* <code>bool is_ignore_auth = 6;</code>
* @return The isIgnoreAuth.
*/
boolean getIsIgnoreAuth();
/**
* <code>uint32 entity_id = 11;</code>
* @return The entityId.
*/
int getEntityId();
/**
* <code>.ForwardType forward_type = 9;</code>
* @return The enum numeric value on the wire for forwardType.
*/
int getForwardTypeValue();
/**
* <code>.ForwardType forward_type = 9;</code>
* @return The forwardType.
*/
io.grasscutter.net.proto.fight.ForwardType getForwardType();
/**
* <code>uint32 JPHBOKDMDAH = 13;</code>
* @return The jPHBOKDMDAH.
*/
int getJPHBOKDMDAH();
/**
* <code>double total_tick_time = 10;</code>
* @return The totalTickTime.
*/
double getTotalTickTime();
/**
* <code>.AbilityInvokeArgument argument_type = 7;</code>
* @return The enum numeric value on the wire for argumentType.
*/
int getArgumentTypeValue();
/**
* <code>.AbilityInvokeArgument argument_type = 7;</code>
* @return The argumentType.
*/
io.grasscutter.net.proto.ability.AbilityInvokeArgument getArgumentType();
/**
* <code>uint32 HNOGKEHFLHE = 8;</code>
* @return The hNOGKEHFLHE.
*/
int getHNOGKEHFLHE();
}

View File

@ -0,0 +1,778 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
/**
* <pre>
* CmdId: 27198
* </pre>
*
* Protobuf type {@code ClientAbilitiesInitFinishCombineNotify}
*/
public final class ClientAbilitiesInitFinishCombineNotify extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:ClientAbilitiesInitFinishCombineNotify)
ClientAbilitiesInitFinishCombineNotifyOrBuilder {
private static final long serialVersionUID = 0L;
// Use ClientAbilitiesInitFinishCombineNotify.newBuilder() to construct.
private ClientAbilitiesInitFinishCombineNotify(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
super(builder);
}
private ClientAbilitiesInitFinishCombineNotify() {
entityInvokeList_ = java.util.Collections.emptyList();
}
@java.lang.Override
@SuppressWarnings({"unused"})
protected java.lang.Object newInstance(
UnusedPrivateParameter unused) {
return new ClientAbilitiesInitFinishCombineNotify();
}
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private ClientAbilitiesInitFinishCombineNotify(
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 50: {
if (!((mutable_bitField0_ & 0x00000001) != 0)) {
entityInvokeList_ = new java.util.ArrayList<io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry>();
mutable_bitField0_ |= 0x00000001;
}
entityInvokeList_.add(
input.readMessage(io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.parser(), extensionRegistry));
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 {
if (((mutable_bitField0_ & 0x00000001) != 0)) {
entityInvokeList_ = java.util.Collections.unmodifiableList(entityInvokeList_);
}
this.unknownFields = unknownFields.build();
makeExtensionsImmutable();
}
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.ability.Ability.internal_static_ClientAbilitiesInitFinishCombineNotify_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.ability.Ability.internal_static_ClientAbilitiesInitFinishCombineNotify_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify.class, io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify.Builder.class);
}
public static final int ENTITY_INVOKE_LIST_FIELD_NUMBER = 6;
private java.util.List<io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry> entityInvokeList_;
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
@java.lang.Override
public java.util.List<io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry> getEntityInvokeListList() {
return entityInvokeList_;
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
@java.lang.Override
public java.util.List<? extends io.grasscutter.net.proto.ability.EntityAbilityInvokeEntryOrBuilder>
getEntityInvokeListOrBuilderList() {
return entityInvokeList_;
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
@java.lang.Override
public int getEntityInvokeListCount() {
return entityInvokeList_.size();
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry getEntityInvokeList(int index) {
return entityInvokeList_.get(index);
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.ability.EntityAbilityInvokeEntryOrBuilder getEntityInvokeListOrBuilder(
int index) {
return entityInvokeList_.get(index);
}
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 {
for (int i = 0; i < entityInvokeList_.size(); i++) {
output.writeMessage(6, entityInvokeList_.get(i));
}
unknownFields.writeTo(output);
}
@java.lang.Override
public int getSerializedSize() {
int size = memoizedSize;
if (size != -1) return size;
size = 0;
for (int i = 0; i < entityInvokeList_.size(); i++) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(6, entityInvokeList_.get(i));
}
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 io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify)) {
return super.equals(obj);
}
io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify other = (io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify) obj;
if (!getEntityInvokeListList()
.equals(other.getEntityInvokeListList())) 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 (getEntityInvokeListCount() > 0) {
hash = (37 * hash) + ENTITY_INVOKE_LIST_FIELD_NUMBER;
hash = (53 * hash) + getEntityInvokeListList().hashCode();
}
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
}
public static io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify parseFrom(
java.nio.ByteBuffer data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify 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 io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify 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 io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify 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(io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify 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;
}
/**
* <pre>
* CmdId: 27198
* </pre>
*
* Protobuf type {@code ClientAbilitiesInitFinishCombineNotify}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:ClientAbilitiesInitFinishCombineNotify)
io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotifyOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.ability.Ability.internal_static_ClientAbilitiesInitFinishCombineNotify_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.ability.Ability.internal_static_ClientAbilitiesInitFinishCombineNotify_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify.class, io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify.Builder.class);
}
// Construct using io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private Builder(
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessageV3
.alwaysUseFieldBuilders) {
getEntityInvokeListFieldBuilder();
}
}
@java.lang.Override
public Builder clear() {
super.clear();
if (entityInvokeListBuilder_ == null) {
entityInvokeList_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
} else {
entityInvokeListBuilder_.clear();
}
return this;
}
@java.lang.Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return io.grasscutter.net.proto.ability.Ability.internal_static_ClientAbilitiesInitFinishCombineNotify_descriptor;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify getDefaultInstanceForType() {
return io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify.getDefaultInstance();
}
@java.lang.Override
public io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify build() {
io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify buildPartial() {
io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify result = new io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify(this);
int from_bitField0_ = bitField0_;
if (entityInvokeListBuilder_ == null) {
if (((bitField0_ & 0x00000001) != 0)) {
entityInvokeList_ = java.util.Collections.unmodifiableList(entityInvokeList_);
bitField0_ = (bitField0_ & ~0x00000001);
}
result.entityInvokeList_ = entityInvokeList_;
} else {
result.entityInvokeList_ = entityInvokeListBuilder_.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 io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify) {
return mergeFrom((io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify other) {
if (other == io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify.getDefaultInstance()) return this;
if (entityInvokeListBuilder_ == null) {
if (!other.entityInvokeList_.isEmpty()) {
if (entityInvokeList_.isEmpty()) {
entityInvokeList_ = other.entityInvokeList_;
bitField0_ = (bitField0_ & ~0x00000001);
} else {
ensureEntityInvokeListIsMutable();
entityInvokeList_.addAll(other.entityInvokeList_);
}
onChanged();
}
} else {
if (!other.entityInvokeList_.isEmpty()) {
if (entityInvokeListBuilder_.isEmpty()) {
entityInvokeListBuilder_.dispose();
entityInvokeListBuilder_ = null;
entityInvokeList_ = other.entityInvokeList_;
bitField0_ = (bitField0_ & ~0x00000001);
entityInvokeListBuilder_ =
com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
getEntityInvokeListFieldBuilder() : null;
} else {
entityInvokeListBuilder_.addAllMessages(other.entityInvokeList_);
}
}
}
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 {
io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify) e.getUnfinishedMessage();
throw e.unwrapIOException();
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private int bitField0_;
private java.util.List<io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry> entityInvokeList_ =
java.util.Collections.emptyList();
private void ensureEntityInvokeListIsMutable() {
if (!((bitField0_ & 0x00000001) != 0)) {
entityInvokeList_ = new java.util.ArrayList<io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry>(entityInvokeList_);
bitField0_ |= 0x00000001;
}
}
private com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry, io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.Builder, io.grasscutter.net.proto.ability.EntityAbilityInvokeEntryOrBuilder> entityInvokeListBuilder_;
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
public java.util.List<io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry> getEntityInvokeListList() {
if (entityInvokeListBuilder_ == null) {
return java.util.Collections.unmodifiableList(entityInvokeList_);
} else {
return entityInvokeListBuilder_.getMessageList();
}
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
public int getEntityInvokeListCount() {
if (entityInvokeListBuilder_ == null) {
return entityInvokeList_.size();
} else {
return entityInvokeListBuilder_.getCount();
}
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
public io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry getEntityInvokeList(int index) {
if (entityInvokeListBuilder_ == null) {
return entityInvokeList_.get(index);
} else {
return entityInvokeListBuilder_.getMessage(index);
}
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
public Builder setEntityInvokeList(
int index, io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry value) {
if (entityInvokeListBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureEntityInvokeListIsMutable();
entityInvokeList_.set(index, value);
onChanged();
} else {
entityInvokeListBuilder_.setMessage(index, value);
}
return this;
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
public Builder setEntityInvokeList(
int index, io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.Builder builderForValue) {
if (entityInvokeListBuilder_ == null) {
ensureEntityInvokeListIsMutable();
entityInvokeList_.set(index, builderForValue.build());
onChanged();
} else {
entityInvokeListBuilder_.setMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
public Builder addEntityInvokeList(io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry value) {
if (entityInvokeListBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureEntityInvokeListIsMutable();
entityInvokeList_.add(value);
onChanged();
} else {
entityInvokeListBuilder_.addMessage(value);
}
return this;
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
public Builder addEntityInvokeList(
int index, io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry value) {
if (entityInvokeListBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureEntityInvokeListIsMutable();
entityInvokeList_.add(index, value);
onChanged();
} else {
entityInvokeListBuilder_.addMessage(index, value);
}
return this;
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
public Builder addEntityInvokeList(
io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.Builder builderForValue) {
if (entityInvokeListBuilder_ == null) {
ensureEntityInvokeListIsMutable();
entityInvokeList_.add(builderForValue.build());
onChanged();
} else {
entityInvokeListBuilder_.addMessage(builderForValue.build());
}
return this;
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
public Builder addEntityInvokeList(
int index, io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.Builder builderForValue) {
if (entityInvokeListBuilder_ == null) {
ensureEntityInvokeListIsMutable();
entityInvokeList_.add(index, builderForValue.build());
onChanged();
} else {
entityInvokeListBuilder_.addMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
public Builder addAllEntityInvokeList(
java.lang.Iterable<? extends io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry> values) {
if (entityInvokeListBuilder_ == null) {
ensureEntityInvokeListIsMutable();
com.google.protobuf.AbstractMessageLite.Builder.addAll(
values, entityInvokeList_);
onChanged();
} else {
entityInvokeListBuilder_.addAllMessages(values);
}
return this;
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
public Builder clearEntityInvokeList() {
if (entityInvokeListBuilder_ == null) {
entityInvokeList_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
onChanged();
} else {
entityInvokeListBuilder_.clear();
}
return this;
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
public Builder removeEntityInvokeList(int index) {
if (entityInvokeListBuilder_ == null) {
ensureEntityInvokeListIsMutable();
entityInvokeList_.remove(index);
onChanged();
} else {
entityInvokeListBuilder_.remove(index);
}
return this;
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
public io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.Builder getEntityInvokeListBuilder(
int index) {
return getEntityInvokeListFieldBuilder().getBuilder(index);
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
public io.grasscutter.net.proto.ability.EntityAbilityInvokeEntryOrBuilder getEntityInvokeListOrBuilder(
int index) {
if (entityInvokeListBuilder_ == null) {
return entityInvokeList_.get(index); } else {
return entityInvokeListBuilder_.getMessageOrBuilder(index);
}
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
public java.util.List<? extends io.grasscutter.net.proto.ability.EntityAbilityInvokeEntryOrBuilder>
getEntityInvokeListOrBuilderList() {
if (entityInvokeListBuilder_ != null) {
return entityInvokeListBuilder_.getMessageOrBuilderList();
} else {
return java.util.Collections.unmodifiableList(entityInvokeList_);
}
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
public io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.Builder addEntityInvokeListBuilder() {
return getEntityInvokeListFieldBuilder().addBuilder(
io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.getDefaultInstance());
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
public io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.Builder addEntityInvokeListBuilder(
int index) {
return getEntityInvokeListFieldBuilder().addBuilder(
index, io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.getDefaultInstance());
}
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
public java.util.List<io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.Builder>
getEntityInvokeListBuilderList() {
return getEntityInvokeListFieldBuilder().getBuilderList();
}
private com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry, io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.Builder, io.grasscutter.net.proto.ability.EntityAbilityInvokeEntryOrBuilder>
getEntityInvokeListFieldBuilder() {
if (entityInvokeListBuilder_ == null) {
entityInvokeListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry, io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.Builder, io.grasscutter.net.proto.ability.EntityAbilityInvokeEntryOrBuilder>(
entityInvokeList_,
((bitField0_ & 0x00000001) != 0),
getParentForChildren(),
isClean());
entityInvokeList_ = null;
}
return entityInvokeListBuilder_;
}
@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:ClientAbilitiesInitFinishCombineNotify)
}
// @@protoc_insertion_point(class_scope:ClientAbilitiesInitFinishCombineNotify)
private static final io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify();
}
public static io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify getDefaultInstance() {
return DEFAULT_INSTANCE;
}
private static final com.google.protobuf.Parser<ClientAbilitiesInitFinishCombineNotify>
PARSER = new com.google.protobuf.AbstractParser<ClientAbilitiesInitFinishCombineNotify>() {
@java.lang.Override
public ClientAbilitiesInitFinishCombineNotify parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new ClientAbilitiesInitFinishCombineNotify(input, extensionRegistry);
}
};
public static com.google.protobuf.Parser<ClientAbilitiesInitFinishCombineNotify> parser() {
return PARSER;
}
@java.lang.Override
public com.google.protobuf.Parser<ClientAbilitiesInitFinishCombineNotify> getParserForType() {
return PARSER;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.ClientAbilitiesInitFinishCombineNotify getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}

View File

@ -0,0 +1,33 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
public interface ClientAbilitiesInitFinishCombineNotifyOrBuilder extends
// @@protoc_insertion_point(interface_extends:ClientAbilitiesInitFinishCombineNotify)
com.google.protobuf.MessageOrBuilder {
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
java.util.List<io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry>
getEntityInvokeListList();
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry getEntityInvokeList(int index);
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
int getEntityInvokeListCount();
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
java.util.List<? extends io.grasscutter.net.proto.ability.EntityAbilityInvokeEntryOrBuilder>
getEntityInvokeListOrBuilderList();
/**
* <code>repeated .EntityAbilityInvokeEntry entity_invoke_list = 6;</code>
*/
io.grasscutter.net.proto.ability.EntityAbilityInvokeEntryOrBuilder getEntityInvokeListOrBuilder(
int index);
}

View File

@ -0,0 +1,907 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
/**
* <pre>
* CmdId: 8119
* </pre>
*
* Protobuf type {@code ClientAbilityChangeNotify}
*/
public final class ClientAbilityChangeNotify extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:ClientAbilityChangeNotify)
ClientAbilityChangeNotifyOrBuilder {
private static final long serialVersionUID = 0L;
// Use ClientAbilityChangeNotify.newBuilder() to construct.
private ClientAbilityChangeNotify(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
super(builder);
}
private ClientAbilityChangeNotify() {
jJBLBLMDPHC_ = java.util.Collections.emptyList();
}
@java.lang.Override
@SuppressWarnings({"unused"})
protected java.lang.Object newInstance(
UnusedPrivateParameter unused) {
return new ClientAbilityChangeNotify();
}
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private ClientAbilityChangeNotify(
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 80: {
entityId_ = input.readUInt32();
break;
}
case 96: {
isInitHash_ = input.readBool();
break;
}
case 122: {
if (!((mutable_bitField0_ & 0x00000001) != 0)) {
jJBLBLMDPHC_ = new java.util.ArrayList<io.grasscutter.net.proto.ability.AbilityInvokeEntry>();
mutable_bitField0_ |= 0x00000001;
}
jJBLBLMDPHC_.add(
input.readMessage(io.grasscutter.net.proto.ability.AbilityInvokeEntry.parser(), extensionRegistry));
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 {
if (((mutable_bitField0_ & 0x00000001) != 0)) {
jJBLBLMDPHC_ = java.util.Collections.unmodifiableList(jJBLBLMDPHC_);
}
this.unknownFields = unknownFields.build();
makeExtensionsImmutable();
}
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.ability.Ability.internal_static_ClientAbilityChangeNotify_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.ability.Ability.internal_static_ClientAbilityChangeNotify_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.ability.ClientAbilityChangeNotify.class, io.grasscutter.net.proto.ability.ClientAbilityChangeNotify.Builder.class);
}
public static final int JJBLBLMDPHC_FIELD_NUMBER = 15;
private java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry> jJBLBLMDPHC_;
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
@java.lang.Override
public java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry> getJJBLBLMDPHCList() {
return jJBLBLMDPHC_;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
@java.lang.Override
public java.util.List<? extends io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>
getJJBLBLMDPHCOrBuilderList() {
return jJBLBLMDPHC_;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
@java.lang.Override
public int getJJBLBLMDPHCCount() {
return jJBLBLMDPHC_.size();
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvokeEntry getJJBLBLMDPHC(int index) {
return jJBLBLMDPHC_.get(index);
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getJJBLBLMDPHCOrBuilder(
int index) {
return jJBLBLMDPHC_.get(index);
}
public static final int IS_INIT_HASH_FIELD_NUMBER = 12;
private boolean isInitHash_;
/**
* <code>bool is_init_hash = 12;</code>
* @return The isInitHash.
*/
@java.lang.Override
public boolean getIsInitHash() {
return isInitHash_;
}
public static final int ENTITY_ID_FIELD_NUMBER = 10;
private int entityId_;
/**
* <code>uint32 entity_id = 10;</code>
* @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 (entityId_ != 0) {
output.writeUInt32(10, entityId_);
}
if (isInitHash_ != false) {
output.writeBool(12, isInitHash_);
}
for (int i = 0; i < jJBLBLMDPHC_.size(); i++) {
output.writeMessage(15, jJBLBLMDPHC_.get(i));
}
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(10, entityId_);
}
if (isInitHash_ != false) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(12, isInitHash_);
}
for (int i = 0; i < jJBLBLMDPHC_.size(); i++) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(15, jJBLBLMDPHC_.get(i));
}
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 io.grasscutter.net.proto.ability.ClientAbilityChangeNotify)) {
return super.equals(obj);
}
io.grasscutter.net.proto.ability.ClientAbilityChangeNotify other = (io.grasscutter.net.proto.ability.ClientAbilityChangeNotify) obj;
if (!getJJBLBLMDPHCList()
.equals(other.getJJBLBLMDPHCList())) return false;
if (getIsInitHash()
!= other.getIsInitHash()) 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();
if (getJJBLBLMDPHCCount() > 0) {
hash = (37 * hash) + JJBLBLMDPHC_FIELD_NUMBER;
hash = (53 * hash) + getJJBLBLMDPHCList().hashCode();
}
hash = (37 * hash) + IS_INIT_HASH_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getIsInitHash());
hash = (37 * hash) + ENTITY_ID_FIELD_NUMBER;
hash = (53 * hash) + getEntityId();
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
}
public static io.grasscutter.net.proto.ability.ClientAbilityChangeNotify parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.ClientAbilityChangeNotify parseFrom(
java.nio.ByteBuffer data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.ClientAbilityChangeNotify parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.ClientAbilityChangeNotify parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.ClientAbilityChangeNotify parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.ClientAbilityChangeNotify parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.ClientAbilityChangeNotify parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.ClientAbilityChangeNotify 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 io.grasscutter.net.proto.ability.ClientAbilityChangeNotify parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.ClientAbilityChangeNotify 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 io.grasscutter.net.proto.ability.ClientAbilityChangeNotify parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.ClientAbilityChangeNotify 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(io.grasscutter.net.proto.ability.ClientAbilityChangeNotify 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;
}
/**
* <pre>
* CmdId: 8119
* </pre>
*
* Protobuf type {@code ClientAbilityChangeNotify}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:ClientAbilityChangeNotify)
io.grasscutter.net.proto.ability.ClientAbilityChangeNotifyOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.ability.Ability.internal_static_ClientAbilityChangeNotify_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.ability.Ability.internal_static_ClientAbilityChangeNotify_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.ability.ClientAbilityChangeNotify.class, io.grasscutter.net.proto.ability.ClientAbilityChangeNotify.Builder.class);
}
// Construct using io.grasscutter.net.proto.ability.ClientAbilityChangeNotify.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private Builder(
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessageV3
.alwaysUseFieldBuilders) {
getJJBLBLMDPHCFieldBuilder();
}
}
@java.lang.Override
public Builder clear() {
super.clear();
if (jJBLBLMDPHCBuilder_ == null) {
jJBLBLMDPHC_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
} else {
jJBLBLMDPHCBuilder_.clear();
}
isInitHash_ = false;
entityId_ = 0;
return this;
}
@java.lang.Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return io.grasscutter.net.proto.ability.Ability.internal_static_ClientAbilityChangeNotify_descriptor;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.ClientAbilityChangeNotify getDefaultInstanceForType() {
return io.grasscutter.net.proto.ability.ClientAbilityChangeNotify.getDefaultInstance();
}
@java.lang.Override
public io.grasscutter.net.proto.ability.ClientAbilityChangeNotify build() {
io.grasscutter.net.proto.ability.ClientAbilityChangeNotify result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.ClientAbilityChangeNotify buildPartial() {
io.grasscutter.net.proto.ability.ClientAbilityChangeNotify result = new io.grasscutter.net.proto.ability.ClientAbilityChangeNotify(this);
int from_bitField0_ = bitField0_;
if (jJBLBLMDPHCBuilder_ == null) {
if (((bitField0_ & 0x00000001) != 0)) {
jJBLBLMDPHC_ = java.util.Collections.unmodifiableList(jJBLBLMDPHC_);
bitField0_ = (bitField0_ & ~0x00000001);
}
result.jJBLBLMDPHC_ = jJBLBLMDPHC_;
} else {
result.jJBLBLMDPHC_ = jJBLBLMDPHCBuilder_.build();
}
result.isInitHash_ = isInitHash_;
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 io.grasscutter.net.proto.ability.ClientAbilityChangeNotify) {
return mergeFrom((io.grasscutter.net.proto.ability.ClientAbilityChangeNotify)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(io.grasscutter.net.proto.ability.ClientAbilityChangeNotify other) {
if (other == io.grasscutter.net.proto.ability.ClientAbilityChangeNotify.getDefaultInstance()) return this;
if (jJBLBLMDPHCBuilder_ == null) {
if (!other.jJBLBLMDPHC_.isEmpty()) {
if (jJBLBLMDPHC_.isEmpty()) {
jJBLBLMDPHC_ = other.jJBLBLMDPHC_;
bitField0_ = (bitField0_ & ~0x00000001);
} else {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.addAll(other.jJBLBLMDPHC_);
}
onChanged();
}
} else {
if (!other.jJBLBLMDPHC_.isEmpty()) {
if (jJBLBLMDPHCBuilder_.isEmpty()) {
jJBLBLMDPHCBuilder_.dispose();
jJBLBLMDPHCBuilder_ = null;
jJBLBLMDPHC_ = other.jJBLBLMDPHC_;
bitField0_ = (bitField0_ & ~0x00000001);
jJBLBLMDPHCBuilder_ =
com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
getJJBLBLMDPHCFieldBuilder() : null;
} else {
jJBLBLMDPHCBuilder_.addAllMessages(other.jJBLBLMDPHC_);
}
}
}
if (other.getIsInitHash() != false) {
setIsInitHash(other.getIsInitHash());
}
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 {
io.grasscutter.net.proto.ability.ClientAbilityChangeNotify parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (io.grasscutter.net.proto.ability.ClientAbilityChangeNotify) e.getUnfinishedMessage();
throw e.unwrapIOException();
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private int bitField0_;
private java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry> jJBLBLMDPHC_ =
java.util.Collections.emptyList();
private void ensureJJBLBLMDPHCIsMutable() {
if (!((bitField0_ & 0x00000001) != 0)) {
jJBLBLMDPHC_ = new java.util.ArrayList<io.grasscutter.net.proto.ability.AbilityInvokeEntry>(jJBLBLMDPHC_);
bitField0_ |= 0x00000001;
}
}
private com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.ability.AbilityInvokeEntry, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder, io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder> jJBLBLMDPHCBuilder_;
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry> getJJBLBLMDPHCList() {
if (jJBLBLMDPHCBuilder_ == null) {
return java.util.Collections.unmodifiableList(jJBLBLMDPHC_);
} else {
return jJBLBLMDPHCBuilder_.getMessageList();
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public int getJJBLBLMDPHCCount() {
if (jJBLBLMDPHCBuilder_ == null) {
return jJBLBLMDPHC_.size();
} else {
return jJBLBLMDPHCBuilder_.getCount();
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntry getJJBLBLMDPHC(int index) {
if (jJBLBLMDPHCBuilder_ == null) {
return jJBLBLMDPHC_.get(index);
} else {
return jJBLBLMDPHCBuilder_.getMessage(index);
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public Builder setJJBLBLMDPHC(
int index, io.grasscutter.net.proto.ability.AbilityInvokeEntry value) {
if (jJBLBLMDPHCBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.set(index, value);
onChanged();
} else {
jJBLBLMDPHCBuilder_.setMessage(index, value);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public Builder setJJBLBLMDPHC(
int index, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder builderForValue) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.set(index, builderForValue.build());
onChanged();
} else {
jJBLBLMDPHCBuilder_.setMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public Builder addJJBLBLMDPHC(io.grasscutter.net.proto.ability.AbilityInvokeEntry value) {
if (jJBLBLMDPHCBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.add(value);
onChanged();
} else {
jJBLBLMDPHCBuilder_.addMessage(value);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public Builder addJJBLBLMDPHC(
int index, io.grasscutter.net.proto.ability.AbilityInvokeEntry value) {
if (jJBLBLMDPHCBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.add(index, value);
onChanged();
} else {
jJBLBLMDPHCBuilder_.addMessage(index, value);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public Builder addJJBLBLMDPHC(
io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder builderForValue) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.add(builderForValue.build());
onChanged();
} else {
jJBLBLMDPHCBuilder_.addMessage(builderForValue.build());
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public Builder addJJBLBLMDPHC(
int index, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder builderForValue) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.add(index, builderForValue.build());
onChanged();
} else {
jJBLBLMDPHCBuilder_.addMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public Builder addAllJJBLBLMDPHC(
java.lang.Iterable<? extends io.grasscutter.net.proto.ability.AbilityInvokeEntry> values) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
com.google.protobuf.AbstractMessageLite.Builder.addAll(
values, jJBLBLMDPHC_);
onChanged();
} else {
jJBLBLMDPHCBuilder_.addAllMessages(values);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public Builder clearJJBLBLMDPHC() {
if (jJBLBLMDPHCBuilder_ == null) {
jJBLBLMDPHC_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
onChanged();
} else {
jJBLBLMDPHCBuilder_.clear();
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public Builder removeJJBLBLMDPHC(int index) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.remove(index);
onChanged();
} else {
jJBLBLMDPHCBuilder_.remove(index);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder getJJBLBLMDPHCBuilder(
int index) {
return getJJBLBLMDPHCFieldBuilder().getBuilder(index);
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getJJBLBLMDPHCOrBuilder(
int index) {
if (jJBLBLMDPHCBuilder_ == null) {
return jJBLBLMDPHC_.get(index); } else {
return jJBLBLMDPHCBuilder_.getMessageOrBuilder(index);
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public java.util.List<? extends io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>
getJJBLBLMDPHCOrBuilderList() {
if (jJBLBLMDPHCBuilder_ != null) {
return jJBLBLMDPHCBuilder_.getMessageOrBuilderList();
} else {
return java.util.Collections.unmodifiableList(jJBLBLMDPHC_);
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder addJJBLBLMDPHCBuilder() {
return getJJBLBLMDPHCFieldBuilder().addBuilder(
io.grasscutter.net.proto.ability.AbilityInvokeEntry.getDefaultInstance());
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder addJJBLBLMDPHCBuilder(
int index) {
return getJJBLBLMDPHCFieldBuilder().addBuilder(
index, io.grasscutter.net.proto.ability.AbilityInvokeEntry.getDefaultInstance());
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder>
getJJBLBLMDPHCBuilderList() {
return getJJBLBLMDPHCFieldBuilder().getBuilderList();
}
private com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.ability.AbilityInvokeEntry, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder, io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>
getJJBLBLMDPHCFieldBuilder() {
if (jJBLBLMDPHCBuilder_ == null) {
jJBLBLMDPHCBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.ability.AbilityInvokeEntry, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder, io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>(
jJBLBLMDPHC_,
((bitField0_ & 0x00000001) != 0),
getParentForChildren(),
isClean());
jJBLBLMDPHC_ = null;
}
return jJBLBLMDPHCBuilder_;
}
private boolean isInitHash_ ;
/**
* <code>bool is_init_hash = 12;</code>
* @return The isInitHash.
*/
@java.lang.Override
public boolean getIsInitHash() {
return isInitHash_;
}
/**
* <code>bool is_init_hash = 12;</code>
* @param value The isInitHash to set.
* @return This builder for chaining.
*/
public Builder setIsInitHash(boolean value) {
isInitHash_ = value;
onChanged();
return this;
}
/**
* <code>bool is_init_hash = 12;</code>
* @return This builder for chaining.
*/
public Builder clearIsInitHash() {
isInitHash_ = false;
onChanged();
return this;
}
private int entityId_ ;
/**
* <code>uint32 entity_id = 10;</code>
* @return The entityId.
*/
@java.lang.Override
public int getEntityId() {
return entityId_;
}
/**
* <code>uint32 entity_id = 10;</code>
* @param value The entityId to set.
* @return This builder for chaining.
*/
public Builder setEntityId(int value) {
entityId_ = value;
onChanged();
return this;
}
/**
* <code>uint32 entity_id = 10;</code>
* @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:ClientAbilityChangeNotify)
}
// @@protoc_insertion_point(class_scope:ClientAbilityChangeNotify)
private static final io.grasscutter.net.proto.ability.ClientAbilityChangeNotify DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new io.grasscutter.net.proto.ability.ClientAbilityChangeNotify();
}
public static io.grasscutter.net.proto.ability.ClientAbilityChangeNotify getDefaultInstance() {
return DEFAULT_INSTANCE;
}
private static final com.google.protobuf.Parser<ClientAbilityChangeNotify>
PARSER = new com.google.protobuf.AbstractParser<ClientAbilityChangeNotify>() {
@java.lang.Override
public ClientAbilityChangeNotify parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new ClientAbilityChangeNotify(input, extensionRegistry);
}
};
public static com.google.protobuf.Parser<ClientAbilityChangeNotify> parser() {
return PARSER;
}
@java.lang.Override
public com.google.protobuf.Parser<ClientAbilityChangeNotify> getParserForType() {
return PARSER;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.ClientAbilityChangeNotify getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}

View File

@ -0,0 +1,45 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
public interface ClientAbilityChangeNotifyOrBuilder extends
// @@protoc_insertion_point(interface_extends:ClientAbilityChangeNotify)
com.google.protobuf.MessageOrBuilder {
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry>
getJJBLBLMDPHCList();
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntry getJJBLBLMDPHC(int index);
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
int getJJBLBLMDPHCCount();
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
java.util.List<? extends io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>
getJJBLBLMDPHCOrBuilderList();
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getJJBLBLMDPHCOrBuilder(
int index);
/**
* <code>bool is_init_hash = 12;</code>
* @return The isInitHash.
*/
boolean getIsInitHash();
/**
* <code>uint32 entity_id = 10;</code>
* @return The entityId.
*/
int getEntityId();
}

View File

@ -0,0 +1,842 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
/**
* <pre>
* CmdId: 22991
* </pre>
*
* Protobuf type {@code ClientAbilityInitFinishNotify}
*/
public final class ClientAbilityInitFinishNotify extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:ClientAbilityInitFinishNotify)
ClientAbilityInitFinishNotifyOrBuilder {
private static final long serialVersionUID = 0L;
// Use ClientAbilityInitFinishNotify.newBuilder() to construct.
private ClientAbilityInitFinishNotify(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
super(builder);
}
private ClientAbilityInitFinishNotify() {
jJBLBLMDPHC_ = java.util.Collections.emptyList();
}
@java.lang.Override
@SuppressWarnings({"unused"})
protected java.lang.Object newInstance(
UnusedPrivateParameter unused) {
return new ClientAbilityInitFinishNotify();
}
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private ClientAbilityInitFinishNotify(
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 32: {
entityId_ = input.readUInt32();
break;
}
case 122: {
if (!((mutable_bitField0_ & 0x00000001) != 0)) {
jJBLBLMDPHC_ = new java.util.ArrayList<io.grasscutter.net.proto.ability.AbilityInvokeEntry>();
mutable_bitField0_ |= 0x00000001;
}
jJBLBLMDPHC_.add(
input.readMessage(io.grasscutter.net.proto.ability.AbilityInvokeEntry.parser(), extensionRegistry));
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 {
if (((mutable_bitField0_ & 0x00000001) != 0)) {
jJBLBLMDPHC_ = java.util.Collections.unmodifiableList(jJBLBLMDPHC_);
}
this.unknownFields = unknownFields.build();
makeExtensionsImmutable();
}
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.ability.Ability.internal_static_ClientAbilityInitFinishNotify_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.ability.Ability.internal_static_ClientAbilityInitFinishNotify_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify.class, io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify.Builder.class);
}
public static final int JJBLBLMDPHC_FIELD_NUMBER = 15;
private java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry> jJBLBLMDPHC_;
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
@java.lang.Override
public java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry> getJJBLBLMDPHCList() {
return jJBLBLMDPHC_;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
@java.lang.Override
public java.util.List<? extends io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>
getJJBLBLMDPHCOrBuilderList() {
return jJBLBLMDPHC_;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
@java.lang.Override
public int getJJBLBLMDPHCCount() {
return jJBLBLMDPHC_.size();
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvokeEntry getJJBLBLMDPHC(int index) {
return jJBLBLMDPHC_.get(index);
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getJJBLBLMDPHCOrBuilder(
int index) {
return jJBLBLMDPHC_.get(index);
}
public static final int ENTITY_ID_FIELD_NUMBER = 4;
private int entityId_;
/**
* <code>uint32 entity_id = 4;</code>
* @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 (entityId_ != 0) {
output.writeUInt32(4, entityId_);
}
for (int i = 0; i < jJBLBLMDPHC_.size(); i++) {
output.writeMessage(15, jJBLBLMDPHC_.get(i));
}
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(4, entityId_);
}
for (int i = 0; i < jJBLBLMDPHC_.size(); i++) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(15, jJBLBLMDPHC_.get(i));
}
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 io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify)) {
return super.equals(obj);
}
io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify other = (io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify) obj;
if (!getJJBLBLMDPHCList()
.equals(other.getJJBLBLMDPHCList())) 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();
if (getJJBLBLMDPHCCount() > 0) {
hash = (37 * hash) + JJBLBLMDPHC_FIELD_NUMBER;
hash = (53 * hash) + getJJBLBLMDPHCList().hashCode();
}
hash = (37 * hash) + ENTITY_ID_FIELD_NUMBER;
hash = (53 * hash) + getEntityId();
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
}
public static io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify parseFrom(
java.nio.ByteBuffer data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify 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 io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify 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 io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify 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(io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify 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;
}
/**
* <pre>
* CmdId: 22991
* </pre>
*
* Protobuf type {@code ClientAbilityInitFinishNotify}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:ClientAbilityInitFinishNotify)
io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotifyOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.ability.Ability.internal_static_ClientAbilityInitFinishNotify_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.ability.Ability.internal_static_ClientAbilityInitFinishNotify_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify.class, io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify.Builder.class);
}
// Construct using io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private Builder(
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessageV3
.alwaysUseFieldBuilders) {
getJJBLBLMDPHCFieldBuilder();
}
}
@java.lang.Override
public Builder clear() {
super.clear();
if (jJBLBLMDPHCBuilder_ == null) {
jJBLBLMDPHC_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
} else {
jJBLBLMDPHCBuilder_.clear();
}
entityId_ = 0;
return this;
}
@java.lang.Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return io.grasscutter.net.proto.ability.Ability.internal_static_ClientAbilityInitFinishNotify_descriptor;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify getDefaultInstanceForType() {
return io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify.getDefaultInstance();
}
@java.lang.Override
public io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify build() {
io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify buildPartial() {
io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify result = new io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify(this);
int from_bitField0_ = bitField0_;
if (jJBLBLMDPHCBuilder_ == null) {
if (((bitField0_ & 0x00000001) != 0)) {
jJBLBLMDPHC_ = java.util.Collections.unmodifiableList(jJBLBLMDPHC_);
bitField0_ = (bitField0_ & ~0x00000001);
}
result.jJBLBLMDPHC_ = jJBLBLMDPHC_;
} else {
result.jJBLBLMDPHC_ = jJBLBLMDPHCBuilder_.build();
}
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 io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify) {
return mergeFrom((io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify other) {
if (other == io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify.getDefaultInstance()) return this;
if (jJBLBLMDPHCBuilder_ == null) {
if (!other.jJBLBLMDPHC_.isEmpty()) {
if (jJBLBLMDPHC_.isEmpty()) {
jJBLBLMDPHC_ = other.jJBLBLMDPHC_;
bitField0_ = (bitField0_ & ~0x00000001);
} else {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.addAll(other.jJBLBLMDPHC_);
}
onChanged();
}
} else {
if (!other.jJBLBLMDPHC_.isEmpty()) {
if (jJBLBLMDPHCBuilder_.isEmpty()) {
jJBLBLMDPHCBuilder_.dispose();
jJBLBLMDPHCBuilder_ = null;
jJBLBLMDPHC_ = other.jJBLBLMDPHC_;
bitField0_ = (bitField0_ & ~0x00000001);
jJBLBLMDPHCBuilder_ =
com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
getJJBLBLMDPHCFieldBuilder() : null;
} else {
jJBLBLMDPHCBuilder_.addAllMessages(other.jJBLBLMDPHC_);
}
}
}
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 {
io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify) e.getUnfinishedMessage();
throw e.unwrapIOException();
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private int bitField0_;
private java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry> jJBLBLMDPHC_ =
java.util.Collections.emptyList();
private void ensureJJBLBLMDPHCIsMutable() {
if (!((bitField0_ & 0x00000001) != 0)) {
jJBLBLMDPHC_ = new java.util.ArrayList<io.grasscutter.net.proto.ability.AbilityInvokeEntry>(jJBLBLMDPHC_);
bitField0_ |= 0x00000001;
}
}
private com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.ability.AbilityInvokeEntry, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder, io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder> jJBLBLMDPHCBuilder_;
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry> getJJBLBLMDPHCList() {
if (jJBLBLMDPHCBuilder_ == null) {
return java.util.Collections.unmodifiableList(jJBLBLMDPHC_);
} else {
return jJBLBLMDPHCBuilder_.getMessageList();
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public int getJJBLBLMDPHCCount() {
if (jJBLBLMDPHCBuilder_ == null) {
return jJBLBLMDPHC_.size();
} else {
return jJBLBLMDPHCBuilder_.getCount();
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntry getJJBLBLMDPHC(int index) {
if (jJBLBLMDPHCBuilder_ == null) {
return jJBLBLMDPHC_.get(index);
} else {
return jJBLBLMDPHCBuilder_.getMessage(index);
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public Builder setJJBLBLMDPHC(
int index, io.grasscutter.net.proto.ability.AbilityInvokeEntry value) {
if (jJBLBLMDPHCBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.set(index, value);
onChanged();
} else {
jJBLBLMDPHCBuilder_.setMessage(index, value);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public Builder setJJBLBLMDPHC(
int index, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder builderForValue) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.set(index, builderForValue.build());
onChanged();
} else {
jJBLBLMDPHCBuilder_.setMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public Builder addJJBLBLMDPHC(io.grasscutter.net.proto.ability.AbilityInvokeEntry value) {
if (jJBLBLMDPHCBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.add(value);
onChanged();
} else {
jJBLBLMDPHCBuilder_.addMessage(value);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public Builder addJJBLBLMDPHC(
int index, io.grasscutter.net.proto.ability.AbilityInvokeEntry value) {
if (jJBLBLMDPHCBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.add(index, value);
onChanged();
} else {
jJBLBLMDPHCBuilder_.addMessage(index, value);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public Builder addJJBLBLMDPHC(
io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder builderForValue) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.add(builderForValue.build());
onChanged();
} else {
jJBLBLMDPHCBuilder_.addMessage(builderForValue.build());
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public Builder addJJBLBLMDPHC(
int index, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder builderForValue) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.add(index, builderForValue.build());
onChanged();
} else {
jJBLBLMDPHCBuilder_.addMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public Builder addAllJJBLBLMDPHC(
java.lang.Iterable<? extends io.grasscutter.net.proto.ability.AbilityInvokeEntry> values) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
com.google.protobuf.AbstractMessageLite.Builder.addAll(
values, jJBLBLMDPHC_);
onChanged();
} else {
jJBLBLMDPHCBuilder_.addAllMessages(values);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public Builder clearJJBLBLMDPHC() {
if (jJBLBLMDPHCBuilder_ == null) {
jJBLBLMDPHC_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
onChanged();
} else {
jJBLBLMDPHCBuilder_.clear();
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public Builder removeJJBLBLMDPHC(int index) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.remove(index);
onChanged();
} else {
jJBLBLMDPHCBuilder_.remove(index);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder getJJBLBLMDPHCBuilder(
int index) {
return getJJBLBLMDPHCFieldBuilder().getBuilder(index);
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getJJBLBLMDPHCOrBuilder(
int index) {
if (jJBLBLMDPHCBuilder_ == null) {
return jJBLBLMDPHC_.get(index); } else {
return jJBLBLMDPHCBuilder_.getMessageOrBuilder(index);
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public java.util.List<? extends io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>
getJJBLBLMDPHCOrBuilderList() {
if (jJBLBLMDPHCBuilder_ != null) {
return jJBLBLMDPHCBuilder_.getMessageOrBuilderList();
} else {
return java.util.Collections.unmodifiableList(jJBLBLMDPHC_);
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder addJJBLBLMDPHCBuilder() {
return getJJBLBLMDPHCFieldBuilder().addBuilder(
io.grasscutter.net.proto.ability.AbilityInvokeEntry.getDefaultInstance());
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder addJJBLBLMDPHCBuilder(
int index) {
return getJJBLBLMDPHCFieldBuilder().addBuilder(
index, io.grasscutter.net.proto.ability.AbilityInvokeEntry.getDefaultInstance());
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
public java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder>
getJJBLBLMDPHCBuilderList() {
return getJJBLBLMDPHCFieldBuilder().getBuilderList();
}
private com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.ability.AbilityInvokeEntry, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder, io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>
getJJBLBLMDPHCFieldBuilder() {
if (jJBLBLMDPHCBuilder_ == null) {
jJBLBLMDPHCBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.ability.AbilityInvokeEntry, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder, io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>(
jJBLBLMDPHC_,
((bitField0_ & 0x00000001) != 0),
getParentForChildren(),
isClean());
jJBLBLMDPHC_ = null;
}
return jJBLBLMDPHCBuilder_;
}
private int entityId_ ;
/**
* <code>uint32 entity_id = 4;</code>
* @return The entityId.
*/
@java.lang.Override
public int getEntityId() {
return entityId_;
}
/**
* <code>uint32 entity_id = 4;</code>
* @param value The entityId to set.
* @return This builder for chaining.
*/
public Builder setEntityId(int value) {
entityId_ = value;
onChanged();
return this;
}
/**
* <code>uint32 entity_id = 4;</code>
* @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:ClientAbilityInitFinishNotify)
}
// @@protoc_insertion_point(class_scope:ClientAbilityInitFinishNotify)
private static final io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify();
}
public static io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify getDefaultInstance() {
return DEFAULT_INSTANCE;
}
private static final com.google.protobuf.Parser<ClientAbilityInitFinishNotify>
PARSER = new com.google.protobuf.AbstractParser<ClientAbilityInitFinishNotify>() {
@java.lang.Override
public ClientAbilityInitFinishNotify parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new ClientAbilityInitFinishNotify(input, extensionRegistry);
}
};
public static com.google.protobuf.Parser<ClientAbilityInitFinishNotify> parser() {
return PARSER;
}
@java.lang.Override
public com.google.protobuf.Parser<ClientAbilityInitFinishNotify> getParserForType() {
return PARSER;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.ClientAbilityInitFinishNotify getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}

View File

@ -0,0 +1,39 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
public interface ClientAbilityInitFinishNotifyOrBuilder extends
// @@protoc_insertion_point(interface_extends:ClientAbilityInitFinishNotify)
com.google.protobuf.MessageOrBuilder {
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry>
getJJBLBLMDPHCList();
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntry getJJBLBLMDPHC(int index);
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
int getJJBLBLMDPHCCount();
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
java.util.List<? extends io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>
getJJBLBLMDPHCOrBuilderList();
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 15;</code>
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getJJBLBLMDPHCOrBuilder(
int index);
/**
* <code>uint32 entity_id = 4;</code>
* @return The entityId.
*/
int getEntityId();
}

View File

@ -0,0 +1,834 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
/**
* Protobuf type {@code EntityAbilityInvokeEntry}
*/
public final class EntityAbilityInvokeEntry extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:EntityAbilityInvokeEntry)
EntityAbilityInvokeEntryOrBuilder {
private static final long serialVersionUID = 0L;
// Use EntityAbilityInvokeEntry.newBuilder() to construct.
private EntityAbilityInvokeEntry(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
super(builder);
}
private EntityAbilityInvokeEntry() {
jJBLBLMDPHC_ = java.util.Collections.emptyList();
}
@java.lang.Override
@SuppressWarnings({"unused"})
protected java.lang.Object newInstance(
UnusedPrivateParameter unused) {
return new EntityAbilityInvokeEntry();
}
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private EntityAbilityInvokeEntry(
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 82: {
if (!((mutable_bitField0_ & 0x00000001) != 0)) {
jJBLBLMDPHC_ = new java.util.ArrayList<io.grasscutter.net.proto.ability.AbilityInvokeEntry>();
mutable_bitField0_ |= 0x00000001;
}
jJBLBLMDPHC_.add(
input.readMessage(io.grasscutter.net.proto.ability.AbilityInvokeEntry.parser(), extensionRegistry));
break;
}
case 88: {
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 (java.io.IOException e) {
throw new com.google.protobuf.InvalidProtocolBufferException(
e).setUnfinishedMessage(this);
} finally {
if (((mutable_bitField0_ & 0x00000001) != 0)) {
jJBLBLMDPHC_ = java.util.Collections.unmodifiableList(jJBLBLMDPHC_);
}
this.unknownFields = unknownFields.build();
makeExtensionsImmutable();
}
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.ability.Ability.internal_static_EntityAbilityInvokeEntry_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.ability.Ability.internal_static_EntityAbilityInvokeEntry_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.class, io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.Builder.class);
}
public static final int JJBLBLMDPHC_FIELD_NUMBER = 10;
private java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry> jJBLBLMDPHC_;
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
@java.lang.Override
public java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry> getJJBLBLMDPHCList() {
return jJBLBLMDPHC_;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
@java.lang.Override
public java.util.List<? extends io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>
getJJBLBLMDPHCOrBuilderList() {
return jJBLBLMDPHC_;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
@java.lang.Override
public int getJJBLBLMDPHCCount() {
return jJBLBLMDPHC_.size();
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvokeEntry getJJBLBLMDPHC(int index) {
return jJBLBLMDPHC_.get(index);
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getJJBLBLMDPHCOrBuilder(
int index) {
return jJBLBLMDPHC_.get(index);
}
public static final int ENTITY_ID_FIELD_NUMBER = 11;
private int entityId_;
/**
* <code>uint32 entity_id = 11;</code>
* @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 {
for (int i = 0; i < jJBLBLMDPHC_.size(); i++) {
output.writeMessage(10, jJBLBLMDPHC_.get(i));
}
if (entityId_ != 0) {
output.writeUInt32(11, entityId_);
}
unknownFields.writeTo(output);
}
@java.lang.Override
public int getSerializedSize() {
int size = memoizedSize;
if (size != -1) return size;
size = 0;
for (int i = 0; i < jJBLBLMDPHC_.size(); i++) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(10, jJBLBLMDPHC_.get(i));
}
if (entityId_ != 0) {
size += com.google.protobuf.CodedOutputStream
.computeUInt32Size(11, 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 io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry)) {
return super.equals(obj);
}
io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry other = (io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry) obj;
if (!getJJBLBLMDPHCList()
.equals(other.getJJBLBLMDPHCList())) 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();
if (getJJBLBLMDPHCCount() > 0) {
hash = (37 * hash) + JJBLBLMDPHC_FIELD_NUMBER;
hash = (53 * hash) + getJJBLBLMDPHCList().hashCode();
}
hash = (37 * hash) + ENTITY_ID_FIELD_NUMBER;
hash = (53 * hash) + getEntityId();
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
}
public static io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry parseFrom(
java.nio.ByteBuffer data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry 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 io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry 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 io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry 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(io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry 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 EntityAbilityInvokeEntry}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:EntityAbilityInvokeEntry)
io.grasscutter.net.proto.ability.EntityAbilityInvokeEntryOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.ability.Ability.internal_static_EntityAbilityInvokeEntry_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.ability.Ability.internal_static_EntityAbilityInvokeEntry_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.class, io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.Builder.class);
}
// Construct using io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private Builder(
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessageV3
.alwaysUseFieldBuilders) {
getJJBLBLMDPHCFieldBuilder();
}
}
@java.lang.Override
public Builder clear() {
super.clear();
if (jJBLBLMDPHCBuilder_ == null) {
jJBLBLMDPHC_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
} else {
jJBLBLMDPHCBuilder_.clear();
}
entityId_ = 0;
return this;
}
@java.lang.Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return io.grasscutter.net.proto.ability.Ability.internal_static_EntityAbilityInvokeEntry_descriptor;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry getDefaultInstanceForType() {
return io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.getDefaultInstance();
}
@java.lang.Override
public io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry build() {
io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry buildPartial() {
io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry result = new io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry(this);
int from_bitField0_ = bitField0_;
if (jJBLBLMDPHCBuilder_ == null) {
if (((bitField0_ & 0x00000001) != 0)) {
jJBLBLMDPHC_ = java.util.Collections.unmodifiableList(jJBLBLMDPHC_);
bitField0_ = (bitField0_ & ~0x00000001);
}
result.jJBLBLMDPHC_ = jJBLBLMDPHC_;
} else {
result.jJBLBLMDPHC_ = jJBLBLMDPHCBuilder_.build();
}
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 io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry) {
return mergeFrom((io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry other) {
if (other == io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry.getDefaultInstance()) return this;
if (jJBLBLMDPHCBuilder_ == null) {
if (!other.jJBLBLMDPHC_.isEmpty()) {
if (jJBLBLMDPHC_.isEmpty()) {
jJBLBLMDPHC_ = other.jJBLBLMDPHC_;
bitField0_ = (bitField0_ & ~0x00000001);
} else {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.addAll(other.jJBLBLMDPHC_);
}
onChanged();
}
} else {
if (!other.jJBLBLMDPHC_.isEmpty()) {
if (jJBLBLMDPHCBuilder_.isEmpty()) {
jJBLBLMDPHCBuilder_.dispose();
jJBLBLMDPHCBuilder_ = null;
jJBLBLMDPHC_ = other.jJBLBLMDPHC_;
bitField0_ = (bitField0_ & ~0x00000001);
jJBLBLMDPHCBuilder_ =
com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
getJJBLBLMDPHCFieldBuilder() : null;
} else {
jJBLBLMDPHCBuilder_.addAllMessages(other.jJBLBLMDPHC_);
}
}
}
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 {
io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry) e.getUnfinishedMessage();
throw e.unwrapIOException();
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private int bitField0_;
private java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry> jJBLBLMDPHC_ =
java.util.Collections.emptyList();
private void ensureJJBLBLMDPHCIsMutable() {
if (!((bitField0_ & 0x00000001) != 0)) {
jJBLBLMDPHC_ = new java.util.ArrayList<io.grasscutter.net.proto.ability.AbilityInvokeEntry>(jJBLBLMDPHC_);
bitField0_ |= 0x00000001;
}
}
private com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.ability.AbilityInvokeEntry, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder, io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder> jJBLBLMDPHCBuilder_;
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
public java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry> getJJBLBLMDPHCList() {
if (jJBLBLMDPHCBuilder_ == null) {
return java.util.Collections.unmodifiableList(jJBLBLMDPHC_);
} else {
return jJBLBLMDPHCBuilder_.getMessageList();
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
public int getJJBLBLMDPHCCount() {
if (jJBLBLMDPHCBuilder_ == null) {
return jJBLBLMDPHC_.size();
} else {
return jJBLBLMDPHCBuilder_.getCount();
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntry getJJBLBLMDPHC(int index) {
if (jJBLBLMDPHCBuilder_ == null) {
return jJBLBLMDPHC_.get(index);
} else {
return jJBLBLMDPHCBuilder_.getMessage(index);
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
public Builder setJJBLBLMDPHC(
int index, io.grasscutter.net.proto.ability.AbilityInvokeEntry value) {
if (jJBLBLMDPHCBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.set(index, value);
onChanged();
} else {
jJBLBLMDPHCBuilder_.setMessage(index, value);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
public Builder setJJBLBLMDPHC(
int index, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder builderForValue) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.set(index, builderForValue.build());
onChanged();
} else {
jJBLBLMDPHCBuilder_.setMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
public Builder addJJBLBLMDPHC(io.grasscutter.net.proto.ability.AbilityInvokeEntry value) {
if (jJBLBLMDPHCBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.add(value);
onChanged();
} else {
jJBLBLMDPHCBuilder_.addMessage(value);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
public Builder addJJBLBLMDPHC(
int index, io.grasscutter.net.proto.ability.AbilityInvokeEntry value) {
if (jJBLBLMDPHCBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.add(index, value);
onChanged();
} else {
jJBLBLMDPHCBuilder_.addMessage(index, value);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
public Builder addJJBLBLMDPHC(
io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder builderForValue) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.add(builderForValue.build());
onChanged();
} else {
jJBLBLMDPHCBuilder_.addMessage(builderForValue.build());
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
public Builder addJJBLBLMDPHC(
int index, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder builderForValue) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.add(index, builderForValue.build());
onChanged();
} else {
jJBLBLMDPHCBuilder_.addMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
public Builder addAllJJBLBLMDPHC(
java.lang.Iterable<? extends io.grasscutter.net.proto.ability.AbilityInvokeEntry> values) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
com.google.protobuf.AbstractMessageLite.Builder.addAll(
values, jJBLBLMDPHC_);
onChanged();
} else {
jJBLBLMDPHCBuilder_.addAllMessages(values);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
public Builder clearJJBLBLMDPHC() {
if (jJBLBLMDPHCBuilder_ == null) {
jJBLBLMDPHC_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
onChanged();
} else {
jJBLBLMDPHCBuilder_.clear();
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
public Builder removeJJBLBLMDPHC(int index) {
if (jJBLBLMDPHCBuilder_ == null) {
ensureJJBLBLMDPHCIsMutable();
jJBLBLMDPHC_.remove(index);
onChanged();
} else {
jJBLBLMDPHCBuilder_.remove(index);
}
return this;
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder getJJBLBLMDPHCBuilder(
int index) {
return getJJBLBLMDPHCFieldBuilder().getBuilder(index);
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getJJBLBLMDPHCOrBuilder(
int index) {
if (jJBLBLMDPHCBuilder_ == null) {
return jJBLBLMDPHC_.get(index); } else {
return jJBLBLMDPHCBuilder_.getMessageOrBuilder(index);
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
public java.util.List<? extends io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>
getJJBLBLMDPHCOrBuilderList() {
if (jJBLBLMDPHCBuilder_ != null) {
return jJBLBLMDPHCBuilder_.getMessageOrBuilderList();
} else {
return java.util.Collections.unmodifiableList(jJBLBLMDPHC_);
}
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder addJJBLBLMDPHCBuilder() {
return getJJBLBLMDPHCFieldBuilder().addBuilder(
io.grasscutter.net.proto.ability.AbilityInvokeEntry.getDefaultInstance());
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
public io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder addJJBLBLMDPHCBuilder(
int index) {
return getJJBLBLMDPHCFieldBuilder().addBuilder(
index, io.grasscutter.net.proto.ability.AbilityInvokeEntry.getDefaultInstance());
}
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
public java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder>
getJJBLBLMDPHCBuilderList() {
return getJJBLBLMDPHCFieldBuilder().getBuilderList();
}
private com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.ability.AbilityInvokeEntry, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder, io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>
getJJBLBLMDPHCFieldBuilder() {
if (jJBLBLMDPHCBuilder_ == null) {
jJBLBLMDPHCBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.ability.AbilityInvokeEntry, io.grasscutter.net.proto.ability.AbilityInvokeEntry.Builder, io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>(
jJBLBLMDPHC_,
((bitField0_ & 0x00000001) != 0),
getParentForChildren(),
isClean());
jJBLBLMDPHC_ = null;
}
return jJBLBLMDPHCBuilder_;
}
private int entityId_ ;
/**
* <code>uint32 entity_id = 11;</code>
* @return The entityId.
*/
@java.lang.Override
public int getEntityId() {
return entityId_;
}
/**
* <code>uint32 entity_id = 11;</code>
* @param value The entityId to set.
* @return This builder for chaining.
*/
public Builder setEntityId(int value) {
entityId_ = value;
onChanged();
return this;
}
/**
* <code>uint32 entity_id = 11;</code>
* @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:EntityAbilityInvokeEntry)
}
// @@protoc_insertion_point(class_scope:EntityAbilityInvokeEntry)
private static final io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry();
}
public static io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry getDefaultInstance() {
return DEFAULT_INSTANCE;
}
private static final com.google.protobuf.Parser<EntityAbilityInvokeEntry>
PARSER = new com.google.protobuf.AbstractParser<EntityAbilityInvokeEntry>() {
@java.lang.Override
public EntityAbilityInvokeEntry parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new EntityAbilityInvokeEntry(input, extensionRegistry);
}
};
public static com.google.protobuf.Parser<EntityAbilityInvokeEntry> parser() {
return PARSER;
}
@java.lang.Override
public com.google.protobuf.Parser<EntityAbilityInvokeEntry> getParserForType() {
return PARSER;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.EntityAbilityInvokeEntry getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}

View File

@ -0,0 +1,39 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
public interface EntityAbilityInvokeEntryOrBuilder extends
// @@protoc_insertion_point(interface_extends:EntityAbilityInvokeEntry)
com.google.protobuf.MessageOrBuilder {
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
java.util.List<io.grasscutter.net.proto.ability.AbilityInvokeEntry>
getJJBLBLMDPHCList();
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntry getJJBLBLMDPHC(int index);
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
int getJJBLBLMDPHCCount();
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
java.util.List<? extends io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder>
getJJBLBLMDPHCOrBuilderList();
/**
* <code>repeated .AbilityInvokeEntry JJBLBLMDPHC = 10;</code>
*/
io.grasscutter.net.proto.ability.AbilityInvokeEntryOrBuilder getJJBLBLMDPHCOrBuilder(
int index);
/**
* <code>uint32 entity_id = 11;</code>
* @return The entityId.
*/
int getEntityId();
}

View File

@ -0,0 +1,621 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
/**
* <pre>
* CmdId: 29440
* </pre>
*
* Protobuf type {@code ServerGlobalValueChangeNotify}
*/
public final class ServerGlobalValueChangeNotify extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:ServerGlobalValueChangeNotify)
ServerGlobalValueChangeNotifyOrBuilder {
private static final long serialVersionUID = 0L;
// Use ServerGlobalValueChangeNotify.newBuilder() to construct.
private ServerGlobalValueChangeNotify(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
super(builder);
}
private ServerGlobalValueChangeNotify() {
}
@java.lang.Override
@SuppressWarnings({"unused"})
protected java.lang.Object newInstance(
UnusedPrivateParameter unused) {
return new ServerGlobalValueChangeNotify();
}
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private ServerGlobalValueChangeNotify(
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 72: {
keyHash_ = input.readUInt32();
break;
}
case 109: {
value_ = input.readFloat();
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 io.grasscutter.net.proto.ability.Ability.internal_static_ServerGlobalValueChangeNotify_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.ability.Ability.internal_static_ServerGlobalValueChangeNotify_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify.class, io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify.Builder.class);
}
public static final int VALUE_FIELD_NUMBER = 13;
private float value_;
/**
* <code>float value = 13;</code>
* @return The value.
*/
@java.lang.Override
public float getValue() {
return value_;
}
public static final int KEY_HASH_FIELD_NUMBER = 9;
private int keyHash_;
/**
* <code>uint32 key_hash = 9;</code>
* @return The keyHash.
*/
@java.lang.Override
public int getKeyHash() {
return keyHash_;
}
public static final int ENTITY_ID_FIELD_NUMBER = 1;
private int entityId_;
/**
* <code>uint32 entity_id = 1;</code>
* @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 (entityId_ != 0) {
output.writeUInt32(1, entityId_);
}
if (keyHash_ != 0) {
output.writeUInt32(9, keyHash_);
}
if (value_ != 0F) {
output.writeFloat(13, value_);
}
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 (keyHash_ != 0) {
size += com.google.protobuf.CodedOutputStream
.computeUInt32Size(9, keyHash_);
}
if (value_ != 0F) {
size += com.google.protobuf.CodedOutputStream
.computeFloatSize(13, value_);
}
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 io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify)) {
return super.equals(obj);
}
io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify other = (io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify) obj;
if (java.lang.Float.floatToIntBits(getValue())
!= java.lang.Float.floatToIntBits(
other.getValue())) return false;
if (getKeyHash()
!= other.getKeyHash()) 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) + VALUE_FIELD_NUMBER;
hash = (53 * hash) + java.lang.Float.floatToIntBits(
getValue());
hash = (37 * hash) + KEY_HASH_FIELD_NUMBER;
hash = (53 * hash) + getKeyHash();
hash = (37 * hash) + ENTITY_ID_FIELD_NUMBER;
hash = (53 * hash) + getEntityId();
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
}
public static io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify parseFrom(
java.nio.ByteBuffer data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify 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 io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify 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 io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify 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(io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify 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;
}
/**
* <pre>
* CmdId: 29440
* </pre>
*
* Protobuf type {@code ServerGlobalValueChangeNotify}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:ServerGlobalValueChangeNotify)
io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotifyOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.ability.Ability.internal_static_ServerGlobalValueChangeNotify_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.ability.Ability.internal_static_ServerGlobalValueChangeNotify_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify.class, io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify.Builder.class);
}
// Construct using io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify.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();
value_ = 0F;
keyHash_ = 0;
entityId_ = 0;
return this;
}
@java.lang.Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return io.grasscutter.net.proto.ability.Ability.internal_static_ServerGlobalValueChangeNotify_descriptor;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify getDefaultInstanceForType() {
return io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify.getDefaultInstance();
}
@java.lang.Override
public io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify build() {
io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify buildPartial() {
io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify result = new io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify(this);
result.value_ = value_;
result.keyHash_ = keyHash_;
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 io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify) {
return mergeFrom((io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify other) {
if (other == io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify.getDefaultInstance()) return this;
if (other.getValue() != 0F) {
setValue(other.getValue());
}
if (other.getKeyHash() != 0) {
setKeyHash(other.getKeyHash());
}
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 {
io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify) e.getUnfinishedMessage();
throw e.unwrapIOException();
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private float value_ ;
/**
* <code>float value = 13;</code>
* @return The value.
*/
@java.lang.Override
public float getValue() {
return value_;
}
/**
* <code>float value = 13;</code>
* @param value The value to set.
* @return This builder for chaining.
*/
public Builder setValue(float value) {
value_ = value;
onChanged();
return this;
}
/**
* <code>float value = 13;</code>
* @return This builder for chaining.
*/
public Builder clearValue() {
value_ = 0F;
onChanged();
return this;
}
private int keyHash_ ;
/**
* <code>uint32 key_hash = 9;</code>
* @return The keyHash.
*/
@java.lang.Override
public int getKeyHash() {
return keyHash_;
}
/**
* <code>uint32 key_hash = 9;</code>
* @param value The keyHash to set.
* @return This builder for chaining.
*/
public Builder setKeyHash(int value) {
keyHash_ = value;
onChanged();
return this;
}
/**
* <code>uint32 key_hash = 9;</code>
* @return This builder for chaining.
*/
public Builder clearKeyHash() {
keyHash_ = 0;
onChanged();
return this;
}
private int entityId_ ;
/**
* <code>uint32 entity_id = 1;</code>
* @return The entityId.
*/
@java.lang.Override
public int getEntityId() {
return entityId_;
}
/**
* <code>uint32 entity_id = 1;</code>
* @param value The entityId to set.
* @return This builder for chaining.
*/
public Builder setEntityId(int value) {
entityId_ = value;
onChanged();
return this;
}
/**
* <code>uint32 entity_id = 1;</code>
* @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:ServerGlobalValueChangeNotify)
}
// @@protoc_insertion_point(class_scope:ServerGlobalValueChangeNotify)
private static final io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify();
}
public static io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify getDefaultInstance() {
return DEFAULT_INSTANCE;
}
private static final com.google.protobuf.Parser<ServerGlobalValueChangeNotify>
PARSER = new com.google.protobuf.AbstractParser<ServerGlobalValueChangeNotify>() {
@java.lang.Override
public ServerGlobalValueChangeNotify parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new ServerGlobalValueChangeNotify(input, extensionRegistry);
}
};
public static com.google.protobuf.Parser<ServerGlobalValueChangeNotify> parser() {
return PARSER;
}
@java.lang.Override
public com.google.protobuf.Parser<ServerGlobalValueChangeNotify> getParserForType() {
return PARSER;
}
@java.lang.Override
public io.grasscutter.net.proto.ability.ServerGlobalValueChangeNotify getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}

View File

@ -0,0 +1,27 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: ability.proto
package io.grasscutter.net.proto.ability;
public interface ServerGlobalValueChangeNotifyOrBuilder extends
// @@protoc_insertion_point(interface_extends:ServerGlobalValueChangeNotify)
com.google.protobuf.MessageOrBuilder {
/**
* <code>float value = 13;</code>
* @return The value.
*/
float getValue();
/**
* <code>uint32 key_hash = 9;</code>
* @return The keyHash.
*/
int getKeyHash();
/**
* <code>uint32 entity_id = 1;</code>
* @return The entityId.
*/
int getEntityId();
}

View File

@ -0,0 +1,771 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: achievement.proto
package io.grasscutter.net.proto.achievement;
/**
* Protobuf type {@code Achievement}
*/
public final class Achievement extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:Achievement)
AchievementOrBuilder {
private static final long serialVersionUID = 0L;
// Use Achievement.newBuilder() to construct.
private Achievement(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
super(builder);
}
private Achievement() {
status_ = 0;
}
@java.lang.Override
@SuppressWarnings({"unused"})
protected java.lang.Object newInstance(
UnusedPrivateParameter unused) {
return new Achievement();
}
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private Achievement(
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 48: {
int rawValue = input.readEnum();
status_ = rawValue;
break;
}
case 56: {
finishTimestamp_ = input.readUInt32();
break;
}
case 64: {
curProgress_ = input.readUInt32();
break;
}
case 96: {
totalProgress_ = input.readUInt32();
break;
}
case 104: {
id_ = input.readUInt32();
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 io.grasscutter.net.proto.achievement.AchievementOuterClass.internal_static_Achievement_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.achievement.AchievementOuterClass.internal_static_Achievement_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.achievement.Achievement.class, io.grasscutter.net.proto.achievement.Achievement.Builder.class);
}
public static final int FINISH_TIMESTAMP_FIELD_NUMBER = 7;
private int finishTimestamp_;
/**
* <code>uint32 finish_timestamp = 7;</code>
* @return The finishTimestamp.
*/
@java.lang.Override
public int getFinishTimestamp() {
return finishTimestamp_;
}
public static final int STATUS_FIELD_NUMBER = 6;
private int status_;
/**
* <code>.Status status = 6;</code>
* @return The enum numeric value on the wire for status.
*/
@java.lang.Override public int getStatusValue() {
return status_;
}
/**
* <code>.Status status = 6;</code>
* @return The status.
*/
@java.lang.Override public io.grasscutter.net.proto.coop.Status getStatus() {
@SuppressWarnings("deprecation")
io.grasscutter.net.proto.coop.Status result = io.grasscutter.net.proto.coop.Status.valueOf(status_);
return result == null ? io.grasscutter.net.proto.coop.Status.UNRECOGNIZED : result;
}
public static final int TOTAL_PROGRESS_FIELD_NUMBER = 12;
private int totalProgress_;
/**
* <code>uint32 total_progress = 12;</code>
* @return The totalProgress.
*/
@java.lang.Override
public int getTotalProgress() {
return totalProgress_;
}
public static final int CUR_PROGRESS_FIELD_NUMBER = 8;
private int curProgress_;
/**
* <code>uint32 cur_progress = 8;</code>
* @return The curProgress.
*/
@java.lang.Override
public int getCurProgress() {
return curProgress_;
}
public static final int ID_FIELD_NUMBER = 13;
private int id_;
/**
* <code>uint32 id = 13;</code>
* @return The id.
*/
@java.lang.Override
public int getId() {
return id_;
}
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 (status_ != io.grasscutter.net.proto.coop.Status.Status_INVALID.getNumber()) {
output.writeEnum(6, status_);
}
if (finishTimestamp_ != 0) {
output.writeUInt32(7, finishTimestamp_);
}
if (curProgress_ != 0) {
output.writeUInt32(8, curProgress_);
}
if (totalProgress_ != 0) {
output.writeUInt32(12, totalProgress_);
}
if (id_ != 0) {
output.writeUInt32(13, id_);
}
unknownFields.writeTo(output);
}
@java.lang.Override
public int getSerializedSize() {
int size = memoizedSize;
if (size != -1) return size;
size = 0;
if (status_ != io.grasscutter.net.proto.coop.Status.Status_INVALID.getNumber()) {
size += com.google.protobuf.CodedOutputStream
.computeEnumSize(6, status_);
}
if (finishTimestamp_ != 0) {
size += com.google.protobuf.CodedOutputStream
.computeUInt32Size(7, finishTimestamp_);
}
if (curProgress_ != 0) {
size += com.google.protobuf.CodedOutputStream
.computeUInt32Size(8, curProgress_);
}
if (totalProgress_ != 0) {
size += com.google.protobuf.CodedOutputStream
.computeUInt32Size(12, totalProgress_);
}
if (id_ != 0) {
size += com.google.protobuf.CodedOutputStream
.computeUInt32Size(13, id_);
}
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 io.grasscutter.net.proto.achievement.Achievement)) {
return super.equals(obj);
}
io.grasscutter.net.proto.achievement.Achievement other = (io.grasscutter.net.proto.achievement.Achievement) obj;
if (getFinishTimestamp()
!= other.getFinishTimestamp()) return false;
if (status_ != other.status_) return false;
if (getTotalProgress()
!= other.getTotalProgress()) return false;
if (getCurProgress()
!= other.getCurProgress()) return false;
if (getId()
!= other.getId()) 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) + FINISH_TIMESTAMP_FIELD_NUMBER;
hash = (53 * hash) + getFinishTimestamp();
hash = (37 * hash) + STATUS_FIELD_NUMBER;
hash = (53 * hash) + status_;
hash = (37 * hash) + TOTAL_PROGRESS_FIELD_NUMBER;
hash = (53 * hash) + getTotalProgress();
hash = (37 * hash) + CUR_PROGRESS_FIELD_NUMBER;
hash = (53 * hash) + getCurProgress();
hash = (37 * hash) + ID_FIELD_NUMBER;
hash = (53 * hash) + getId();
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
}
public static io.grasscutter.net.proto.achievement.Achievement parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.achievement.Achievement parseFrom(
java.nio.ByteBuffer data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.achievement.Achievement parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.achievement.Achievement parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.achievement.Achievement parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.achievement.Achievement parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.achievement.Achievement parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.achievement.Achievement 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 io.grasscutter.net.proto.achievement.Achievement parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.achievement.Achievement 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 io.grasscutter.net.proto.achievement.Achievement parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.achievement.Achievement 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(io.grasscutter.net.proto.achievement.Achievement 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 Achievement}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:Achievement)
io.grasscutter.net.proto.achievement.AchievementOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.achievement.AchievementOuterClass.internal_static_Achievement_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.achievement.AchievementOuterClass.internal_static_Achievement_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.achievement.Achievement.class, io.grasscutter.net.proto.achievement.Achievement.Builder.class);
}
// Construct using io.grasscutter.net.proto.achievement.Achievement.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();
finishTimestamp_ = 0;
status_ = 0;
totalProgress_ = 0;
curProgress_ = 0;
id_ = 0;
return this;
}
@java.lang.Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return io.grasscutter.net.proto.achievement.AchievementOuterClass.internal_static_Achievement_descriptor;
}
@java.lang.Override
public io.grasscutter.net.proto.achievement.Achievement getDefaultInstanceForType() {
return io.grasscutter.net.proto.achievement.Achievement.getDefaultInstance();
}
@java.lang.Override
public io.grasscutter.net.proto.achievement.Achievement build() {
io.grasscutter.net.proto.achievement.Achievement result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@java.lang.Override
public io.grasscutter.net.proto.achievement.Achievement buildPartial() {
io.grasscutter.net.proto.achievement.Achievement result = new io.grasscutter.net.proto.achievement.Achievement(this);
result.finishTimestamp_ = finishTimestamp_;
result.status_ = status_;
result.totalProgress_ = totalProgress_;
result.curProgress_ = curProgress_;
result.id_ = id_;
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 io.grasscutter.net.proto.achievement.Achievement) {
return mergeFrom((io.grasscutter.net.proto.achievement.Achievement)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(io.grasscutter.net.proto.achievement.Achievement other) {
if (other == io.grasscutter.net.proto.achievement.Achievement.getDefaultInstance()) return this;
if (other.getFinishTimestamp() != 0) {
setFinishTimestamp(other.getFinishTimestamp());
}
if (other.status_ != 0) {
setStatusValue(other.getStatusValue());
}
if (other.getTotalProgress() != 0) {
setTotalProgress(other.getTotalProgress());
}
if (other.getCurProgress() != 0) {
setCurProgress(other.getCurProgress());
}
if (other.getId() != 0) {
setId(other.getId());
}
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 {
io.grasscutter.net.proto.achievement.Achievement parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (io.grasscutter.net.proto.achievement.Achievement) e.getUnfinishedMessage();
throw e.unwrapIOException();
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private int finishTimestamp_ ;
/**
* <code>uint32 finish_timestamp = 7;</code>
* @return The finishTimestamp.
*/
@java.lang.Override
public int getFinishTimestamp() {
return finishTimestamp_;
}
/**
* <code>uint32 finish_timestamp = 7;</code>
* @param value The finishTimestamp to set.
* @return This builder for chaining.
*/
public Builder setFinishTimestamp(int value) {
finishTimestamp_ = value;
onChanged();
return this;
}
/**
* <code>uint32 finish_timestamp = 7;</code>
* @return This builder for chaining.
*/
public Builder clearFinishTimestamp() {
finishTimestamp_ = 0;
onChanged();
return this;
}
private int status_ = 0;
/**
* <code>.Status status = 6;</code>
* @return The enum numeric value on the wire for status.
*/
@java.lang.Override public int getStatusValue() {
return status_;
}
/**
* <code>.Status status = 6;</code>
* @param value The enum numeric value on the wire for status to set.
* @return This builder for chaining.
*/
public Builder setStatusValue(int value) {
status_ = value;
onChanged();
return this;
}
/**
* <code>.Status status = 6;</code>
* @return The status.
*/
@java.lang.Override
public io.grasscutter.net.proto.coop.Status getStatus() {
@SuppressWarnings("deprecation")
io.grasscutter.net.proto.coop.Status result = io.grasscutter.net.proto.coop.Status.valueOf(status_);
return result == null ? io.grasscutter.net.proto.coop.Status.UNRECOGNIZED : result;
}
/**
* <code>.Status status = 6;</code>
* @param value The status to set.
* @return This builder for chaining.
*/
public Builder setStatus(io.grasscutter.net.proto.coop.Status value) {
if (value == null) {
throw new NullPointerException();
}
status_ = value.getNumber();
onChanged();
return this;
}
/**
* <code>.Status status = 6;</code>
* @return This builder for chaining.
*/
public Builder clearStatus() {
status_ = 0;
onChanged();
return this;
}
private int totalProgress_ ;
/**
* <code>uint32 total_progress = 12;</code>
* @return The totalProgress.
*/
@java.lang.Override
public int getTotalProgress() {
return totalProgress_;
}
/**
* <code>uint32 total_progress = 12;</code>
* @param value The totalProgress to set.
* @return This builder for chaining.
*/
public Builder setTotalProgress(int value) {
totalProgress_ = value;
onChanged();
return this;
}
/**
* <code>uint32 total_progress = 12;</code>
* @return This builder for chaining.
*/
public Builder clearTotalProgress() {
totalProgress_ = 0;
onChanged();
return this;
}
private int curProgress_ ;
/**
* <code>uint32 cur_progress = 8;</code>
* @return The curProgress.
*/
@java.lang.Override
public int getCurProgress() {
return curProgress_;
}
/**
* <code>uint32 cur_progress = 8;</code>
* @param value The curProgress to set.
* @return This builder for chaining.
*/
public Builder setCurProgress(int value) {
curProgress_ = value;
onChanged();
return this;
}
/**
* <code>uint32 cur_progress = 8;</code>
* @return This builder for chaining.
*/
public Builder clearCurProgress() {
curProgress_ = 0;
onChanged();
return this;
}
private int id_ ;
/**
* <code>uint32 id = 13;</code>
* @return The id.
*/
@java.lang.Override
public int getId() {
return id_;
}
/**
* <code>uint32 id = 13;</code>
* @param value The id to set.
* @return This builder for chaining.
*/
public Builder setId(int value) {
id_ = value;
onChanged();
return this;
}
/**
* <code>uint32 id = 13;</code>
* @return This builder for chaining.
*/
public Builder clearId() {
id_ = 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:Achievement)
}
// @@protoc_insertion_point(class_scope:Achievement)
private static final io.grasscutter.net.proto.achievement.Achievement DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new io.grasscutter.net.proto.achievement.Achievement();
}
public static io.grasscutter.net.proto.achievement.Achievement getDefaultInstance() {
return DEFAULT_INSTANCE;
}
private static final com.google.protobuf.Parser<Achievement>
PARSER = new com.google.protobuf.AbstractParser<Achievement>() {
@java.lang.Override
public Achievement parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new Achievement(input, extensionRegistry);
}
};
public static com.google.protobuf.Parser<Achievement> parser() {
return PARSER;
}
@java.lang.Override
public com.google.protobuf.Parser<Achievement> getParserForType() {
return PARSER;
}
@java.lang.Override
public io.grasscutter.net.proto.achievement.Achievement getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}

View File

@ -0,0 +1,955 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: achievement.proto
package io.grasscutter.net.proto.achievement;
/**
* <pre>
* CmdId: 1007
* </pre>
*
* Protobuf type {@code AchievementAllDataNotify}
*/
public final class AchievementAllDataNotify extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:AchievementAllDataNotify)
AchievementAllDataNotifyOrBuilder {
private static final long serialVersionUID = 0L;
// Use AchievementAllDataNotify.newBuilder() to construct.
private AchievementAllDataNotify(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
super(builder);
}
private AchievementAllDataNotify() {
achievementList_ = java.util.Collections.emptyList();
rewardTakenGoalIdList_ = emptyIntList();
}
@java.lang.Override
@SuppressWarnings({"unused"})
protected java.lang.Object newInstance(
UnusedPrivateParameter unused) {
return new AchievementAllDataNotify();
}
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private AchievementAllDataNotify(
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 56: {
if (!((mutable_bitField0_ & 0x00000002) != 0)) {
rewardTakenGoalIdList_ = newIntList();
mutable_bitField0_ |= 0x00000002;
}
rewardTakenGoalIdList_.addInt(input.readUInt32());
break;
}
case 58: {
int length = input.readRawVarint32();
int limit = input.pushLimit(length);
if (!((mutable_bitField0_ & 0x00000002) != 0) && input.getBytesUntilLimit() > 0) {
rewardTakenGoalIdList_ = newIntList();
mutable_bitField0_ |= 0x00000002;
}
while (input.getBytesUntilLimit() > 0) {
rewardTakenGoalIdList_.addInt(input.readUInt32());
}
input.popLimit(limit);
break;
}
case 74: {
if (!((mutable_bitField0_ & 0x00000001) != 0)) {
achievementList_ = new java.util.ArrayList<io.grasscutter.net.proto.achievement.Achievement>();
mutable_bitField0_ |= 0x00000001;
}
achievementList_.add(
input.readMessage(io.grasscutter.net.proto.achievement.Achievement.parser(), extensionRegistry));
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 {
if (((mutable_bitField0_ & 0x00000002) != 0)) {
rewardTakenGoalIdList_.makeImmutable(); // C
}
if (((mutable_bitField0_ & 0x00000001) != 0)) {
achievementList_ = java.util.Collections.unmodifiableList(achievementList_);
}
this.unknownFields = unknownFields.build();
makeExtensionsImmutable();
}
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.achievement.AchievementOuterClass.internal_static_AchievementAllDataNotify_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.achievement.AchievementOuterClass.internal_static_AchievementAllDataNotify_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.achievement.AchievementAllDataNotify.class, io.grasscutter.net.proto.achievement.AchievementAllDataNotify.Builder.class);
}
public static final int ACHIEVEMENT_LIST_FIELD_NUMBER = 9;
private java.util.List<io.grasscutter.net.proto.achievement.Achievement> achievementList_;
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
@java.lang.Override
public java.util.List<io.grasscutter.net.proto.achievement.Achievement> getAchievementListList() {
return achievementList_;
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
@java.lang.Override
public java.util.List<? extends io.grasscutter.net.proto.achievement.AchievementOrBuilder>
getAchievementListOrBuilderList() {
return achievementList_;
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
@java.lang.Override
public int getAchievementListCount() {
return achievementList_.size();
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.achievement.Achievement getAchievementList(int index) {
return achievementList_.get(index);
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.achievement.AchievementOrBuilder getAchievementListOrBuilder(
int index) {
return achievementList_.get(index);
}
public static final int REWARD_TAKEN_GOAL_ID_LIST_FIELD_NUMBER = 7;
private com.google.protobuf.Internal.IntList rewardTakenGoalIdList_;
/**
* <code>repeated uint32 reward_taken_goal_id_list = 7;</code>
* @return A list containing the rewardTakenGoalIdList.
*/
@java.lang.Override
public java.util.List<java.lang.Integer>
getRewardTakenGoalIdListList() {
return rewardTakenGoalIdList_;
}
/**
* <code>repeated uint32 reward_taken_goal_id_list = 7;</code>
* @return The count of rewardTakenGoalIdList.
*/
public int getRewardTakenGoalIdListCount() {
return rewardTakenGoalIdList_.size();
}
/**
* <code>repeated uint32 reward_taken_goal_id_list = 7;</code>
* @param index The index of the element to return.
* @return The rewardTakenGoalIdList at the given index.
*/
public int getRewardTakenGoalIdList(int index) {
return rewardTakenGoalIdList_.getInt(index);
}
private int rewardTakenGoalIdListMemoizedSerializedSize = -1;
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 {
getSerializedSize();
if (getRewardTakenGoalIdListList().size() > 0) {
output.writeUInt32NoTag(58);
output.writeUInt32NoTag(rewardTakenGoalIdListMemoizedSerializedSize);
}
for (int i = 0; i < rewardTakenGoalIdList_.size(); i++) {
output.writeUInt32NoTag(rewardTakenGoalIdList_.getInt(i));
}
for (int i = 0; i < achievementList_.size(); i++) {
output.writeMessage(9, achievementList_.get(i));
}
unknownFields.writeTo(output);
}
@java.lang.Override
public int getSerializedSize() {
int size = memoizedSize;
if (size != -1) return size;
size = 0;
{
int dataSize = 0;
for (int i = 0; i < rewardTakenGoalIdList_.size(); i++) {
dataSize += com.google.protobuf.CodedOutputStream
.computeUInt32SizeNoTag(rewardTakenGoalIdList_.getInt(i));
}
size += dataSize;
if (!getRewardTakenGoalIdListList().isEmpty()) {
size += 1;
size += com.google.protobuf.CodedOutputStream
.computeInt32SizeNoTag(dataSize);
}
rewardTakenGoalIdListMemoizedSerializedSize = dataSize;
}
for (int i = 0; i < achievementList_.size(); i++) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(9, achievementList_.get(i));
}
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 io.grasscutter.net.proto.achievement.AchievementAllDataNotify)) {
return super.equals(obj);
}
io.grasscutter.net.proto.achievement.AchievementAllDataNotify other = (io.grasscutter.net.proto.achievement.AchievementAllDataNotify) obj;
if (!getAchievementListList()
.equals(other.getAchievementListList())) return false;
if (!getRewardTakenGoalIdListList()
.equals(other.getRewardTakenGoalIdListList())) 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 (getAchievementListCount() > 0) {
hash = (37 * hash) + ACHIEVEMENT_LIST_FIELD_NUMBER;
hash = (53 * hash) + getAchievementListList().hashCode();
}
if (getRewardTakenGoalIdListCount() > 0) {
hash = (37 * hash) + REWARD_TAKEN_GOAL_ID_LIST_FIELD_NUMBER;
hash = (53 * hash) + getRewardTakenGoalIdListList().hashCode();
}
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
}
public static io.grasscutter.net.proto.achievement.AchievementAllDataNotify parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.achievement.AchievementAllDataNotify parseFrom(
java.nio.ByteBuffer data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.achievement.AchievementAllDataNotify parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.achievement.AchievementAllDataNotify parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.achievement.AchievementAllDataNotify parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.achievement.AchievementAllDataNotify parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.achievement.AchievementAllDataNotify parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.achievement.AchievementAllDataNotify 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 io.grasscutter.net.proto.achievement.AchievementAllDataNotify parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.achievement.AchievementAllDataNotify 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 io.grasscutter.net.proto.achievement.AchievementAllDataNotify parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.achievement.AchievementAllDataNotify 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(io.grasscutter.net.proto.achievement.AchievementAllDataNotify 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;
}
/**
* <pre>
* CmdId: 1007
* </pre>
*
* Protobuf type {@code AchievementAllDataNotify}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:AchievementAllDataNotify)
io.grasscutter.net.proto.achievement.AchievementAllDataNotifyOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.achievement.AchievementOuterClass.internal_static_AchievementAllDataNotify_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.achievement.AchievementOuterClass.internal_static_AchievementAllDataNotify_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.achievement.AchievementAllDataNotify.class, io.grasscutter.net.proto.achievement.AchievementAllDataNotify.Builder.class);
}
// Construct using io.grasscutter.net.proto.achievement.AchievementAllDataNotify.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private Builder(
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessageV3
.alwaysUseFieldBuilders) {
getAchievementListFieldBuilder();
}
}
@java.lang.Override
public Builder clear() {
super.clear();
if (achievementListBuilder_ == null) {
achievementList_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
} else {
achievementListBuilder_.clear();
}
rewardTakenGoalIdList_ = emptyIntList();
bitField0_ = (bitField0_ & ~0x00000002);
return this;
}
@java.lang.Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return io.grasscutter.net.proto.achievement.AchievementOuterClass.internal_static_AchievementAllDataNotify_descriptor;
}
@java.lang.Override
public io.grasscutter.net.proto.achievement.AchievementAllDataNotify getDefaultInstanceForType() {
return io.grasscutter.net.proto.achievement.AchievementAllDataNotify.getDefaultInstance();
}
@java.lang.Override
public io.grasscutter.net.proto.achievement.AchievementAllDataNotify build() {
io.grasscutter.net.proto.achievement.AchievementAllDataNotify result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@java.lang.Override
public io.grasscutter.net.proto.achievement.AchievementAllDataNotify buildPartial() {
io.grasscutter.net.proto.achievement.AchievementAllDataNotify result = new io.grasscutter.net.proto.achievement.AchievementAllDataNotify(this);
int from_bitField0_ = bitField0_;
if (achievementListBuilder_ == null) {
if (((bitField0_ & 0x00000001) != 0)) {
achievementList_ = java.util.Collections.unmodifiableList(achievementList_);
bitField0_ = (bitField0_ & ~0x00000001);
}
result.achievementList_ = achievementList_;
} else {
result.achievementList_ = achievementListBuilder_.build();
}
if (((bitField0_ & 0x00000002) != 0)) {
rewardTakenGoalIdList_.makeImmutable();
bitField0_ = (bitField0_ & ~0x00000002);
}
result.rewardTakenGoalIdList_ = rewardTakenGoalIdList_;
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 io.grasscutter.net.proto.achievement.AchievementAllDataNotify) {
return mergeFrom((io.grasscutter.net.proto.achievement.AchievementAllDataNotify)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(io.grasscutter.net.proto.achievement.AchievementAllDataNotify other) {
if (other == io.grasscutter.net.proto.achievement.AchievementAllDataNotify.getDefaultInstance()) return this;
if (achievementListBuilder_ == null) {
if (!other.achievementList_.isEmpty()) {
if (achievementList_.isEmpty()) {
achievementList_ = other.achievementList_;
bitField0_ = (bitField0_ & ~0x00000001);
} else {
ensureAchievementListIsMutable();
achievementList_.addAll(other.achievementList_);
}
onChanged();
}
} else {
if (!other.achievementList_.isEmpty()) {
if (achievementListBuilder_.isEmpty()) {
achievementListBuilder_.dispose();
achievementListBuilder_ = null;
achievementList_ = other.achievementList_;
bitField0_ = (bitField0_ & ~0x00000001);
achievementListBuilder_ =
com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
getAchievementListFieldBuilder() : null;
} else {
achievementListBuilder_.addAllMessages(other.achievementList_);
}
}
}
if (!other.rewardTakenGoalIdList_.isEmpty()) {
if (rewardTakenGoalIdList_.isEmpty()) {
rewardTakenGoalIdList_ = other.rewardTakenGoalIdList_;
bitField0_ = (bitField0_ & ~0x00000002);
} else {
ensureRewardTakenGoalIdListIsMutable();
rewardTakenGoalIdList_.addAll(other.rewardTakenGoalIdList_);
}
onChanged();
}
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 {
io.grasscutter.net.proto.achievement.AchievementAllDataNotify parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (io.grasscutter.net.proto.achievement.AchievementAllDataNotify) e.getUnfinishedMessage();
throw e.unwrapIOException();
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private int bitField0_;
private java.util.List<io.grasscutter.net.proto.achievement.Achievement> achievementList_ =
java.util.Collections.emptyList();
private void ensureAchievementListIsMutable() {
if (!((bitField0_ & 0x00000001) != 0)) {
achievementList_ = new java.util.ArrayList<io.grasscutter.net.proto.achievement.Achievement>(achievementList_);
bitField0_ |= 0x00000001;
}
}
private com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.achievement.Achievement, io.grasscutter.net.proto.achievement.Achievement.Builder, io.grasscutter.net.proto.achievement.AchievementOrBuilder> achievementListBuilder_;
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
public java.util.List<io.grasscutter.net.proto.achievement.Achievement> getAchievementListList() {
if (achievementListBuilder_ == null) {
return java.util.Collections.unmodifiableList(achievementList_);
} else {
return achievementListBuilder_.getMessageList();
}
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
public int getAchievementListCount() {
if (achievementListBuilder_ == null) {
return achievementList_.size();
} else {
return achievementListBuilder_.getCount();
}
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
public io.grasscutter.net.proto.achievement.Achievement getAchievementList(int index) {
if (achievementListBuilder_ == null) {
return achievementList_.get(index);
} else {
return achievementListBuilder_.getMessage(index);
}
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
public Builder setAchievementList(
int index, io.grasscutter.net.proto.achievement.Achievement value) {
if (achievementListBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureAchievementListIsMutable();
achievementList_.set(index, value);
onChanged();
} else {
achievementListBuilder_.setMessage(index, value);
}
return this;
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
public Builder setAchievementList(
int index, io.grasscutter.net.proto.achievement.Achievement.Builder builderForValue) {
if (achievementListBuilder_ == null) {
ensureAchievementListIsMutable();
achievementList_.set(index, builderForValue.build());
onChanged();
} else {
achievementListBuilder_.setMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
public Builder addAchievementList(io.grasscutter.net.proto.achievement.Achievement value) {
if (achievementListBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureAchievementListIsMutable();
achievementList_.add(value);
onChanged();
} else {
achievementListBuilder_.addMessage(value);
}
return this;
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
public Builder addAchievementList(
int index, io.grasscutter.net.proto.achievement.Achievement value) {
if (achievementListBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureAchievementListIsMutable();
achievementList_.add(index, value);
onChanged();
} else {
achievementListBuilder_.addMessage(index, value);
}
return this;
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
public Builder addAchievementList(
io.grasscutter.net.proto.achievement.Achievement.Builder builderForValue) {
if (achievementListBuilder_ == null) {
ensureAchievementListIsMutable();
achievementList_.add(builderForValue.build());
onChanged();
} else {
achievementListBuilder_.addMessage(builderForValue.build());
}
return this;
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
public Builder addAchievementList(
int index, io.grasscutter.net.proto.achievement.Achievement.Builder builderForValue) {
if (achievementListBuilder_ == null) {
ensureAchievementListIsMutable();
achievementList_.add(index, builderForValue.build());
onChanged();
} else {
achievementListBuilder_.addMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
public Builder addAllAchievementList(
java.lang.Iterable<? extends io.grasscutter.net.proto.achievement.Achievement> values) {
if (achievementListBuilder_ == null) {
ensureAchievementListIsMutable();
com.google.protobuf.AbstractMessageLite.Builder.addAll(
values, achievementList_);
onChanged();
} else {
achievementListBuilder_.addAllMessages(values);
}
return this;
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
public Builder clearAchievementList() {
if (achievementListBuilder_ == null) {
achievementList_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
onChanged();
} else {
achievementListBuilder_.clear();
}
return this;
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
public Builder removeAchievementList(int index) {
if (achievementListBuilder_ == null) {
ensureAchievementListIsMutable();
achievementList_.remove(index);
onChanged();
} else {
achievementListBuilder_.remove(index);
}
return this;
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
public io.grasscutter.net.proto.achievement.Achievement.Builder getAchievementListBuilder(
int index) {
return getAchievementListFieldBuilder().getBuilder(index);
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
public io.grasscutter.net.proto.achievement.AchievementOrBuilder getAchievementListOrBuilder(
int index) {
if (achievementListBuilder_ == null) {
return achievementList_.get(index); } else {
return achievementListBuilder_.getMessageOrBuilder(index);
}
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
public java.util.List<? extends io.grasscutter.net.proto.achievement.AchievementOrBuilder>
getAchievementListOrBuilderList() {
if (achievementListBuilder_ != null) {
return achievementListBuilder_.getMessageOrBuilderList();
} else {
return java.util.Collections.unmodifiableList(achievementList_);
}
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
public io.grasscutter.net.proto.achievement.Achievement.Builder addAchievementListBuilder() {
return getAchievementListFieldBuilder().addBuilder(
io.grasscutter.net.proto.achievement.Achievement.getDefaultInstance());
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
public io.grasscutter.net.proto.achievement.Achievement.Builder addAchievementListBuilder(
int index) {
return getAchievementListFieldBuilder().addBuilder(
index, io.grasscutter.net.proto.achievement.Achievement.getDefaultInstance());
}
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
public java.util.List<io.grasscutter.net.proto.achievement.Achievement.Builder>
getAchievementListBuilderList() {
return getAchievementListFieldBuilder().getBuilderList();
}
private com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.achievement.Achievement, io.grasscutter.net.proto.achievement.Achievement.Builder, io.grasscutter.net.proto.achievement.AchievementOrBuilder>
getAchievementListFieldBuilder() {
if (achievementListBuilder_ == null) {
achievementListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.achievement.Achievement, io.grasscutter.net.proto.achievement.Achievement.Builder, io.grasscutter.net.proto.achievement.AchievementOrBuilder>(
achievementList_,
((bitField0_ & 0x00000001) != 0),
getParentForChildren(),
isClean());
achievementList_ = null;
}
return achievementListBuilder_;
}
private com.google.protobuf.Internal.IntList rewardTakenGoalIdList_ = emptyIntList();
private void ensureRewardTakenGoalIdListIsMutable() {
if (!((bitField0_ & 0x00000002) != 0)) {
rewardTakenGoalIdList_ = mutableCopy(rewardTakenGoalIdList_);
bitField0_ |= 0x00000002;
}
}
/**
* <code>repeated uint32 reward_taken_goal_id_list = 7;</code>
* @return A list containing the rewardTakenGoalIdList.
*/
public java.util.List<java.lang.Integer>
getRewardTakenGoalIdListList() {
return ((bitField0_ & 0x00000002) != 0) ?
java.util.Collections.unmodifiableList(rewardTakenGoalIdList_) : rewardTakenGoalIdList_;
}
/**
* <code>repeated uint32 reward_taken_goal_id_list = 7;</code>
* @return The count of rewardTakenGoalIdList.
*/
public int getRewardTakenGoalIdListCount() {
return rewardTakenGoalIdList_.size();
}
/**
* <code>repeated uint32 reward_taken_goal_id_list = 7;</code>
* @param index The index of the element to return.
* @return The rewardTakenGoalIdList at the given index.
*/
public int getRewardTakenGoalIdList(int index) {
return rewardTakenGoalIdList_.getInt(index);
}
/**
* <code>repeated uint32 reward_taken_goal_id_list = 7;</code>
* @param index The index to set the value at.
* @param value The rewardTakenGoalIdList to set.
* @return This builder for chaining.
*/
public Builder setRewardTakenGoalIdList(
int index, int value) {
ensureRewardTakenGoalIdListIsMutable();
rewardTakenGoalIdList_.setInt(index, value);
onChanged();
return this;
}
/**
* <code>repeated uint32 reward_taken_goal_id_list = 7;</code>
* @param value The rewardTakenGoalIdList to add.
* @return This builder for chaining.
*/
public Builder addRewardTakenGoalIdList(int value) {
ensureRewardTakenGoalIdListIsMutable();
rewardTakenGoalIdList_.addInt(value);
onChanged();
return this;
}
/**
* <code>repeated uint32 reward_taken_goal_id_list = 7;</code>
* @param values The rewardTakenGoalIdList to add.
* @return This builder for chaining.
*/
public Builder addAllRewardTakenGoalIdList(
java.lang.Iterable<? extends java.lang.Integer> values) {
ensureRewardTakenGoalIdListIsMutable();
com.google.protobuf.AbstractMessageLite.Builder.addAll(
values, rewardTakenGoalIdList_);
onChanged();
return this;
}
/**
* <code>repeated uint32 reward_taken_goal_id_list = 7;</code>
* @return This builder for chaining.
*/
public Builder clearRewardTakenGoalIdList() {
rewardTakenGoalIdList_ = emptyIntList();
bitField0_ = (bitField0_ & ~0x00000002);
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:AchievementAllDataNotify)
}
// @@protoc_insertion_point(class_scope:AchievementAllDataNotify)
private static final io.grasscutter.net.proto.achievement.AchievementAllDataNotify DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new io.grasscutter.net.proto.achievement.AchievementAllDataNotify();
}
public static io.grasscutter.net.proto.achievement.AchievementAllDataNotify getDefaultInstance() {
return DEFAULT_INSTANCE;
}
private static final com.google.protobuf.Parser<AchievementAllDataNotify>
PARSER = new com.google.protobuf.AbstractParser<AchievementAllDataNotify>() {
@java.lang.Override
public AchievementAllDataNotify parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new AchievementAllDataNotify(input, extensionRegistry);
}
};
public static com.google.protobuf.Parser<AchievementAllDataNotify> parser() {
return PARSER;
}
@java.lang.Override
public com.google.protobuf.Parser<AchievementAllDataNotify> getParserForType() {
return PARSER;
}
@java.lang.Override
public io.grasscutter.net.proto.achievement.AchievementAllDataNotify getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}

View File

@ -0,0 +1,50 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: achievement.proto
package io.grasscutter.net.proto.achievement;
public interface AchievementAllDataNotifyOrBuilder extends
// @@protoc_insertion_point(interface_extends:AchievementAllDataNotify)
com.google.protobuf.MessageOrBuilder {
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
java.util.List<io.grasscutter.net.proto.achievement.Achievement>
getAchievementListList();
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
io.grasscutter.net.proto.achievement.Achievement getAchievementList(int index);
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
int getAchievementListCount();
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
java.util.List<? extends io.grasscutter.net.proto.achievement.AchievementOrBuilder>
getAchievementListOrBuilderList();
/**
* <code>repeated .Achievement achievement_list = 9;</code>
*/
io.grasscutter.net.proto.achievement.AchievementOrBuilder getAchievementListOrBuilder(
int index);
/**
* <code>repeated uint32 reward_taken_goal_id_list = 7;</code>
* @return A list containing the rewardTakenGoalIdList.
*/
java.util.List<java.lang.Integer> getRewardTakenGoalIdListList();
/**
* <code>repeated uint32 reward_taken_goal_id_list = 7;</code>
* @return The count of rewardTakenGoalIdList.
*/
int getRewardTakenGoalIdListCount();
/**
* <code>repeated uint32 reward_taken_goal_id_list = 7;</code>
* @param index The index of the element to return.
* @return The rewardTakenGoalIdList at the given index.
*/
int getRewardTakenGoalIdList(int index);
}

View File

@ -0,0 +1,44 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: achievement.proto
package io.grasscutter.net.proto.achievement;
public interface AchievementOrBuilder extends
// @@protoc_insertion_point(interface_extends:Achievement)
com.google.protobuf.MessageOrBuilder {
/**
* <code>uint32 finish_timestamp = 7;</code>
* @return The finishTimestamp.
*/
int getFinishTimestamp();
/**
* <code>.Status status = 6;</code>
* @return The enum numeric value on the wire for status.
*/
int getStatusValue();
/**
* <code>.Status status = 6;</code>
* @return The status.
*/
io.grasscutter.net.proto.coop.Status getStatus();
/**
* <code>uint32 total_progress = 12;</code>
* @return The totalProgress.
*/
int getTotalProgress();
/**
* <code>uint32 cur_progress = 8;</code>
* @return The curProgress.
*/
int getCurProgress();
/**
* <code>uint32 id = 13;</code>
* @return The id.
*/
int getId();
}

View File

@ -0,0 +1,79 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: achievement.proto
package io.grasscutter.net.proto.achievement;
public final class AchievementOuterClass {
private AchievementOuterClass() {}
public static void registerAllExtensions(
com.google.protobuf.ExtensionRegistryLite registry) {
}
public static void registerAllExtensions(
com.google.protobuf.ExtensionRegistry registry) {
registerAllExtensions(
(com.google.protobuf.ExtensionRegistryLite) registry);
}
static final com.google.protobuf.Descriptors.Descriptor
internal_static_AchievementAllDataNotify_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_AchievementAllDataNotify_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_AchievementUpdateNotify_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_AchievementUpdateNotify_fieldAccessorTable;
static final com.google.protobuf.Descriptors.Descriptor
internal_static_Achievement_descriptor;
static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_Achievement_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\021achievement.proto\032\ncoop.proto\"e\n\030Achie" +
"vementAllDataNotify\022&\n\020achievement_list\030" +
"\t \003(\0132\014.Achievement\022!\n\031reward_taken_goal" +
"_id_list\030\007 \003(\r\"A\n\027AchievementUpdateNotif" +
"y\022&\n\020achievement_list\030\001 \003(\0132\014.Achievemen" +
"t\"z\n\013Achievement\022\030\n\020finish_timestamp\030\007 \001" +
"(\r\022\027\n\006status\030\006 \001(\0162\007.Status\022\026\n\016total_pro" +
"gress\030\014 \001(\r\022\024\n\014cur_progress\030\010 \001(\r\022\n\n\002id\030" +
"\r \001(\rB(\n$io.grasscutter.net.proto.achiev" +
"ementP\001b\006proto3"
};
descriptor = com.google.protobuf.Descriptors.FileDescriptor
.internalBuildGeneratedFileFrom(descriptorData,
new com.google.protobuf.Descriptors.FileDescriptor[] {
io.grasscutter.net.proto.coop.Coop.getDescriptor(),
});
internal_static_AchievementAllDataNotify_descriptor =
getDescriptor().getMessageTypes().get(0);
internal_static_AchievementAllDataNotify_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_AchievementAllDataNotify_descriptor,
new java.lang.String[] { "AchievementList", "RewardTakenGoalIdList", });
internal_static_AchievementUpdateNotify_descriptor =
getDescriptor().getMessageTypes().get(1);
internal_static_AchievementUpdateNotify_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_AchievementUpdateNotify_descriptor,
new java.lang.String[] { "AchievementList", });
internal_static_Achievement_descriptor =
getDescriptor().getMessageTypes().get(2);
internal_static_Achievement_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_Achievement_descriptor,
new java.lang.String[] { "FinishTimestamp", "Status", "TotalProgress", "CurProgress", "Id", });
io.grasscutter.net.proto.coop.Coop.getDescriptor();
}
// @@protoc_insertion_point(outer_class_scope)
}

View File

@ -0,0 +1,778 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: achievement.proto
package io.grasscutter.net.proto.achievement;
/**
* <pre>
* CmdId: 25279
* </pre>
*
* Protobuf type {@code AchievementUpdateNotify}
*/
public final class AchievementUpdateNotify extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:AchievementUpdateNotify)
AchievementUpdateNotifyOrBuilder {
private static final long serialVersionUID = 0L;
// Use AchievementUpdateNotify.newBuilder() to construct.
private AchievementUpdateNotify(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
super(builder);
}
private AchievementUpdateNotify() {
achievementList_ = java.util.Collections.emptyList();
}
@java.lang.Override
@SuppressWarnings({"unused"})
protected java.lang.Object newInstance(
UnusedPrivateParameter unused) {
return new AchievementUpdateNotify();
}
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private AchievementUpdateNotify(
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)) {
achievementList_ = new java.util.ArrayList<io.grasscutter.net.proto.achievement.Achievement>();
mutable_bitField0_ |= 0x00000001;
}
achievementList_.add(
input.readMessage(io.grasscutter.net.proto.achievement.Achievement.parser(), extensionRegistry));
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 {
if (((mutable_bitField0_ & 0x00000001) != 0)) {
achievementList_ = java.util.Collections.unmodifiableList(achievementList_);
}
this.unknownFields = unknownFields.build();
makeExtensionsImmutable();
}
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.achievement.AchievementOuterClass.internal_static_AchievementUpdateNotify_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.achievement.AchievementOuterClass.internal_static_AchievementUpdateNotify_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.achievement.AchievementUpdateNotify.class, io.grasscutter.net.proto.achievement.AchievementUpdateNotify.Builder.class);
}
public static final int ACHIEVEMENT_LIST_FIELD_NUMBER = 1;
private java.util.List<io.grasscutter.net.proto.achievement.Achievement> achievementList_;
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
@java.lang.Override
public java.util.List<io.grasscutter.net.proto.achievement.Achievement> getAchievementListList() {
return achievementList_;
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
@java.lang.Override
public java.util.List<? extends io.grasscutter.net.proto.achievement.AchievementOrBuilder>
getAchievementListOrBuilderList() {
return achievementList_;
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
@java.lang.Override
public int getAchievementListCount() {
return achievementList_.size();
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.achievement.Achievement getAchievementList(int index) {
return achievementList_.get(index);
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.achievement.AchievementOrBuilder getAchievementListOrBuilder(
int index) {
return achievementList_.get(index);
}
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 {
for (int i = 0; i < achievementList_.size(); i++) {
output.writeMessage(1, achievementList_.get(i));
}
unknownFields.writeTo(output);
}
@java.lang.Override
public int getSerializedSize() {
int size = memoizedSize;
if (size != -1) return size;
size = 0;
for (int i = 0; i < achievementList_.size(); i++) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(1, achievementList_.get(i));
}
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 io.grasscutter.net.proto.achievement.AchievementUpdateNotify)) {
return super.equals(obj);
}
io.grasscutter.net.proto.achievement.AchievementUpdateNotify other = (io.grasscutter.net.proto.achievement.AchievementUpdateNotify) obj;
if (!getAchievementListList()
.equals(other.getAchievementListList())) 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 (getAchievementListCount() > 0) {
hash = (37 * hash) + ACHIEVEMENT_LIST_FIELD_NUMBER;
hash = (53 * hash) + getAchievementListList().hashCode();
}
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
}
public static io.grasscutter.net.proto.achievement.AchievementUpdateNotify parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.achievement.AchievementUpdateNotify parseFrom(
java.nio.ByteBuffer data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.achievement.AchievementUpdateNotify parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.achievement.AchievementUpdateNotify parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.achievement.AchievementUpdateNotify parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.achievement.AchievementUpdateNotify parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.achievement.AchievementUpdateNotify parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.achievement.AchievementUpdateNotify 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 io.grasscutter.net.proto.achievement.AchievementUpdateNotify parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.achievement.AchievementUpdateNotify 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 io.grasscutter.net.proto.achievement.AchievementUpdateNotify parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.achievement.AchievementUpdateNotify 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(io.grasscutter.net.proto.achievement.AchievementUpdateNotify 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;
}
/**
* <pre>
* CmdId: 25279
* </pre>
*
* Protobuf type {@code AchievementUpdateNotify}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:AchievementUpdateNotify)
io.grasscutter.net.proto.achievement.AchievementUpdateNotifyOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.achievement.AchievementOuterClass.internal_static_AchievementUpdateNotify_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.achievement.AchievementOuterClass.internal_static_AchievementUpdateNotify_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.achievement.AchievementUpdateNotify.class, io.grasscutter.net.proto.achievement.AchievementUpdateNotify.Builder.class);
}
// Construct using io.grasscutter.net.proto.achievement.AchievementUpdateNotify.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private Builder(
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessageV3
.alwaysUseFieldBuilders) {
getAchievementListFieldBuilder();
}
}
@java.lang.Override
public Builder clear() {
super.clear();
if (achievementListBuilder_ == null) {
achievementList_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
} else {
achievementListBuilder_.clear();
}
return this;
}
@java.lang.Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return io.grasscutter.net.proto.achievement.AchievementOuterClass.internal_static_AchievementUpdateNotify_descriptor;
}
@java.lang.Override
public io.grasscutter.net.proto.achievement.AchievementUpdateNotify getDefaultInstanceForType() {
return io.grasscutter.net.proto.achievement.AchievementUpdateNotify.getDefaultInstance();
}
@java.lang.Override
public io.grasscutter.net.proto.achievement.AchievementUpdateNotify build() {
io.grasscutter.net.proto.achievement.AchievementUpdateNotify result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@java.lang.Override
public io.grasscutter.net.proto.achievement.AchievementUpdateNotify buildPartial() {
io.grasscutter.net.proto.achievement.AchievementUpdateNotify result = new io.grasscutter.net.proto.achievement.AchievementUpdateNotify(this);
int from_bitField0_ = bitField0_;
if (achievementListBuilder_ == null) {
if (((bitField0_ & 0x00000001) != 0)) {
achievementList_ = java.util.Collections.unmodifiableList(achievementList_);
bitField0_ = (bitField0_ & ~0x00000001);
}
result.achievementList_ = achievementList_;
} else {
result.achievementList_ = achievementListBuilder_.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 io.grasscutter.net.proto.achievement.AchievementUpdateNotify) {
return mergeFrom((io.grasscutter.net.proto.achievement.AchievementUpdateNotify)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(io.grasscutter.net.proto.achievement.AchievementUpdateNotify other) {
if (other == io.grasscutter.net.proto.achievement.AchievementUpdateNotify.getDefaultInstance()) return this;
if (achievementListBuilder_ == null) {
if (!other.achievementList_.isEmpty()) {
if (achievementList_.isEmpty()) {
achievementList_ = other.achievementList_;
bitField0_ = (bitField0_ & ~0x00000001);
} else {
ensureAchievementListIsMutable();
achievementList_.addAll(other.achievementList_);
}
onChanged();
}
} else {
if (!other.achievementList_.isEmpty()) {
if (achievementListBuilder_.isEmpty()) {
achievementListBuilder_.dispose();
achievementListBuilder_ = null;
achievementList_ = other.achievementList_;
bitField0_ = (bitField0_ & ~0x00000001);
achievementListBuilder_ =
com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
getAchievementListFieldBuilder() : null;
} else {
achievementListBuilder_.addAllMessages(other.achievementList_);
}
}
}
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 {
io.grasscutter.net.proto.achievement.AchievementUpdateNotify parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (io.grasscutter.net.proto.achievement.AchievementUpdateNotify) e.getUnfinishedMessage();
throw e.unwrapIOException();
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private int bitField0_;
private java.util.List<io.grasscutter.net.proto.achievement.Achievement> achievementList_ =
java.util.Collections.emptyList();
private void ensureAchievementListIsMutable() {
if (!((bitField0_ & 0x00000001) != 0)) {
achievementList_ = new java.util.ArrayList<io.grasscutter.net.proto.achievement.Achievement>(achievementList_);
bitField0_ |= 0x00000001;
}
}
private com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.achievement.Achievement, io.grasscutter.net.proto.achievement.Achievement.Builder, io.grasscutter.net.proto.achievement.AchievementOrBuilder> achievementListBuilder_;
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
public java.util.List<io.grasscutter.net.proto.achievement.Achievement> getAchievementListList() {
if (achievementListBuilder_ == null) {
return java.util.Collections.unmodifiableList(achievementList_);
} else {
return achievementListBuilder_.getMessageList();
}
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
public int getAchievementListCount() {
if (achievementListBuilder_ == null) {
return achievementList_.size();
} else {
return achievementListBuilder_.getCount();
}
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
public io.grasscutter.net.proto.achievement.Achievement getAchievementList(int index) {
if (achievementListBuilder_ == null) {
return achievementList_.get(index);
} else {
return achievementListBuilder_.getMessage(index);
}
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
public Builder setAchievementList(
int index, io.grasscutter.net.proto.achievement.Achievement value) {
if (achievementListBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureAchievementListIsMutable();
achievementList_.set(index, value);
onChanged();
} else {
achievementListBuilder_.setMessage(index, value);
}
return this;
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
public Builder setAchievementList(
int index, io.grasscutter.net.proto.achievement.Achievement.Builder builderForValue) {
if (achievementListBuilder_ == null) {
ensureAchievementListIsMutable();
achievementList_.set(index, builderForValue.build());
onChanged();
} else {
achievementListBuilder_.setMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
public Builder addAchievementList(io.grasscutter.net.proto.achievement.Achievement value) {
if (achievementListBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureAchievementListIsMutable();
achievementList_.add(value);
onChanged();
} else {
achievementListBuilder_.addMessage(value);
}
return this;
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
public Builder addAchievementList(
int index, io.grasscutter.net.proto.achievement.Achievement value) {
if (achievementListBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureAchievementListIsMutable();
achievementList_.add(index, value);
onChanged();
} else {
achievementListBuilder_.addMessage(index, value);
}
return this;
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
public Builder addAchievementList(
io.grasscutter.net.proto.achievement.Achievement.Builder builderForValue) {
if (achievementListBuilder_ == null) {
ensureAchievementListIsMutable();
achievementList_.add(builderForValue.build());
onChanged();
} else {
achievementListBuilder_.addMessage(builderForValue.build());
}
return this;
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
public Builder addAchievementList(
int index, io.grasscutter.net.proto.achievement.Achievement.Builder builderForValue) {
if (achievementListBuilder_ == null) {
ensureAchievementListIsMutable();
achievementList_.add(index, builderForValue.build());
onChanged();
} else {
achievementListBuilder_.addMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
public Builder addAllAchievementList(
java.lang.Iterable<? extends io.grasscutter.net.proto.achievement.Achievement> values) {
if (achievementListBuilder_ == null) {
ensureAchievementListIsMutable();
com.google.protobuf.AbstractMessageLite.Builder.addAll(
values, achievementList_);
onChanged();
} else {
achievementListBuilder_.addAllMessages(values);
}
return this;
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
public Builder clearAchievementList() {
if (achievementListBuilder_ == null) {
achievementList_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
onChanged();
} else {
achievementListBuilder_.clear();
}
return this;
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
public Builder removeAchievementList(int index) {
if (achievementListBuilder_ == null) {
ensureAchievementListIsMutable();
achievementList_.remove(index);
onChanged();
} else {
achievementListBuilder_.remove(index);
}
return this;
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
public io.grasscutter.net.proto.achievement.Achievement.Builder getAchievementListBuilder(
int index) {
return getAchievementListFieldBuilder().getBuilder(index);
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
public io.grasscutter.net.proto.achievement.AchievementOrBuilder getAchievementListOrBuilder(
int index) {
if (achievementListBuilder_ == null) {
return achievementList_.get(index); } else {
return achievementListBuilder_.getMessageOrBuilder(index);
}
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
public java.util.List<? extends io.grasscutter.net.proto.achievement.AchievementOrBuilder>
getAchievementListOrBuilderList() {
if (achievementListBuilder_ != null) {
return achievementListBuilder_.getMessageOrBuilderList();
} else {
return java.util.Collections.unmodifiableList(achievementList_);
}
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
public io.grasscutter.net.proto.achievement.Achievement.Builder addAchievementListBuilder() {
return getAchievementListFieldBuilder().addBuilder(
io.grasscutter.net.proto.achievement.Achievement.getDefaultInstance());
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
public io.grasscutter.net.proto.achievement.Achievement.Builder addAchievementListBuilder(
int index) {
return getAchievementListFieldBuilder().addBuilder(
index, io.grasscutter.net.proto.achievement.Achievement.getDefaultInstance());
}
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
public java.util.List<io.grasscutter.net.proto.achievement.Achievement.Builder>
getAchievementListBuilderList() {
return getAchievementListFieldBuilder().getBuilderList();
}
private com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.achievement.Achievement, io.grasscutter.net.proto.achievement.Achievement.Builder, io.grasscutter.net.proto.achievement.AchievementOrBuilder>
getAchievementListFieldBuilder() {
if (achievementListBuilder_ == null) {
achievementListBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.achievement.Achievement, io.grasscutter.net.proto.achievement.Achievement.Builder, io.grasscutter.net.proto.achievement.AchievementOrBuilder>(
achievementList_,
((bitField0_ & 0x00000001) != 0),
getParentForChildren(),
isClean());
achievementList_ = null;
}
return achievementListBuilder_;
}
@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:AchievementUpdateNotify)
}
// @@protoc_insertion_point(class_scope:AchievementUpdateNotify)
private static final io.grasscutter.net.proto.achievement.AchievementUpdateNotify DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new io.grasscutter.net.proto.achievement.AchievementUpdateNotify();
}
public static io.grasscutter.net.proto.achievement.AchievementUpdateNotify getDefaultInstance() {
return DEFAULT_INSTANCE;
}
private static final com.google.protobuf.Parser<AchievementUpdateNotify>
PARSER = new com.google.protobuf.AbstractParser<AchievementUpdateNotify>() {
@java.lang.Override
public AchievementUpdateNotify parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new AchievementUpdateNotify(input, extensionRegistry);
}
};
public static com.google.protobuf.Parser<AchievementUpdateNotify> parser() {
return PARSER;
}
@java.lang.Override
public com.google.protobuf.Parser<AchievementUpdateNotify> getParserForType() {
return PARSER;
}
@java.lang.Override
public io.grasscutter.net.proto.achievement.AchievementUpdateNotify getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}

View File

@ -0,0 +1,33 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: achievement.proto
package io.grasscutter.net.proto.achievement;
public interface AchievementUpdateNotifyOrBuilder extends
// @@protoc_insertion_point(interface_extends:AchievementUpdateNotify)
com.google.protobuf.MessageOrBuilder {
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
java.util.List<io.grasscutter.net.proto.achievement.Achievement>
getAchievementListList();
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
io.grasscutter.net.proto.achievement.Achievement getAchievementList(int index);
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
int getAchievementListCount();
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
java.util.List<? extends io.grasscutter.net.proto.achievement.AchievementOrBuilder>
getAchievementListOrBuilderList();
/**
* <code>repeated .Achievement achievement_list = 1;</code>
*/
io.grasscutter.net.proto.achievement.AchievementOrBuilder getAchievementListOrBuilder(
int index);
}

View File

@ -0,0 +1,899 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: activity.proto
package io.grasscutter.net.proto.activity;
/**
* Protobuf type {@code ABGKEDBGBLN}
*/
public final class ABGKEDBGBLN extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:ABGKEDBGBLN)
ABGKEDBGBLNOrBuilder {
private static final long serialVersionUID = 0L;
// Use ABGKEDBGBLN.newBuilder() to construct.
private ABGKEDBGBLN(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
super(builder);
}
private ABGKEDBGBLN() {
jLNAKOLCDGN_ = java.util.Collections.emptyList();
}
@java.lang.Override
@SuppressWarnings({"unused"})
protected java.lang.Object newInstance(
UnusedPrivateParameter unused) {
return new ABGKEDBGBLN();
}
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private ABGKEDBGBLN(
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 8: {
lBEINAHAHKA_ = input.readUInt32();
break;
}
case 24: {
isOpen_ = input.readBool();
break;
}
case 90: {
if (!((mutable_bitField0_ & 0x00000001) != 0)) {
jLNAKOLCDGN_ = new java.util.ArrayList<io.grasscutter.net.proto.activity.GFNEAFEFCCL>();
mutable_bitField0_ |= 0x00000001;
}
jLNAKOLCDGN_.add(
input.readMessage(io.grasscutter.net.proto.activity.GFNEAFEFCCL.parser(), extensionRegistry));
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 {
if (((mutable_bitField0_ & 0x00000001) != 0)) {
jLNAKOLCDGN_ = java.util.Collections.unmodifiableList(jLNAKOLCDGN_);
}
this.unknownFields = unknownFields.build();
makeExtensionsImmutable();
}
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.activity.Activity.internal_static_ABGKEDBGBLN_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.activity.Activity.internal_static_ABGKEDBGBLN_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.activity.ABGKEDBGBLN.class, io.grasscutter.net.proto.activity.ABGKEDBGBLN.Builder.class);
}
public static final int JLNAKOLCDGN_FIELD_NUMBER = 11;
private java.util.List<io.grasscutter.net.proto.activity.GFNEAFEFCCL> jLNAKOLCDGN_;
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
@java.lang.Override
public java.util.List<io.grasscutter.net.proto.activity.GFNEAFEFCCL> getJLNAKOLCDGNList() {
return jLNAKOLCDGN_;
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
@java.lang.Override
public java.util.List<? extends io.grasscutter.net.proto.activity.GFNEAFEFCCLOrBuilder>
getJLNAKOLCDGNOrBuilderList() {
return jLNAKOLCDGN_;
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
@java.lang.Override
public int getJLNAKOLCDGNCount() {
return jLNAKOLCDGN_.size();
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.activity.GFNEAFEFCCL getJLNAKOLCDGN(int index) {
return jLNAKOLCDGN_.get(index);
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.activity.GFNEAFEFCCLOrBuilder getJLNAKOLCDGNOrBuilder(
int index) {
return jLNAKOLCDGN_.get(index);
}
public static final int IS_OPEN_FIELD_NUMBER = 3;
private boolean isOpen_;
/**
* <code>bool is_open = 3;</code>
* @return The isOpen.
*/
@java.lang.Override
public boolean getIsOpen() {
return isOpen_;
}
public static final int LBEINAHAHKA_FIELD_NUMBER = 1;
private int lBEINAHAHKA_;
/**
* <code>uint32 LBEINAHAHKA = 1;</code>
* @return The lBEINAHAHKA.
*/
@java.lang.Override
public int getLBEINAHAHKA() {
return lBEINAHAHKA_;
}
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 (lBEINAHAHKA_ != 0) {
output.writeUInt32(1, lBEINAHAHKA_);
}
if (isOpen_ != false) {
output.writeBool(3, isOpen_);
}
for (int i = 0; i < jLNAKOLCDGN_.size(); i++) {
output.writeMessage(11, jLNAKOLCDGN_.get(i));
}
unknownFields.writeTo(output);
}
@java.lang.Override
public int getSerializedSize() {
int size = memoizedSize;
if (size != -1) return size;
size = 0;
if (lBEINAHAHKA_ != 0) {
size += com.google.protobuf.CodedOutputStream
.computeUInt32Size(1, lBEINAHAHKA_);
}
if (isOpen_ != false) {
size += com.google.protobuf.CodedOutputStream
.computeBoolSize(3, isOpen_);
}
for (int i = 0; i < jLNAKOLCDGN_.size(); i++) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(11, jLNAKOLCDGN_.get(i));
}
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 io.grasscutter.net.proto.activity.ABGKEDBGBLN)) {
return super.equals(obj);
}
io.grasscutter.net.proto.activity.ABGKEDBGBLN other = (io.grasscutter.net.proto.activity.ABGKEDBGBLN) obj;
if (!getJLNAKOLCDGNList()
.equals(other.getJLNAKOLCDGNList())) return false;
if (getIsOpen()
!= other.getIsOpen()) return false;
if (getLBEINAHAHKA()
!= other.getLBEINAHAHKA()) 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 (getJLNAKOLCDGNCount() > 0) {
hash = (37 * hash) + JLNAKOLCDGN_FIELD_NUMBER;
hash = (53 * hash) + getJLNAKOLCDGNList().hashCode();
}
hash = (37 * hash) + IS_OPEN_FIELD_NUMBER;
hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
getIsOpen());
hash = (37 * hash) + LBEINAHAHKA_FIELD_NUMBER;
hash = (53 * hash) + getLBEINAHAHKA();
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
}
public static io.grasscutter.net.proto.activity.ABGKEDBGBLN parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.activity.ABGKEDBGBLN parseFrom(
java.nio.ByteBuffer data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.activity.ABGKEDBGBLN parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.activity.ABGKEDBGBLN parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.activity.ABGKEDBGBLN parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.activity.ABGKEDBGBLN parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.activity.ABGKEDBGBLN parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.activity.ABGKEDBGBLN 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 io.grasscutter.net.proto.activity.ABGKEDBGBLN parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.activity.ABGKEDBGBLN 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 io.grasscutter.net.proto.activity.ABGKEDBGBLN parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.activity.ABGKEDBGBLN 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(io.grasscutter.net.proto.activity.ABGKEDBGBLN 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 ABGKEDBGBLN}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:ABGKEDBGBLN)
io.grasscutter.net.proto.activity.ABGKEDBGBLNOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.activity.Activity.internal_static_ABGKEDBGBLN_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.activity.Activity.internal_static_ABGKEDBGBLN_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.activity.ABGKEDBGBLN.class, io.grasscutter.net.proto.activity.ABGKEDBGBLN.Builder.class);
}
// Construct using io.grasscutter.net.proto.activity.ABGKEDBGBLN.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private Builder(
com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessageV3
.alwaysUseFieldBuilders) {
getJLNAKOLCDGNFieldBuilder();
}
}
@java.lang.Override
public Builder clear() {
super.clear();
if (jLNAKOLCDGNBuilder_ == null) {
jLNAKOLCDGN_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
} else {
jLNAKOLCDGNBuilder_.clear();
}
isOpen_ = false;
lBEINAHAHKA_ = 0;
return this;
}
@java.lang.Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return io.grasscutter.net.proto.activity.Activity.internal_static_ABGKEDBGBLN_descriptor;
}
@java.lang.Override
public io.grasscutter.net.proto.activity.ABGKEDBGBLN getDefaultInstanceForType() {
return io.grasscutter.net.proto.activity.ABGKEDBGBLN.getDefaultInstance();
}
@java.lang.Override
public io.grasscutter.net.proto.activity.ABGKEDBGBLN build() {
io.grasscutter.net.proto.activity.ABGKEDBGBLN result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@java.lang.Override
public io.grasscutter.net.proto.activity.ABGKEDBGBLN buildPartial() {
io.grasscutter.net.proto.activity.ABGKEDBGBLN result = new io.grasscutter.net.proto.activity.ABGKEDBGBLN(this);
int from_bitField0_ = bitField0_;
if (jLNAKOLCDGNBuilder_ == null) {
if (((bitField0_ & 0x00000001) != 0)) {
jLNAKOLCDGN_ = java.util.Collections.unmodifiableList(jLNAKOLCDGN_);
bitField0_ = (bitField0_ & ~0x00000001);
}
result.jLNAKOLCDGN_ = jLNAKOLCDGN_;
} else {
result.jLNAKOLCDGN_ = jLNAKOLCDGNBuilder_.build();
}
result.isOpen_ = isOpen_;
result.lBEINAHAHKA_ = lBEINAHAHKA_;
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 io.grasscutter.net.proto.activity.ABGKEDBGBLN) {
return mergeFrom((io.grasscutter.net.proto.activity.ABGKEDBGBLN)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(io.grasscutter.net.proto.activity.ABGKEDBGBLN other) {
if (other == io.grasscutter.net.proto.activity.ABGKEDBGBLN.getDefaultInstance()) return this;
if (jLNAKOLCDGNBuilder_ == null) {
if (!other.jLNAKOLCDGN_.isEmpty()) {
if (jLNAKOLCDGN_.isEmpty()) {
jLNAKOLCDGN_ = other.jLNAKOLCDGN_;
bitField0_ = (bitField0_ & ~0x00000001);
} else {
ensureJLNAKOLCDGNIsMutable();
jLNAKOLCDGN_.addAll(other.jLNAKOLCDGN_);
}
onChanged();
}
} else {
if (!other.jLNAKOLCDGN_.isEmpty()) {
if (jLNAKOLCDGNBuilder_.isEmpty()) {
jLNAKOLCDGNBuilder_.dispose();
jLNAKOLCDGNBuilder_ = null;
jLNAKOLCDGN_ = other.jLNAKOLCDGN_;
bitField0_ = (bitField0_ & ~0x00000001);
jLNAKOLCDGNBuilder_ =
com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
getJLNAKOLCDGNFieldBuilder() : null;
} else {
jLNAKOLCDGNBuilder_.addAllMessages(other.jLNAKOLCDGN_);
}
}
}
if (other.getIsOpen() != false) {
setIsOpen(other.getIsOpen());
}
if (other.getLBEINAHAHKA() != 0) {
setLBEINAHAHKA(other.getLBEINAHAHKA());
}
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 {
io.grasscutter.net.proto.activity.ABGKEDBGBLN parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (io.grasscutter.net.proto.activity.ABGKEDBGBLN) e.getUnfinishedMessage();
throw e.unwrapIOException();
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private int bitField0_;
private java.util.List<io.grasscutter.net.proto.activity.GFNEAFEFCCL> jLNAKOLCDGN_ =
java.util.Collections.emptyList();
private void ensureJLNAKOLCDGNIsMutable() {
if (!((bitField0_ & 0x00000001) != 0)) {
jLNAKOLCDGN_ = new java.util.ArrayList<io.grasscutter.net.proto.activity.GFNEAFEFCCL>(jLNAKOLCDGN_);
bitField0_ |= 0x00000001;
}
}
private com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.activity.GFNEAFEFCCL, io.grasscutter.net.proto.activity.GFNEAFEFCCL.Builder, io.grasscutter.net.proto.activity.GFNEAFEFCCLOrBuilder> jLNAKOLCDGNBuilder_;
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
public java.util.List<io.grasscutter.net.proto.activity.GFNEAFEFCCL> getJLNAKOLCDGNList() {
if (jLNAKOLCDGNBuilder_ == null) {
return java.util.Collections.unmodifiableList(jLNAKOLCDGN_);
} else {
return jLNAKOLCDGNBuilder_.getMessageList();
}
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
public int getJLNAKOLCDGNCount() {
if (jLNAKOLCDGNBuilder_ == null) {
return jLNAKOLCDGN_.size();
} else {
return jLNAKOLCDGNBuilder_.getCount();
}
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
public io.grasscutter.net.proto.activity.GFNEAFEFCCL getJLNAKOLCDGN(int index) {
if (jLNAKOLCDGNBuilder_ == null) {
return jLNAKOLCDGN_.get(index);
} else {
return jLNAKOLCDGNBuilder_.getMessage(index);
}
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
public Builder setJLNAKOLCDGN(
int index, io.grasscutter.net.proto.activity.GFNEAFEFCCL value) {
if (jLNAKOLCDGNBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureJLNAKOLCDGNIsMutable();
jLNAKOLCDGN_.set(index, value);
onChanged();
} else {
jLNAKOLCDGNBuilder_.setMessage(index, value);
}
return this;
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
public Builder setJLNAKOLCDGN(
int index, io.grasscutter.net.proto.activity.GFNEAFEFCCL.Builder builderForValue) {
if (jLNAKOLCDGNBuilder_ == null) {
ensureJLNAKOLCDGNIsMutable();
jLNAKOLCDGN_.set(index, builderForValue.build());
onChanged();
} else {
jLNAKOLCDGNBuilder_.setMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
public Builder addJLNAKOLCDGN(io.grasscutter.net.proto.activity.GFNEAFEFCCL value) {
if (jLNAKOLCDGNBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureJLNAKOLCDGNIsMutable();
jLNAKOLCDGN_.add(value);
onChanged();
} else {
jLNAKOLCDGNBuilder_.addMessage(value);
}
return this;
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
public Builder addJLNAKOLCDGN(
int index, io.grasscutter.net.proto.activity.GFNEAFEFCCL value) {
if (jLNAKOLCDGNBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
ensureJLNAKOLCDGNIsMutable();
jLNAKOLCDGN_.add(index, value);
onChanged();
} else {
jLNAKOLCDGNBuilder_.addMessage(index, value);
}
return this;
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
public Builder addJLNAKOLCDGN(
io.grasscutter.net.proto.activity.GFNEAFEFCCL.Builder builderForValue) {
if (jLNAKOLCDGNBuilder_ == null) {
ensureJLNAKOLCDGNIsMutable();
jLNAKOLCDGN_.add(builderForValue.build());
onChanged();
} else {
jLNAKOLCDGNBuilder_.addMessage(builderForValue.build());
}
return this;
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
public Builder addJLNAKOLCDGN(
int index, io.grasscutter.net.proto.activity.GFNEAFEFCCL.Builder builderForValue) {
if (jLNAKOLCDGNBuilder_ == null) {
ensureJLNAKOLCDGNIsMutable();
jLNAKOLCDGN_.add(index, builderForValue.build());
onChanged();
} else {
jLNAKOLCDGNBuilder_.addMessage(index, builderForValue.build());
}
return this;
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
public Builder addAllJLNAKOLCDGN(
java.lang.Iterable<? extends io.grasscutter.net.proto.activity.GFNEAFEFCCL> values) {
if (jLNAKOLCDGNBuilder_ == null) {
ensureJLNAKOLCDGNIsMutable();
com.google.protobuf.AbstractMessageLite.Builder.addAll(
values, jLNAKOLCDGN_);
onChanged();
} else {
jLNAKOLCDGNBuilder_.addAllMessages(values);
}
return this;
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
public Builder clearJLNAKOLCDGN() {
if (jLNAKOLCDGNBuilder_ == null) {
jLNAKOLCDGN_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000001);
onChanged();
} else {
jLNAKOLCDGNBuilder_.clear();
}
return this;
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
public Builder removeJLNAKOLCDGN(int index) {
if (jLNAKOLCDGNBuilder_ == null) {
ensureJLNAKOLCDGNIsMutable();
jLNAKOLCDGN_.remove(index);
onChanged();
} else {
jLNAKOLCDGNBuilder_.remove(index);
}
return this;
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
public io.grasscutter.net.proto.activity.GFNEAFEFCCL.Builder getJLNAKOLCDGNBuilder(
int index) {
return getJLNAKOLCDGNFieldBuilder().getBuilder(index);
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
public io.grasscutter.net.proto.activity.GFNEAFEFCCLOrBuilder getJLNAKOLCDGNOrBuilder(
int index) {
if (jLNAKOLCDGNBuilder_ == null) {
return jLNAKOLCDGN_.get(index); } else {
return jLNAKOLCDGNBuilder_.getMessageOrBuilder(index);
}
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
public java.util.List<? extends io.grasscutter.net.proto.activity.GFNEAFEFCCLOrBuilder>
getJLNAKOLCDGNOrBuilderList() {
if (jLNAKOLCDGNBuilder_ != null) {
return jLNAKOLCDGNBuilder_.getMessageOrBuilderList();
} else {
return java.util.Collections.unmodifiableList(jLNAKOLCDGN_);
}
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
public io.grasscutter.net.proto.activity.GFNEAFEFCCL.Builder addJLNAKOLCDGNBuilder() {
return getJLNAKOLCDGNFieldBuilder().addBuilder(
io.grasscutter.net.proto.activity.GFNEAFEFCCL.getDefaultInstance());
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
public io.grasscutter.net.proto.activity.GFNEAFEFCCL.Builder addJLNAKOLCDGNBuilder(
int index) {
return getJLNAKOLCDGNFieldBuilder().addBuilder(
index, io.grasscutter.net.proto.activity.GFNEAFEFCCL.getDefaultInstance());
}
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
public java.util.List<io.grasscutter.net.proto.activity.GFNEAFEFCCL.Builder>
getJLNAKOLCDGNBuilderList() {
return getJLNAKOLCDGNFieldBuilder().getBuilderList();
}
private com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.activity.GFNEAFEFCCL, io.grasscutter.net.proto.activity.GFNEAFEFCCL.Builder, io.grasscutter.net.proto.activity.GFNEAFEFCCLOrBuilder>
getJLNAKOLCDGNFieldBuilder() {
if (jLNAKOLCDGNBuilder_ == null) {
jLNAKOLCDGNBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
io.grasscutter.net.proto.activity.GFNEAFEFCCL, io.grasscutter.net.proto.activity.GFNEAFEFCCL.Builder, io.grasscutter.net.proto.activity.GFNEAFEFCCLOrBuilder>(
jLNAKOLCDGN_,
((bitField0_ & 0x00000001) != 0),
getParentForChildren(),
isClean());
jLNAKOLCDGN_ = null;
}
return jLNAKOLCDGNBuilder_;
}
private boolean isOpen_ ;
/**
* <code>bool is_open = 3;</code>
* @return The isOpen.
*/
@java.lang.Override
public boolean getIsOpen() {
return isOpen_;
}
/**
* <code>bool is_open = 3;</code>
* @param value The isOpen to set.
* @return This builder for chaining.
*/
public Builder setIsOpen(boolean value) {
isOpen_ = value;
onChanged();
return this;
}
/**
* <code>bool is_open = 3;</code>
* @return This builder for chaining.
*/
public Builder clearIsOpen() {
isOpen_ = false;
onChanged();
return this;
}
private int lBEINAHAHKA_ ;
/**
* <code>uint32 LBEINAHAHKA = 1;</code>
* @return The lBEINAHAHKA.
*/
@java.lang.Override
public int getLBEINAHAHKA() {
return lBEINAHAHKA_;
}
/**
* <code>uint32 LBEINAHAHKA = 1;</code>
* @param value The lBEINAHAHKA to set.
* @return This builder for chaining.
*/
public Builder setLBEINAHAHKA(int value) {
lBEINAHAHKA_ = value;
onChanged();
return this;
}
/**
* <code>uint32 LBEINAHAHKA = 1;</code>
* @return This builder for chaining.
*/
public Builder clearLBEINAHAHKA() {
lBEINAHAHKA_ = 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:ABGKEDBGBLN)
}
// @@protoc_insertion_point(class_scope:ABGKEDBGBLN)
private static final io.grasscutter.net.proto.activity.ABGKEDBGBLN DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new io.grasscutter.net.proto.activity.ABGKEDBGBLN();
}
public static io.grasscutter.net.proto.activity.ABGKEDBGBLN getDefaultInstance() {
return DEFAULT_INSTANCE;
}
private static final com.google.protobuf.Parser<ABGKEDBGBLN>
PARSER = new com.google.protobuf.AbstractParser<ABGKEDBGBLN>() {
@java.lang.Override
public ABGKEDBGBLN parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new ABGKEDBGBLN(input, extensionRegistry);
}
};
public static com.google.protobuf.Parser<ABGKEDBGBLN> parser() {
return PARSER;
}
@java.lang.Override
public com.google.protobuf.Parser<ABGKEDBGBLN> getParserForType() {
return PARSER;
}
@java.lang.Override
public io.grasscutter.net.proto.activity.ABGKEDBGBLN getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}

View File

@ -0,0 +1,45 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: activity.proto
package io.grasscutter.net.proto.activity;
public interface ABGKEDBGBLNOrBuilder extends
// @@protoc_insertion_point(interface_extends:ABGKEDBGBLN)
com.google.protobuf.MessageOrBuilder {
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
java.util.List<io.grasscutter.net.proto.activity.GFNEAFEFCCL>
getJLNAKOLCDGNList();
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
io.grasscutter.net.proto.activity.GFNEAFEFCCL getJLNAKOLCDGN(int index);
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
int getJLNAKOLCDGNCount();
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
java.util.List<? extends io.grasscutter.net.proto.activity.GFNEAFEFCCLOrBuilder>
getJLNAKOLCDGNOrBuilderList();
/**
* <code>repeated .GFNEAFEFCCL JLNAKOLCDGN = 11;</code>
*/
io.grasscutter.net.proto.activity.GFNEAFEFCCLOrBuilder getJLNAKOLCDGNOrBuilder(
int index);
/**
* <code>bool is_open = 3;</code>
* @return The isOpen.
*/
boolean getIsOpen();
/**
* <code>uint32 LBEINAHAHKA = 1;</code>
* @return The lBEINAHAHKA.
*/
int getLBEINAHAHKA();
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,160 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: activity.proto
package io.grasscutter.net.proto.activity;
public interface ABHOCFILGJLOrBuilder extends
// @@protoc_insertion_point(interface_extends:ABHOCFILGJL)
com.google.protobuf.MessageOrBuilder {
/**
* <code>map&lt;uint64, uint32&gt; IPFOIMLFPIK = 13;</code>
*/
int getIPFOIMLFPIKCount();
/**
* <code>map&lt;uint64, uint32&gt; IPFOIMLFPIK = 13;</code>
*/
boolean containsIPFOIMLFPIK(
long key);
/**
* Use {@link #getIPFOIMLFPIKMap()} instead.
*/
@java.lang.Deprecated
java.util.Map<java.lang.Long, java.lang.Integer>
getIPFOIMLFPIK();
/**
* <code>map&lt;uint64, uint32&gt; IPFOIMLFPIK = 13;</code>
*/
java.util.Map<java.lang.Long, java.lang.Integer>
getIPFOIMLFPIKMap();
/**
* <code>map&lt;uint64, uint32&gt; IPFOIMLFPIK = 13;</code>
*/
int getIPFOIMLFPIKOrDefault(
long key,
int defaultValue);
/**
* <code>map&lt;uint64, uint32&gt; IPFOIMLFPIK = 13;</code>
*/
int getIPFOIMLFPIKOrThrow(
long key);
/**
* <code>map&lt;uint64, uint32&gt; CDJJOHNDCHN = 10;</code>
*/
int getCDJJOHNDCHNCount();
/**
* <code>map&lt;uint64, uint32&gt; CDJJOHNDCHN = 10;</code>
*/
boolean containsCDJJOHNDCHN(
long key);
/**
* Use {@link #getCDJJOHNDCHNMap()} instead.
*/
@java.lang.Deprecated
java.util.Map<java.lang.Long, java.lang.Integer>
getCDJJOHNDCHN();
/**
* <code>map&lt;uint64, uint32&gt; CDJJOHNDCHN = 10;</code>
*/
java.util.Map<java.lang.Long, java.lang.Integer>
getCDJJOHNDCHNMap();
/**
* <code>map&lt;uint64, uint32&gt; CDJJOHNDCHN = 10;</code>
*/
int getCDJJOHNDCHNOrDefault(
long key,
int defaultValue);
/**
* <code>map&lt;uint64, uint32&gt; CDJJOHNDCHN = 10;</code>
*/
int getCDJJOHNDCHNOrThrow(
long key);
/**
* <code>repeated uint32 ECCKEBKEIOG = 11;</code>
* @return A list containing the eCCKEBKEIOG.
*/
java.util.List<java.lang.Integer> getECCKEBKEIOGList();
/**
* <code>repeated uint32 ECCKEBKEIOG = 11;</code>
* @return The count of eCCKEBKEIOG.
*/
int getECCKEBKEIOGCount();
/**
* <code>repeated uint32 ECCKEBKEIOG = 11;</code>
* @param index The index of the element to return.
* @return The eCCKEBKEIOG at the given index.
*/
int getECCKEBKEIOG(int index);
/**
* <code>repeated .EMEAJKNIEFA MGMGOLJINMN = 2;</code>
*/
java.util.List<io.grasscutter.net.proto.activity.EMEAJKNIEFA>
getMGMGOLJINMNList();
/**
* <code>repeated .EMEAJKNIEFA MGMGOLJINMN = 2;</code>
*/
io.grasscutter.net.proto.activity.EMEAJKNIEFA getMGMGOLJINMN(int index);
/**
* <code>repeated .EMEAJKNIEFA MGMGOLJINMN = 2;</code>
*/
int getMGMGOLJINMNCount();
/**
* <code>repeated .EMEAJKNIEFA MGMGOLJINMN = 2;</code>
*/
java.util.List<? extends io.grasscutter.net.proto.activity.EMEAJKNIEFAOrBuilder>
getMGMGOLJINMNOrBuilderList();
/**
* <code>repeated .EMEAJKNIEFA MGMGOLJINMN = 2;</code>
*/
io.grasscutter.net.proto.activity.EMEAJKNIEFAOrBuilder getMGMGOLJINMNOrBuilder(
int index);
/**
* <code>uint64 NGHBFMBJGCL = 8;</code>
* @return The nGHBFMBJGCL.
*/
long getNGHBFMBJGCL();
/**
* <code>uint32 KKLADHFCBFJ = 15;</code>
* @return The kKLADHFCBFJ.
*/
int getKKLADHFCBFJ();
/**
* <code>uint32 AIPKCNHFDFN = 5;</code>
* @return The aIPKCNHFDFN.
*/
int getAIPKCNHFDFN();
/**
* <code>uint32 BEGLAPFGFAF = 6;</code>
* @return The bEGLAPFGFAF.
*/
int getBEGLAPFGFAF();
/**
* <code>uint64 PNNMIHFHFNK = 9;</code>
* @return The pNNMIHFHFNK.
*/
long getPNNMIHFHFNK();
/**
* <code>uint32 NMGAMKNNOJD = 7;</code>
* @return The nMGAMKNNOJD.
*/
int getNMGAMKNNOJD();
/**
* <code>uint32 GPCDKNKNMNL = 1;</code>
* @return The gPCDKNKNMNL.
*/
int getGPCDKNKNMNL();
}

View File

@ -0,0 +1,983 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: activity.proto
package io.grasscutter.net.proto.activity;
/**
* Protobuf type {@code ABLLEIKOKBN}
*/
public final class ABLLEIKOKBN extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:ABLLEIKOKBN)
ABLLEIKOKBNOrBuilder {
private static final long serialVersionUID = 0L;
// Use ABLLEIKOKBN.newBuilder() to construct.
private ABLLEIKOKBN(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
super(builder);
}
private ABLLEIKOKBN() {
}
@java.lang.Override
@SuppressWarnings({"unused"})
protected java.lang.Object newInstance(
UnusedPrivateParameter unused) {
return new ABLLEIKOKBN();
}
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private ABLLEIKOKBN(
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 26: {
io.grasscutter.net.proto.activity.NFILMAGDNGJ.Builder subBuilder = null;
if (dLHGOHEKHJH_ != null) {
subBuilder = dLHGOHEKHJH_.toBuilder();
}
dLHGOHEKHJH_ = input.readMessage(io.grasscutter.net.proto.activity.NFILMAGDNGJ.parser(), extensionRegistry);
if (subBuilder != null) {
subBuilder.mergeFrom(dLHGOHEKHJH_);
dLHGOHEKHJH_ = subBuilder.buildPartial();
}
break;
}
case 50: {
io.grasscutter.net.proto.activity.HDPFODICAAN.Builder subBuilder = null;
if (kGKEDKPMDPL_ != null) {
subBuilder = kGKEDKPMDPL_.toBuilder();
}
kGKEDKPMDPL_ = input.readMessage(io.grasscutter.net.proto.activity.HDPFODICAAN.parser(), extensionRegistry);
if (subBuilder != null) {
subBuilder.mergeFrom(kGKEDKPMDPL_);
kGKEDKPMDPL_ = subBuilder.buildPartial();
}
break;
}
case 82: {
io.grasscutter.net.proto.activity.CLINDENDFKL.Builder subBuilder = null;
if (aDOFOOABKFO_ != null) {
subBuilder = aDOFOOABKFO_.toBuilder();
}
aDOFOOABKFO_ = input.readMessage(io.grasscutter.net.proto.activity.CLINDENDFKL.parser(), extensionRegistry);
if (subBuilder != null) {
subBuilder.mergeFrom(aDOFOOABKFO_);
aDOFOOABKFO_ = 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 io.grasscutter.net.proto.activity.Activity.internal_static_ABLLEIKOKBN_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.activity.Activity.internal_static_ABLLEIKOKBN_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.activity.ABLLEIKOKBN.class, io.grasscutter.net.proto.activity.ABLLEIKOKBN.Builder.class);
}
public static final int KGKEDKPMDPL_FIELD_NUMBER = 6;
private io.grasscutter.net.proto.activity.HDPFODICAAN kGKEDKPMDPL_;
/**
* <code>.HDPFODICAAN KGKEDKPMDPL = 6;</code>
* @return Whether the kGKEDKPMDPL field is set.
*/
@java.lang.Override
public boolean hasKGKEDKPMDPL() {
return kGKEDKPMDPL_ != null;
}
/**
* <code>.HDPFODICAAN KGKEDKPMDPL = 6;</code>
* @return The kGKEDKPMDPL.
*/
@java.lang.Override
public io.grasscutter.net.proto.activity.HDPFODICAAN getKGKEDKPMDPL() {
return kGKEDKPMDPL_ == null ? io.grasscutter.net.proto.activity.HDPFODICAAN.getDefaultInstance() : kGKEDKPMDPL_;
}
/**
* <code>.HDPFODICAAN KGKEDKPMDPL = 6;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.activity.HDPFODICAANOrBuilder getKGKEDKPMDPLOrBuilder() {
return getKGKEDKPMDPL();
}
public static final int ADOFOOABKFO_FIELD_NUMBER = 10;
private io.grasscutter.net.proto.activity.CLINDENDFKL aDOFOOABKFO_;
/**
* <code>.CLINDENDFKL ADOFOOABKFO = 10;</code>
* @return Whether the aDOFOOABKFO field is set.
*/
@java.lang.Override
public boolean hasADOFOOABKFO() {
return aDOFOOABKFO_ != null;
}
/**
* <code>.CLINDENDFKL ADOFOOABKFO = 10;</code>
* @return The aDOFOOABKFO.
*/
@java.lang.Override
public io.grasscutter.net.proto.activity.CLINDENDFKL getADOFOOABKFO() {
return aDOFOOABKFO_ == null ? io.grasscutter.net.proto.activity.CLINDENDFKL.getDefaultInstance() : aDOFOOABKFO_;
}
/**
* <code>.CLINDENDFKL ADOFOOABKFO = 10;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.activity.CLINDENDFKLOrBuilder getADOFOOABKFOOrBuilder() {
return getADOFOOABKFO();
}
public static final int DLHGOHEKHJH_FIELD_NUMBER = 3;
private io.grasscutter.net.proto.activity.NFILMAGDNGJ dLHGOHEKHJH_;
/**
* <code>.NFILMAGDNGJ DLHGOHEKHJH = 3;</code>
* @return Whether the dLHGOHEKHJH field is set.
*/
@java.lang.Override
public boolean hasDLHGOHEKHJH() {
return dLHGOHEKHJH_ != null;
}
/**
* <code>.NFILMAGDNGJ DLHGOHEKHJH = 3;</code>
* @return The dLHGOHEKHJH.
*/
@java.lang.Override
public io.grasscutter.net.proto.activity.NFILMAGDNGJ getDLHGOHEKHJH() {
return dLHGOHEKHJH_ == null ? io.grasscutter.net.proto.activity.NFILMAGDNGJ.getDefaultInstance() : dLHGOHEKHJH_;
}
/**
* <code>.NFILMAGDNGJ DLHGOHEKHJH = 3;</code>
*/
@java.lang.Override
public io.grasscutter.net.proto.activity.NFILMAGDNGJOrBuilder getDLHGOHEKHJHOrBuilder() {
return getDLHGOHEKHJH();
}
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 (dLHGOHEKHJH_ != null) {
output.writeMessage(3, getDLHGOHEKHJH());
}
if (kGKEDKPMDPL_ != null) {
output.writeMessage(6, getKGKEDKPMDPL());
}
if (aDOFOOABKFO_ != null) {
output.writeMessage(10, getADOFOOABKFO());
}
unknownFields.writeTo(output);
}
@java.lang.Override
public int getSerializedSize() {
int size = memoizedSize;
if (size != -1) return size;
size = 0;
if (dLHGOHEKHJH_ != null) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(3, getDLHGOHEKHJH());
}
if (kGKEDKPMDPL_ != null) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(6, getKGKEDKPMDPL());
}
if (aDOFOOABKFO_ != null) {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(10, getADOFOOABKFO());
}
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 io.grasscutter.net.proto.activity.ABLLEIKOKBN)) {
return super.equals(obj);
}
io.grasscutter.net.proto.activity.ABLLEIKOKBN other = (io.grasscutter.net.proto.activity.ABLLEIKOKBN) obj;
if (hasKGKEDKPMDPL() != other.hasKGKEDKPMDPL()) return false;
if (hasKGKEDKPMDPL()) {
if (!getKGKEDKPMDPL()
.equals(other.getKGKEDKPMDPL())) return false;
}
if (hasADOFOOABKFO() != other.hasADOFOOABKFO()) return false;
if (hasADOFOOABKFO()) {
if (!getADOFOOABKFO()
.equals(other.getADOFOOABKFO())) return false;
}
if (hasDLHGOHEKHJH() != other.hasDLHGOHEKHJH()) return false;
if (hasDLHGOHEKHJH()) {
if (!getDLHGOHEKHJH()
.equals(other.getDLHGOHEKHJH())) 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 (hasKGKEDKPMDPL()) {
hash = (37 * hash) + KGKEDKPMDPL_FIELD_NUMBER;
hash = (53 * hash) + getKGKEDKPMDPL().hashCode();
}
if (hasADOFOOABKFO()) {
hash = (37 * hash) + ADOFOOABKFO_FIELD_NUMBER;
hash = (53 * hash) + getADOFOOABKFO().hashCode();
}
if (hasDLHGOHEKHJH()) {
hash = (37 * hash) + DLHGOHEKHJH_FIELD_NUMBER;
hash = (53 * hash) + getDLHGOHEKHJH().hashCode();
}
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
}
public static io.grasscutter.net.proto.activity.ABLLEIKOKBN parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.activity.ABLLEIKOKBN parseFrom(
java.nio.ByteBuffer data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.activity.ABLLEIKOKBN parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.activity.ABLLEIKOKBN parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.activity.ABLLEIKOKBN parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static io.grasscutter.net.proto.activity.ABLLEIKOKBN parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static io.grasscutter.net.proto.activity.ABLLEIKOKBN parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.activity.ABLLEIKOKBN 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 io.grasscutter.net.proto.activity.ABLLEIKOKBN parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.activity.ABLLEIKOKBN 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 io.grasscutter.net.proto.activity.ABLLEIKOKBN parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static io.grasscutter.net.proto.activity.ABLLEIKOKBN 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(io.grasscutter.net.proto.activity.ABLLEIKOKBN 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 ABLLEIKOKBN}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:ABLLEIKOKBN)
io.grasscutter.net.proto.activity.ABLLEIKOKBNOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return io.grasscutter.net.proto.activity.Activity.internal_static_ABLLEIKOKBN_descriptor;
}
@java.lang.Override
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internalGetFieldAccessorTable() {
return io.grasscutter.net.proto.activity.Activity.internal_static_ABLLEIKOKBN_fieldAccessorTable
.ensureFieldAccessorsInitialized(
io.grasscutter.net.proto.activity.ABLLEIKOKBN.class, io.grasscutter.net.proto.activity.ABLLEIKOKBN.Builder.class);
}
// Construct using io.grasscutter.net.proto.activity.ABLLEIKOKBN.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();
if (kGKEDKPMDPLBuilder_ == null) {
kGKEDKPMDPL_ = null;
} else {
kGKEDKPMDPL_ = null;
kGKEDKPMDPLBuilder_ = null;
}
if (aDOFOOABKFOBuilder_ == null) {
aDOFOOABKFO_ = null;
} else {
aDOFOOABKFO_ = null;
aDOFOOABKFOBuilder_ = null;
}
if (dLHGOHEKHJHBuilder_ == null) {
dLHGOHEKHJH_ = null;
} else {
dLHGOHEKHJH_ = null;
dLHGOHEKHJHBuilder_ = null;
}
return this;
}
@java.lang.Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return io.grasscutter.net.proto.activity.Activity.internal_static_ABLLEIKOKBN_descriptor;
}
@java.lang.Override
public io.grasscutter.net.proto.activity.ABLLEIKOKBN getDefaultInstanceForType() {
return io.grasscutter.net.proto.activity.ABLLEIKOKBN.getDefaultInstance();
}
@java.lang.Override
public io.grasscutter.net.proto.activity.ABLLEIKOKBN build() {
io.grasscutter.net.proto.activity.ABLLEIKOKBN result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@java.lang.Override
public io.grasscutter.net.proto.activity.ABLLEIKOKBN buildPartial() {
io.grasscutter.net.proto.activity.ABLLEIKOKBN result = new io.grasscutter.net.proto.activity.ABLLEIKOKBN(this);
if (kGKEDKPMDPLBuilder_ == null) {
result.kGKEDKPMDPL_ = kGKEDKPMDPL_;
} else {
result.kGKEDKPMDPL_ = kGKEDKPMDPLBuilder_.build();
}
if (aDOFOOABKFOBuilder_ == null) {
result.aDOFOOABKFO_ = aDOFOOABKFO_;
} else {
result.aDOFOOABKFO_ = aDOFOOABKFOBuilder_.build();
}
if (dLHGOHEKHJHBuilder_ == null) {
result.dLHGOHEKHJH_ = dLHGOHEKHJH_;
} else {
result.dLHGOHEKHJH_ = dLHGOHEKHJHBuilder_.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 io.grasscutter.net.proto.activity.ABLLEIKOKBN) {
return mergeFrom((io.grasscutter.net.proto.activity.ABLLEIKOKBN)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(io.grasscutter.net.proto.activity.ABLLEIKOKBN other) {
if (other == io.grasscutter.net.proto.activity.ABLLEIKOKBN.getDefaultInstance()) return this;
if (other.hasKGKEDKPMDPL()) {
mergeKGKEDKPMDPL(other.getKGKEDKPMDPL());
}
if (other.hasADOFOOABKFO()) {
mergeADOFOOABKFO(other.getADOFOOABKFO());
}
if (other.hasDLHGOHEKHJH()) {
mergeDLHGOHEKHJH(other.getDLHGOHEKHJH());
}
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 {
io.grasscutter.net.proto.activity.ABLLEIKOKBN parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (io.grasscutter.net.proto.activity.ABLLEIKOKBN) e.getUnfinishedMessage();
throw e.unwrapIOException();
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private io.grasscutter.net.proto.activity.HDPFODICAAN kGKEDKPMDPL_;
private com.google.protobuf.SingleFieldBuilderV3<
io.grasscutter.net.proto.activity.HDPFODICAAN, io.grasscutter.net.proto.activity.HDPFODICAAN.Builder, io.grasscutter.net.proto.activity.HDPFODICAANOrBuilder> kGKEDKPMDPLBuilder_;
/**
* <code>.HDPFODICAAN KGKEDKPMDPL = 6;</code>
* @return Whether the kGKEDKPMDPL field is set.
*/
public boolean hasKGKEDKPMDPL() {
return kGKEDKPMDPLBuilder_ != null || kGKEDKPMDPL_ != null;
}
/**
* <code>.HDPFODICAAN KGKEDKPMDPL = 6;</code>
* @return The kGKEDKPMDPL.
*/
public io.grasscutter.net.proto.activity.HDPFODICAAN getKGKEDKPMDPL() {
if (kGKEDKPMDPLBuilder_ == null) {
return kGKEDKPMDPL_ == null ? io.grasscutter.net.proto.activity.HDPFODICAAN.getDefaultInstance() : kGKEDKPMDPL_;
} else {
return kGKEDKPMDPLBuilder_.getMessage();
}
}
/**
* <code>.HDPFODICAAN KGKEDKPMDPL = 6;</code>
*/
public Builder setKGKEDKPMDPL(io.grasscutter.net.proto.activity.HDPFODICAAN value) {
if (kGKEDKPMDPLBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
kGKEDKPMDPL_ = value;
onChanged();
} else {
kGKEDKPMDPLBuilder_.setMessage(value);
}
return this;
}
/**
* <code>.HDPFODICAAN KGKEDKPMDPL = 6;</code>
*/
public Builder setKGKEDKPMDPL(
io.grasscutter.net.proto.activity.HDPFODICAAN.Builder builderForValue) {
if (kGKEDKPMDPLBuilder_ == null) {
kGKEDKPMDPL_ = builderForValue.build();
onChanged();
} else {
kGKEDKPMDPLBuilder_.setMessage(builderForValue.build());
}
return this;
}
/**
* <code>.HDPFODICAAN KGKEDKPMDPL = 6;</code>
*/
public Builder mergeKGKEDKPMDPL(io.grasscutter.net.proto.activity.HDPFODICAAN value) {
if (kGKEDKPMDPLBuilder_ == null) {
if (kGKEDKPMDPL_ != null) {
kGKEDKPMDPL_ =
io.grasscutter.net.proto.activity.HDPFODICAAN.newBuilder(kGKEDKPMDPL_).mergeFrom(value).buildPartial();
} else {
kGKEDKPMDPL_ = value;
}
onChanged();
} else {
kGKEDKPMDPLBuilder_.mergeFrom(value);
}
return this;
}
/**
* <code>.HDPFODICAAN KGKEDKPMDPL = 6;</code>
*/
public Builder clearKGKEDKPMDPL() {
if (kGKEDKPMDPLBuilder_ == null) {
kGKEDKPMDPL_ = null;
onChanged();
} else {
kGKEDKPMDPL_ = null;
kGKEDKPMDPLBuilder_ = null;
}
return this;
}
/**
* <code>.HDPFODICAAN KGKEDKPMDPL = 6;</code>
*/
public io.grasscutter.net.proto.activity.HDPFODICAAN.Builder getKGKEDKPMDPLBuilder() {
onChanged();
return getKGKEDKPMDPLFieldBuilder().getBuilder();
}
/**
* <code>.HDPFODICAAN KGKEDKPMDPL = 6;</code>
*/
public io.grasscutter.net.proto.activity.HDPFODICAANOrBuilder getKGKEDKPMDPLOrBuilder() {
if (kGKEDKPMDPLBuilder_ != null) {
return kGKEDKPMDPLBuilder_.getMessageOrBuilder();
} else {
return kGKEDKPMDPL_ == null ?
io.grasscutter.net.proto.activity.HDPFODICAAN.getDefaultInstance() : kGKEDKPMDPL_;
}
}
/**
* <code>.HDPFODICAAN KGKEDKPMDPL = 6;</code>
*/
private com.google.protobuf.SingleFieldBuilderV3<
io.grasscutter.net.proto.activity.HDPFODICAAN, io.grasscutter.net.proto.activity.HDPFODICAAN.Builder, io.grasscutter.net.proto.activity.HDPFODICAANOrBuilder>
getKGKEDKPMDPLFieldBuilder() {
if (kGKEDKPMDPLBuilder_ == null) {
kGKEDKPMDPLBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
io.grasscutter.net.proto.activity.HDPFODICAAN, io.grasscutter.net.proto.activity.HDPFODICAAN.Builder, io.grasscutter.net.proto.activity.HDPFODICAANOrBuilder>(
getKGKEDKPMDPL(),
getParentForChildren(),
isClean());
kGKEDKPMDPL_ = null;
}
return kGKEDKPMDPLBuilder_;
}
private io.grasscutter.net.proto.activity.CLINDENDFKL aDOFOOABKFO_;
private com.google.protobuf.SingleFieldBuilderV3<
io.grasscutter.net.proto.activity.CLINDENDFKL, io.grasscutter.net.proto.activity.CLINDENDFKL.Builder, io.grasscutter.net.proto.activity.CLINDENDFKLOrBuilder> aDOFOOABKFOBuilder_;
/**
* <code>.CLINDENDFKL ADOFOOABKFO = 10;</code>
* @return Whether the aDOFOOABKFO field is set.
*/
public boolean hasADOFOOABKFO() {
return aDOFOOABKFOBuilder_ != null || aDOFOOABKFO_ != null;
}
/**
* <code>.CLINDENDFKL ADOFOOABKFO = 10;</code>
* @return The aDOFOOABKFO.
*/
public io.grasscutter.net.proto.activity.CLINDENDFKL getADOFOOABKFO() {
if (aDOFOOABKFOBuilder_ == null) {
return aDOFOOABKFO_ == null ? io.grasscutter.net.proto.activity.CLINDENDFKL.getDefaultInstance() : aDOFOOABKFO_;
} else {
return aDOFOOABKFOBuilder_.getMessage();
}
}
/**
* <code>.CLINDENDFKL ADOFOOABKFO = 10;</code>
*/
public Builder setADOFOOABKFO(io.grasscutter.net.proto.activity.CLINDENDFKL value) {
if (aDOFOOABKFOBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
aDOFOOABKFO_ = value;
onChanged();
} else {
aDOFOOABKFOBuilder_.setMessage(value);
}
return this;
}
/**
* <code>.CLINDENDFKL ADOFOOABKFO = 10;</code>
*/
public Builder setADOFOOABKFO(
io.grasscutter.net.proto.activity.CLINDENDFKL.Builder builderForValue) {
if (aDOFOOABKFOBuilder_ == null) {
aDOFOOABKFO_ = builderForValue.build();
onChanged();
} else {
aDOFOOABKFOBuilder_.setMessage(builderForValue.build());
}
return this;
}
/**
* <code>.CLINDENDFKL ADOFOOABKFO = 10;</code>
*/
public Builder mergeADOFOOABKFO(io.grasscutter.net.proto.activity.CLINDENDFKL value) {
if (aDOFOOABKFOBuilder_ == null) {
if (aDOFOOABKFO_ != null) {
aDOFOOABKFO_ =
io.grasscutter.net.proto.activity.CLINDENDFKL.newBuilder(aDOFOOABKFO_).mergeFrom(value).buildPartial();
} else {
aDOFOOABKFO_ = value;
}
onChanged();
} else {
aDOFOOABKFOBuilder_.mergeFrom(value);
}
return this;
}
/**
* <code>.CLINDENDFKL ADOFOOABKFO = 10;</code>
*/
public Builder clearADOFOOABKFO() {
if (aDOFOOABKFOBuilder_ == null) {
aDOFOOABKFO_ = null;
onChanged();
} else {
aDOFOOABKFO_ = null;
aDOFOOABKFOBuilder_ = null;
}
return this;
}
/**
* <code>.CLINDENDFKL ADOFOOABKFO = 10;</code>
*/
public io.grasscutter.net.proto.activity.CLINDENDFKL.Builder getADOFOOABKFOBuilder() {
onChanged();
return getADOFOOABKFOFieldBuilder().getBuilder();
}
/**
* <code>.CLINDENDFKL ADOFOOABKFO = 10;</code>
*/
public io.grasscutter.net.proto.activity.CLINDENDFKLOrBuilder getADOFOOABKFOOrBuilder() {
if (aDOFOOABKFOBuilder_ != null) {
return aDOFOOABKFOBuilder_.getMessageOrBuilder();
} else {
return aDOFOOABKFO_ == null ?
io.grasscutter.net.proto.activity.CLINDENDFKL.getDefaultInstance() : aDOFOOABKFO_;
}
}
/**
* <code>.CLINDENDFKL ADOFOOABKFO = 10;</code>
*/
private com.google.protobuf.SingleFieldBuilderV3<
io.grasscutter.net.proto.activity.CLINDENDFKL, io.grasscutter.net.proto.activity.CLINDENDFKL.Builder, io.grasscutter.net.proto.activity.CLINDENDFKLOrBuilder>
getADOFOOABKFOFieldBuilder() {
if (aDOFOOABKFOBuilder_ == null) {
aDOFOOABKFOBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
io.grasscutter.net.proto.activity.CLINDENDFKL, io.grasscutter.net.proto.activity.CLINDENDFKL.Builder, io.grasscutter.net.proto.activity.CLINDENDFKLOrBuilder>(
getADOFOOABKFO(),
getParentForChildren(),
isClean());
aDOFOOABKFO_ = null;
}
return aDOFOOABKFOBuilder_;
}
private io.grasscutter.net.proto.activity.NFILMAGDNGJ dLHGOHEKHJH_;
private com.google.protobuf.SingleFieldBuilderV3<
io.grasscutter.net.proto.activity.NFILMAGDNGJ, io.grasscutter.net.proto.activity.NFILMAGDNGJ.Builder, io.grasscutter.net.proto.activity.NFILMAGDNGJOrBuilder> dLHGOHEKHJHBuilder_;
/**
* <code>.NFILMAGDNGJ DLHGOHEKHJH = 3;</code>
* @return Whether the dLHGOHEKHJH field is set.
*/
public boolean hasDLHGOHEKHJH() {
return dLHGOHEKHJHBuilder_ != null || dLHGOHEKHJH_ != null;
}
/**
* <code>.NFILMAGDNGJ DLHGOHEKHJH = 3;</code>
* @return The dLHGOHEKHJH.
*/
public io.grasscutter.net.proto.activity.NFILMAGDNGJ getDLHGOHEKHJH() {
if (dLHGOHEKHJHBuilder_ == null) {
return dLHGOHEKHJH_ == null ? io.grasscutter.net.proto.activity.NFILMAGDNGJ.getDefaultInstance() : dLHGOHEKHJH_;
} else {
return dLHGOHEKHJHBuilder_.getMessage();
}
}
/**
* <code>.NFILMAGDNGJ DLHGOHEKHJH = 3;</code>
*/
public Builder setDLHGOHEKHJH(io.grasscutter.net.proto.activity.NFILMAGDNGJ value) {
if (dLHGOHEKHJHBuilder_ == null) {
if (value == null) {
throw new NullPointerException();
}
dLHGOHEKHJH_ = value;
onChanged();
} else {
dLHGOHEKHJHBuilder_.setMessage(value);
}
return this;
}
/**
* <code>.NFILMAGDNGJ DLHGOHEKHJH = 3;</code>
*/
public Builder setDLHGOHEKHJH(
io.grasscutter.net.proto.activity.NFILMAGDNGJ.Builder builderForValue) {
if (dLHGOHEKHJHBuilder_ == null) {
dLHGOHEKHJH_ = builderForValue.build();
onChanged();
} else {
dLHGOHEKHJHBuilder_.setMessage(builderForValue.build());
}
return this;
}
/**
* <code>.NFILMAGDNGJ DLHGOHEKHJH = 3;</code>
*/
public Builder mergeDLHGOHEKHJH(io.grasscutter.net.proto.activity.NFILMAGDNGJ value) {
if (dLHGOHEKHJHBuilder_ == null) {
if (dLHGOHEKHJH_ != null) {
dLHGOHEKHJH_ =
io.grasscutter.net.proto.activity.NFILMAGDNGJ.newBuilder(dLHGOHEKHJH_).mergeFrom(value).buildPartial();
} else {
dLHGOHEKHJH_ = value;
}
onChanged();
} else {
dLHGOHEKHJHBuilder_.mergeFrom(value);
}
return this;
}
/**
* <code>.NFILMAGDNGJ DLHGOHEKHJH = 3;</code>
*/
public Builder clearDLHGOHEKHJH() {
if (dLHGOHEKHJHBuilder_ == null) {
dLHGOHEKHJH_ = null;
onChanged();
} else {
dLHGOHEKHJH_ = null;
dLHGOHEKHJHBuilder_ = null;
}
return this;
}
/**
* <code>.NFILMAGDNGJ DLHGOHEKHJH = 3;</code>
*/
public io.grasscutter.net.proto.activity.NFILMAGDNGJ.Builder getDLHGOHEKHJHBuilder() {
onChanged();
return getDLHGOHEKHJHFieldBuilder().getBuilder();
}
/**
* <code>.NFILMAGDNGJ DLHGOHEKHJH = 3;</code>
*/
public io.grasscutter.net.proto.activity.NFILMAGDNGJOrBuilder getDLHGOHEKHJHOrBuilder() {
if (dLHGOHEKHJHBuilder_ != null) {
return dLHGOHEKHJHBuilder_.getMessageOrBuilder();
} else {
return dLHGOHEKHJH_ == null ?
io.grasscutter.net.proto.activity.NFILMAGDNGJ.getDefaultInstance() : dLHGOHEKHJH_;
}
}
/**
* <code>.NFILMAGDNGJ DLHGOHEKHJH = 3;</code>
*/
private com.google.protobuf.SingleFieldBuilderV3<
io.grasscutter.net.proto.activity.NFILMAGDNGJ, io.grasscutter.net.proto.activity.NFILMAGDNGJ.Builder, io.grasscutter.net.proto.activity.NFILMAGDNGJOrBuilder>
getDLHGOHEKHJHFieldBuilder() {
if (dLHGOHEKHJHBuilder_ == null) {
dLHGOHEKHJHBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
io.grasscutter.net.proto.activity.NFILMAGDNGJ, io.grasscutter.net.proto.activity.NFILMAGDNGJ.Builder, io.grasscutter.net.proto.activity.NFILMAGDNGJOrBuilder>(
getDLHGOHEKHJH(),
getParentForChildren(),
isClean());
dLHGOHEKHJH_ = null;
}
return dLHGOHEKHJHBuilder_;
}
@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:ABLLEIKOKBN)
}
// @@protoc_insertion_point(class_scope:ABLLEIKOKBN)
private static final io.grasscutter.net.proto.activity.ABLLEIKOKBN DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new io.grasscutter.net.proto.activity.ABLLEIKOKBN();
}
public static io.grasscutter.net.proto.activity.ABLLEIKOKBN getDefaultInstance() {
return DEFAULT_INSTANCE;
}
private static final com.google.protobuf.Parser<ABLLEIKOKBN>
PARSER = new com.google.protobuf.AbstractParser<ABLLEIKOKBN>() {
@java.lang.Override
public ABLLEIKOKBN parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new ABLLEIKOKBN(input, extensionRegistry);
}
};
public static com.google.protobuf.Parser<ABLLEIKOKBN> parser() {
return PARSER;
}
@java.lang.Override
public com.google.protobuf.Parser<ABLLEIKOKBN> getParserForType() {
return PARSER;
}
@java.lang.Override
public io.grasscutter.net.proto.activity.ABLLEIKOKBN getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}

View File

@ -0,0 +1,54 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: activity.proto
package io.grasscutter.net.proto.activity;
public interface ABLLEIKOKBNOrBuilder extends
// @@protoc_insertion_point(interface_extends:ABLLEIKOKBN)
com.google.protobuf.MessageOrBuilder {
/**
* <code>.HDPFODICAAN KGKEDKPMDPL = 6;</code>
* @return Whether the kGKEDKPMDPL field is set.
*/
boolean hasKGKEDKPMDPL();
/**
* <code>.HDPFODICAAN KGKEDKPMDPL = 6;</code>
* @return The kGKEDKPMDPL.
*/
io.grasscutter.net.proto.activity.HDPFODICAAN getKGKEDKPMDPL();
/**
* <code>.HDPFODICAAN KGKEDKPMDPL = 6;</code>
*/
io.grasscutter.net.proto.activity.HDPFODICAANOrBuilder getKGKEDKPMDPLOrBuilder();
/**
* <code>.CLINDENDFKL ADOFOOABKFO = 10;</code>
* @return Whether the aDOFOOABKFO field is set.
*/
boolean hasADOFOOABKFO();
/**
* <code>.CLINDENDFKL ADOFOOABKFO = 10;</code>
* @return The aDOFOOABKFO.
*/
io.grasscutter.net.proto.activity.CLINDENDFKL getADOFOOABKFO();
/**
* <code>.CLINDENDFKL ADOFOOABKFO = 10;</code>
*/
io.grasscutter.net.proto.activity.CLINDENDFKLOrBuilder getADOFOOABKFOOrBuilder();
/**
* <code>.NFILMAGDNGJ DLHGOHEKHJH = 3;</code>
* @return Whether the dLHGOHEKHJH field is set.
*/
boolean hasDLHGOHEKHJH();
/**
* <code>.NFILMAGDNGJ DLHGOHEKHJH = 3;</code>
* @return The dLHGOHEKHJH.
*/
io.grasscutter.net.proto.activity.NFILMAGDNGJ getDLHGOHEKHJH();
/**
* <code>.NFILMAGDNGJ DLHGOHEKHJH = 3;</code>
*/
io.grasscutter.net.proto.activity.NFILMAGDNGJOrBuilder getDLHGOHEKHJHOrBuilder();
}

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More