# Project Essentials Warps

## How to Install

For start the modification, you **need installed Forge**, it is desirable that the version matches the supported versions. You can download Forge 1.14.4 from the [link](https://files.minecraftforge.net/maven/net/minecraftforge/forge/index_1.14.4.html) and Forge 1.15.2 from it [link](https://files.minecraftforge.net/maven/net/minecraftforge/forge/index_1.15.2.html). Move the downloaded mod to the `mods` folder (*installation example below*).

```
val MV = valueOf(your_minecraft_version)

.
├── assets
├── config
├── libraries
├── mods (that's how it should be)
│   ├── Project Essentials Core-MOD-1.MV.X-1.X.X.jar (mandatory)
│   ├── Project Essentials Cooldown-1.MV.X-1.X.X.jar (recommended)
│   ├── Project Essentials Permissions-1.MV.X-1.X.X.jar (recommended)
│   └── Project Essentials Warps-1.MV.X-1.X.X.jar
└── ...
```

### **Dependencies**

Also **do not forget** to install dependencies, only two types of dependencies: **mandatory** (*game will not start without a mod*) and **recommended** (*without a mod, game can start, but I recommend using it*).

#### **Download dependencies**: [Cooldown](https://github.com/ProjectEssentials/ProjectEssentials-Cooldown) · [Core](https://github.com/ProjectEssentials/ProjectEssentials-Core) · [Permissions](https://github.com/ProjectEssentials/ProjectEssentials-Permissions)

### Last step

Now try to start the game, go to the `mods` tab, if this modification is displayed in the `mods` tab, then the mod has been **successfully installed.**

## **Configuration**

### **Configuration location**

```
.minecraft/config/ProjectEssentials/warps.json
```

### **Default configuration**

```javascript
{
    "addResistanceEffect": true,
    "resistanceEffectDuration": 200,
    "enableTeleportSound": true,
    "enableTeleportEffect": true,
    "warps": []
}
```

### Configuration description

#### Base configuration

| Name                       | Type      | Description                                                                                                                              |
| -------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `addResistanceEffect`      | `Boolean` | If value `true`, then after teleport to any warp, you'll get resistance effect. Basically it needed for protecting player from griefing. |
| `resistanceEffectDuration` | `Int`     | Make influence on resistance effect duration. (value accepts **NOT AS SECONDS**, in minecraft ticks)                                     |
| `enableTeleportSound`      | `Boolean` | If value `true`, then after teleport to any warp, you'll hear teleport sound.                                                            |
| `enableTeleportEffect`     | `Boolean` | If value `true`, then after teleport to any warp, you'll see teleport effect (portal effect, like enderman teleporting effect).          |
| `warps`                    | `Warps`   | *See: `Warps` model configuration.*                                                                                                      |

#### `Warps` model configuration

| Name          | Type     | Description                     |
| ------------- | -------- | ------------------------------- |
| `name`        | `String` | Warp name.                      |
| `clientWorld` | `String` | Client world name.              |
| `owner`       | `String` | Warp creator nickname.          |
| `worldId`     | `Int`    | Minecraft world id.             |
| `xPos`        | `Int`    | Warp position by `X` axis.      |
| `yPos`        | `Int`    | Warp position by `Y` axis.      |
| `zPos`        | `Int`    | Warp position by `Z` axis.      |
| `yaw`         | `Float`  | Player camera rotation `yaw`.   |
| `pitch`       | `Float`  | Player camera rotation `pitch`. |

### Configuration example

{% hint style="warning" %}
It just for example, for understanding configuration structure.
{% endhint %}

```javascript
{
    "addResistanceEffect": true,
    "resistanceEffectDuration": 200,
    "enableTeleportSound": true,
    "enableTeleportEffect": true,
    "warps": [
        {
            "name": "MyWarp",
            "clientWorld": "New World",
            "owner": "MairwunNx",
            "worldId": 0,
            "xPos": 1094,
            "yPos": 91,
            "zPos": 520,
            "yaw": 178.35184,
            "pitch": 43.199905
        },
        {
            "name": "MyWarp1",
            "clientWorld": "New World",
            "owner": "MairwunNx",
            "worldId": 0,
            "xPos": 1093,
            "yPos": 91,
            "zPos": 520,
            "yaw": 265.3518,
            "pitch": 4.6499176
        }
    ]
}
```

## Commands and permissions

| Command                | Permission        | Op level | Description                                                                       |
| ---------------------- | ----------------- | -------- | --------------------------------------------------------------------------------- |
| `/warp [warp name]`    | `ess.warp`        | `0`      | Base command of warps module; just teleport you to target warp point.             |
| `/setwarp [warp name]` | `ess.warp.set`    | `0`      | Create new warp point at player position and now it warp point owned only by you. |
| `/delwarp [warp name]` | `ess.warp.remove` | `0`      | Remove warp point if warp point created by you.                                   |

## If you have any questions or encounter a problem, be sure to open an [issue](https://github.com/ProjectEssentials/ProjectEssentials-Warps/issues/new/choose)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mairwunnx.gitbook.io/project-essentials/project-essentials-warps.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
