Editing Modding:Coding An Item

From Baldur's Gate 3 Wiki
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
{{PageSeo
<div class="nomobile" column-width: "60em2;>
|title=Modding Resources
You have made a mesh for a human man, a circlet. We are going to add it to the game.
|description=This page is a hub for everything related to Modding Baldur's Gate 3. Check out the following guides to learn how to mod BG3.
|image=Modding_resources.webp
}}{{Modding box}}{{Modding sidebar}}<div column-width: "60em2;>
You have made a mesh for a human man, a circlet. We are going to add it to the game. [[Modding:Creating and Exporting Meshes in Blender|(See here for how to make new meshes in Blender!)]]
 
Remember to check your naming conventions for .lsf.lsx files so the multitool correctly converts them, and keep in mind that some lsx files should not be converted to lsf at all.
Remember to check your naming conventions for .lsf.lsx files so the multitool correctly converts them, and keep in mind that some lsx files should not be converted to lsf at all.
This guide does not cover adding custom icons.


This guide does not cover adding custom icons. For that, see [[Modding:Creating Item Icons|Creating Item Icons]].
==Sample Templates==
Please do remember it is best practice to unpack and consult the game files directly.
*[https://www.nexusmods.com/baldursgate3/mods/3862 Mod Builder] by ReallyLazyIcarus. A python script that generates a folder workspace and empty lsx in the correct format to be converted with the multitool. Recommended!
*[https://www.nexusmods.com/baldursgate3/mods/5165 BG3 Equipment Generator] by Bytebard. A new program, it looks to be a promising new way to add items.
*
Unfortunately a lot of template armour mods are out of date, usually because the mod tools became more efficient. For example most of the [https://bg3.wiki/wiki/Modding:Race_UUID race UUIDS] mentioned on these are defunct and some of the metas don't work. They are still useful to learn from and much of the code will still work, but it is not recommended to use them as a template, just a learning tool. For example, Sample Equipment Mod's backpack templates will still work fine.
*[https://www.nexusmods.com/baldursgate3/mods/10554 Bububull's  lazy armor mod template] by Bububull.
*A new template to use that contains many sample clothing items and how to put them in the tutorial chest.
*[https://www.nexusmods.com/baldursgate3/mods/400 Sample 3D Edited Equipment Mod] by AnteMaxx
**A template mod for datamined and 3D edited armor modding. Contains 1 armor, 1 pair of mismatched boots, 1 pair of mismatched gloves, 1 headwear and 1 shoulder armor. Mainly a modder's resource, but can be enjoyed by players as well.
*[https://www.nexusmods.com/baldursgate3/mods/278 Sample Magic Ring Mod] by AnteMaxx
**A template mod for magic ring and spell modding. Contains 4 magic rings. Mainly a modder's resource, but can be enjoyed by players as well.
*[https://www.nexusmods.com/baldursgate3/mods/249 Sample Equipment Mod] by AnteMaxx
**A template mod for Armor and Weapon modding, and for implementing custom icons. Contains 3 armors, 1 weapon and 1 backpack. Mainly a modder's resource, but can be enjoyed by players as well.
*[https://www.nexusmods.com/baldursgate3/mods/1808 BG3 Creator's Cauldron]- an older program. Useful for its long lists of armor.txt and passives for you to use.
*[https://www.nexusmods.com/baldursgate3/mods/502 BG3 MiniTool by Padme4000]- Can generate a [[Modding:Creating meta.lsx|Meta]] for you to use.
==File Overview==
==File Overview==


Line 31: Line 9:
*MySweetMod
*MySweetMod
**Generated
**Generated
***Public
**Public
****MySweetMod
****MySweetMod
*****Assets <- models and textures
*****Assets <- models and textures
**Localization
**Localization
***Language <- usually ''English''
***Language <- usually ''English''
****<code>MySweetMod.loca</code> <- text for items and spells
**** <code>MySweetMod.loca</code> <- text for items and spells
**Mods
**Mods
***MySweetMod
***MySweetMod
Line 48: Line 26:
******Assets
******Assets
*******Characters
*******Characters
******** [PAK]_Armor <-- material and mesh LSX for custom outfits and weapons
********[PAK]_Armor <-- material and mesh LSX for custom outfits and weapons
****GUI  
****GUI  
*****RootTemplates <--- Your Roottemplate lsx goes here. MySweetMod.Lsx
*****RootTemplates <--- Your Roottemplate lsx goes here. MySweetMod.Lsx
*****Stats
*****Stats
*******Generated <--- TreasureTable.txt - This tells the game where the item will spawn.
*******Generated <--- TreasureTable.txt - This tells the game where the item will spawn.
********Data <--- Armor.txt, Object.txt, Passive.txt, Weapon.txt and other TXT files. These contain stats.
********Data <--- Armor.txt, Object.txt, Passive.txt, Weapon.txt and other TXT files. These contain stats.
Line 61: Line 39:
We now create 2 lsf.lsx for our MySweetMod\Public\MySweetMod\Content\Assets\Characters\'''[PAK]_Armor'''.
We now create 2 lsf.lsx for our MySweetMod\Public\MySweetMod\Content\Assets\Characters\'''[PAK]_Armor'''.


In these will be a visualbank (list of meshes),a materialbank (list of materials) and a texturebank (list of textures). You can split them into their own pages or combine them all, it doesn't matter. When the multitool converts them they will all get merged together anyway. This separation is for viewer ease as they can become very long. For our needs we are putting them into 2 lsx, a meshes and a texture/material one.
In these will be a visualbank (list of meshes),a materialbank (list of material) and a texturebank (list of textures). You can split them into their own pages or combine them all, it doesn't matter. When the multitool converts them they will all get merged together anyway. This seperation is for viewer ease as they can become very long. For our needs we are putting them into 2 lsx, a meshes and a texture/material one.


First, the meshes.lsx.
First, the meshes.lsx.
Line 80: Line 58:
  <attribute id="ID" type="FixedString" value="00000000000000000000000000001" /> '''(This UUID links up to the Roottemplate)'''
  <attribute id="ID" type="FixedString" value="00000000000000000000000000001" /> '''(This UUID links up to the Roottemplate)'''
  <attribute id="MaterialType" type="uint8" value="0" />
  <attribute id="MaterialType" type="uint8" value="0" />
  <attribute id="Name" type="LSString" value="HUM_M_CLT_MySweetCirclet" /> '''Referenced nowhere else but try to make it unique so you don't potentially mess up another item.'''
  <attribute id="Name" type="LSString" value="HUM_M_CLT_MySweetCirclet" /> '''Referenced nowhere else but try to make it unique so you don't potentially ess up another item's toes.'''
  <attribute id="NeedsSkeletonRemap" type="bool" value="False" />
  <attribute id="NeedsSkeletonRemap" type="bool" value="False" />
  <attribute id="RemapperSlotId" type="FixedString" value="" />
  <attribute id="RemapperSlotId" type="FixedString" value="" />
Line 107: Line 85:
   
   
  <node id="Objects">
  <node id="Objects">
  <attribute id="LOD" type="uint8" value="0" /> '''What level of LOD it is. This is a LOD0, so it is the highest quality mesh and the one we see in cutscenes.'''
  <attribute id="LOD" type="uint8" value="0" />  
  <attribute id="MaterialID" type="FixedString" value="00000000000000000000004" /> '''What material it links up to (see materialbank code).'''
  <attribute id="MaterialID" type="FixedString" value="00000000000000000000004" /> '''What material it links up to.'''
  <attribute id="ObjectID" type="FixedString" value="HUM_M_CLT_Headwear_Circlet_Silver_A.HUM_M_CLT_Headwear_Circlet_Silver_A_Mesh.0" /> '''The .0 denotes mesh order, which is not the same as LOD. It is set in the Blender export.'''
  <attribute id="ObjectID" type="FixedString" value="HUM_M_CLT_Headwear_Circlet_Silver_A.HUM_M_CLT_Headwear_Circlet_Silver_A_Mesh.0" /> The .0 denotes mesh load order.
  </node>
  </node>
   
   
   
   
  <node id="Objects"> '''Extra entry for a Level of Detail mesh, which will be seen from a certain distance from the camera. In this case the LOD1.'''
  <node id="Objects"> '''Extra entry for a Level of Detail mesh, which will be seen from a certain distance from the camera. In this case the LOD1.'''
  <attribute id="LOD" type="uint8" value="1" /> '''This is a LOD1 mesh.'''
  <attribute id="LOD" type="uint8" value="1" /> '''What level of LOD it is'''
  <attribute id="MaterialID" type="FixedString" value="00000000000000000000004" />  
  <attribute id="MaterialID" type="FixedString" value="00000000000000000000004" />  
  <attribute id="ObjectID" type="FixedString" value="HUM_M_CLT_Headwear_Circlet_Silver_A.HUM_M_CLT_Headwear_Circlet_Silver_A_Mesh_LOD1.1" />  
  <attribute id="ObjectID" type="FixedString" value="HUM_M_CLT_Headwear_Circlet_Silver_A.HUM_M_CLT_Headwear_Circlet_Silver_A_Mesh_LOD1.1" /> '''The .1 denotes mesh load order.'''
  </node>
  </node>
   
   
Line 123: Line 101:
  <attribute id="Object" type="FixedString" value="feet" />
  <attribute id="Object" type="FixedString" value="feet" />
  </node>
  </node>
This code would stop the body's feet from loading in and clipping, ideal for boot items. See [https://bg3.wiki/wiki/Modding:VertexColorMaskSlots here for a full list of Vertex Mask Slots for the body.]
And this code would stop the body's feet from loading in and clipping, ideal for boot items. See [https://bg3.wiki/wiki/Modding:VertexColorMaskSlots here for a full list of Vertex Mask Slots for the body.]
  </children>
  </children>
  </node>
  </node>
Line 147: Line 125:
  '''(BEGINNING OF MATERIAL)'''
  '''(BEGINNING OF MATERIAL)'''


  <node id="Resource">
  <node id="Resource">
  <attribute id="DiffusionProfileUUID" type="FixedString" value="" />
  <attribute id="DiffusionProfileUUID" type="FixedString" value="" />
Line 154: Line 133:
  <attribute id="SourceFile" type="LSString" value="Public/Shared/Assets/Materials/Characters/CHAR_BASE.lsf" />
  <attribute id="SourceFile" type="LSString" value="Public/Shared/Assets/Materials/Characters/CHAR_BASE.lsf" />
  <children>
  <children>
  <node id="ScalarParameters"> '''x7'''
  <node id="ScalarParameters"> '''x7
  '''(Cut for length)'''
  '''(Cut for length)'''


  There should be 4 Texture2DParameters in your material, for BM, NM, PM, and MSK.
  There should be 4 Texture2DParameters in your material, for BM, NM, PM, and MSK.
  <node id="Texture2DParameters">
  <node id="Texture2DParameters"> NM cape
  <attribute id="Enabled" type="bool" value="True" />
  <attribute id="Enabled" type="bool" value="True" />
  <attribute id="ExportAsPreset" type="bool" value="True" />
  <attribute id="ExportAsPreset" type="bool" value="True" />
Line 183: Line 162:
  </node>
  </node>
  '''(End of material)'''
  '''(End of material)'''
'''(add more materials underneath!)'''
  </children>
  </children>
  </node>
  </node>
Line 189: Line 167:
  '''(End of MaterialBank)'''
  '''(End of MaterialBank)'''
   
   
Now the material we have found, SourceFile "Public/Shared/Assets/Materials/Characters/CHAR_BASE.lsf" is a fairly standard shader without transparency or glowing. Materials that can be Transparent have 'Alpha' in the title. For example, "Public/Shared/Assets/Materials/Characters/CHAR_BASE_AlphaTest_2S.lsf" or "CHAR_BASE_AlphaTest_2S_Dither" will enable alpha and make the mesh visible from both sides (turns off backface culling). Underwear needs to have a Dither shader or it won't hide correctly.
Now the material we have found, SourceFile "Public/Shared/Assets/Materials/Characters/CHAR_BASE.lsf" is a fairly standard shader without transparency or glowing. Materials that can be Transparent have 'Alpha' in the title. For example, "Public/Shared/Assets/Materials/Characters/CHAR_BASE_AlphaTest_2S.lsf" or "CHAR_BASE_AlphaTest_2S_Dither" will enable alpha and make the mesh visible from both sides (turns off backface culling).
 
Materials with _VT at the end are useless to us, as they only work with virtual texture. A virtualtexture is essentially a box for textures that makes it load faster. We don't have any way of packing virtualtextures ourselves, so do not attempt to use those materials.
 


Materials with _VT at the end are less useful, as they only work with virtual texture. A virtualtexture is essentially a box for textures that makes it load faster. We can pack our own virtual textures with Script Extender and Lslib, but that is beyond the scope of this page.


In order to make, say, pants disappear when boots are put on, you may need to use a _Vertcut Material, such as 'Public/Shared/Assets/Materials/Characters/CHAR_BASE_VertCut.lsf', and ensure VertexMask is set to True in the mesh lsx. (As well as vertex painting the item itself the desired colour)
In order to make, say, pants disappear when boots are put on, you may need to use a _Vertcut Material, such as 'Public/Shared/Assets/Materials/Characters/CHAR_BASE_VertCut.lsf', and ensure VertexMask is set to True in the mesh lsx. (As well as vertex painting the item itself the desired colour)
[[Modding:Non-VT Shaders|See here for a list of available materials.]]


We now add a texturebank to the same lsx.
We now add a texturebank to the same lsx.
Line 211: Line 189:
     <attribute id="Depth" type="int32" value="1" />
     <attribute id="Depth" type="int32" value="1" />
     <attribute id="Localized" type="bool" value="False" />
     <attribute id="Localized" type="bool" value="False" />
     <attribute id="SRGB" type="bool" value="False" /> Ensure this is set to False on anything except a Basecolour! All other maps do not convey colour information so they don't need it on.
     <attribute id="SRGB" type="bool" value="False" /> This does things. I am not sure what.
     <attribute id="Streaming" type="bool" value="True" />
     <attribute id="Streaming" type="bool" value="True" />
     <attribute id="Template" type="FixedString" value="" />
     <attribute id="Template" type="FixedString" value="" />
Line 217: Line 195:
     </node>
     </node>
     '''(texture ends here)'''
     '''(texture ends here)'''
    '''(add more textures underneath!)'''
     </children>
     </children>
             </node>
             </node>
Line 223: Line 200:
             </save>
             </save>


If there is anything wrong with the material, your item may simply refuse to show up, so it is worth double-checking everything here.
If there is anything wrong with the material, your item may simply refuse to show up, so it is worth double checking everything here.


==RootTemplate ==
==RootTemplate==
Now for the game to recognise the circlet as an item, we add it to the root template lsx:
Now for the game recognise the circlet as an item, we add it to the root template lsx:


MySweetMod\Public\MySweetMod\RootTemplates\MySweetMod.lsf.lsx  
MySweetMod\Public\MySweetMod\RootTemplates\MySweetMod.lsf.lsx  
Line 246: Line 223:
  <attribute id="MapKey" type="FixedString" value="0000000000000000000000000002" /> '''This links up to the armor.txt to form the armor.'''
  <attribute id="MapKey" type="FixedString" value="0000000000000000000000000002" /> '''This links up to the armor.txt to form the armor.'''
  <attribute id="Name" type="LSString" value="MY_COOL_NEW_CIRCLET" /> '''This links up to the armor.txt to form the armor.'''
  <attribute id="Name" type="LSString" value="MY_COOL_NEW_CIRCLET" /> '''This links up to the armor.txt to form the armor.'''
  <attribute id="ParentTemplateId" type="FixedString" value="4d2e0931-3a01-4759-834b-8ae36749daab" /> '''This tells the game roughly what kind of item it is, such as in this case a helm. You should use the right kind for your item to avoid inherited problems. For example a shield will not know it is a shield without this ParentTemplate.''' '''If something is not specified in your root template, [such as description, icon, equip sound] it will fall back on this parenttemplate and use the ones listed there.'''
  <attribute id="ParentTemplateId" type="FixedString" value="4d2e0931-3a01-4759-834b-8ae36749daab" /> '''This tells the game roughly what kind of item it is, such as in this case a helm. You should use the right kind for your item to avoid inherited problems. For example a shield will not know it is a shield without this ParentTemplate.'''
  <attribute id="PhysicsTemplate" type="FixedString" value="327039da-0827-811f-24e8-fc57e86c7ba2" /> '''I believe similar to the above, this needs to be roughly the same type as the armour you are adding.'''
  <attribute id="PhysicsTemplate" type="FixedString" value="327039da-0827-811f-24e8-fc57e86c7ba2" /> '''I believe similar to the above, this needs to be roughly the same type as the armour you are adding.'''
  <attribute id="Type" type="FixedString" value="item" />
  <attribute id="Type" type="FixedString" value="item" />
Line 253: Line 230:
  <attribute id="_OriginalFileVersion_" type="int64" value="144115207403209032" />
  <attribute id="_OriginalFileVersion_" type="int64" value="144115207403209032" />
  <children>
  <children>
If your item is something droppable, it may contain the Bounds node. This tells it the size of the white circle that will appear on interacting with the dropped object.
    <node id="Bounds">
  <children>
  <node id="Bound">
  <attribute id="Height" type="float" value="1" />
  <attribute id="Max" type="fvec3" value="0.1912984 0.03773662 0.2818625" />
  <attribute id="Min" type="fvec3" value="-0.1951099 0.001149297 -0.194317" />
  <attribute id="Radius" type="float" value="0.433013" />
  <attribute id="Shape" type="uint8" value="1" />
  <attribute id="Type" type="uint8" value="1" />
  </node>
  <node id="Bound">
  <attribute id="Height" type="float" value="1" />
  <attribute id="Max" type="fvec3" value="0.1912984 0.03773662 0.2818625" />
  <attribute id="Min" type="fvec3" value="-0.1951099 0.001149297 -0.194317" />
  <attribute id="Radius" type="float" value="0.433013" />
  <attribute id="Shape" type="uint8" value="1" />
  <attribute id="Type" type="uint8" value="2" />
  </node>
  <node id="Bound">
    <attribute id="Height" type="float" value="1" />
      <attribute id="Max" type="fvec3" value="0.25 1 0.25" />
  <attribute id="Min" type="fvec3" value="-0.25 0 -0.25" />
  <attribute id="Radius" type="float" value="0.2165065" />
  <attribute id="Shape" type="uint8" value="1" />
  <attribute id="Type" type="uint8" value="0" />
    </node>
  </children>
    </node>
   
  <node id="Equipment">
  <node id="Equipment">
  <children>
  <children>
Line 294: Line 239:
  <node id="DreadShortHair" />
  <node id="DreadShortHair" />
  <node id="LongHair" />
  <node id="LongHair" />
               
<node id="ParentRace">
  '''The races Githyanki, Dragonborn, Tiefling and Half Orcs are set to automatically use HUM or HUM_STRONG models, unless they are manually opted out by adding this Parentrace node. '''
   
  '''Adding this parentracenode will set the item to use race-specific meshes for any race you specify with its [https://bg3.wiki/wiki/Modding:Race_UUID Race UUID.] '''
  '''The parentrace nodes set the item to use race-specific meshes for githyanki, Dragonborn and TieflingUnless this line is added and  specified, they  will use Human Body or Strong Human Body. (Which may be fine for some races such as Tieflings.)'''
  '''You may wish to not bother making a tiefling specific mesh unless there is very obnoxious tail or horn clipping, so you can simply not include them in the parentrace node.'''
<node id="ParentRace">
  <children>
  <children>
  <node id="Object">
  <node id="Object">
  <attribute id="MapKey" type="guid" value="6503c830-9200-409a-bd26-895738587a4a" /> Tiefling Male
  <attribute id="MapKey" type="guid" value="6503c830-9200-409a-bd26-895738587a4a" /> Tiefling Male
  <attribute id="MapValue" type="guid" value="00000000-0000-0000-0000-000000000000" /> This zeroes the race out of the ParentRace node.
  <attribute id="MapValue" type="guid" value="00000000-0000-0000-0000-000000000000" />  
   
   
  </node>
  </node>
Line 369: Line 312:
     </region>
     </region>
  </save>
  </save>




Line 378: Line 322:
Meanwhile in your '''Armor.txt''', they link up like this:
Meanwhile in your '''Armor.txt''', they link up like this:


You can look at the game’s own armor.txt for ideas of what to put here. You can delete what you don't wish to add, all you really need is the entry, the type, what slot it uses and the RootTemplate.
You can look at the games own armor.txt for ideas of what to put here. You can delete what you don't wish to add, all you really need is the entry, the type, what slot it uses and the RootTemplate.


  Armor.txt
  Armor.txt
  new entry "MY_COOL_NEW_CIRCLET"
  new entry "MY_COOL_NEW_CIRCLET"
  type "Armor" '''Note that the 'type' section can enable the item to spawn in random places the game randomly puts items. If you wish it to never spawn anywhere else, either set <code>type ""</code>'''. Or, potentially, add <code>data "ItemGroup" ""</code> below.
  type "Armor"
  data "ValueOverride" "4000" '''(It's a very cool circlet and we want it to cost a lot!)'''
  data "ValueOverride" "4000" '''(It's a very cool circlet and we want it to cost a lot!)'''
  data "Weight" "0.01"
  data "Weight" "0.01"
  using "_Head_Magic_Circlet" '''(This tells it what slot to equip in. Ideally this should match up with the ParentTemplate you set up.)'''
  using "_Head_Magic_Circlet" '''(This tells it what slot to equip in. Ideally this should match up with the ParentTemplate you set up.)'''
  data "RootTemplate" "0000000000000000000000000002" '''Matches up to the rootemplate Mapkey.'''
  data "RootTemplate" "0000000000000000000000000002" '''Matches up to the rootemplate Mapkey.'''
  data "Rarity" "Rare" '''This effects what colour it is in your inventory, rarer things get a different colour outline.'''  
  data "Rarity" "Rare" '''This effects what colour it is in your inventory, rarer things get a different colour outline. Note that if you set things as common they may spawn in generic containers, which is not optimal for clean uninstalling.'''
  data "Boosts" "UnlockSpell(Target_MAG_HealingWord);UnlockSpell(Shout_MAG_HealingWord_Mass)" '''This forces it to give us these spells. Note that the character needs spell slots in able to use them! If you want it for everyone you may be better off setting it up as a custom passive'''.
  data "Boosts" "UnlockSpell(Target_MAG_HealingWord);UnlockSpell(Shout_MAG_HealingWord_Mass)" '''This forces it to give us these spells. Note that the character needs spell slots in able to use them! If you want it for everyone you may be better off setting it up as a custom passive'''.
  data "PassivesOnEquip" "MAG_Radiant_Radiating_Helmet_Passive;CUSTOMPASSIVEIMADE" '''(The ; seperates passives.)'''
  data "PassivesOnEquip" "MAG_Radiant_Radiating_Helmet_Passive;CUSTOMPASSIVEIMADE" '''(The ; seperates passives.)'''
Line 393: Line 337:
  data "MinAmount" "1"
  data "MinAmount" "1"
  data "MaxAmount" "1"  
  data "MaxAmount" "1"  
Other <code>using</code>  slots include <code>"ARM_Camp_Body"</code>,  <code>"_Vanity_Shoes_Generic_Common"</code> for camp clothes, <code>"_Foot_Magic"</code> for boots, <code>"ARM_Robe_Body"</code> for robes, <code>"_Hand"</code> for gloves.


If adding a custom passive, your '''Passive.txt''' will look like this. You don't need a passive.txt at all, you can make perfectly good items just reusing the game's passives, this is just for the ambitious.
If adding a custom passive, your '''Passive.txt''' will look like this. You don't need a passive.txt at all, this is just for the ambitious.


The example passive code is borrowed from Isobel's armor.
The example passive code is borrowed from Isobel's armor.
Line 433: Line 376:
  CanMerge 1
  CanMerge 1
  new subtable "1,1"
  new subtable "1,1"
  object category "I_MY_COOL_NEW_CIRCLET",1,0,0,0,0,0,0,0
  object category "I_MY_COOL_NEW_CIRCLET",1,0,0,0,0,0,0,0 '''(Do not forget the ''I_'' prefix!)'''
 
This will make it spawn in the tutorial chest. Other treasuretable codes to put it different places can be found [https://www.nexusmods.com/baldursgate3/mods/2534 here- Modder's Resource - Treasure Table Spreadsheet].
 
Make sure you don't forget the ''I_'' prefix for the item!


The numbers affect the drop rate chance among other things. The numbers above will cause the item to always spawn in the chest. For more info see Larian's wiki page on [https://docs.larian.game/Treasure_Tables TreasureTables], it is for a different game but shares the same idea.
This will make it spawn in the tutorial chest.


If you plan to put a lot of items in your mod, it is recommended to create a bag item containing them and put that in the Tutorial Chest, to avoid clutter.
If something goes wrong, it is recommended to overwrite a custom mesh from someone else's mod, or add it to the back of an existing mod. When you know the fault is not with your mesh, you check your materials, and so you can fix things one step at a time.  


If something goes wrong, it is recommended to overwrite a custom mesh from someone else's
{| class="nomobile" style="text-align:center; margin: auto; border:1px solid #785000; font-size:83%; background-color:#1B1B1B; width: 60;" ;
[[Category:Modding guides]]
|- style="font-weight:bold; background-color:#281C14; color:#c27736; border:0px none;"
[[Category:Armor modding]]
| colspan="2" |
mod, or add it to the back of an existing mod. When you know the fault is not with your mesh, you check your materials, and so you can fix things one step at a time.{{Modding navbox}}
[[File:bgwiii.png|30px|link=Template:NavWiki]] [[BG3Wiki:Community|Community]] • [[Guide:Guides|Guides]] • [[Modding: Modding resources|Modding]]
|-
| style="background-color:#28201B; color:#c27736; width: 15%;" |[[:Category:Modding|Modding guides]]
| style="text-align:left; padding:0 4px;" |<div class="navcat" ;>
<categorytree hideprefix="1" hideroot="1" mode="pages">Modding guides</categorytree>
</div>
|-
| style="background-color:#28201B; color:#c27736; width: 15%;" |[[Modding:Modding resources|Modding resources]]
| style="text-align:left; padding:0 4px;" |<div class="navcat" ;>
<categorytree hideprefix="1" hideroot="1" mode="pages">Modding resources</categorytree>
</div>
|}</div><div class="noexcerpt navigation-not-searchable" style="text-align:center"><span class="nodesktop"> [[Modding:Index|Modding index]] </span></div>
Please note that all contributions to Baldur's Gate 3 Wiki are considered to be released under the CC BY-NC-SA license, except when noted otherwise (see BG3Wiki:Copyrights for details). If you do not want your writing to be edited and redistributed at will, do not submit it here. Per our Content Rules, you are promising that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)