---
description: Creating Your Base Backpack Plugin
---

# Backpack

To begin, create the base of your plugin file by specifying the type, itemName, itemDefinition, overrideItemDefinition as shown below:

```json
{
    "type": "backpack",
    "itemName": "Pea Buddies to Black Shield",
    "itemDefinition": "Backpack_SpeedyPeas",
    "overrideItemDefinition": "BID_004_BlackKnight"
}
```

#### Key explanation

* 'type' Signifies to the swapper that the plugin format is for 'backpack'.
* 'itemName' This will be the name that is displayed within the swapper for your plugin file.
* 'itemDefinition' This is the BID for the backpack you are swapping from. It is not required, but when specified the swapper will automatically load the backpack icon from the item definition.
* 'overrideItemDefinition' This is the BID for the backpack you are swapping to. It is not required, but when specified the swapper will automatically load the backpack icon from the item definition.

## Creating Your Plugin Icon

Having a plugin icon is very important as it displays a preview of the backpack you are swapping to. To get started, begin by adding a JSON key 'icon' for the backpack you are swapping from and add the JSON key 'overrideIcon' for the backpack you are swapping to as shown below:

* Note: This is not required if you specified 'itemDefinition' or 'overrideItemDefinition' as the icon will be loaded from that.

```json
{
    "type": "backpack",
    "itemName": "Pea Buddies to Black Shield",
    "itemDefinition": "Backpack_SpeedyPeas",
    "overrideItemDefinition": "BID_004_BlackKnight",
    "icon": "https://fortnite-api.com/images/cosmetics/br/Backpack_SpeedyPeas/icon.png",
    "overrideIcon": "https://fortnite-api.com/images/cosmetics/br/BID_004_BlackKnight/icon.png"
}
```

#### Key explanation

* 'icon' This will be the URL for the backpack you are swapping from.
* 'overrideIcon' This will be the URL for the backpack you are swapping to.

## Finding ItemDefinition

In order to find the ItemDefinition for your backpack, you can use a website called [Fortnite.gg](https://fortnite.gg/cosmetics?game=br\&type=backpack). Locate the backpack you are swapping to using the search bar and click on the backpack. In the popup at the bottom right, you will see the 'ID' which will be our ItemDefinition."

<figure><img src="https://667545377-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhxlXc7fbSpMhUpsCjEE9%2Fuploads%2FZJtbcSRJAijNy6wCBCSM%2FOutfitItemDefinition.png?alt=media&#x26;token=b614b986-0b05-4b33-9611-19f24abfaeaa" alt=""><figcaption></figcaption></figure>

## Finding CharacterParts

In order to find the CharacterParts for your backpack, we will use FModel. If you are not familiar with FModel, please refer to their [documtation](https://github.com/4sval/FModel/wiki/Getting-Started). To get started, locate 'Packages' and click 'Search'.

<figure><img src="https://667545377-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhxlXc7fbSpMhUpsCjEE9%2Fuploads%2Fyv9b034fnCW1yYiKiZmH%2FFModelSearch.png?alt=media&#x26;token=d9c14259-1686-46b7-ba6b-9294e71e4c3a" alt=""><figcaption></figcaption></figure>

Paste your 'ItemDefinition' into the search bar and press enter on the keyboard. In the search results, you may encounter two results: one will be the ID asset we are looking for, and the other will be a DisplayAsset. Make sure to select the path that does not include 'DisplayAssets'.

<figure><img src="https://667545377-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhxlXc7fbSpMhUpsCjEE9%2Fuploads%2Ftxmj2TDgg8SkaJt5zASH%2FFModelOutfitItemDefinitionResults.png?alt=media&#x26;token=8a5ce349-c042-4989-9f67-aaacf3a9063b" alt=""><figcaption></figcaption></figure>

Once you have located the correct asset, right-click on it and select 'Extract in new tab'.

<figure><img src="https://667545377-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhxlXc7fbSpMhUpsCjEE9%2Fuploads%2FUp0n9KeQb7lvqDp0jdQj%2FFModelExtractAsset.png?alt=media&#x26;token=a04a31b9-7705-495d-add7-1ad49f1d9bde" alt=""><figcaption></figcaption></figure>

In the JSON preview section of FModel, you should see the 'CharacterParts' array. These will be your 'CharacterParts' for the plugin.

<figure><img src="https://667545377-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhxlXc7fbSpMhUpsCjEE9%2Fuploads%2FM7Zam2yCaXD5FX791QjK%2FBackpackCharacterParts.png?alt=media&#x26;token=e1e8ac6e-f878-486e-b176-e54adf9909e7" alt=""><figcaption></figcaption></figure>

## Finding ItemDefinition Path

In order to find the CharacterParts for your backpack, we will use FModel. If you are not familiar with FModel, please refer to their [documtation](https://github.com/4sval/FModel/wiki/Getting-Started). To get started, locate 'Packages' and click 'Search'.

<figure><img src="https://667545377-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhxlXc7fbSpMhUpsCjEE9%2Fuploads%2FLNM46brV0JVtwzWh2Zci%2FFModelSearch.png?alt=media&#x26;token=b5cf8308-4bb3-49a3-9b33-3a15c2c47c37" alt=""><figcaption></figcaption></figure>

Paste your 'ItemDefinition' into the search bar and press enter on the keyboard. In the search results, you may encounter two results: one will be the ID asset we are looking for, and the other will be a DisplayAsset. Make sure to select the path that does not include 'DisplayAssets'.

<figure><img src="https://667545377-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhxlXc7fbSpMhUpsCjEE9%2Fuploads%2FEpN0cpV8ObYNVaKPisPE%2FFModelOutfitItemDefinitionResults.png?alt=media&#x26;token=31ab28f4-78dd-4d72-8b8d-15c0846c0140" alt=""><figcaption></figcaption></figure>

Once you have located the correct asset, right-click on it and select 'Extract in new tab'.

<figure><img src="https://667545377-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhxlXc7fbSpMhUpsCjEE9%2Fuploads%2FeKNCrdM6CMFhpFVAeBa9%2FFModelExtractAsset.png?alt=media&#x26;token=1c23b0b1-9e3a-439b-b454-d798b784b33a" alt=""><figcaption></figcaption></figure>

Above the JSON preview section of FModel, you should see your ItemDefinition in the tabs section. Right-click the tab and select 'Copy Package Path'.

<figure><img src="https://667545377-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FhxlXc7fbSpMhUpsCjEE9%2Fuploads%2FaYvhxVjQjgoKeh7MvQd5%2FFModelBackpackCopyPackagePath.png?alt=media&#x26;token=fea8ec61-13d9-4c0b-9e33-d46a7ab8e1d1" alt=""><figcaption></figcaption></figure>

## Adding CharacterParts

In order for the swapper to know which CharacterPart to swap to, we need to add a 'customCharacterBackpackDatas' array containing the CharacterParts found in the itemDefinition and the itemDefinition path from the backpack we are swapping from.

```json
{
    "type": "backpack",
    "itemName": "Pea Buddies to Black Shield",
    "itemDefinition": "Backpack_SpeedyPeas",
    "overrideItemDefinition": "BID_004_BlackKnight",
    "customCharacterBackpackDatas": [
        {
            "athenaBackpackItemDefinition": {
                "objectPath": "/BRCosmetics/Athena/Items/Cosmetics/Backpacks/Backpack_SpeedyPeas"
            },
            "objectPath": "/BRCosmetics/Characters/CharacterParts/Backpacks/Male_Commando_BlackKnight"
        }
    ]
}
```

#### Key explanation

* 'athenaBackpackItemDefinition' This will be the 'ItemDefinition Path' from the backbling we are swapping from.
* 'objectPath' This will be the asset path to the CharacterPart we are swapping to.

## Final Result

```json
{
    "type": "backpack",
    "itemName": "Pea Buddies to Black Shield",
    "itemDefinition": "Backpack_SpeedyPeas",
    "overrideItemDefinition": "BID_004_BlackKnight",
    "customCharacterBackpackDatas": [
        {
            "athenaBackpackItemDefinition": {
                "objectPath": "/BRCosmetics/Athena/Items/Cosmetics/Backpacks/Backpack_SpeedyPeas"
            },
            "objectPath": "/BRCosmetics/Characters/CharacterParts/Backpacks/Male_Commando_BlackKnight"
        }
    ]
}
```

## Additonal Features

These features are used to modify object paths within the character part you are swapping to. If you are a beginner or are not planning to modify any object paths within the character part, then this section is not for you.

## Modify SkeletalMesh

```json
{
    "type": "backpack",
    "itemName": "Pea Buddies to Black Shield",
    "itemDefinition": "Backpack_SpeedyPeas",
    "overrideItemDefinition": "BID_004_BlackKnight",
    "customCharacterBackpackDatas": [
        {
            "athenaBackpackItemDefinition": {
                "objectPath": "/BRCosmetics/Athena/Items/Cosmetics/Backpacks/Backpack_SpeedyPeas"
            },
            "objectPath": "/BRCosmetics/Characters/CharacterParts/Backpacks/Male_Commando_BlackKnight",
            "skeletalMesh": {
                "objectPath": "/BRCosmetics/Accessories/FORT_Backpacks/Backpack_F_MED_BrightIon/Meshes/F_MED_BrightIon_Pack.F_MED_BrightIon_Pack"
            }
        }
    ]
}
```

#### Key explanation

* 'skeletalMesh' This will be the object path to the skeletal mesh you want to override to.

## Modify AnimClass

```json
{
    "type": "backpack",
    "itemName": "Pea Buddies to Black Shield",
    "itemDefinition": "Backpack_SpeedyPeas",
    "overrideItemDefinition": "BID_004_BlackKnight",
    "customCharacterBackpackDatas": [
        {
            "athenaBackpackItemDefinition": {
                "objectPath": "/BRCosmetics/Athena/Items/Cosmetics/Backpacks/Backpack_SpeedyPeas"
            },
            "objectPath": "/BRCosmetics/Characters/CharacterParts/Backpacks/Male_Commando_BlackKnight",
            "animClass": {
                "objectPath": "/BRCosmetics/Accessories/FORT_Backpacks/Backpack_F_MED_BrightIon/Meshes/F_MED_BrightIon_Pack_AnimBP.F_MED_BrightIon_Pack_AnimBP_C"
            }
        }
    ]
}
```

#### Key explanation

* 'animClass' This will be the object path to the animClass you want to override to.

## Modify MaterialOverrides

```json
{
    "type": "backpack",
    "itemName": "Pea Buddies to Black Shield",
    "itemDefinition": "Backpack_SpeedyPeas",
    "overrideItemDefinition": "BID_004_BlackKnight",
    "customCharacterBackpackDatas": [
        {
            "athenaBackpackItemDefinition": {
                "objectPath": "/BRCosmetics/Athena/Items/Cosmetics/Backpacks/Backpack_SpeedyPeas"
            },
            "objectPath": "/BRCosmetics/Characters/CharacterParts/Backpacks/Male_Commando_BlackKnight",
            "materialOverrides": [
                {
                    "overrideMaterial": {
                        "objectPath": "/BRCosmetics/Accessories/FORT_Backpacks/Backpack_F_MED_Celestial/Materials/F_MED_Celestial_Backpack.F_MED_Celestial_Backpack"
                    },
                    "materialOverrideIndex": 0
                }
            ]
        }
    ]
}
```

#### Key explanation

* 'overrideMaterial' This will be the object path to the material you want to override to.
* 'materialOverrideIndex' This will be the index that the material is applied to.

## Modify IdleEffect

```json
{
    "type": "backpack",
    "itemName": "Pea Buddies to Black Shield",
    "itemDefinition": "Backpack_SpeedyPeas",
    "overrideItemDefinition": "BID_004_BlackKnight",
    "customCharacterBackpackDatas": [
        {
            "athenaBackpackItemDefinition": {
                "objectPath": "/BRCosmetics/Athena/Items/Cosmetics/Backpacks/Backpack_SpeedyPeas"
            },
            "objectPath": "/BRCosmetics/Characters/CharacterParts/Backpacks/Male_Commando_BlackKnight",
            "idleEffect": {
                "objectPath": "/BRCosmetics/Accessories/FORT_Backpacks/M_MED_Wild_Card_Cube_Backpack/FX/P_WildCard_Cube_Backpack.P_WildCard_Cube_Backpack"
            }
        }
    ]
}
```

#### Key explanation

* 'idleEffect' This will be the object path to the idleEffect you want to override to.

## Modify IdleEffectNiagara

```json
{
    "type": "backpack",
    "itemName": "Pea Buddies to Black Shield",
    "itemDefinition": "Backpack_SpeedyPeas",
    "overrideItemDefinition": "BID_004_BlackKnight",
    "customCharacterBackpackDatas": [
        {
            "athenaBackpackItemDefinition": {
                "objectPath": "/BRCosmetics/Athena/Items/Cosmetics/Backpacks/Backpack_SpeedyPeas"
            },
            "objectPath": "/BRCosmetics/Characters/CharacterParts/Backpacks/Male_Commando_BlackKnight",
            "idleEffectNiagara": {
                "objectPath": "/BRCosmetics/Accessories/FORT_Backpacks/Backpack_M_MED_Carabus/FX/NS_Carabus_Hologram.NS_Carabus_Hologram"
            }
        }
    ]
}
```

#### Key explanation

* 'idleEffectNiagara' This will be the object path to the idleEffectNiagara you want to override to.

## Modify IdleFXSocketName

```json
{
    "type": "backpack",
    "itemName": "Pea Buddies to Black Shield",
    "itemDefinition": "Backpack_SpeedyPeas",
    "overrideItemDefinition": "BID_004_BlackKnight",
    "customCharacterBackpackDatas": [
        {
            "athenaBackpackItemDefinition": {
                "objectPath": "/BRCosmetics/Athena/Items/Cosmetics/Backpacks/Backpack_SpeedyPeas"
            },
            "objectPath": "/BRCosmetics/Characters/CharacterParts/Backpacks/Male_Commando_BlackKnight",
            "idleFXSocketName": "pack"
        }
    ]
}
```

#### Key explanation

* 'idleFXSocketName' This will be the socket you want the idle effect to be attached to.

## Modify PartModifierBlueprint

```json
{
    "type": "backpack",
    "itemName": "Pea Buddies to Black Shield",
    "itemDefinition": "Backpack_SpeedyPeas",
    "overrideItemDefinition": "BID_004_BlackKnight",
    "customCharacterBackpackDatas": [
        {
            "athenaBackpackItemDefinition": {
                "objectPath": "/BRCosmetics/Athena/Items/Cosmetics/Backpacks/Backpack_SpeedyPeas"
            },
            "objectPath": "/BRCosmetics/Characters/CharacterParts/Backpacks/Male_Commando_BlackKnight",
            "partModifierBlueprint": {
                "objectPath": "/BRCosmetics/Athena/Cosmetics/Blueprints/Part_Modifiers/B_Athena_PartModifier_Carabus_Backpack.B_Athena_PartModifier_Carabus_Backpack_C"
            }
        }
    ]
}
```

#### Key explanation

* 'partModifierBlueprint' This will be the object path to the partModifierBlueprint you want to override to.
