Skip to main content

Creating A Community Pack [HIDDEN]

Note To Content Creators

This update will support you in sharing your content to a wider audience, with or without coding experience.

  • You will no longer need to create resource packs that override a limited number of default options for coat or tack.
  • You can add limitless (within reason) options to expand the game without creating a separate mod (add-on).
  • You can integrate your content into some existing features of the mod, such as coat cycling and breeding tags.

To properly transition towards community packs, we recommend:

  • Read this page carefully to fully understand creating community packs.
  • Create simple, clear and easy to follow / enforce Terms Of Use (TOU) if you share or sell your content.
  • Upload content in a player-friendly format, such as Community Pack, Content Pack or standalone files.

You must read and follow the Content Creation Rules (below) to comply with SWEM's license and permitted use of assets.

Content Creation Rules
  • You MUST NOT sell or trade for profit any assets created and owned by SWEM
    → Modified versions of the horse model
    → Modified versions of any blocks or items
    → Modified version of any default coats
    → Modified textures of any blocks or items
    → Shading layers
    → Free materials: template resource packs, template community packs, json files (not in a working community pack)

  • You can provide FREE content that accepts an OPTIONAL donation
    → Includes modified horse models (ie resource pack override to add-on "breeds")
    → Does not include default coat modifications without explicit permission

  • You MUST NOT modify, re-upload, or sell the work of creators without consent / allowed by TOU.
    → Includes the Official Community Pack (free) featuring donated works from community artists

  • You can sell content that is at least 90%* your own work
    → Models for entities, blocks or items
    → Textures for entities, including coats using the freely provided shading layer or standard features (eyes, nose, hoof etc)
    → Textures for blocks or items
    → Animations 
     * 90% accounts for the 10% which can be accredited to fair inspiration, reference or color picking.

  • You MUST NOT sell, promote or feature SWEM in any custom content or media that includes:
    → Extreme violence or gore
    → 18+ content or mature themes

Star Worm Equestrian is and always will be age appropriate to all users (PG13).
Any content or creators that modify it to be otherwise do so outside the terms of use for this project.

Terms Of Use Information
WARNING

Creating a complicated or highly restrictive TOU will set you up for frustration when it is inevitably violated or misinterpreted.
To protect your content within the very limited legal recourse for TOUs we encourage creators to share their creations in a similar way to mods; allow public or private use with minimal restrictions, provided the creator receives the download or support.

  • If you choose to share your content publicly, it is your responsibility to clearly inform users of appropriate use.
  • It is unreasonable to expect users to be remain informed of alterations to TOU after the time of download.
  • It recommended to:
    → Post your full TOU in a public source that can be accessed by anyone without membership or sign up/in.
    → Include your TOU as a text file in any premade community packs.
    → Include your TOU as a link or summary in any location your files are hosted or downloaded.
RECOMMENDATIONS

Avoid requiring credit for use in media; it should be encouraged but no credits does not equal insult!
It is not standard practice to credit every creation (ie mods) in casual images; nice if you do, but optional!
→ It should only be "required" to credit where appropriate (promotion, inspiration or reference), and not falsely claim.

Avoid prohibiting inspiration or reference; similarity is not proof of plagiarism!
→ It is possible for creators to have a similar idea, share the same reference, or take respectful inspiration!
→ It should be expected that work(s) clearly and directly referenced or inspired by your creation is fairly credited.

Avoid restrictive use policies that are difficult to monitor and enforce.
→ It is an unfortunate reality that players +/- servers will violate agreements, especially if they are restrictive.
→ There is limited legal recourse to address this; so state what you are willing and able to action if necessary!

Consider providing content in a compact format with minimal individual downloads!
→ Players and servers will be less likely to distribute (or more likely to use) easily accessible files.
→ It is suggested to provide creator pack(s) in bundles such as 'Bays', 'Pintos', '2023 Coats'

Avoid uploading to unsecure file hosting sites or encouraging users to engage in unsafe internet habits.
→ It is recommended to use popular sites such as Kofi, Google Drive.


EXAMPLE TERMS OF USE (NOT A LEGAL CONTRACT OR LICENSE)
  • OWNERSHIP & AGREEMENT
    → The creator (name) retains all rights of ownership to this content
    → The right to use this content is granted to you (player) in accordance with this agreement
  • USE
    → This creation can/not be used in content (images, videos) - credits are optional but appreciated.
    → This creation can/not be used privately in singleplayer or a small private group.
    → This creation can/not be used publicly in multiplayer.
    → This creation can/not be used in reasonable commercial services with/without consent.
        ✅🚫 Offered as part of a service (ie random / selected coat change) requiring real money
        ✅🚫 Offered as a prize or reward for activity or events requiring real money
        ✅🚫 Offered as an unlock via crowdfunding or engagement (ie server cost covered -> unlock)
        NOTE: Commercial services must abide by Minecraft's EULA

  • DISTRIBUTION
    → This creation can/not be reuploaded with/without consent and/or credits and/or payment.
        ✅🚫 Limited private use by friends or small groups
        ✅🚫 Custom Community Packs (folder) 
        ✅🚫 Custom Modpacks (zip)
        ✅🚫 Exceptions: Paid vs Free, Commissions (paid) or Gifts (prizes)
        ✅🚫 Other: File Hosting Sites, Discord Servers etc
  • ALTERATIONS
    → This creation can/not be altered with/without consent and with/without credits for public/private use.
        ✅🚫 Texture
        ✅🚫 Information (json: name, description, color tags etc)
        ✅🚫 Other conditions 

Updating A Community Pack

Official Community Pack  [VERSION TBC]  has been updated to support the latest release.

If you have a custom coat community pack for 1.20.1-1.5-beta7, you must modify it to stay compatible in newest release.

  1. Close Minecraft
  2. Locate your community pack(s)
  3. Go inside packname > jsons > coats
  4. Open the first coat file in a text editor
  5. Change "legacy": "default:coats/legacy/coat_artist.png" to "legacy": "legacy/coat_artist.png"
  6. Save and close the file
  7. Repeat for all coat files +/- all outdated packs

Creating A Community Pack

You can skip step 1-3 by downloading a template community pack found [HERE].

You can skip or delete any folder that will not be used for your content (ie tack folders if you will not add any tack).

 STEP ONE:  CREATE THE PACK FOLDER STRUCTURE

  1. Create a new folder 
    → It can be in config > swem > community-packs or somewhere else (move later)
  2.  Name your community pack
    → It must be in lowercase letters with no spaces
    → It is recommended to use artist_packname such as yourname_kofi or yourname_bays
  3. Go inside the empty folder
  4. Create two new folders here
    → jsons to store the information files
    → textures to store the coat and tack files
  5. Add the [TOKENS FILE].

 STEP TWO:  CREATE THE JSONS FOLDER STRUCTURE

  1. Go inside the empty jsons folder
  2. Create two new folders here
    → coats to store .json information files for coats
    → tack to store .json information files for tack
  3.  Go inside the empty tack folder
  4. Create 10 new folders here
    → blanket
    → breast_collar
    → bridle
    → girth_strap
    → halter
    → horse_armor
    → leg_wraps
    → pasture_blanket
    → saddle
    → saddle_bag

 STEP THREE:  CREATE THE TEXTURES FOLDER STRUCTURE

  1. Go inside the empty textures folder
  2. Create three new folders here
    → coats 
    → tack 
    → tokens 
  3. Go inside the empty coats folder
  4. Create one new folder here:
    → legacy to store .png texture files for coats
  5. Go inside the empty tack folder
  6. Create 10 new folders here
    → blanket
    → breast_collar
    → bridle
    → girth_strap
    → halter
    → horse_armor
    → leg_wraps
    → pasture_blanket
    → saddle
    → saddle_bag
[Expand] How It Should Look
📂 config
📂swem
📂community-packs
📂artist_packname
📂jsons

📂coats

🗒️artist_coat.json files

📂tack










📂blanket

📂breast_collar

📂bridle

📂girth_strap

📂halter

📂horse_armor

📂leg_wraps

📂pasture_blanket

📂saddle

📂saddle_bag

📂textures
📂coats 🗒️artist_coat.png files
📂tack

📂blanket

📂breast_collar

📂bridle

📂girth_strap

📂halter

📂horse_armor

📂leg_wraps

📂pasture_blanket

📂saddle

📂saddle_bag

📂tokens 🗒️token_name.png files
🗒️ tokens.json

Shown: The file structure for community packs, including correct placement inside config > swem > community-packs


Creating Content

If you followed the guide above, you have a basic community pack, but it needs content to work in game.

Community Packs can support custom coats, tack and animations - this can be all in one pack, or split into separate packs.


Adding Custom Coats

This guide will not cover how to create a coat, for information please read our resources on Discord.

 STEP ONE:  CREATE OR DOWNLOAD A CUSTOM COAT

  1. Save or rename the file as artist_coatname
    → The file type should display as PNG File  
  2. Paste this file into your community pack artist_packname > textures > coats > legacy > coatname_artist.png

 STEP TWO:  CREATE A JSON FILE

    1. Open a blank text editor file using Notepad (Windows) or [MAC ALTERNATIVE]
    2. Paste in the coat template code (below)
    3. Edit the template to your coat
      → credits the name of the coat artist(s) "credits": "Arishant", 
      → inspiration optional notes on inspiration or reference "inspiration": "Esperanza from Spirit", 
      → models the texture path (location) for legacy model "legacy": "legacy/esperanza_arishant_legacy.png"
      → lapis_cyclable if the coat can be cycled using lapis or redstone true or false
      → obtainable_by_breeding if the coat can appear from a (bred) foal true or false
      → base_colors which color tags the coat uses ["black","gray"] "base_colors": ["creamy"]
    4. Save the file as a .json file by using save as and naming the file artist_coatname.json
      → The file type should display as JSON File  
    5. Paste this file into your community pack artist_packname > jsons > coats > coatname_artist.json
[EXPAND] Coat Template

{
  "credits": "Artist(s)",
  "inspiration": "N/A",
  "models": {
    "legacy": "legacy/coatname_artist_legacy.png"
  },
  "lapis_cyclable": true,
  "obtainable_by_breeding": true,
  "base_colors": ["black","gray","white","creamy","brown","dark_brown","chestnut"]
}

[EXPAND] Info & Common Mistakes

⮞ NAMING FORMAT
Naming packs and files in a specific format is optional but highly recommended.

  • Players can easily manage their community packs, and troubleshoot issues that arise.
  • Content has a clear 'tag' for its creator and name in game, when summoning coats.

You may wonder why packs recommend artist_packname and coats recommend coatname_artist

  • Packs in folders will group by Creator Example arishant_bays / arishant_grays / arishant_pintos
  • Content in game will list alphabetically by content Example: apple_arishant / banana_arishant / coconut_arishant

⮞ LEGACY MODEL
Legacy model is the current horse model in game, but more models are planned in future.

  • Texture must use the legacy model texture path
  • Future model types may come pre-listed listed, but do not function in game

⮞ TEXTURE PATH
Texture path is the location of the coat file placed in artist_packname > jsons > coats > legacy > coatname_artist.png

  • Texture path must match the exact name of the coat png file
    → Must be a lowercase name with no spaces or symbols
    → Can include numbers or underscores 
    → Should use the format artist_coatname or artist_coatname_legacy to indicate it uses original model
    → Should share the same or similar name as the json file

⮞ COAT CYCLING
Coat cycling is the function that allows a player to cycle through coat options by right clicking a horse with redstone or lapis.

  • Cycling a coat will only work if:
    → Set to "lapis_cyclable": true, in the json file
    → Coat cycling is enabled in server config allowCoatCycling = true 
    → Coat is not blacklisted in server config blacklistedCoatIds
    → Server config is per-world; enabling settings in one world does not auto-apply it to others!

  • Summoning a (random) coat via command will only work if:
    → Set to "lapis_cyclable": true, in the json file
    → Coat is not blacklisted in server config blacklistedCoatIds

⮞ BREEDING & COLOR TAGS

  • Color tags must use at least one of 7 valid choices:
    ["black","gray","white","creamy","brown","dark_brown","chestnut"]
    → Separate multiple tags with a comma
    → There must not be a comma between " and ]

  • Coats can appear from converting horses if:
    → Coat has at least one valid color tag
    → Coat has the same color tag as the vanilla horse (randomly chooses from coat options)
    → Set to "obtainable_by_breeding": true, in the json file
    → Converting is enabled in server config file (default) tokensBreeding = false
    → Coat is not blacklisted in server config blacklistedCoatIds
    → Server config is per-world; enabling settings in one world does not auto-apply it to others!

  • Coats can appear from breeding if:
    → Set to "obtainable_by_breeding": true, in the json file
    → Coat is not blacklisted in server config blacklistedCoatIds
    → Foals are assigned one tag from any their parents have and use one of 7 foal coats (one per tag)
    → Foals choose from a random adult coat with the same tag when they grow up
  • Color tags and breeding outcomes are very basic and do not support realistic genetics
    → Setting tags you expect the horse to 'pass on' is more likely to get your coat from those tags.
    → Example: Bay coat with "chestnut", "black", "brown" - any chestnut, black or brown foal can grow up to use it.
    → Setting tags for any color a coat has a small amount of will result in dramatic changes from foal to adult coats.
    Example: Leopard Appaloosa with "black", "white" - a fully black foal would grow up to a mostly white coat.

 RECOMMENDATION
→ Set one or two tag(s) for a foal color you would expect to get the coat from Example: Black Foal -> Black Horse 

 STEP THREE:  TEST YOUR COMMUNITY PACK

    1. Paste the community pack file in config > swem > community-packs
      → Read here if this is your first time installing a community pack.
    2. Load the game
    3. Open a test world with cheats enabled
    4. Type /swem summon LEGACY
      → Your pack should be listed in the options
      → It may be above or below the default swem: options
      → If your pack is not listed, you have made an error
    5. Select your coat and enter the command
    6. Check the coat has the expected texture.

If this worked as expected, you can repeat Step 1 + 2 to add additional coats to the pack.

[EXPAND] Troubleshooting Errors

   COMMUNITY PACK TROUBLESHOOTING   
FOLLOW EACH STEP CAREFULLY + NOTE ISSUES AS YOU GO. ONLY REQUEST HELP AFTER USING THIS!

⮞ [1] MOD VERSION

  • Double check you are using the latest 1.20.1 Beta version.
    → Even if you feel sure, go and check it. It's the most common error!
    Curseforge App Will not auto-install beta files, go to mod's page > versions > install
    → Multiplayer Servers Check server is on latest release
     Multiplayer Users Check client + server use same version
    ⚠️ Community Packs are for 1.20.1-1.5 and above only.

[2] OFFICIAL COMMUNITY PACK VERSION

  • Skip this step if you are not using the official Community Pack.
    → Check you have swem_community_pack_beta_5 or above.
    → Check this is the latest version posted - it may have a new release!
    → Multiplayer Servers Check server has the correct pack
     Multiplayer Users Check clients have the same pack name + contents as server

⮞ [3] COMMUNITY PACK LOADING

  • Open the game and load into a world
  • Type /swem summon LEGACY
    → Is the pack listed? 
    → Is any pack listed (excluding swem:)

    ✅ Pack(s) are recognized
    ❌ Pack(s) are not recognized, specific packs are invalid or have no valid files. Go to solutions [3].

⮞ [4] COAT REGISTERED

  • Type /swem summon LEGACY packname:
    → Is the coat(s) you expect to see listed? Example kofi_coats:spirit_arishant_legacy

    ✅ Coat(s) have registered.
    ❌ Coats have not registered OR specific coat(s) are invalid. Go to solutions [4].

⮞ [5] JSON -> TEXTURE PATH

  • Summon coat(s) from the pack
    → Do coat(s) have a texture that is correct for that horse?

    ✅ Coat(s) have the correct texture
    Black Texture Texture path or file name is invalid or missing. Go to solutions [5].
          Multiplayer Player is missing the pack or no texture for that coat path. Go to solutions [5].
    Wrong Coat Texture path or file name is incorrect. Go to solutions [4].
    Looks Wrong Texture or UV map error. Contact Coat Artist or request help.

⮞ [6] OTHER

  • Lapis Cycling
    If you cannot cycle any coats using lapis or redstone, it is disabled in server config.
    → If you can cycle coats, but some options are missing, it is disabled in the coat .json file.
  • White Texture 
    → If a coat is white, the pack or coat .json files were removed or renamed
    → If that is not the case, information in .json may have an error (invalid format) Go to solutions [5].
  • Texture Error
    → If a coat appears broken (color in wrong places, missing pixels, marker blocks) it needs a texture or UV fix.
    → If you are not the coat artist, contact the original creator.
  • Error On Load / Crashing 
    Too many potential causes
    → 
    Paste your latest.log file in Tech Help in our Discord with a description of the issue(s).


   SOLUTIONS & SUGGESTIONS   
ALWAYS SHUT DOWN THE GAME + RELOAD AFTER MAKING CHANGES

It is not recommended to modify packs from a Creator unless you intend to customize it and solve any issues.
✅ You should follow this troubleshooting guide to identify your likely issue first.
✅ You should notify Creator's of potential problems with the default pack (might need a fix or update).
❌ You should NOT expect Creator's to troubleshoot an issue you might have caused by altering files!

⮞ ISSUE [3]

  • Check the community pack:
    → Pack is directly in config > swem > community-packs 
    → Pack is a folder and not a zip file!
    → 
    Pack has a valid lowercase name with no spaces ✅artist_kofi ❌ Artist Kofi Coats
    → Pack includes at least one .json and .png file in the correct folder
        📁 jsons > 📁 coats > JSON FILES HERE
        📁 textures > 📁 coats > 📁 legacy > PNG FILES HERE

    If this is ALL correct the issue is not the community pack structure. Go back to Step [4] above.

⮞ ISSUE [4]

  • Identify a coat that is missing in game
  • Check the .json file for the coat
    → File is listed as a JSON File type
    → File is directly in community-packs > artist_packname > jsons > coats
    → File has a valid lowercase name with no spaces ✅coatname_artist ❌ Coat - Artist
    → File texture path uses ✅ "legacy": "legacy/coatname_artist.png" ❌  "legacy": "default:legacy/

    If this is correct, the most likely issue is formatting (invalid json).
    → Compare your json to the template and note any missing " , or { } or different indentation
    → If unsure, delete and rewrite the .json file using a blank template
    → Reload the game and repeat Step [4] above.

    If this is ALL correct or changes did not work, paste your .json file in Tech Help in our Discord

⮞ ISSUE [5]

  • Identify a coat with a black (missing) texture
  • Check the .json file for the coat
    → File uses legacy model line (not any for future models)
    → File texture path uses ✅ "legacy": "legacy/coatname_artist.png" ❌  "legacy": "default:legacy/
    → File texture path has the exact name used by the coat texture .png file

  • Check the .png file for the coat
    → File is listed as a PNG File type
    → File is directly in community-packs > artist_packname > textures > coats > legacy
    → File has a valid lowercase name with no spaces ✅coatname_artist ❌ Coat - Artist

  • MULTIPLAYER SERVERS
    → Client (player) has community pack(s) with the same name (ID) as those on the server. 
    → Client (player) has .png files with the same names as those in the server pack.

    If you cannot check this due to permissions, you will need to contact server admins.

⮞ [6] OTHER OR NOTHING WORKED

  • Create a post in Tech Help in our Discord
    → Describe your issue(s) and what you have tried
    → Upload your latest.log file to provide info that may help others assist you

    DO NOT UPLOAD PAID/PRIVATE PACKS WITH TEXTURES FROM CREATORS WITHOUT CONSENT


    Adding Custom Coats

    This guide will not cover how to create tack, for information please read our  [RESOURCES]  on Discord.

     STEP ONE:  CREATE OR DOWNLOAD TACK TEXTURES

    1. Save or rename the files as:



    [EXPAND] File Naming

     

    Type Texture + Name Comment
    Bridle name_bridle_icon
    Inventory Icon
    name_bridle_legacy
     
    name_bridle_bit_legacy  
    rack_bridle_name_blanket
     
    Blanket
    name_blanket_icon
    Inventory Icon
    name_blanket_legacy
    Texture for the blanket on a horse
    rack_saddle_name_blanket
    Texture for the blanket when placed on a saddle rack
    rack_saddle_5_name_blanket Texture for the blanket when placed on a blanket rack
    Saddle name_saddle_icon
    Inventory Icon
    name_saddle_legacy
    rack_saddle_name_saddle
    rack_horse_armor_name_saddle
    ? ? 
    Girth Strap name_girth_strap_icon
    Inventory Icon
    name_girth_strap_legacy

    rack_saddle_name_girth_strap

    Breast Collar
    name_breast_collar_icon
     Inventory Icon
    name_breast_collar_legacy
     
    Leg Wraps
    name_leg_wraps_icon
    Inventory Icon
    name_leg_wraps_legacy

    name_leg_wraps_hoof_legacy
    Saddlebag
    name_saddle_bag_icon
     Inventory Icon
    name_saddle_bag_legacy
     
    Horse Armor name_horse_armor_icon
    Inventory Icon
    name_horse_armor_legacy

    name_horse_armor_wings_legacy
    rack_horse_armor_name_horse_armor
    Halter name_halter_icon
    Inventory Icon
    name_halter_legacy

    rack_halter_lead_name_halter

    Pasture Blanket
    name_pasture_blanket_icon Inventory Icon
    name_pasture_blanket_armored_icon
    Inventory Icon 
    name_pasture_blanket_legacy
    name_pasture_blanket_armored_legacy

    rack_pasture_blanket_3_short
    rack_pasture_blanket_5_long ? ?

    TO BE CONFIRMED

     STEP FOUR:  CREATE A TOKENS FILE

    This is only required if you are adding tack items, which will use tokens to buy (craft) that tack item!

    1. Open a blank text editor file using Notepad (Windows) or [MAC ALTERNATIVE]
    2. Paste in the template code (below)
    3. Edit the template to your preferences
      → name the token item's name in game "name": "Example Coin", 
      → texture the texture path (location) and (future) name in files "texture": "tokens/example_coin.png", 
      → count the number of tokens crafted in one go "count": 4,
      → pattern the position of crafting items in a crafting table grid (see example below)
      → key the assigned items for pattern (see example below)
    4. [Optional] To add additional tokens:
      → Put a comma after the final curly bracket }.
      → Paste another copy of the template on the next line
    5. Save the file as a .json file by using save as and naming the file tokens.json
      → The file type should display as JSON File  
    6. Paste this file directly into your community pack artist_packname > tokens.json

    image.png

    [Expand] About Tokens

    Tokens are a form of currency to exchange for tack pieces. This is so every item does not need a crafting recipe.

    • Tokens are redeemed at an EQ Shop block - this displays all purchases possible for the given token.
    • You must set a crafting recipe to create tokens at a crafting table.
    • You can set a yield of 1-64 tokens per crafting.
    • You must create at least one Token Example Creatorname Coin
    • You can name them whatever you want; tokens coins, credits etc.
    • You can create multiple themed or tiered tokens Example Basic Token Valuable Token
    • You can set custom pricing for your items in their individual .json files Example Saddles cost 5 Creator Coins

    RECOMMENDATIONS
    Keep tokens to a minimum; each one is a new item added to the game.
    → Set a unique name that is unlikely to be duplicated (confusing to players) such as Yourname Token or Packname Coin
    → Set a recipe that is unlikely to be duplicated with Minecraft recipes or tokens for other creators.
    → Use Content Packs or individual files to 'add-on' to a core pack, rather than creating many individual packs + tokens.

    WARNING TO CREATORS (+ SURVIVAL SP / SERVERS THAT USE COMMUNITY PACKS)
    → Removing or renaming tokens will void any currently in game - players that crafted them will lose them!
    → This is why is is recommended to think carefully about what tokens you add and support them long term.

    [Expand] Token Template
    {
      "name": "Example Coin",
      "tokens": {
        "token_1": {
          "texture": "tokens/example_coin.png",
          "recipe": {
            "count": 4,
            "pattern": [
              " R ",
              "ODO",
              " G "
            ],
            "key": {
              "R": {
                "item": "minecraft:redstone"
              },
              "O": {
                "item": "minecraft:obsidian"
              },
              "D": {
                "item": "minecraft:diamond"
              },
              "G": {
                "item": "minecraft:gold_ingot"
              }
            }
          }
        }
    [Expand] Token Recipes & Keys

    pattern refers to the 9 slots in a crafting grid, with each slot being a potential space to place one item.

    "pattern": [
              " R ",
              "ODO",
              " G "

    Shown above is an example where 5 items are placed in a crafting grid; one slot in top row, three in middle and one bottom row.
    Each occupied slot has a letter or symbol that is later defined under key - this says which item that will be.

    • The letters you choose do not matter, but they can only specify ONE type of item.
    • If a slot is unused, it is recommended to use a space (no letter or symbol)
      Example: Empty row  " " 
    "key": {
              "R": {
                "item": "minecraft:redstone"
              },
              "O": {
                "item": "minecraft:obsidian"
              },
              "D": {
                "item": "minecraft:diamond"
              },
              "G": {
                "item": "minecraft:gold_ingot"
              }
            }

    Shown above is the  key section which defines those letters; R for redstone, O for obsidian, D for diamond, G for gold ingot.

    • Note that each item comes in it's own little code section which is correctly indented (positioned)
    • Each letter is defined as ONE specific item, and that item includes the ID minecraft:item_name 
    • This would allow you to specify IDs of other mods such as swem:item_name
      → The recipe will not work if it specifies an item the player does not have the mod for, or cannot obtain.

    Crafting Tokens.gif

    Shown: Overlay of json information vs in-game crafting.

    "pattern": [
              " / ",
              "# #",
              " / "
            ],
            "key": {
              "/": {
                "item": "minecraft:blaze_rod"
              },
              "#": {
                "item": "minecraft:gold_ingot"
              }
            }

    Shown above is another example with four items in the crafting grid; top row middle, middle row left + right, bottom row middle.
    This example uses symbols instead of letters, which are less clear but work fine.
    The key section states two items, / for blaze rod and # for gold ingot.

      HELPFUL RESOURCES  

    JSON files require correct formatting, including indentation (position on the page). If this is confusing, try:

    • Editing the example template file provided [DISCORD LINK] 
    • Using a recipe generator for datapacks HERE 
      → Search for and drag your items into the crafting grid
      → Scroll down and copy the relevant sections (pattern and key)
      → Recommendation: Copy from "pattern" to the last " for crafting items, such as "minecraft:gold_ingot" 
      → Open your tokens file, select the same points ("pattern" to ") and paste