# Configuration Source: https://tehoclient.dev/owners/configuration SDK: 1.0.0 `plugins/TehoAPI/config.yml` is written on first start with every feature on and every preset off. Edit it and run `/tehoapi reload`; you do not need to restart. Fabric, NeoForge and Sponge use the same keys in JSON, as described in [Other platforms](https://tehoclient.dev/install/other-platforms#fabric-and-neoforge). ## Identity ```yaml server-name: "Skyline" debug: false ``` | Key | What it does | |---|---| | `server-name` | The label players see on every toast, screen, lock and keybind from your server. Set it; it is how players tell your server apart from Teho itself. | | `debug` | Logs every frame in both directions. Leave it off in production. | ## Features Each switch turns one capability off server-wide. A switched-off feature is never offered in `Welcome`, and sends for it return `false`. ```yaml features: notifications: true waypoints: true modules: true staff: true hud: true suspect: true world: true players: true keybinds: true camera: true audio: true social: true ui: true info: true identity: true integrity: true pack: true clips: true broadcast: true assets: true npcs: true statues: true branding: true showcase: true ``` ## Welcome toast and death waypoint ```yaml welcome: enabled: true title: "&bWelcome, {player}" body: "This server supports Teho" death-waypoint: true ``` `{player}` is replaced with the player's name and `&` colour codes work. With `death-waypoint` on, every Teho player who dies gets a red "Last death" waypoint at the spot. ## Rules Rules follow the world the player is in. `global` applies everywhere, and each entry under `worlds` builds on it. ```yaml rules: global: disable: [hitbox] disable-categories: [] caps: - {module: zoom, key: factor, max: 4} worlds: arena: competitive: true allow: [fps_display, keystrokes, cps_counter, ping, armor_status] reason: "Ranked arena" ``` | Key | What it does | |---|---| | `disable` | Module ids to turn off. See the [module id list](https://tehoclient.dev/modules/rules#module-ids). | | `disable-categories` | Whole categories: `HUD`, `COMBAT`, `VISUAL`, `QOL`, `CLIENT`. | | `caps` | Per-setting limits: `{module, key, min, max}` for a range, or `{module, key, value}` to pin a value. | | `competitive` | Turns off every module except those listed in `allow`. | | `reason` | Shown on every lock in the player's mods panel. | ```yaml combat: legacy-pvp: true ``` `legacy-pvp` sends the 1.8 combat feel to modern clients: old swing animation, block-hit visuals, no hit-delay visual and the legacy red hit colour. See [Module rules](https://tehoclient.dev/modules/rules#combat-feel). ## Staff tools Grants are given by permission when a player joins. Each moderator accepts them once per server. ```yaml staff: reason: "Staff tools" radius: 48 xray-blocks: - "minecraft:diamond_ore #5FE0DC" - "minecraft:ancient_debris #B07CFF" - "minecraft:spawner #FF5555" grants: - permission: tehoapi.staff.xray tools: [xray, storage_esp] - permission: tehoapi.staff.esp tools: [player_esp, nametags, entity_esp, tracers, highlights, trails] - permission: tehoapi.staff.freecam tools: [freecam, spectate] - permission: tehoapi.staff.moderate tools: [inspector, action_wheel, alerts, click_teleport, combat_overlay] - permission: tehoapi.staff.admin tools: [lag_map, fullbright] storage-blocks: [] entity-types: [] inspector: true combat-overlay: true trail-seconds: 300 freeze: title: "&bYou are frozen" body: "Do not log out. A staff member will speak to you." ``` | Key | What it does | |---|---| | `reason` | Shown in the consent prompt. | | `radius` | How far, in blocks, X-Ray and storage ESP scan around the moderator. | | `xray-blocks`, `storage-blocks`, `entity-types` | `" #RRGGBB"` entries. Empty lists use Teho's defaults. | | `grants` | Maps a permission to a list of [tool ids](https://tehoclient.dev/modules/staff#tools). | | `inspector`, `combat-overlay` | Turn the built-in inspector cards and combat stats on or off. | | `trail-seconds` | How much movement history is kept per player, at one point per second. | | `freeze` | The text on the suspect's full-screen freeze overlay. | ### Action wheel ```yaml staff: action-wheel: title: "Staff" actions: - {id: freeze, label: "Freeze", item: ice, target: player, builtin: freeze} - {id: spectate, label: "Spectate", item: ender_eye, target: player, builtin: spectate} - {id: invsee, label: "Inventory", item: chest, target: player, builtin: invsee} - {id: lagmap, label: "Lag map", item: hopper, target: none, builtin: lagmap} - {id: ban, label: "Ban", item: barrier, target: player, command: "ban {target} Cheating", as: staff} ``` Built-in actions are `freeze`, `spectate`, `teleport`, `invsee`, `screenshot`, `modlist`, `trail` and `lagmap`. Anything else runs `command`, with `{target}`, `{uuid}` and `{staff}` replaced, as the moderator (`as: staff`) or otherwise as the console. ## NPCs and private features ```yaml private: grant: "" npcs: - uuid: "1f5c2b3a-0000-2000-8000-000000000001" look: [cape:founder_cape, wings:founder_wings] emote: wave loop: true ``` These only work with a private grant from Teho. See [Private modules](https://tehoclient.dev/modules/private). ## Backend and verification ```yaml backend: url: "" key: "" verified: certificate: "" ``` | Key | What it does | |---|---| | `backend.url`, `backend.key` | The Teho backend and your `tsk_` server key. Needed for rewards and the verified-server certificate. Keep the key out of version control. | | `verified.certificate` | A certificate set by hand. When empty, it is fetched with your key. | ## Presence, links and packs ```yaml presence: game: "Skyline" state: "In the lobby" links: Discord: "https://discord.gg/skyline" Store: "https://store.skyline.gg" resource-pack: url: "https://cdn.skyline.gg/pack.zip" sha1: "0123456789abcdef0123456789abcdef01234567" required: false ``` | Key | What it does | |---|---| | `presence` | Rich presence shown in Discord and the Teho friends list. | | `links` | Up to three buttons in the pause menu. They open behind vanilla's link confirmation. | | `resource-pack` | Tells Teho to prefetch your pack before the join. See [Resource packs](https://tehoclient.dev/modules/packs). | ## Proxy ```yaml proxy: secret: "" ``` Set this to the same 16+ character secret as your proxy plugin. Leave it empty on standalone servers. See [Networks & proxies](https://tehoclient.dev/install/networks).