ValheimEssentials
FTB Essentials for Valheim - /home, /sethome, /back, /tpa, /tpaccept, /rtp commands via chat. No cooldowns, no warmup. Built for private servers.ValheimEssentials
A Valheim mod inspired by FTB Essentials (Minecraft) that adds teleportation commands via in-game chat. Built for private servers with friends — no warmup timers, no cooldowns, no permissions.
Features
- Named Homes — Save, teleport to, and manage multiple named locations
- Back — Return to your last position before any teleport or death
- TPA — Request teleport to another online player
- RTP — Random teleport to a safe land location anywhere in the world
Commands
| Command | Description |
|---|---|
/sethome <name> |
Save your current position as a named home |
/home <name> |
Teleport to a saved home |
/delhome <name> |
Delete a saved home |
/homes |
List all your saved homes with count |
/back |
Return to your last position (before teleport or death) |
/tpa <player> |
Request teleport to another player (partial name match supported) |
/tpaccept |
Accept an incoming teleport request |
/rtp |
Random teleport to a safe location |
How It Works
Chat Commands
All commands are typed in the regular in-game chat (not the console). Commands starting with / are intercepted and never appear as chat messages to other players. Normal chat messages pass through unaffected.
Homes System
- Each player can save up to 5 homes (configurable)
- Home names are case-insensitive (
/home Base=/home base) - Homes are saved per-world in a text file at
BepInEx/config/ValheimEssentials/homes_<worldname>.txt - Each player's homes are stored on their own PC, identified by their Steam ID
- Homes persist across server restarts
Back System
- Position is automatically saved before every teleport (
/home,/tpa,/rtp) - Position is also saved when you die —
/backtakes you to your death location - Shows context-aware messages: "Teleported to death location!" vs "Teleported to previous position!"
- Two consecutive
/backcommands will swap between two positions
TPA (Teleport to Player)
- Player A types
/tpa PlayerB→ Player B receives the request in chat - Player B types
/tpaccept→ Player A teleports to Player B - Requests auto-expire after 60 seconds (both players are notified)
- Partial name matching:
/tpa Jofinds "JoJo" if it's a unique match - Multiple matches show a disambiguation message
- Self-TPA is blocked
- Only one pending request per player at a time
- Works in both P2P (host) and dedicated server modes via ZRoutedRpc
RTP (Random Teleport)
- Teleports to a random safe land position within a configurable radius
- Uses
WorldGeneratorto validate terrain even in unloaded chunks - Avoids ocean biome and positions below water level
- Shows "Searching for safe position..." while looking
- Uses
distantTeleportflag to handle unloaded zones smoothly - Range defaults: 1000-8000 blocks from player position
Installation
Requirements
- BepInEx 5.x installed in your Valheim folder
- .NET Framework 4.6.2 SDK (for building from source)
From Release
- Download
ValheimEssentials.dllfrom Releases - Place it in
Valheim/BepInEx/plugins/ValheimEssentials/ - Start the game
Building from Source
- Clone the repository
- Update
ValheimDirinValheimEssentials.csprojto point to your Valheim installation - Run
dotnet build - The DLL is automatically copied to
BepInEx/plugins/ValheimEssentials/
Important: All players on the server need the mod installed, not just the host.
Configuration
Configuration is managed via BepInEx config at BepInEx/config/com.jojo.valheimessentials.cfg.
| Setting | Default | Description |
|---|---|---|
General/CommandPrefix |
/ |
Chat command prefix |
RTP/MinRange |
1000 |
Minimum RTP distance from player |
RTP/MaxRange |
8000 |
Maximum RTP distance from player |
RTP/CooldownSeconds |
0 |
RTP cooldown (0 = disabled) |
Home/CooldownSeconds |
0 |
Home teleport cooldown (0 = disabled) |
Home/MaxHomes |
5 |
Maximum homes per player |
Back/CooldownSeconds |
0 |
Back teleport cooldown (0 = disabled) |
Technical Details
- Mod Loader: BepInEx 5.x
- Framework: .NET Framework 4.6.2
- Harmony Patches: Single prefix on
Chat.InputTextfor command interception - Networking: ZRoutedRpc for cross-client TPA communication
- Persistence: Pipe-delimited flat files, atomic writes (temp + rename)
- Player Identity: Steam ID (
Player.GetPlayerID()) — safe against name changes - Language: All in-game messages are in Portuguese (PT-BR)
Project Structure
ValheimEssentials/
├── Plugin.cs # BepInEx entry point, configuration
├── CommandRouter.cs # Chat interception, command dispatch, Harmony patches
├── FeedbackHelper.cs # PT-BR chat message utility
├── HomeManager.cs # Home CRUD + file persistence
├── BackManager.cs # Position tracking (teleport & death)
├── TeleportHelper.cs # Teleport wrapper (saves /back position)
├── TpaManager.cs # TPA request state management
├── RpcChannels.cs # ZRoutedRpc networking for TPA
├── RtpManager.cs # Random safe position finder
└── ValheimEssentials.csproj
License
This project is provided as-is for private use. Feel free to modify and share with friends.
