# Coats [NEW]

This feature is available in **1.20.1-1.5+** and will **NOT** be backported to any outdated versions.

#### Features Community packs add NEW custom coats in-game without overriding the default variants. - Supports simple breeding "color tags" - Supports lapis / redstone cycling (if enabled) - Supports summon command - Supports natural spawning **via compatible community datapacks** --- #### Important - Update Changes This update has made changes to coat NBT data, summon commands as well as some smaller (less gameplay significant) changes. Expand the drop-down to read more about specific changes and how that might impact you as a player or creator.
\[EXPAND\] Changelog
**Feature****Changes**
SummonMinecraft `/summon` spawns white horses only (cannot randomize). ** NEW SWEM SUMMON COMMANDS** `/swem summon LEGACY swem:coat` Summon a default coat. **EX:** `swem:sweetboi` `/swem summon LEGACY pack_name:coat_artist` Summon a custom coat. **EX:** `kofi:hidalgo_arishant` `/swem summon random LEGACY` Summon a random coat
Coat DataRemoved `Variant: #` NBT and changed to `Behaviors[6].Coat` Data values for coat must set a value using `` (see below for info) ** NEW SWEM COAT CHANGE COMMANDS** `/swem set coat` Displays a list of all valid choices `/swem set coat swem:coat` Change to a default coat. **EX:** `swem:sweetboi` `/swem set coat pack_name:coat_artist` Change to a custom coat. **EX:** `kofi:hidalgo_arishant` **MINECRAFT COMMANDS (OP)**

*MC Commands are exempt from role keys (ie swem:mod) - which may be useful to servers.*

**Identify a coat (ID)** `/data get entity @e[type=swem:swem_horse,sort=nearest,limit=1] Behaviors[6].Coat` **Change a coat** `/data modify entity @e[type=swem:swem_horse,limit=1,sort=nearest] Behaviors[6].Coat set value <"id:coat">` **Note:** ID will be `swem:` for any swem coats. **EX:** `swem:sweetboi` Foals use `swem:foal_` and include white, gray, black, brown, dark\_brown, chestnut and creamy. **EX:** `swem:foal_dark_brown`
ModelCoats and commands must state a supported model - this will be expanded in future. `LEGACY` Default model and the only one currently implemented.
--- #### Frequently Asked Questions This section has drop-downs for FAQs and expanded information about Community Pack Coats. If your question is not answered here, check out [General Information.](https://wiki.swequestrian.com/books/swequestrian-mod/page/general-information-wip)
\[EXPAND\] FAQs **⮞ CAN COMMUNITY PACKS ADD NEW FOAL VARIANTS?** No. The current system allows for 1 foal per color tag; support for additional foals will require an expanded breeding system. ⮞ **CAN COMMUNITY PACKS MODIFY DEFAULT SWEM COATS?** No. Information such as obtainable by breeding, color tags, lapis cycling is hard coded for default coats (included in SWEM). You can use a resource pack to override any coat texture if you want to replace it. **⮞ CAN COMMUNITY PACKS ADD NEW MODELS?** No. It should continue to work with resource packs that override the SWEM model. This feature will support the new Destrier model (and any others) when it is released in future. ⮞ **CAN CUSTOM COATS APPEAR NATURALLY ON HORSES?** Yes. If the coat information (json) file allows breeding and cycling, it can occur when a horse is summoned or converted. ⮞ **CAN CUSTOM COATS NATURALLY SPAWN?** No. Neither default nor custom coats naturally spawn in the wild (replace MC horses) unless you use a custom datapack.

This update has been modified to continue support for Ace's Datapack found [**HERE**](https://discord.com/channels/715626418893095012/840972393153691738/1022973584181841981) in our Discord.

⮞ **CAN CUSTOM COATS SUPPORT LAPIS / REDSTONE CYCLING?** Yes. This must be set to true for `lapis_cycling` in the coat json file, and `allowCoatCycling` in the [server config](https://wiki.swequestrian.com/books/swequestrian-mod/page/server-config) file. ⮞ **CAN CUSTOM COATS APPEAR FROM BREEDING DEFAULT +/- CUSTOM COATS?** Yes. This must be set to true for `obtainable_by_breeding` in the coat json file. You must set at least one `base_colors` tag - this will determine which color tags your horse can pass on if bred, as well as which foal color(s) can grow up into this coat. ⮞ **CAN I MAKE A CUSTOM COAT 'SECRET'?** Yes, but not in the same way as special default coats. You can set `lapis_cycling` and `obtainable_by_breeding` to **false** in the coat json file, which will prevent cycling and appearance by breeding or converting. **The coat will only appear if summoned via command.** If you have the right kind of knowledge, you could probably create a custom datapack or redstone system loop to check for and convert horses that meet 'secret coat criteria' (ie height and name), or other crafty ways to achieve this result.
\[EXPAND\] Community Pack vs Content Pack **⮞ WHAT IS A COMMUNITY PACK?** Community Packs are folders that include all the files necessary to add NEW assets and are ready to play once installed. **⮞ WHAT IS A CONTENT PACK?** Content Packs is also a Community Pack, but usually with less content. It will merge into any Community Packs with the same name, like an 'expansion' pack or add-on.
--- #### Using A Community Pack To install a Content Pack or **PREMADE** Community Pack, see [General Information](https://wiki.swequestrian.com/books/swequestrian-mod/page/general-information-wip). ##### Information Every custom coat has a "JSON" file which contains all the information on name, texture, obtaining conditions etc. If you did not create the community pack yourself, it will include settings decided by the pack creator, or coat artist. ##### Obtaining If `lapis_cyclable` is **true**, custom coats can occur in cantazarite potion conversion, or coats cycled with redstone/lapis. If `obtainable_by_breeding` is **true**, custom coats can occur in bred horses when they grow up to an adult. If both of these are **false,** horses can only be obtained via [commands](https://wiki.swequestrian.com/books/swequestrian-mod/page/swem-commands). - To summon a specific coat use `/swem summon LEGACY ` - To summon a random coat use `/swem summon random LEGACY` - `lapis_cyclable` must be **true** to enable cusom coat(s). ##### Breeding Custom coats are supported in the breeding system - your horse has a chance to "pass on" their color to foals. Read the drop down to learn more.
\[EXPAND\] Color Tags **⮞ WHAT IS A COLOR TAG?** Color tags determine which coat a horse receives when it is converted from a vanilla horse, or grows up from a foal. There are seven possible tags: `black, gray, white, creamy, brown, dark_brown, chestnut` **⮞ HOW DOES CONVERTING VANILLA -> SWEM HORSES WORK?** Vanilla horses are categorized so you should receive a *similar* coat color, ie a black horse stays black on conversion. **⮞ HOW DOES BREEDING SWEM HORSES WORK?** The coat your horse has will have one or more color tags assigned in code. `Example` If your horse is a black tobiano horse they may (depending on info file) have `black` and `white` color tags. When breeding two horses together, the foal will be randomly assigned **one** tag from its parents and use that color foal coat. `Example` If the mare has `white` and `black` and the stallion has `chestnut`, the foal could be black, white or chestnut only. When the foal grows up, they will **randomly** roll for ALL adult coats that include their foal color. `Example` If the foal is `brown` it will choose from any coat that includes the brown tag. If you change a horse's coat via lapis/redstone or command, any future breeding will use the **new** coat's tag(s). **⮞ THESE ARE NOT REAL GENETICS - YOU DON'T GET REALISTIC RESULTS FROM BREEDING!** The color tags are very simple with just seven total tags. You may get coats that make no sense for genetics such as a pure white foal growing up into a leopard appaloosa because the coat tag includes `white`. This system is in no way trying to be accurate to real life genetics as the current breeding code was intended to be "vanilla style" until a more complex genetics system is possible! **⮞ HOW CAN I EDIT THE COLOR TAGS A HORSE HAS?** You can tweak the information for custom coats in `config > swem > community-packs > [pack_name] > jsons > coats` - You can add or remove color tags but be sure to use the correct format and only enter valid color values! - You can edit obtaining conditions such as `lapis_cyclable` or `obtainable_by_breeding` from true / false

It is not recommended to edit community packs that you require on a server - try to keep server / client files the same!

Wrongly formatted JSON files can break your pack - use [Creators Corner](https://wiki.swequestrian.com/books/swequestrian-mod/page/creators-corner-wip#bkmrk-adding-custom-coats) for info if you don't know what you're doing!

--- #### Creating A Community Pack Coat To create or modify a Content Pack or Community pack, see [Creators' Corner](https://wiki.swequestrian.com/books/swequestrian-mod/page/creators-corner-wip). --- #### Troubleshooting If you experience an issue with content packs in game, please follow this troubleshooting guide.
\[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**

**FOR VERSION 1.20.1-1.5 OR ABOVE, YOU NEED TO MANUALLY UPDATE THE OFFICIAL PACK. SEE [HERE](https://discord.com/channels/715626418893095012/997404105704210432/1311507572422869074) (DISCORD)**

- 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](https://discord.com/channels/715626418893095012/997404105704210432) 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 investigate issues you might have caused by altering their original 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](https://discord.com/channels/715626418893095012/997404105704210432) 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](https://discord.com/channels/715626418893095012/997404105704210432) 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 **