Skip to main content

A Pythonic wrapper for Valheim Save Tools - manipulate Valheim save files programmatically

Project description

Valheim Save Tools Python API

Python 3.8+ License: MIT Documentation

A Pythonic wrapper for Valheim Save Tools, providing an intuitive API to manipulate Valheim save files programmatically.

Features

File Conversion - Convert between binary formats (.db, .fwl, .fch) and JSON
Item Parsing - Parse and read Valheim inventory/item data from base64
Global Keys Management - Add, remove, or list global keys (boss defeats, events)
Structure Cleaning - Remove abandoned structures with configurable thresholds
World Reset - Reset world to initial state while preserving progress
Method Chaining - Fluent API for complex operations
Context Manager - Automatic cleanup and resource management

Installation

pip install valheim-save-tools-py

Quick Start

from valheim_save_tools_py import ValheimSaveTools

vst = ValheimSaveTools()

# Convert to JSON and get data
data = vst.to_json("world.db")
print(f"World version: {data['version']}")

# Add boss defeat
vst.add_global_key("world.db", "defeated_eikthyr")

# Clean and reset with method chaining
vst.process("world.db") \
   .clean_structures(threshold=30) \
   .reset_world() \
   .save("cleaned_world.db")

# Context manager for automatic cleanup
with vst.process("world.db") as p:
    p.clean_structures()
    p.reset_world()

Documentation

Common Use Cases

Convert Save Files

# Binary to JSON - returns parsed data
data = vst.to_json("world.db")
print(f"World has {len(data.get('globalKeys', []))} global keys")

# Also save to file
data = vst.to_json("world.db", "backup.json")

# JSON to Binary
vst.from_json("backup.json", "world.db")

Manage Boss Defeats

# List all global keys
keys = vst.list_global_keys("world.db")

# Add boss defeats
vst.add_global_key("world.db", "defeated_eikthyr")
vst.add_global_key("world.db", "defeated_gdking")

Clean Structures

# Clean with default threshold (25)
vst.clean_structures("world.db")

# Clean with custom threshold
vst.clean_structures("world.db", threshold=50)

Parse Inventory Items

from valheim_save_tools_py import parse_items_from_base64

# Parse base64-encoded inventory data
base64_data = "AQAAAAIAAAAKQXhlQnJvbnpl..."  # From save file
items = parse_items_from_base64(base64_data)

# Access item information
for item in items:
    print(f"Item: {item['name']}")
    print(f"Stack: {item['stack']}")
    print(f"Durability: {item['durability']}")
    print(f"Quality: {item['quality']}")
    print(f"Equipped: {item['equipped']}")

Use File-Like Objects

from io import BytesIO

# Process files in memory without disk I/O
with open("world.db", "rb") as f:
    db_data = BytesIO(f.read())

# Convert to JSON
json_output = BytesIO()
data = vst.to_json(db_data, json_output)

# Modify in-place
db_data.seek(0)
vst.add_global_key(db_data, "defeated_eikthyr")

# Save back to file
with open("world_modified.db", "wb") as f:
    db_data.seek(0)
    f.write(db_data.read())

Benefits:

  • Process files in memory without disk I/O
  • Better integration with web frameworks
  • Easier testing with mock data
  • Work with network streams or uploaded files

Requirements

  • Python 3.8 or higher
  • Java 17 or higher (for running the bundled JAR)

License

This project is licensed under the MIT License - see the LICENSE file for details.

Credits

This is a Python wrapper for Valheim Save Tools by kakoen. Big shout-out for creating such a cool tool 🙏.

I encourage you to contribute to the Valheim Save Tools project!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

valheim_save_tools_py-0.4.1.tar.gz (2.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

valheim_save_tools_py-0.4.1-py3-none-any.whl (2.3 MB view details)

Uploaded Python 3

File details

Details for the file valheim_save_tools_py-0.4.1.tar.gz.

File metadata

  • Download URL: valheim_save_tools_py-0.4.1.tar.gz
  • Upload date:
  • Size: 2.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for valheim_save_tools_py-0.4.1.tar.gz
Algorithm Hash digest
SHA256 3ba94d2aad5a65425758301fedf51ddd0f6fc36ffd47cba37df4eb2220a40462
MD5 42bca9f71172fa695125357aebd57ca7
BLAKE2b-256 7f5cedfeda413abc939ecd17ad080b1357469c0ddf5f65b346acc3afabee455d

See more details on using hashes here.

File details

Details for the file valheim_save_tools_py-0.4.1-py3-none-any.whl.

File metadata

File hashes

Hashes for valheim_save_tools_py-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c555ee921e89c85ead851a17fda9d5c6a321bc0779e747aea922d931184fccfb
MD5 1373c8e6026d70d0e759ed23373a1246
BLAKE2b-256 9988c652232abe624214e2a7848ec954f1259eff70b0246f6de151a7c213d902

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page