Creators' Corner [WIP]  READ ME  The Community Pack features are in development. Changes may not reflect newest release immediately. This page will be updated when possible, and information may not be correct for outdated versions! Please contact Delphi via SWEM DC with any feedback or to contribute video resources for this guide! 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 EXCEPTIONS MAY BE MADE ON AN INDIVIDUAL BASIS WITH EXPLICIT CONSENT FROM SWEM (ALAHARRANHONOR) 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 Freely provided materials: → Shading layers → Rights to use standard techniques (eyes, nose, hoof etc) → Template resource packs → Template community packs → JSON files (not in a working community pack) ⮞ YOU MUST NOT SELL (OR TRADE FOR PROFIT) OR REDISTRIBUTE ASSETS OF OTHER CREATORS EXCEPTIONS MAY BE MADE WITH EXPLICIT CONSENT FROM THE CREATOR OR THEIR T.O.U Modified textures Modified .json files that remove or alter credits Free resources → Including the Official Community Pack (free) and any donated works from community artists ⮞ YOU CAN PROVIDE FREE CONTENT THAT ACCEPTS AN OPTIONAL DONATION COAT MODIFICATIONS ARE ONLY PERMITTED WITH WITH EXPLICIT CONSENT FROM SWEM (ALAHARRANHONOR) Modified horse model and "breed add-ons" Modified .json files  → Altered breeding tags or coat cycling information ⮞ YOU CAN SELL CONTENT THAT IS AT LEAST 90%* YOUR OWN WORK 90% ACCOUNTS FOR THE 10% FAIRLY ACCREDITED TO SIMILAR ARTISTIC STYLE, INSPIRATION, REFERENCE OR COLOR PICKING 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 inventory icons of custom content using the default pixel outline (shape) of SWEM tack → Textures for blocks or items → Animations  Star Worm Equestrian is PG13: appropriate for users of all ages. Any content or creators that modify it to be or appear otherwise do so against the terms of use for this project. ⮞ YOU MUST NOT SELL, PROMOTE OR FEATURE SWEM IN ANY CONTENT OR MEDIA THAT INCLUDES: Extreme violence or gore Mature (18+) themes → Including realistic gender anatomy or animations  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 is updated to work with SWEM 1.5.2 - please use the Beta 5 pack found here. 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. Close Minecraft Locate your community pack(s) Go inside  packname > jsons > coats Open the first coat file in a text editor Change  "legacy": "default:coats/legacy/coat_artist.png" to "legacy": "legacy/coat_artist.png" Save and close the file Repeat for all coat files +/- all outdated packs Texture Path Files (Older Versions) Beta 5 "legacy": "default:coats/legacy/coat_artist.png" Beta 7 "legacy": "default:legacy/coat_artist.png" 1.5.x "legacy": "legacy/coat_artist.png" Creating A Community Pack You can skip step 1-3 by downloading a template community pack found on our Discord. 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).  READ ME:  RESOURCES [EXPAND] Recommendations ⮞ REMOVE ANY UNUSED FOLDERS Consider removing folders that do not contain any content (ie tack folder from a coat only pack). This will not prevent the pack from working, but it will be smaller, tidier and much clearer to users on the content contained within. ⮞ USE A STANDARD NAMING FORMAT This keeps your creations consistent, well organized and easy to identify as your work.  PACKS   artist_packname Example: arishant_freecoats  COATS   coatname_artist Example:  maple_arishant  TACK  See naming format resources below. You might notice some items recommend credits before or after the name, this is for a few reasons!  PACKS  Sorted alphabetically in folder and in-game, so packs group by artist instead of pack name  COATS  Listed alphabetically in game once filtered by pack. Example:  apple_artist / banana_artist / coconut_artist  TACK  Listed alphabetically in game, instead of by type. Example:  midnight_bridle / midnight_halter / midnight_saddle ⮞ USE A UNIQUE NAME FOR PACKS Naming a pack koficoats will work, but if another pack shares the same name they would merge together. If you use artist_packname it significantly reduces the chance of name duplication and folder merging. ⮞ USE A UNIQUE NAME FOR FILES Naming a coat  coatname or tack item name_type without artist will work, but it increases the risk of file replacement. Pack that use the same name and coats or tack with the same name, will replace existing files of the same name. If you are an artist that offers different variations of content, always use a unique name. Example: 2 files both named  coatname_artist but one with braids and one with roached mane will replace the other if a player chooses to use both options. If you named one  coatname_braids_artist and the other  coatname_roached_artist the player can choose to have one or both without replacing the other. ⮞ USE CORE PACKS AND CONTENT PACKS If you want to make every pack unique, that's up to you. Example:  artist_pack1  artist_pack2  artist_pack3 However, if you create a lot of content this is going to be annoying for you to keep track of, and overwhelming to players. Instead of using many packs with just one of two creations inside, consider using a core pack and offering add-ons via content packs. This is explained more in a section further down! ⮞ REMOVE (OR RENAME) OUTDATED FILES If you fix and issue with a pack, file or texture it is recommended to remove the original download. If you want to keep it as a legacy version, consider renaming it (ie coatname_artist_old). Old files using the name name may replace newer ones if accidentally downloaded, or included in an outdated pack. [EXPAND] File Structure Example 📂 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  STEP ONE:  CREATE THE PACK FOLDER STRUCTURE Create a new folder  → It can be in config > swem > community-packs or somewhere else (move later)  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 Go inside the empty folder Create two new folders here →  jsons to store the information files →  textures to store the coat and tack files  STEP TWO:  CREATE THE JSONS FOLDER STRUCTURE Go inside the empty jsons folder Create two new folders here →  coats to store .json information files for coats →  tack to store .json information files for tack  Go inside the empty  tack folder 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 Go inside the empty  textures folder Create two new folders here →  coats  →  tack  Go inside the empty  coats folder Create one new folder here: →  legacy to store .png texture files for coats Go inside the empty  tack folder Create 10 new folders here →  blanket →  breast_collar →  bridle →  girth_strap →  halter →  horse_armor →  leg_wraps →  pasture_blanket →  saddle →  saddle_bag Creating A Content Pack If you are making a pack for personal use, you can skip this. Content packs are aimed at Creators providing expansion content. A Content Pack is exactly the same as a community pack, but differs in how and why it is used. Content Packs use the same name as a 'core' community pack. Content Packs merge into any packs with the same name, or work as a standalone if one does not exist. Content Packs usually include less content, or content bundled by theme (ie Black Coats, Bay Coats) [EXPAND] Content Packs Example If you create a lot of content, you probably do not want to provide ALL of your coats in a single bundle, or maintain lots of individually named packs. This would quickly get confusing and difficult should any packs require a fix to files or textures. Let's say you decide that your core pack will be yourname_koficoats. Each time you create a new coat, you will provide that coat in its own pack, using that name. You set it up like a normal community pack, and if a player downloads it it will work in-game when pasted into the community pack folder. If you then create another new coat, you do the same thing; make a community pack named  yourname_koficoats with just the NEW coat file and texture. If a player downloads that file and pastes it into the community pack folder, it will merge into any pack folders that share the same name. This means you can offer optional content that players can pick and choose which files they want. They don't need to download any requirements, every pack will work on its own, or merge with others if they already exist. Unfortunately, downloads get renamed if they have the same name, ie artist_pack [1] and artist_pack [2] → There is no way to avoid this without downloading packs one at a time, or manually renaming them to merge files. 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 Save or rename the file as artist_coatname → The file type should display as  PNG File   Paste this file into your community pack artist_packname > textures > coats > legacy > coatname_artist.png  STEP TWO:  CREATE A JSON FILE Open a blank text editor file using Notepad (Windows) or TextEdit (Mac) Paste in the coat template code (below) 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"] 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   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 ⮞ 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 Paste the community pack file in  config > swem > community-packs → Read here if this is your first time installing a community pack. Load the game Open a test world with cheats enabled 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 Select your coat and enter the command 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! ⮞ [0] CORRECT INSTALLATION Check your community pack is correctly installed to work: → Pasted in config > swem > community-packs folder → Unzipped folder and not a .zip or .rar file → Direct inside your community pack should be folders for  jsons and textures     ✅ config > swem > community-packs > yourpackname > jsons / textures ❌ config > swem > community-packs > yourpackname > yourpackname (again) > jsons / textures ⮞ [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]. ❌ White Texture Coat information has been changed. Revert changes OR change coat via lapis/command.       Multiplayer Player (client) pack is different to the server's files. Update pack to match server. ❌ 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). All files correct but some do not load → Invalid files prevent subsequent (loaded after them alphabetically A-Z) from being loaded.  → Note the names of coats you CAN summon or change coats of, then find the first letter you cannot. → Sort your community pack folder by ascending name - identify the file(s) AFTER the last one that works in game. → Check the JSON for the first coat that does not load in game. Check solutions [3] and [4]. → Relaunch and check - you may need to fix more than one file!    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 or symbols ✅ artist_kofi ❌  Artist Kofi Coats (1) → 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). → Paste the text here and validate to check it has no errors. → 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 Tack This guide will not cover how to create tack, for information please read our  [RESOURCES]  on Discord. [EXPAND] Files & Naming Format This is the standard format used in the Beta pack. It is recommended to use a consistent naming format as shown here. Type Texture + Name Comment Bridle name_bridle_icon Inventory Icon name_bridle_legacy Horse Texture name_bridle_bit_legacy Horse Texture  rack_bridle_name_blanket Bridle Rack Texture Blanket name_blanket_icon Inventory Icon name_blanket_legacy Horse Texture rack_saddle_name_blanket Saddle Rack Texture rack_saddle_5_name_blanket Blanket Rack (5X) Texture Saddle name_saddle_icon Inventory Icon name_saddle_legacy Horse Texture rack_saddle_name_saddle Saddle Rack Texture rack_horse_armor_name_saddle Armor Rack Texture Girth Strap name_girth_strap_icon Inventory Icon name_girth_strap_legacy Horse Texture rack_saddle_name_girth_strap Saddle Rack Texture Breast Collar name_breast_collar_icon Inventory Icon name_breast_collar_legacy Horse Texture Leg Wraps name_leg_wraps_icon Inventory Icon name_leg_wraps_legacy Horse Texture name_leg_wraps_hoof_legacy Horse Texture (hoof) Saddlebag name_saddle_bag_icon Inventory Icon name_saddle_bag_legacy Horse Texture Horse Armor name_horse_armor_icon Inventory Icon name_horse_armor_legacy Horse Texture name_horse_armor_wings_legacy Horse Texture Optional (Default: Amethyst Tier) rack_horse_armor_name_horse_armor Armor Rack Texture Halter name_halter_icon Inventory Icon name_halter_legacy Horse Texture rack_halter_lead_name_halter Lead Rack Texture Pasture Blanket name_pasture_blanket_icon Inventory Icon Optional (One or Both) name_pasture_blanket_armored_icon Inventory Icon Optional (One or Both) name_pasture_blanket_legacy Horse Texture Optional (One or Both) name_pasture_blanket_armored_legacy Horse Texture Optional (One or Both) rack_pasture_blanket_3_short_name Pasture Blanket Rack (3X) Texture rack_pasture_blanket_5_long_name Pasture Blanket Rack (5X) Texture  STEP ONE:  CREATE OR DOWNLOAD TACK ICONS This is the icon that will display in inventory slots of when held in hand. Each tack item needs ONE icon. Save or rename the files as  name_type_icon → Use the recommended naming in Files & Naming Format above. → Name should relate to in-game name ✅ Midnight Saddle →  midnight_saddle_icon      → Type should match a valid tack type ✅  midnight_blanket_icon  midnight_girth_strap_icon → The file type should display as  PNG File → Icons should be default 16 x 16 pixels Paste this file into your community pack artist_packname > textures > tack > [type] > name_type_icon.png → Type should use the relevant folder Example Midnight Saddle →  textures > tack > saddle  STEP TWO:  CREATE OR DOWNLOAD TACK TEXTURES This is the texture for the tack on the horse. Note, there are a few optional variations: Bridles need a texture for both the 2D components and the 3D bit. Leg wraps require leg_wraps and leg_wraps_hoof for hoof rendered textures. Horse armor has horse_armor for default tiers up to diamond and horse_armor_wings for default amethyst tier → Custom armor can support wings without being amethyst tier, or non-winged armor at amethyst tier. Pasture Blanket has  pasture_blanket (cosmetic only) and pasture_blanket_armored with amethyst tier armor protection. Save or rename the files as  name_type_artist  → Name and Type means the same as in Step One. → Legacy is optional, but recommended to indicate it is for the original horse model. → The file type should display as  PNG File Paste this file into your community pack artist_packname > textures > tack > [type] > name_type_artist.png → Type means the same as in Step One.  STEP THREE:  CREATE OR DOWNLOAD RACK TEXTURES This is the texture for the tack on compatible storage racks. Not all tack supports rack storage. Bridles and halters can be stored on Bridle Racks  rack_bridle  Halters can be stored on Halter & Lead Racks rack_halter_lead Blankets (Saddle Pads) can be stored on Blanket Racks  rack_saddle_5 Saddles, Blankets (Saddle Pads) and Girth Straps can be stored on Saddle Racks  rack_saddle Saddles and Horse Armor can be stored on Armor Racks  rack_horse_armor Pasture Blankets can be stored on Pasture Blanket Racks rack_pasture_blanket_3_short  rack_pasture_blanket_5_long Breast Collars, Leg Wraps and Saddle bags do not support any tack storage racks. Rack textures are default for blankets (saddle pads), girth straps and pasture blanket. They can support a premade grayscale template with a color overlay. The texture template can be copied from  assets > swem > textures > block The color code (RGB code) is specified in the tack .json file  You can make a custom texture instead; retexture the template. If you create a custom texture, use [255, 255, 255] (white) overlay in .json to disable the overlay. If you create a custom grayscale texture, use the RGB color overlay as normal. Rack textures are custom for bridles, halters, saddles and horse armor.  [TBC]  They use a modified version of the horse tack texture.  [TBC]  This can be found in... Save or rename the files as racktype_name_type → Name and Type means the same as in Step One. → Rack Type means the compatible storage type (see list above) → The file type should display as  PNG File Paste this file into your community pack  → artist_packname > textures > tack > [type] > racktype_name_type_artist.png → Type means the same as in Step One.  STEP FOUR:  CREATE JSON FILE(S) This is the information file that registers custom tack as an item in game, and specifies its properties. Open a blank text editor file using Notepad (Windows) or TextEdit (Mac) Copy the template code for your tack item (below) Edit the template to your coat → You only need to edit the BOLDED PURPLE text - leave the rest unless you know what you're doing! →  credits the name of the texture artist(s) ✅ "credits": "Arishant",  →  inspiration optional notes on inspiration or reference ✅ "inspiration": "Midnight Tack Set",  →  coin tier of coin required to purchase at EQ Shop✅ "coin": "iron"      Note:  Valid tiers are copper > iron > emerald >  gold >  diamond > netherite > amethyst →  amount number of tokens required to purchase at EQ Shop ✅ "amount": 2 → name item name (ID) in lowercase letters ✅ "name": "midnight_bridle" → icon texture path for the inventory icon ✅ "icon": "bridle/midnight_bridle_icon.png" → type the tack type and tack slot it is equipped in ✅ "type": "bridle" → model_type if it is western or english tack (specific items) - input ONE type ✅ "model_type": "western" →  color RGB color code overlay for rack textures (specific items) ✅ "color": [0, 51, 102], <- Dark Blue      Note:  Custom rack textures should use a white overlay [255, 255, 255] to not alter colors. → tier tier of horse armor (inherits the benefits of all previous tiers) ✅  "tier": "amethyst"      Note:  Valid tiers are cloth > iron >  gold >  diamond > amethyst  → can_wear_armor if it supports armor equipping (specific items) - set to true or false ✅ "can_wear_armor": false → textures texture path for the horse texture ✅ "bridle": "bridle/midnight_bridle_bit_legacy.png"      Note:   The path and textures required vary by tack type - only modify the template where shown!  → rack texture path for tack storage racks (specific items) ✅ "bridle": "bridle/rack_bridle_name_bridle.png"      Note:   The path and supported storage racks vary by tack type - only modify the template where shown!  Save the file as a .json file by using  save as and naming the file  name_type.json → Use the Files & Naming Format guide (above) → The file type should display as  JSON File   Paste this file into your community pack artist_packname > jsons > tack > [type] > name_type.json → Type should use the relevant folder Example Midnight Bridle → textures > tack > bridle [EXPAND] Bridle Template {   "display": {     "name": "Name Bridle",     "credits": "Artist(s)",     "inspiration": "N/A"   },   "cost": {     "coin": "iron",     "amount": 2   },   "meta": {     "name": "name_bridle",     "icon": "bridle/name_bridle_icon.png",     "type": "bridle",     "data": {       "model_type": "western / english (select one)",       "can_wear_armor": true     },     "textures": {       "horse": {         "legacy": {           "bridle": "bridle/name_bridle_bit_legacy.png",           "halter": "bridle/name_bridle_legacy.png"         }       },       "rack": {         "bridle": "bridle/rack_bridle_name_bridle.png"       }     }   } } [EXPAND] Blanket Template (Saddle Pad) {   "display": {     "name": "Name Blanket",     "credits": "Artist(s)",     "inspiration": "N/A"   },   "cost": {     "coin": "iron",     "amount": 2   },   "meta": {     "name": "name_blanket",     "icon": "blanket/name_blanket_icon.png",     "type": "blanket",     "data": {       "color": [255, 190, 0],       "can_wear_armor": true     },     "textures": {       "horse": {         "legacy": {           "blanket": "blanket/name_blanket_legacy.png"         }       },       "rack": {         "saddle": "blanket/rack_saddle_name_blanket.png",         "blanket_5": "blanket/rack_blanket_5_name_blanket.png"       }     }   } } [EXPAND] Saddle Template {   "display": {     "name": "Name Saddle",     "credits": "Artist(s)",     "inspiration": "N/A"   },   "cost": {     "coin": "gold",     "amount": 4   },   "meta": {     "name": "name_saddle",     "icon": "saddle/name_saddle_icon.png",     "type": "saddle",     "data": {       "model_type": "western / english (select one)",       "can_wear_armor": true     },     "textures": {       "horse": {         "legacy": {           "saddle": "saddle/name_saddle_legacy.png"         }       },       "rack": {         "saddle": "saddle/rack_saddle_name_saddle.png",         "horse_armor": "saddle/rack_horse_armor_name_saddle.png"       }     }   } } [EXPAND] Girth Template {   "display": {     "name": "Name Girth Strap",     "credits": "Artist(s)",     "inspiration": "N/A"   },   "cost": {     "coin": "copper",     "amount": 3   },   "meta": {     "name": "name_girth_strap",     "icon": "girth_strap/name_girth_strap_icon.png",     "type": "girth_strap",     "data": {       "color": [255, 190, 0],       "can_wear_armor": true     },     "textures": {       "horse": {         "legacy": {           "girth_strap": "girth_strap/name_girth_strap_legacy.png"         }       },       "rack": {         "saddle": "girth_strap/rack_saddle_name_girth_strap.png"       }     }   } } [EXPAND] Breast Collar Template {   "display": {     "name": "Name Breast Collar",     "credits": "Artist(s)",     "inspiration": "N/A"   },   "cost": {     "coin": "copper",     "amount": 5   },   "meta": {     "name": "name_breast_collar",     "icon": "breast_collar/name_breast_collar_icon.png",     "type": "breast_collar",     "data": {       "can_wear_armor": true     },     "textures": {       "horse": {         "legacy": {           "breast_collar": "breast_collar/name_breast_collar_legacy.png"         }       },       "rack": {         "blanket": ""       }     }   } } [EXPAND] Leg Wraps Template {   "display": {     "name": "Name Wraps",     "credits": "Artist(s)",     "inspiration": "N/A"   },   "cost": {     "coin": "iron",     "amount": 1   },   "meta": {     "name": "name_leg_wraps",     "icon": "leg_wraps/name_leg_wraps_icon.png",     "type": "leg_wraps",     "data": {       "can_wear_armor": true     },     "textures": {       "horse": {         "legacy": {           "leg_wraps": "leg_wraps/name_leg_wraps_legacy.png",           "hoof": "leg_wraps/name_leg_wraps_hoof_legacy.png"         }       },       "rack": {         "blanket": ""       }     }   } } [EXPAND] Saddle Bag Template {   "display": {     "name": "Name Saddle Bag",     "credits": "Artist(s)",     "inspiration": "N/A"   },   "cost": {     "coin": "gold",     "amount": 1   },   "meta": {     "name": "name_saddle_bag",     "icon": "saddle_bag/name_saddle_bag_icon.png",     "type": "saddle_bag",     "data": {       "color": [255, 190, 0]     },     "textures": {       "horse": {         "legacy": {           "saddle_bag": "saddle_bag/name_saddle_bag_legacy.png"         }       },       "rack": {       }     }   } } [EXPAND] Horse Armor Template {   "display": {     "name": "Name Horse Armor",     "credits": "Artist(s)",     "inspiration": "N/A"   },   "cost": {     "coin": "amethyst",     "amount": 4   },   "meta": {     "name": "name_horse_armor",     "icon": "horse_armor/name_horse_armor_icon.png",     "type": "horse_armor",     "data": {       "tier": "amethyst"     },     "textures": {       "horse": {         "legacy": {           "armor": "horse_armor/name_horse_armor_legacy.png",           "wings": "horse_armor/name_horse_armor_wings_legacy.png"         }       },       "rack": {         "horse_armor": "horse_armor/rack_horse_armor_name_horse_armor.png"       }     }   } } [EXPAND] Halter Template {   "display": {     "name": "Name Halter",     "credits": "Artist(s)",     "inspiration": "N/A"   },   "cost": {     "coin": "emerald",     "amount": 4   },   "meta": {     "name": "name_halter",     "icon": "halter/name_halter_icon.png",     "type": "halter",     "data": {       "color": [255, 190, 0],       "can_wear_armor": true     },     "textures": {       "horse": {         "legacy": {           "halter": "halter/name_halter_legacy.png"         }       },       "rack": {         "halter_lead": "halter/rack_halter_lead_name_halter.png"       }     }   } } [EXPAND] Pasture Blanket Template {   "display": {     "name": "Name Pasture Blanket",     "credits": "Artist(s)",     "inspiration": "N/A"   },   "cost": {     "coin": "emerald",     "amount": 4   },   "meta": {     "name": "name_pasture_blanket",     "icon": "pasture_blanket/name_pasture_blanket_icon.png",     "type": "pasture_blanket",     "data": {       "color": [255, 190, 0]     },     "textures": {       "horse": {         "legacy": {           "pasture_blanket": "pasture_blanket/name_pasture_blanket_legacy.png"         }       },       "rack": {         "pasture_blanket_long_5": "pasture_blanket/rack_pasture_blanket_5_long_name.png",         "pasture_blanket_short_3": "pasture_blanket/rack_pasture_blanket_3_short_name.png"       }     }   } } [EXPAND] Armored Pasture Blanket Template {   "display": {     "name": "Armored Name Pasture Blanket",     "credits": "Artist(s)",     "inspiration": "N/A"   },   "cost": {     "coin": "diamond",     "amount": 2   },   "meta": {     "name": "name_pasture_blanket_armored",     "icon": "pasture_blanket/name_pasture_blanket_armored_icon.png",     "type": "pasture_blanket",     "data": {       "color": [255, 190, 0],       "is_armored": true     },     "textures": {       "horse": {         "legacy": {           "pasture_blanket": "pasture_blanket/name_pasture_blanket_armored_legacy.png"         }       },       "rack": {         "pasture_blanket_long_5": "pasture_blanket/rack_pasture_blanket_5_long_name.png",         "pasture_blanket_short_3": "pasture_blanket/rack_pasture_blanket_3_short_name.png"       }     }   } }  STEP FIVE:  TEST YOUR COMMUNITY PACK It is recommended to check your pack early after doing just one or two items to ensure you have followed instructions correctly. Paste the community pack file in  config > swem > community-packs → Read here if this is your first time installing a community pack. Load the game Open a test world with cheats enabled Place an EQ Shop Block Give yourself some tokens  → Choose a type that is a valid currency for your tack (as specified in .json) Place the tokens into the input slot Check your tack items display and can be purchased Check the tack item has the correct inventory icon Check the tack can be equipped and: → The tack has the expected texture → The tack has the expected features (ie supports armor if it should, armor tier, wings etc) Check the tack can be placed on supported racks (if relevant) and displays the correct texture [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] COMMUNITY PACK LOADING Open the game and load into a world Type  /give @p Example  /give @p artist_packname: → Is the command valid? (displays autofill options) ✅ Pack is recognized ❌ Pack is not recognized or has failed to register at least one item. Go to solutions [2].  ⮞ [3] ITEM REGISTERED Type  /give @p Example  /give @p artist_packname: → Is every item you expect to see registered listed? ✅ Items are registered ❌ Item(s) have invalid or missing files. Go to solutions [3]. ⮞ [4] JSON -> TEXTURE PATH Give yourself an item from the pack → Does it have the correct inventory texture? → Does it have the correct horse texture (when equipped)? → Does it apply to the required parts of the horse or tack model (ie Bridle bit)? → Does it have the correct rack texture (if supported)? ✅ Item texture paths are correct ❌ Missing Texture Texture path or file name is invalid or missing. Go to solutions [4].       Multiplayer Player is missing the pack or no texture for that coat path. Go to solutions [4]. ❌ Wrong Texture Texture path or file name is incorrect. Go to solutions [4]. ❌ Looks Wrong Texture or UV map error. Contact Coat Artist or request help. ❌  Wrong Perks / Protection / Features JSON information is incorrect.   ⮞ [5] OTHER Texture Error → If a texture appears broken (color in wrong places, missing pixels, marker blocks) it needs a texture or UV fix. → If you are not the texture artist, contact the original creator. Error On Load / Crashing  → Too many potential causes → Check you have no duplicate JSON files → Check no JSON information uses the same item name as another item in the pack (ie midnight_saddle x 2) → Paste your latest.log file in Tech Help in our Discord with a description of the issue(s). Pasture Blanket Rack Textures (Black or Wrong Texture) → Check the rack texture path uses 5_long or 3_short and not long_5 or short_3 All Text Appears as ▯ in Minecraft Potentially caused by invalid packs.    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 [2] 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_tackpack ❌  Artist: Tack Pack! → Pack includes at least one .json and .png file in the correct folder     📁 jsons > 📁 tack > 📁 [type]  > JSON FILES HERE     📁 textures > 📁 tack > 📁 [type] > PNG FILES HERE If this is ALL correct the issue is not the community pack structure. Go back to Step [3] above. ⮞ ISSUE [3] Identify an item that is missing in game Check the .json file for the tack item → File is listed as a JSON File type → File is directly in community-packs > artist_packname > jsons > tack > [type] <- Correct folder for the tack type → File has a valid lowercase name with no spaces ✅ name_type ❌  Itemname - Type → File information uses the correct template for the tack type → Folder contains .json files only - no .pngs or any other file type If this is correct, the most likely issue is formatting (invalid json). → Paste the text here and validate to check it has no errors. → Compare your .json to the template and note any missing " , or  { } or different indentation → If unsure, delete and repaste the .json file text from a valid template for the specific tack type → Reload the game and repeat Step [3] above.  KNOWN ISSUE  Opening or modifying a pack on a Mac creates a .DS_store file. Should be fixed in 1.5.x. → This is usually invisible to Mac users and prevents the pack from working. Discord: Bug Report If this is ALL correct or changes did not work, paste your .json file in Tech Help in our Discord ⮞ ISSUE [4] Identify an item with a missing or incorrect texture Check the .json file for the coat → File uses the correct path:     "icon": for inventory textures     (horse > legacy >) "type": for horse textures      Note:   Specific items have more than one texture, such as bridles (bit = halter + bridle) and leg wraps (wraps + hoof) → 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 > tack > [type] → File has a valid lowercase name with no spaces ✅ name_type ❌  Item Name - Tack Type → File uses the correct naming format (see Files & Naming Format) 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. ⮞ [5] 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 [EXPAND] Checking JSON Validity It is easy to make small errors when creating or editing JSON files. Even a simple missing { can make your pack invalid. There is a simple way to check if your JSON files have any formatting errors, using an online validator. Open an online validator like THIS Paste in the contents of your JSON file Click Validate JSON to check the file View the output below This is a valid JSON File with no formatting errors! → Packs can still fail to register or work if the files and folders are incorrect or duplicated. → Packs can still fail to register if other files have format errors, or files have invalid or missing data. This is an invalid JSON where the  { is missing after  "data": making  "color": invalid → You may not necessarily understand what it is telling you, but you can use this section to compare to examples. → If you cannot resolve your issue, sharing a screenshot of this output may assist helpers in tech help to find your issue. Adding Custom Animations It is recommended to provide a command list with Animation Packs, as they will not auto-fill in game. This guide will not cover how to create animations, for information please read our  [RESOURCES]  on Discord. Create your custom animation(s) in blockbench Create an animation resource pack → Replace  assets > swem > animations > swem_horse.json with a custom animation file → This must include all the existing animations and any new animations Install the resource pack in the resourcepack folder  Use  /swem rrp anim to trigger the animation Additional information: Animations cannot be triggered via keys (like gaits) but must use a command. → Default animations can still be replaced if you want to override gaits Animations will loop until the command is re-run to stop it. All clients (players) must install the resource pack to view triggered animations  TBC  Multiplayer Servers Resources Creating Tack Textures [WIP] Credits: Jenny   HORSE TACK TEXTURES   Download a copy of the latest SWEM .jar (mod file) Unzip the .jar file to access the SWEM files Download / Open Blockbench File > Open Model → Open Horse Model: assets > swem > geo > entity > horse > swem_horse View the blocks menu on the bottom right Toggle all blocks to Off using the eye icon → This is to prevent accidental texturing of the wrong element → Each tack type renders specific blocks - ie painting neck for leg wraps will not show! Toggle on only relevant elements for your chosen tack type → This might include multiple blocks - see chart below  TBC  Create a new texture that is 512 x 512 pixels (16x) → Alternatively, import a base texture to use as a template      Note:  These are found in  assets > swem > textures > entity > horse > [type] Switch to the paint tab and texture Right click the completed texture in the texture menu > save as Save the file as  name_type or  name_type_descriptor ✅  midnight_blanket midnight_blanket_blue → Using a descriptor is useful for multiple variant sets ✅ blanket_blue blanket_red Blockbench has a search function (magnifying glass) in the outliner (blocks) menu to search by name or keyword. Tack Type Group Element(s) Bridle (Western) Front > Neck > NeckJoint1 > Head > WesternBridle > WesternBridleLeftBit WesternBridleLeftBit (5X) Front > Neck > NeckJoint1 > Head > WesternBridle > WesternBridleLeftRein WesternBridleLeftRein Front > Neck > NeckJoint1 > Head > WesternBridle > WesternBridleLeftRein1 WesternBridleLeftRein1 Front > Neck > NeckJoint1 > Head > WesternBridle > WesternBridleLeftRein2 WesternBridleLeftRein2 Front > Neck > NeckJoint1 > Head > WesternBridle > WesternBridleRightBit WesternBridleRightBit (5X) Front > Neck > NeckJoint1 > Head > WesternBridle > WesternBridleRightRein WesternBridleRightRein Front > Neck > NeckJoint1 > Head > WesternBridle > WesternBridleRightRein1 WesternBridleRightRein1 Front > Neck > NeckJoint1 > Head > WesternBridle > WesternBridleRightRein2 WesternBridleRightRein2  TBC: HEADPIECE  Bridle (English) Bridle (Adv)         Blanket Middle > BlanketMiddle Blanket Middle (2X) Saddle (Western) Middle > WesternSaddle WesternSaddle Middle > WesternSaddle > WesternSaddleMiddle WesternSaddleMiddle (10X) Middle > WesternSaddle > WesternSaddleLeftSide WesternSaddleLeftSide (3X) Middle > WesternSaddle > WesternSaddleRightSide WesternSaddleRightSide (3X) Saddle (English) Middle > EnglishSaddle > EnglishSaddleMiddle EnglishSaddleMiddle (3X) Middle > EnglishSaddle > EnglishSaddleRightSide EnglishSaddleRightSide (4X) Middle > EnglishSaddle > EnglishSaddleLeftSide EnglishSaddleLeftSide (4X) Saddle (Adv) Middle > AdventureSaddle AdventureSaddle Middle > AdventureSaddle > AdventureSaddleMiddle AdventureSaddleMiddle (6X) Middle > AdventureSaddle > AdventureSaddleLeftSide AdventureSaddleLeftSide (3X) Middle > AdventureSaddle > AdventureSaddleRightSide AdventureSaddleRightSide (3X) Girth Strap Middle > Belly > GirthStrapBelly GirthStrapBelly (2X) Middle > GirthStrapMiddle GirthStrapMiddle (2X) Breast Collar Front > BaseFront > BreastCollarBase BreastCollarBase (2X) Front > BaseFront > BreastRight > BreastCollarBreastRight BreastCollarBreastRight Front > BaseFront > BreastLeft > BreastCollarBreastLeft BreastCollarBreastLeft Front > BaseFront > FrontLeft > BreastCollarFrontLeft BreastCollarFrontLeft (3X) Front > BaseFront > FrontRight > BreastCollarFrontRight BreastCollarFrontRight (3X) Middle > BreastCollarBelly BreastCollarBelly Middle > BreastCollarMiddle BreastCollarMiddle Leg Wraps Front > FrontLeft > FrontLeftLeg > .. > .. > LegWrapsFrontLeftHoof LegWrapsFrontLeftHoof Front > FrontLeft > FrontLeftLeg > .. > .. > LegWrapsFrontLeft LegWrapsFrontLeft Front > FrontRight > FrontRightLeg > .. > .. > LegWrapsFrontRightHoof LegWrapsFrontRightHoof Front > FrontRight > FrontRightLeg > .. > .. > LegWrapsFrontRight LegWrapsFrontRight Back > BackLeft > .. > .. > .. > .. > LegWrapsBackLeftHoof LegWrapsBackLeftHoof Back > BackLeft > Bone4 > KneeLeft > Bone6 > LegWrapsBackLeft LegWrapsBackLeft Back > BackRight > .. > .. > .. > .. > LegWrapsBackRightHoof LegWrapsBackRightHoof Back > BackRight > Bone7 > KneeRight > .. > LegWrapsBackRight LegWrapsBackRight Front > Neck > NeckJoint1 > Head > Skull > LegWrapsSkull LegWrapsSkull Front > . > . > . > Skull > BridgeOfNose > LegWrapsBridgeOfNose LegWrapsBridgeOfNose Saddle Bag Back > Base > SaddleBag > SaddleBagLeft SaddleBagLeft Back > Base > SaddleBag > SaddleBagRight SaddleBagRight Back > Base > BedRoll BedRoll (7X) Horse Armor Front > FrontLeft > ArmorLeftShoulder ArmorLeftShoulder (4X) Front > FrontRight > ArmorRightShoulder ArmorRightShoulder (4X) Front > Neck > NeckJoint1> MainNeck1 > ArmorNeck > ArmorNeck1 ArmorNeck1 (3X) Front > Neck > NeckJoint1 > Head > ArmorHead > ArmorHead1 ArmorHead1 (8X) Middle > ArmorCloth > ArmorClothLeft ArmorClothLeft Middle > ArmorCloth > ArmorClothRight ArmorClothRight Back > Base > ArmorButt > 10X ArmorButt (10X) Wings Front > BaseFront > WingsScapular > LeftGROUP > WingsScapularLeft WingsScapularLeft Front > BaseFront > WingsScapular > LeftGROUP > WingsMarginalLeft WingsMarginalLeft Front > BaseFront > WingsScapular > LeftGROUP > WingsMarginalLeft2 WingsMarginalLeft2 Front > BaseFront > WingsScapular > LeftGROUP > WingsMarginalLeft2 > WingsAlulaLeft WingsAlulaLeft Front > BaseFront > WingsScapular > LeftGROUP > WingsMarginalLeft2 > WingsAlulaLeft > WingsFlightFeathersLeft WingsFlightFeathersLeft Front > BaseFront > WingsScapular > RightGROUP > WingsScapularRight WingsScapularRight Front > BaseFront > WingsScapular > RightGROUP > WingsMarginalRight WingsMarginalRight Front > BaseFront > WingsScapular > RightGROUP > WingsMarginalRight2 WingsMarginalRight2 Front > BaseFront > WingsScapular > RightGROUP > WingsMarginalRight2 > WingsAlulaRight WingsAlulaRight Front > BaseFront > WingsScapular > RightGROUP > WingsMarginalRight2 > WingsAlulaRight > WingsFlightFeathersRight WingsFlightFeathersRight Halter Front > Neck > NeckJoint1 > Head > Skull > HalterSkull HalterSkull Front > Neck > NeckJoint1 > Head > Skull > BridgeOfNose > HalterBridgeOfNose HalterBridgeOfNose Front > Neck > NeckJoint1 > Head > Skull > Cheeks > HalterCheeks HalterCheeks Front > Neck > NeckJoint1 > Head > Mouth > HalterMouth HalterMouth Pasture Blanket Front > FrontLeft > PBFrontLeft PBFrontLeft (4X) Front > FrontRight > PBFrontRight PBFrontRight (4X) Middle > PBMiddle PBMiddle (5X) Back > Base > PBBack PBBack (6X)   TACK RACK TEXTURES         TACK ICON TEXTURES   Download / Open Blockbench File > New > Image → Set name as name_type_icon ✅  midnight_blanket_icon → Set resolution as default 16x16 pixels Confirm Create an icon to represent your tack in inventory slots → Alternatively, drag a default icon texture to use as a template → Select Add Image from options      Note:  These are found in  assets > swem > textures > item [item_name]  TBC  Saving  COMING SOON  Known Issues Credits Special thanks to the following contributors: Quarris for feature documentation, example pack and wiki information support Jenny for creator resources, testing and documentation Neehra for creator resources, testing and Mac information Legend for recommending JSON validation resources