Homebrew: Meta

From 5etools Community Wiki
Jump to: navigation, search

framless
v1.1.0

HomebrewMetaHead.png

Meta Tag

The meta tag contains all relevant information of the homebrew file you are creating, creating a homebrew file without a meta tag will not work, hence it is important to know which fields are necessary. The meta tag contains an object array labeled "sources", and other fields.

An Example:

	"_meta": {
		"sources": [
			{
				"json": "A_Unique_Name",
				"abbreviation": "AUN",
				"full": "The Full Title of the Unique Named Work to be converted",
				"authors": [
					"First Author",
					"Second Author"
				],
				"convertedBy": [
					"DiscordUserID"
				],
				"version": "1.0.8",
				"url": "https://server.domain",
				"targetSchema": "1.0.8"
			}
		],
		"dateAdded": 1549715846,
		"dateLastModified": 1549715846
	},
Learn More
In the example; The "sources" is defined. For 5eTools a source is publication (IRL, online only, or straight from your imagination). The important thing is that the "json" key must be unique to the system to prevent conflict errors with existing 5eTools files, or other homebrew. When two or more files share the same "json" key, then part of the two files that conflict with each other are either rejected (not used) or the homebrew is considered invalid and the site will not remove the loaded homebrew files.
This example defines a source called "A_Unique_Name" (Please don't use that name as, your homebrew's "json" should be unique. It defines the "abbreviation" to be "AUN" (an initalism for A Unique Name); the Abbreviations are showns on the site as a rapid point of reference which you can mouse over to get ...
HomebrewSourceAbreviation.gif
The "full" name - or the Full Title of the publication. Which is shown when mousing over the abbreviation where it is displayed. When clicked upon, abbreviations directs the browser to the ...
"url" Which should be where the publication is stored/can be purchased from. When there is no URL for the publication, please use
https://github.com/TheGiddyLimit/homebrew.
"authors" lists whom is the creator; editor; etc - if there is only one author you may simply use

"authors": "Sole_Author's_Name",

"convertedBy" should be who converted the publication into 5eTools, and thereafter - who updated/modified such. BUT the converter should be the first person to approach for questions about accuracy/typos. If your conversion is modified the file should have who modified it. (Giddy however will not add his name for such efforts)

Field List (Sources)

The following is the list of fields that can be included in the object array, "sources". All fields are enclosed by quotation marks ("). If you do not include the required fields (denoted with bold text) the JSON may pass JSONLint but will fail upon stitch.

Field Name Data Type Description Required
json String An identifying string, as seen in the JSON in "source" fields. True
abbreviation String Abbreviated form of the source, to display on the site.
AUN in the example is short for A unique Name; you'll want to use a one that matches your Sources name
True
full String Full title of the source, to display on the site. True
authors Array of Strings A list of authors who created the homebrew source. False
convertedBy Array of Strings An optional list of people who contributed to converting the source to 5etools format. False
url String A direct link to the source, if available in web form or on a store. False
version String The source version. True
targetSchema String The target schema version in 5etools, e.g. current schema version is v1.1.0 False
color String HTML hex color code this source should use when displayed in lists, e.g. 'ff00ff'. It defaults to white if not given False

Other Fields

Other fields are given outside of the Sources are able to provide other additions, like new skills, spell schools and similar.

All of these additional fields are optional, note that all of these fields are enclosed in quotation marks (").

Field Name Data Type Description
dependencies Array of Object False
skill Object An Object key. Skill names, which can referenced using {@skill <key>} (case sensitive).
sense Object An Object key. Sense names, which can referenced using {@sense <key>} (case insensitive).
spellSchools Object Object names are spell school abbreviations; values should be objects with "full" (used in the main entry, e.g. "Evocation") and "short" (used in the list view, e.g. "Evoc") key/values.
spellDistanceUnits Object Object names are spell distance units; values should be objects with optional "singular" (singular form of the unit, e.g. "foot" for the singular of "feet"--if unspecified, a trailing "s" is removed from the plural version, if it exists, and the result is used as the singular form) and "feetPerUnit" (e.g. for a "yards" custom unit, this would be `3`, as there are three feet in a yard) key/values.
optionalFeatureTypes Object Object names are optional feature "type" shorthands (e.g. "EI" for "Eldritch Invocation" which will be displayed in the list view as a sortable column.
dateAdded Integer The epoch timestamp (in seconds) when the homebrew was added to the repository. Not guaranteed to be anywhere near accurate. See UNIX Time to get the current value.
dateLastModified Integer The epoch timestamp (in seconds) when the homebrew was modified in the repository. (Not guaranteed to be anywhere near accurate; but maintained by Giddy). See UNIX Time to get the current value.
ValueConversions Array of Objects Features a field that contains an array of objects pertaining to how value integers are displayed based on the objects.

Value Conversion

This is an optional addition to the meta tag, if the economy that your homebrew uses is different from the standard 5e Dungeons and Dragons system this will help to avoid incorrect currency values.

5eTools uses a numerical value based on the amount of copper an item costs and converts between the currencies, hence that is what such a table would be based on.

Enclosed inside the field of itemValueConversions can be the following:


           "SS": [
               {
                   "coin": "gp",
                   "mult": 0.0001
               },
               {
                   "coin": "sp",
                   "mult": 0.01
               },
               {
                   "coin": "cp",
                   "mult": 1
               }
           ]


In the above block of code:

  • "SS" is an example of the name of the currency conversion system, this is also what all items and similar should refer to using the valueConversion field .
  • The name of the conversion system ("SS" in this example) contains an array of objects.
  • Inside each object is two additional field and value pairs.
  • The "coin" field is a string that is what the name of the currency should be.
  • The "mult" field is a numerical value that describes how much each value is worth.

The above example uses a system called the Silver Standard, where 100cp = 1sp (hence 1/100 = 0.01) and 100sp = 1gp (hence 1/10000 = 0.0001).

Homebrew Support


Known Issues
Looks like its perfect... (Did we miss anything?)


FAQ
Nothing's here (Do you have any suggestions?)
https://www.unixtimestamp.com/
Best Practices
Its best to put the Meta/sources as the top of the JSON. While not strictly required, its annoying to have to search for it, so pretty please - start your JSON with the META and its sources.


Make sure (If you plan to use the homebrew with other homebrew) that you've listed your homebrew on the Homebrew Tracking Document; It will alert you if your chosen abbreviation or json name have already been used; and will let you know if someone is already doing that work, or has already done it.



Related Features



Did that answer your question(s)?

If not please check the under Support; Troubleshooting or the Known Issues page for further guidance, or go to the Discord community and leave a comment in the issues channel.

If you enjoy the project, please follow this link to see how you can contribute and help make it even better.