GithubHelp home page GithubHelp logo

dmarcuse / fvtt-adventure-bundler Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 2.0 135 KB

Export and import Foundry adventures, assets included!

License: MIT License

JavaScript 3.38% TypeScript 96.09% Shell 0.53%
foundry-vtt foundryvtt

fvtt-adventure-bundler's Introduction

Foundry Adventure Bundler

Changelog

Foundry V10 adds support for building adventure documents. This module takes it one step further by adding support for importing and exporting adventures, bundling any custom assets and making it a snap to share your work!

Please note that this is experimental software - it works on a best effort basis, but things may break (particularly if you're using macros to change art).

Installation

You can install the module with the following manifest URL:

https://github.com/dmarcuse/fvtt-adventure-bundler/releases/latest/download/module.json

Guide

The first thing you'll need in order to use this module is a compendium for adventures - which you can create from the compendium sidebar.

Screenshot showing the compendium creation dialog

With the module enabled and an adventure compendium created, you can then import/export adventure bundles!

Exporting

Follow the Foundry documentation on adventure documents to build an adventure. Once it's built, you can right click it in the compendium and select "Bundle and export" to bundle the adventure with its assets and download it:

Screenshot showing the "Bundle and export" button

The module will automatically locate assets (excluding those provided by Foundry, modules, or URLs) and compress them into a zip file. This file can then be imported, potentially on a different world or even Foundry instance.

Importing

When opening an adventure compendium, you'll find a new "Import bundle" button:

Screenshot showing the "Import bundle" button

Simply click the button, select your zip file, and the module will do the rest! Bundled assets will be uploaded to your Foundry instance automatically, so all you need to do is import the adventure once the upload is complete. The directory used for uploading assets can be changed in the module settings.

fvtt-adventure-bundler's People

Contributors

dmarcuse avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

palikhov p4535992

fvtt-adventure-bundler's Issues

Request: Adventures Bundled from forgevtt contain links to the forge server instead of downloading/bundling

If you prepare your adventure on the forge vtt server, the downloaded bundles still contain links to the server, instead of packaging up the assets like they do with local adventures.

For example:
"name":"SJ-DC-DD-04 The Highest Bidder","img":"https://assets.forge-vtt.com/5e8b516891f93735fd1249d1/adventures/SJ-DC-DD-04%20The%20Highest%20Bidder/!Cover.webp"

This would be a nice addition, to download those and include them in the assets.

Some assets from D&D Beyond are similar, the user may or may not want those assets downloaded as well, so perhaps an option to say "package up assets at this URL" or something similar?

(I'm going to probably write up a script to fix up the adventures I bundled already, but this strikes me as something you could easily do as well, and other folks might want.)

If it would be helpful to include one of these adventures, let me know, I have several.

Renaming the files to asset(x)

Hi!

One thing that I'd like to see different is renaming everything to asset(x). Especially when you want to share adventures with people, it's nicer to have the names of the assets in place. That way a user can browse the files and find files. Instead of having to open and look at everything because they're named asset...

Nothing happens when finish import

Hi, can you advice, please?

System: Warhammer 4,

I have exported my adventure (scenes, actors, journals, music), then imported but notning happens after finish the import (in the console is an error: foundry.js:753
TypeError: Cannot read properties of null (reading '_tombstone')
at commons.js:6174:16
at Array.map ()
at EmbeddedCollectionDeltaField._cleanType (commons.js:6173:20)
at EmbeddedCollectionDeltaField.clean (commons.js:5074:19)
at ActorDeltaField._cleanType (commons.js:5393:28)
at ActorDeltaField.clean (commons.js:5074:19)
at SchemaField._cleanType (commons.js:5393:28)
at SchemaField.clean (commons.js:5074:19)
at commons.js:6098:41
at Array.map ()
at EmbeddedCollectionField._cleanType (commons.js:6098:20)
at EmbeddedCollectionField.clean (commons.js:5074:19)
at EmbeddedDataField._cleanType (commons.js:5393:28)
at EmbeddedDataField.clean (commons.js:5074:19)
at commons.js:5863:42
at Array.map ()
at SetField._cleanType (commons.js:5863:20)
at SetField.clean (commons.js:5074:19)
at SchemaField._cleanType (commons.js:5393:28)
at SchemaField.clean (commons.js:5074:19)
at Adventure.cleanData (commons.js:7043:26)
at Adventure._initializeSource (commons.js:7030:31)
at new DataModel (commons.js:6906:21)
at new Document (commons.js:7583:3)
at new BaseAdventure (commons.js:9478:3)
at new ClientDocumentMixin (foundry.js:13979:7)
at new Adventure (foundry.js:19246:1)
at #preCreateDocumentArray (foundry.js:13535:15)
at ClientDatabaseBackend._createDocuments (foundry.js:13428:73)
at ClientDatabaseBackend.create (commons.js:8629:19)
at async Adventure.createDocuments (commons.js:7958:23)
at async Adventure.create (commons.js:8081:23)
at async _h (v1.ts:127:6)
at async index.ts:23:25
at async HTMLInputElement. (main.ts:76:21)
onError @ foundry.js:753
🎁call_wrapped @ libWrapper-wrapper.js:507
🎁Hooks.onError#lib-wrapper @ listeners.js:138
🎁Hooks.onError#0 @ libWrapper-wrapper.js:187
#preCreateDocumentArray @ foundry.js:13537
_createDocuments @ foundry.js:13428
create @ commons.js:8629
await in create (async)
createDocuments @ commons.js:7958
create @ commons.js:8081
_h @ v1.ts:129
await in _h (async)
(anonymous) @ index.ts:21

AND

foundry.js:68326
Cannot read properties of null (reading '_tombstone')
fetch @ foundry.js:68326
notify @ foundry.js:68223
error @ foundry.js:68260
onError @ foundry.js:754
🎁call_wrapped @ libWrapper-wrapper.js:507
🎁Hooks.onError#lib-wrapper @ listeners.js:138
🎁Hooks.onError#0 @ libWrapper-wrapper.js:187
#preCreateDocumentArray @ foundry.js:13537
_createDocuments @ foundry.js:13428
create @ commons.js:8629
await in create (async)
createDocuments @ commons.js:7958
create @ commons.js:8081
_h @ v1.ts:129
await in _h (async)
(anonymous) @ index.ts:21
)

Could you advise, please?

V. 11 seems to have broken the import

Hi,

I was able with the module to export stuff from one word.
But: The Import-Button is something I cannot find in another world with the activated module.
The Import-Button should be somewhere at the adventure, or? I cannot find it there:

grafik

Or I'm completely on the wrong way where the buttons should pop up.

With best regards,
Jens

does not understand wildcard images

It seems to not understand wildcard images and gives an error when trying to find them.

in case you dont know. if you put an * in an image. for example. Beast_01.PNG and turn it into Beast_*.PNG.

the function is that if you have multiple images Beast_01.PNG through Beast_10.PNG. it will randomly choose an image that shares the same name before the *.

Starfinder export Bundle fails with "Error exporting adventure : Not Found

Hello this issue is more a report as I found a workaround.
Running on Foundry V10.291, Starfinder 0.23.0 and Adventure bundler 0.2.2
What's happening
When I want to "Bundle and Import" an adventure created in an adventure compendium I got the following error :
Error exporting Adventure: Not Found

Looking in the console I noticed this

GET http://localhost:30000/worlds/sfs6-0102/assets/scenes/K2l138MwSwobjR7q-thumb.webp 404 (Not Found)

Workaround : I re-generated all thumb pictures of map.

Spaces in name of mapfile skips the file

Hi!
Firstly, thanks for making this module, makes sharing content a lot easier :D

I've encountered that when a map file name contains spaces, it doesn't get exported and only the thumbnail is present.

"Maximum object expansion depth exceeded" when importing in Foundry v11

Occasionally, importing a bundle in Foundry v11 with version 0.2.3 fails with a vague error which occurs on the server side:

FoundryVTT | 2023-06-18 17:03:29 | [error] Maximum object expansion depth exceeded
Error: Maximum object expansion depth exceeded
    at _expand (file:///home/dana/foundry/stable/bin/resources/app/common/utils/helpers.mjs:257:29)
    at _expand (file:///home/dana/foundry/stable/bin/resources/app/common/utils/helpers.mjs:263:32)
    at file:///home/dana/foundry/stable/bin/resources/app/common/utils/helpers.mjs:259:55
    at Array.map (<anonymous>)
    at _expand (file:///home/dana/foundry/stable/bin/resources/app/common/utils/helpers.mjs:259:46)
    at _expand (file:///home/dana/foundry/stable/bin/resources/app/common/utils/helpers.mjs:263:32)
    at file:///home/dana/foundry/stable/bin/resources/app/common/utils/helpers.mjs:259:55
    at Array.map (<anonymous>)
    at _expand (file:///home/dana/foundry/stable/bin/resources/app/common/utils/helpers.mjs:259:46)
    at _expand (file:///home/dana/foundry/stable/bin/resources/app/common/utils/helpers.mjs:263:32)

This seems to be a recursion issue, and is reproducible when trying to import the same bundle.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.