# Technical Documentation: Grasscutters/Grasscutter

> ℹ️ **Provenance:** Multi-Tier Ingestion · [CodeWiki Reference](https://codewiki.google/github.com/Grasscutters/Grasscutter)

### Overview (`README.md`)

<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) | [简中](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).

## Current 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)

## Foreward

### **Grasscutter beyond the latest release will have no handholding in terms of instructions.**

Grasscutter has not been actively maintained and currently (as of January 12th, 2025) only works up to version REL4.0.1 (introduction to Fontaine). If you have a beta version/unofficial version of Grasscutter, this guide should theoretically still work, however, we will not provide official support these versions. You can still try your luck in the Discord if you are stuck, but please don't act entitled.

## Quick setup guide

**Note**: For support please join our [Discord](https://discord.gg/T5vZU6UyeG).

### Quick Start (automatic)

- Get [Java 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
- Get [MongoDB Community Server](https://www.mongodb.com/try/download/community)
- Get game version REL4.0.x (If you don't have a 4.0.x client, you can find it here and open any of the links to download it):
[4.0.x Client-github](https://github.com/JRSKelvin/GenshinRepository/blob/main/Version%204.0.0.md)
[4.0.x Client-cloud drive](https://www.123pan.com/s/HoqUVv-U7SBA.html)
- ***UPDATE JAN 12, 2025: YOU CANNOT MIX AND MATCH GAME VERSIONS AND SERVER VERSIONS, PLEASE DOWNLOAD THE CORRECT VERSION OF GRASSCUTTER FOR YOUR VERSION OF THE GAME.***

- 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-17\bin\java.exe`
- Leave all other settings on default

- Click the small button next to launch.
- Click the launch button.
- Log in with whatever username you want. Password can be anything.

### Building

Grasscutter uses Gradle to handle dependencies & building.

**Requirements:**

- [Java Development Kit 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html) or higher
- [Git](https://git-scm.com/downloads)
- [NodeJS](https://nodejs.org/en/download) (Optional, for building the handbook)

##### Clone

```shell
git clone --recurse-submodules https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
```

##### Compile

**Note**: Handbook generation may fail on some systems. To disable the handbook generation, append `-PskipHandbook=1` to the `gradlew jar` command.

Windows:

```shell
.\gradlew.bat # Setting up environments
.\gradlew jar
```

Linux (GNU):

```bash
chmod +x gradlew
./gradlew jar
```

##### Compiling the Handbook (Manually)

With Gradle:

```shell
./gradlew generateHandbook
```

With NPM:

```shell
cd src/handbook
npm install
npm run build
```

You can find the output jar in the root of the project folder.

### Troubleshooting 

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.

---

### Overview (`docs/quests/README.md`)

# 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)

---

### Overview (`docs/events/windtrace/README.md`)

# 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: 
- `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: 
- **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: 
- **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: 
- **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: 
- **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. 
  - 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)

---

### Overview (`src/handbook/data/README.md`)

# Handbook Data
Use Grasscutter's dumpers to generate the data to put here.

# Generating Data

When you have Grasscutter set up, you can use the following commands to generate the data:
- Commands - `grasscutter.jar -dump=commands,en-us`
- Items - `grasscutter.jar -dump=items,EN`
- Avatars - `grasscutter.jar -dump=avatars,EN`
- Quests - `grasscutter.jar -dump=quests,EN`
- Entities - `grasscutter.jar -dump=entities,en-us`
- Areas - `grasscutter.jar -dump=areas,EN`
- Scenes - `grasscutter.jar -dump=scenes,en-us`

Grasscutter being "set up" means:
- A Java runtime is installed
- Resources are provided in the working directory

## Language Locales

You can replace `en-us` or `EN` using the language locale which matches the format.

| Grasscutter Language Locale | Handbook Language Locale |
|-----------------------------|--------------------------|
| en-us                       | EN                       |


## Files Required
- `mainquests.csv`
- `commands.json`
- `entities.csv`
- `avatars.csv`
- `scenes.csv`
- `quests.csv`
- `items.csv`

# Item Icon Notes
- Artifacts: `https://bbs.hoyolab.com/hoyowiki/picture/reliquary/(name)/(piece)_icon.png`
  - Alternate source: `https://api.ambr.top/assets/UI/reliquary/UI_RelicIcon_(set)_(piece).png`
  - `xxxx4` - `flower_of_life`
  - `xxxx5` - `sands_of_eon`
  - `xxxx3` - `circlet_of_logos`/`plume_of_death`
    - Use `circlet_of_logos` with a complete set
    - Use `plume_of_death` with part of a set.
  - `xxxx2` - `plume_of_death`
  - `xxxx1` - `goblet_of_eonothem`
- Miscellaneous Items: `https://bbs.hoyolab.com/hoyowiki/picture/object/(name)_icon.png`
  - Includes: materials, quest items, food, etc.
  - Alternate source: `https://api.ambr.top/assets/UI/UI_ItemIcon_(id).png`
- Avatars/Avatar Items: `https://bbs.hoyolab.com/hoyowiki/picture/character/(name)_icon.png`
  - Avatar Items are between ranges `1001` and `1099`.
- Weapons: `https://api.ambr.top/assets/UI/UI_EquipIcon_(type)_(name).png`
- Furniture: `https://api.ambr.top/assets/UI/furniture/UI_Homeworld_(location)_(name).png`
- Monsters: `https://api.ambr.top/assets/UI/monster/UI_MonsterIcon_(type)_(variant).png`

# Credits
- [`...List.json` files](https://raw.githubusercontent.com/Dituon/grasscutter-command-helper/main/data/en-US) - Grasscutter Command Helper
- [Internal Asset API](https://ambr.top) - Project Amber

---

### Overview (`src/main/java/emu/grasscutter/game/managers/stamina/README.md`)

# Stamina Manager

---

## UpdateStamina

```java
// will use consumption.consumptionType as reason
public int updateStaminaRelative(GameSession session, Consumption consumption);
```

```java
public int updateStaminaAbsolute(GameSession session, String reason, int newStamina)
```

---

## Pause and Resume

```java
public void startSustainedStaminaHandler()
```

```java
public void stopSustainedStaminaHandler()
```

---

## Stamina change listeners and intercepting

### BeforeUpdateStaminaListener

```java

import emu.grasscutter.game.managers.StaminaManager.BeforeUpdateStaminaListener;

// Listener sample: plugin disable CLIMB_JUMP stamina cost.
private class MyClass implements BeforeUpdateStaminaListener {
    // Make your class implement the listener, and pass in your class as a listener.

    public MyClass() {
        getStaminaManager().registerBeforeUpdateStaminaListener("myClass", this);
    }

    @Override
    public boolean onBeforeUpdateStamina(String reason, int newStamina) {
        // do not intercept this update
        return false;
    }

    @Override
    public boolean onBeforeUpdateStamina(String reason, Consumption consumption) {
        // Try to intercept if this update is CLIMB_JUMP
        return consumption.consumptionType == ConsumptionType.CLIMB_JUMP;
        // If it is not CLIMB_JUMP, do not intercept.
    }
}
```

### AfterUpdateStaminaListener

```java

import emu.grasscutter.game.managers.StaminaManager.AfterUpdateStaminaListener;

// Listener sample: plugin listens for changes already made.
private class MyClass implements AfterUpdateStaminaListener {
    // Make your class implement the listener, and pass in your class as a listener.

    public MyClass() {
        registerAfterUpdateStaminaListener("myClass", this);
    }

    @Override
    public void onAfterUpdateStamina(String reason, int newStamina) {
        // ...
    }
}
```

---

### README HE (`docs/README_HE.md`)

<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)

**תשומת לב בבקשה:** אנחנו מקבלים עזרה בפיתוח התוכנה. לפני שאתם תורמים לפרויקט בבקשה תקראו את [תנאי השימוש](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md).

## אפשרויות זמינות כרגע

* כניסה למשחק ומשתמש
* לחימה
* רשימת חברים
* טלפורטים ברחבי המפה
* מערכת הווישים להשגת דמויות
* קו-אופ (אפשרות לשחק עם חברים) *חלקית* עובדת
* זימון אויבים באמצעות פקודות
* אפשרויות של מלאי ציוד במשחק (קבלת נשקים/דמויות, שדרוג נשקים/דמויות וכו'

## הוראות הפעלה בסיסיות

**חשוב מאוד:** בשביל לקבל תמיכה תכנסו לשרת [הדיסקורד](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 ומעלה)

* Proxy daemon: mitmproxy (mitmdump מומלץ), Fiddler Classic, וכו'.

### הפעלה עצמה

**הערה חשובה:** אם אתם מעדכנים את השרת מגרסה ישנה אז תמחקו את הקובץ `config.json` בשביל ליצור אותו מחדש מעודכן

1. להשיג `grasscutter.jar`
   - להוריד אחד מוכן מתוך [מוכנים](https://github.com/Grasscutters/Grasscutter/suites/6895963598/artifacts/267483297)
   - [לבנות אחד בעצמך](#בנייה)

2. תצרו תיקייה בשם `resources` בתוך התיקייה איפה שהקובץ grasscutter.jar נמצא ותעבירו את התיקיות `BinOutput` ו- `ExcelBinOutput` לשם *(תקראו את [המדריך המלא](https://github.com/Grasscutters/Grasscutter/wiki) בשביל לקבל יותר מידע לגבי אלה.)*

3. תריצו את השרת בעזרת פקודה `java -jar grasscutter.jar`. **תדאגו שהשירות mongodb פועל באותו הזמן ברקע**


### התחברות עם המשחק

½. תצרו משתמש משחק על ידי שימוש ב[פקודות השרת](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting).

1. תעבירו את הניתוב: (תבחרו אחת מהדרכים)
    - שימוש בmitmdump: פקודת `mitmdump -s proxy.py -k` בשורת פקודה

    אישור שימוש החוזה שלהם:

   ​ **הערה חשובה:** החוזה בדרך כלל נמצא בתוך התיקייה `%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, תפעילו את ההגדרה `Decrypt https traffic` בהגדרות ותשנו את הפורט ברירת מחדל לכל מספר שהוא לא `8888`, ותפעילו את [הסקריפט הזה](https://github.lunatic.moe/fiddlerscript).



   -עריכת [קובץ הHosts](https://github.com/Grasscutters/Grasscutter/wiki/Running#traffic-route-map)

2. תשנו את שרת בproxy שלכם ל`127.0.0.1:8080`

**אתם יכולים גם להשתמש בקובץ `start.cmd` בשביל להפעיל את כל השרתים באופן אוטומטי אבל תצטרכו להגדיר JAVA_HOME בסביבות המחדל במערכת באופן ידני**


### בנייה
התוכנה משתמשת ב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 # בנייה עצמה
```

אתם יכולים למצוא את קובץ התוצר הסופי grasscutter.jar באותה התיקייה שבו עשיתם את הכל

### הפקודות הועברו ל[ויקיפדיה שלנו](https://github.com/Grasscutters/Grasscutter/wiki/Commands)!

# פתרון בעיות מהיר:

* אם בניית השרת לא הצליחה, תבדקו את מיקום ההתקנה של JDK שלכם (JDK 17 והPATH של הJDK בסביבות המשתנים במערכת)
* המשחק לא מתחבר לי לשרת, לא נכנס למשתמש, 4206, וכו'... - לרוב המקרים התקנת הproxy שלכם היא הבעייתית, אם משתמשים בFiddler אז תדאגו שאתם משתמשים בכל פורט שהוא לא 8888
* סדר ההפעלות: MongoDB, ואז Grasscutter, ואז שרתי הproxy שלכם (mitmpump, fiddler וכו'), ורק אז המשחק עצמו

---

### README NL (`docs/README_NL.md`)

<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/stable/CONTRIBUTING.md) 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.

---

### README Es ES (`docs/README_es-ES.md`)

<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)

**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).

## Funcionalidades actuales

* Iniciar sesión
* Combate
* Lista de amigos
* Teletransportación
* Sistema Gacha
* Cooperativo *parcialmente* funcional
* Invocar monstruos desde la consola
* Funcionalidades de inventario (recibir objetos/personajes, mejorar objetos/personajes, etc)

## Guía rápida de configuración

**Nota:** Para soporte, únete a nuestro [Discord](https://discord.gg/T5vZU6UyeG).

### Requerimientos

* Java SE - 17 ([link](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html))

  **Nota:** Si solo quieres **ejecutarlo**, entonces **jre** es suficiente.

* [MongoDB](https://www.mongodb.com/try/download/community) (recomendado 4.0+)

* Servicio de proxy: mitmproxy (mitmdump, recomendado), Fiddler Classic, etc.

### Ejecución

**Nota:** Si actualizaste de una versión anterior, elimina `config.json` para que se genere de nuevo.

1. Consigue `grasscutter.jar`
   - Descarga desde [actions](https://github.com/Grasscutters/Grasscutter/suites/6895963598/artifacts/267483297)
   - [Constrúyelo tu mismo](#Construcción)
2. Crea una carpeta `resources` en el directorio donde se encuentra grasscutter.jar y mueve las carpetas `BinOutput` y `ExcelBinOutput` ahí *(Consulta la [wiki](https://github.com/Grasscutters/Grasscutter/wiki) para más detalles de como conseguirlos.)*
3. Ejecuta Grasscutter con `java -jar grasscutter.jar`. **Asegúrate de que el servicio de mongodb está activo.**

### Conexión con el cliente

½. Crea una cuenta usando [el comando correspondiente en la consola del servidor](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting).

1. Redirecciona el tráfico: (elegir uno)
    - mitmdump: `mitmdump -s proxy.py -k`

      Autoriza el certificado CA:

      ​	**Nota:**El certificado CA normalmente se encuentra en `%USERPROFILE%\ .mitmproxy`, o puedes descargarlo de `http://mitm.it`

      ​	Doble clic para [instalar](https://docs.microsoft.com/en-us/skype-sdk/sdn/articles/installing-the-trusted-root-certificate#installing-a-trusted-root-certificate) o ...

      - Con línea de comandos

        ```shell
        certutil -addstore root %USERPROFILE%\.mitmproxy\mitmproxy-ca-cert.cer
        ```

    - 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/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.

**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

Grasscutter usa Gradle para manejar dependencias y construcción.

**Requerimientos:**

- [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 # Configuración de entornos
.\gradlew jar # Compilar
```

##### Linux

```bash
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
chmod +x gradlew
./gradlew jar # Compilar
```

Podrás encontrar el jar generado en la carpeta raíz del proyecto.

### ¡Los comandos han sido movidos a la [wiki](https://github.com/Grasscutters/Grasscutter/wiki/Commands)!

# Soluciones a errores comunes

* Si la compilación falla, por favor comprueba tu instalación de JDK (JDK 17 y valida la variable bin PATH del JDK)
* 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
* Secuencia de inicio: MongoDB > Grasscutter > Servicio de proxy (mitmdump, fiddler, etc.) > Juego

---

### README Fil PH (`docs/README_fil-PH.md`)

<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

---

### README Fr FR (`docs/README_fr-FR.md`)

<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.

---

### README Hn IN (`docs/README_hn-IN.md`)

<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) और सपोर्ट चैनल पर जाएं.

---

### README Id ID (`docs/README_id-ID.md`)

<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

---

### README It IT (`docs/README_it-IT.md`)

<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

---

### README Ja JP (`docs/README_ja-JP.md`)

<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)に参加し、サポートチャンネルを参照してください。

---

### README Ko KR (`docs/README_ko-KR.md`)

<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 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 클라이언트를 가지고 있지 않다면, 여기서 찾을 수 있습니다.):
[4.0.x 클라이언트 - GitHub](https://github.com/JRSKelvin/GenshinRepository/blob/main/Version%204.0.0.md)
[4.0.x 클라이언트 - 구글 드라이브브](https://www.123pan.com/s/HoqUVv-U7SBA.html)

- [최신 Cultivation](https://github.com/Grasscutters/Cultivation/releases/latest) 다운로드하세요. `.msi` 설치파일을 사용하면 됩니다.
- (관리자 권한으로) Cultivation을 실행한 후, 우측 상단에 위치한 다운로드 버튼을 클릭하세요.
- `올인원 다운로드`를 클릭하세요.
- 우측 상단에 위치한 톱니바퀴 버튼을 누르세요.
- 게임 설치 경로를 게임이 위치한 경로로 설정하세요.
- 사용자 지정 Java 경로 설정을 `C:\Program Files\Java\jdk-17\bin\java.exe`로 설정하세요.
- 다른 모든 설정은 기본값으로 두세요.

- 게임 시작 버튼 옆에 위치한 작은 버튼을 누르세요.
- 게임 시작 버튼을 누르세요.
- 원하는 사용자 이름으로 로그인하세요. 비밀번호는 무엇이든 가능합니다.

### 빌드하기

Grasscutter는 종속성 및 컴파일 처리를 위해 Gradle을 이용합니다.

**빌드하기 위해 필요한 것들 :**

- [Java SE 개발 키트 - 17](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)
- [Git](https://git-scm.com/downloads)
- [NodeJS](https://nodejs.org/en/download) (선택, 핸드북을 빌드하기 위해 필요함.)

##### 클론
```shell
git clone --recurse-submodules https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
```

##### 컴파일

**각주**: 핸드북 생성은 일부 시스템에서 실패할 수도 있습니다. 핸드북 생성을 비활성화하려면, `gradlew jar`명령에 `-PskipHandbook=1`명령줄 스위치를 추가하세요.


윈도우:

```shell
.\gradlew.bat # 환경 준비
.\gradlew jar
```

리눅스 (GNU):

```bash
chmod +x gradlew
./gradlew jar
```

##### 핸드북 컴파일 (수동동)

Gradle 사용:

```shell
./gradlew generateHandbook
```

NPM 사용:

```shell
cd src/handbook
npm install
npm run build
```

프로젝트 폴더의 최상단에서 jar 파일을 찾을 수 있습니다.

### 문제 해결
흔한 문제들의 해결방법과 도움을 요청하려면, [우리의 디스코드 서버](https://discord.gg/T5vZU6UyeG)에 참가하고 support 채널에 가보세요.

---

### README Pl PL (`docs/README_pl-PL.md`)

<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

---

### README Ru RU (`docs/README_ru-RU.md`)

<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)

**Внимание:** Мы всегда рады новому вкладу в проект. Однако, перед тем, как сделать свой вклад, пожалуйста, прочтите наш [кодекс делового поведения](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md).

## Реализованные функции

* Авторизация
* Система боя
* Список друзей
* Телепортация
* Гача-система
* Кооп *работает частично*
* Спавн монстров через консоль
* Функции инвентаря (получение предметов/персонажей, улучшение предметов/персонажей, и т.п.)

## Краткое руководство по установке

**Заметка:** Если вам требуется помощь, присоединитесь к нашему серверу [Discord](https://discord.gg/T5vZU6UyeG) (На Английском).

### Зависимости

* Java SE - 17 ([link](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html))

  **Заметка:** Для того, чтобы просто **запустить сервер**, достаточно только **jre**.

* [MongoDB](https://www.mongodb.com/try/download/community) (рекомендуются версии 4.0+)

* Прокси: mitmdump (рекомендуется), mitmproxy, Fiddler Classic и т.п.

### Запуск

**Заметка:** Для обновления с более старой версии, удалите файл `config.json`, чтобы сгенерировать его заново.

1. Получите файл `grasscutter.jar` одним из следующих способов:
   - Скачайте напрямую со вкладки [Actions](https://github.com/Grasscutters/Grasscutter/suites/6895963598/artifacts/267483297)
   - [Соберите самостоятельно](#Сборка)
2. Создайте папку `resources` в той же директории, что и grasscutter.jar, и переместите туда свои папки `BinOutput` и `ExcelBinOutput` *(Посетите [вики](https://github.com/Grasscutters/Grasscutter/wiki) для получения более подробной информации о том, где их найти.)*
3. Запустите Grasscutter с помощью команды `java -jar grasscutter.jar`. **Убедитесь, что в этот момент запущен сервер mongodb.**

### Соединение с клиентом

½. Создайте аккаунт, введя [соответствующую команду в консоли сервера](https://github.com/Grasscutters/Grasscutter/wiki/Commands#targeting).

1. Перенаправьте трафик: (воспользуйтесь одиним из способов)
    - mitmdump: `mitmdump -s proxy.py -k`

      Доверьтесь сертификату CA:

      ​	**Заметка:** Обычно, сертификат CA хранится в папке `%USERPROFILE%\ .mitmproxy`. Также, вы можете скачать его с `http://mitm.it`

      ​	Дважды нажмите для [установки](https://docs.microsoft.com/ru-ru/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, включите настройку `Decrypt https traffic` в опциях и измените порт по умолчанию (Меню -> Tools -> Options -> Connections) на что-то не равное `8888`, после чего запустите [этот скрипт](https://github.lunatic.moe/fiddlerscript) во вкладке FiddlerSrcipt.

    - [Файл 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 # Setting up environments
.\gradlew jar # Compile
```

##### Linux

```bash
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
chmod +x gradlew
./gradlew jar # Compile
```

Получившийся файл .jar можно найти в корневой папке проекта.

### Команды были перемещены на [вики](https://github.com/Grasscutters/Grasscutter/wiki/Commands)!

# Краткое руководство по решению проблем

* Если скомпилировать не удается, то проверьте установку своего JDK (JDK 17 и валидность переменных JDK, bin, PATH)
* Клиент не подключается, не входит, выдаёт ошибку 4206 и т.д. - Скорее всего, проблема в том, *как именно* вы настроили прокси. При использовании
  Fiddler убедитесь, что он запущен на любом порте, кроме 8888
* Порядок запуска: MongoDB > Grasscutter > Прокси (mitmdump, fiddler и т.д.) > Игра

---

### README Vi VN (`docs/README_vi-VN.md`)

<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

---

### README Zh CN (`docs/README_zh-CN.md`)

<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 17：https://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 # 编译
```

##### Linux（GNU）

```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”频道。

---

### README Zh TW (`docs/README_zh-TW.md`)

<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)

**請注意:** 歡迎成為本專案的貢獻者。在提交 PR 之前, 請仔細閱讀[程式碼規範](https://github.com/Grasscutters/Grasscutter/blob/stable/CONTRIBUTING.md)。

## 當前功能

* 登入
* 戰鬥
* 好友列表
* 傳送系統
* 祈願系統
* 從控制台生成魔物
* 多人遊戲 *部分* 可用
* 物品欄相關 (接收物品/角色, 升級角色/武器等)

## 快速設定指南

**注意:** 如需幫助請加入 [Discord](https://discord.gg/T5vZU6UyeG)

### 快速開始（全自動）

- 下載 Java 17：https://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 客戶端）

- 下載 [最新的 Cultivation 版本](https://github.com/Grasscutters/Cultivation/releases/latest)。使用 `.msi` 安裝程式。
- 以管理員身分打開 Cultivation，按右上角的下載按鈕。
- 點擊 `Download All-in-One`
- 點擊右上角的齒輪
- 將遊戲安裝路徑設置為你的遊戲所在的位置。
- 將自定義 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 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 等) > 客戶端

---

### Quests Missing Scripts (`docs/quests/Missing-Scripts.md`)

## 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

---

### Resources World Locations (`docs/resources/World Locations.txt`)

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

---

### Quests Lines The Outlander Who Caught The Wind (Prologue Act 1) (`docs/quests/lines/The-Outlander-Who-Caught-the-Wind-(Prologue-Act-1).md`)

# 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                                                                                                                                   |                                                                                                                                                                                                                                                                                                                         |

---

--- METRICS ---
- Files Extracted: 23
- Estimated Token Budget: ~35161 tokens
- Canonical Reference: https://codewiki.google/github.com/Grasscutters/Grasscutter
