D&D Beyond Integration

The stuff you are making is awesome! I’m trying to utilitze the Forge Compendium Library in my game and having some issues. I am not currently a patreon, but am only attempting with the free LMoP map.

I am trying to test out importing the Lost Mine of Phandelver currently. I’ve downloaded the adventure (and all my other sourcebooks etc) from DNDBeyond to the Forge. When I click import, the DnDBeyond window opens, but there is no button to confirm download. It is just a new DnDB browser window on the home page of the Lost Mine adventure overview.

I’ve tried disabling ad blocker entirely, adding the forge and dndbeyond as exceptions, restarting everything. The browser extension is installed. All modules are installed. The adventure shows up in the forge under my list of books.

If you have any ideas how to fix, I’m all ears! Pretty new to all of this so I apologize if this is not the correct post location.

1 Like

Hi!
There was a change introduced recently which prevented that dialog from appearing in the ddb window. We’ve just fixed it earlier today, so please try again and let us know how it goes.
Thanks!

I haven’t this for a while. I originally had it working and could see all my source books. When I recently tried it again, it doesn’t show any of the source books except Acquisitions Incorporated. I tried re-downloading the source books as modules and that didn’t change anything. I’m also getting a notification that I don’t have access. I have also restarted the server. Is this a break from the recent update or am I missing a connection?

Hi @ablindbard, It sounds to me like you haven’t enabled the modules for your books inside the world, after having imported the DDB books. That just creates the modules, they still need to be enabled inside each world in which you want access to it.
I hope that helps!

Fantastic. Thank you.

For anyone who is following this thread, I just updated the limitation to remove the biggest one of them all!

Content referencing a different book will not be correctly copied (for example an NPC in Curse of Strahd would not have any spells since those spells come from the PHB/SRD and are not specific to Curse of Strahd. Likewise, monsters referred to in that adventure would not be imported unless they only exist within that adventure)

This was the biggest challenge which took a very long time to overcome but it’s now done and if you import a book, whatever content it’s referencing from other books, will also be recursively imported as well (as long as you do own that other book, otherwise a ‘skeleton’ actor/spell/item will be created instead, missing some of its attributes)

The latest update also adds organizations, backgrounds and feats support, as well as equipment, armor and magic items. Although, at this time, the magic items and equipment/armor will only contain their description but it doesn’t set the attributes on the item (like rarity of the item, the AC for armor, or the damages of weapons, etc…).

You can see the full list of changes in this week’s update from our changelog post here.

The next steps are going to be about adding those missing stats, and reviewing the converted content for monsters, spells, etc… in order to be as accurate as possible. These are the tedious but less challenging parts, so I hope to have another update with that soon!

2 Likes

I’m glad for the update but I don’t use Chrome, I use Firefox, when will there before an add-on/extension for Firefox so I can continue using this. I’ve been a Patreon for awhile and this update makes it so I can’t import new sourcebooks unless I download Chrome and switch back…

That’s a good question. We just haven’t made it available on Firefox because of the low number of FF users compared to Chrome, and since it was a beta program, it wasn’t worth the effort.

As we’ve made a lot of progress over the last 2 years, I think it’s definitely worth it now to also make it available to Firefox users, and I’ve just tested it on FF and submitted it to the Mozilla addons store. It’s still pending review and I don’t know how long that will take, but once it’s reviewed (and hopefully passes review), it should be available for you here :
https://addons.mozilla.org/en-US/firefox/addon/beyond-the-forge/

We’ll need to update the Bazaar prompt so it links to that page as well, (instead of the chrome store only) but that will have to wait until it’s published and will be on our next update.
Thanks for reminding me of this!

1 Like

image

I am getting this warning when I try to enable a BDnD module. I tried disabling all modules and still get the same error.

Hi,
That doesn’t sound like the module generated by the D&D Beyond integration, since the module name says “Clean”, it seems to be a custom module.
The version of 0.11.2 also doesn’t make sense, since the version should be 0.3.17
image

I just had another report of an issue where the Forge Compendium Library module doesn’t get installed automatically as it should, so that’s likely the issue you’re having (and I’m guessing your screenshot doesn’t show the line above it which is the imported module).
You can install the Compendium Library from The Bazaar and it should fix your issue.
I hope that helps.

That did it. And yeah, I noticed the screenshot does not have the right module listed. Thanks for the help!

@kakaroto I just tried importing Forge of Fury, along with the Dungeon Master’s Guide, Player’s Handbook, and Monster Manual. Once it finished, it just started scrolling red errors. They were scrolling so fast that I didn’t catch most of them. If you can tell me where to find those errors, I can pull them for you. But, it stops me from importing any more because of the errors being thrown.

Hey there :wave:

Are you using the latest versions of both Chrome and the Extension?

Make sure that there isn’t another extension running that could be interfering with the process, and please post a screenshot of the errors you see! Thanks!

You should be able to spot the errors in your dev tools console (F12) if you have it open before starting the import process.

Hi. Yes, latest extension and browser. It’s basically one error over and over for any book that has actors. Let me know if you need any more information.



I have the console log file from when I attempted to import the DM Guide. Doesn’t appear that I can upload it though. If you’d like it, let me know.

Hey there

Thanks, I’ve confirmed it’s happening due to the new dnd5e 2.1.x breaking changes which brings stricter model validation, which is currently not met on certain [Actor5e.items], with the error being that [FeatData.activation.type]: may not be null. This seems to cause the specific character with the error not to import. Thanks for reporting this!

A workaround for the moment would be to set your dnd5e system version to 2.0.3, then do the import, and then either stay on 2.0.3 or switch back to 2.1.x to let the dnd5e system handle the migrations

Hi There,
Just to notice a problem with the import of Lost Mine of Phandelver Module.
When I try to activate the Redbrand Hideout, the screen remains black with theses errors :


It seems that there are some errors in the model conversion.

The referenced object in error that seems to cause issues is the following :

Redbrand Ruffian

Hey there :wave:

We’ve found the root of that issue and it will be fixed soon in an upcoming update.
To fix the model validation issues, please run this macro / script in your world.

for (const id of game.actors.invalidDocumentIds) {
    const actor = game.actors.getInvalid(id);

    ui.notifications.info(`Fixing ${actor.name} (${actor.uuid})`);

    await actor.update(actor.toObject(), { diff: false })
}

for (const scene of game.scenes) {
    for (const token of scene.tokens) {
        if (!token.id) {
            continue;
        }

        const actorId = token.actorId;
        const baseActor = game.actors.get(actorId)
            ?? (game.actors.invalidDocumentIds.has(actorId)
                ? game.actors.getInvalid(actorId) : null);

        if (!baseActor) {
            continue;
        }

        const overrides = getDocumentClass("Actor").schema.clean(token.actorData, { partial: true });
        const actorData = foundry.utils.mergeObject(baseActor.toObject(), overrides);
        const actor = getDocumentClass("Actor").fromSource(foundry.utils.deepClone(actorData), { parent: token });
        const fixedActorData = foundry.utils.filterObject(actor.toObject(), token.actorData);
        const diffActorData = foundry.utils.diffObject(token.actorData, fixedActorData);

        if (foundry.utils.isEmpty(diffActorData)) {
            continue;
        }

        ui.notifications.info(`Fixing ${token.name} (${token.uuid})`);

        if (token.actorLink) {
            await token.update({ actorData: diffActorData }, { diff: false });
        } else {
            await token.update({ actorLink: true }, { diff: false });
            await token.update({ actorLink: false, actorData: diffActorData }, { diff: false });
        }
    }
}

foundry.utils.debouncedReload();

(Thanks to the folks over on the Foundry Discord for the script!)