FANDOM


This is a work in progress, 

How to create a Homebrew JSON for 5eTools

We're going to start pretty broadly and then narrow down.



​​


Section Tags

entry templates are not linked yet, still testing.

Section Name Example File(s) Entry Template Tool(s) Description
Adventure 💾 📑 A playable adventure. Should include maps, event descriptions, etc.
Books 💾 📑 Books are like Compendiums but include more information, 'fluff' and the like.
Background 💾 📑 PhB}
Boon 💾 📑 Special rewards from Extraordinarily powerful creatures for a character's service.
Class 💾 📑 PhB}
Class Features 💾 📑 Features such as Invocations, Fightstyles, or the like.
Collection A Brew with multiple section types defined within it, which doesn't lean more towards any one type.
Condition 💾 📑 {@condition condition} effects
Creatures/Bestiary 💾 📑 Bestiary - Monsters, NPCs and the like
Deity 💾 📑
Disease 💾 📑 {@disease Diseases} and illnesses.
Feats 💾 📑 Custom Feats
Hazard 💾 📑
Item 💾 📑
Object 💾 📑
Optional Features 💾 📑
Psionics 💾 📑
Races 💾 📑
Reward 💾 📑
Ships 💾 📑
Spells 💾 📑
Table 💾 📑
Trap 💾 📑
Variant Rules 💾 📑

Formatting

JSON overview

  • Try to use tabs' 'instead of spaces in the file, most editors do this automatically, but mixing them will cause problems down the line. Be consistent
  • Indent after opening a punction section, reduce indention by one tab when ending a section
  • Brackets or Square Brackets [ ] or Braces or Curly Brackets { }, must open and close the various sections.
  • Quotation marks "" denote a string (alphanumeric content follows)
  • An orphaned set of punctuation will cause the JSON validation to fail.
  • The order punctation is opened and closed must be preserved  { [ "  will fail if not matched in the reverse order " ] } 
    • Will Work: { [ " " ] }
    • Will Fail:  { [ " } ] " (not closing one or more of them)
    • Will Fail: { [ " } ] " (Closing them out of order)
    • Will Fail: { [ " } ] "
      (Double Opening or double closing)
  • Quotation marks inside a set of quotation marks will END that string and that will often mean the remain string's text will fail validation.
    • "Ragnar yelled "HELP!!" at top of his lungs."  will be viewed as String "Ragnar yelled " and " at top of his lungs." are separate stings, and between them HELP!! is an unidentified tag/command - and so the validation will fail.
    • instead, try:
      • "Ragnar yelled HELP!! at top of his lungs." using two '' apostrophes, or
      • "Ragnar yelled “HELP!!” at top of his lungs." using open and close quotes ( “ ” ) (&ldquo and &rdquo in HTML also known as Ascii codes 0147 and 0148.
  • The comma (outside of quotation marks "" ) signifies the end of a line and that another element in that section or a new subsection will follow. The lack of a comma signfies the END of a section or subsection.
    • When another of the same element type (see Formatting) follows another line, that line must end with a comma (,)
    • When no other line of the same element or a new subelement follows. That line must NOT end with a comma (,)

EXAMPLE:

{
      "source": "5eHP",
      "page": 0,
      "name": "Cthurkey",
      "size": "S",
      "type": "aberration",
      "alignment": [
          "C",
          "E"
      ]
}

Open braces { will open the segment, next line indents one step a tag (sources) is defined by a string -- we know this because of the quotation marks -- (5eHP). As the next line is part of that same section of the braces a comma ends the lines all the way to "alignment": [ subsection - which indents another step, and since "E" follows "C" - line "C" ends in a comma. "E" has nothing following it in that section so no comma is put at the end of the line and the next line will close that subsection with a closing Bracket which will reduce the indentation by one step. That closure is alsothe last element with that segment the open brace { defined so it also will have no comma and the program now knows that the next line will be unindented with a closing brace }