Skip to content
TrashElemental edited this page Jun 18, 2026 · 2 revisions

This mod adds a new Starting Class system to the game inspired by the Soulsborne series, allowing players to start with a loadout of equipment and potentially even starting pets from a list of selectable classes. This mod is meant to be highly data-driven, with modpack and datapack makers able to make their own classes.

Config

This mod has a config option to set the health of any mobs you may start with as part of your starting class to a custom amount, and also to give them an infinite instance of the Regeneration I effect, if you'd like a trusty animal companion that will last throughout your game.

Create Your Own Classes

If you're a datapack or modpack maker, you can use this mod to create your own starting classes. Classes will need to be in starting_classes/classes. If you'd like to have a class only be available if a specific mod is loaded, you can add it to starting_classes/classes/compat/<that mod's id>, and it will then only load if the specified mod is also loaded.

1.20.1

  {
"id": "starting_classes:example",                             <- The id of the class. I would encourage adding your namespace so it doesn't get overwritten by another class.
"name": "Knight",                                             <- The name of the class that will be displayed in the UI.
"description": "A knight-errant in search of adventure.",     <- The description of the class that will be displayed in the UI.
"source": "Starting Classes",                                 <- The 'source' of the class that will be displayed under the name in the UI.

"icon": {
"type": "item",
"itemId": "minecraft:iron_sword"                            <- The icon of the class that will be displayed in the UI. This can be an item or a texture.
  },

  "icon": {
  "type": "texture",
  "texture": "yourmodname:textures/mystic"                  <- Here's an example of how you'd set a texture as the icon.
  },

  "equipment": [

  {
    "type": "fixed",                                            <- A fixed entry is the simplest entry type, it just gives you a single item.
    "item": {                                                      If an item isn't present, it will appear as a blank space in the GUI.
  "item": "minecraft:leather_helmet",                       <- The item for the entry.
  "count": 1                                                <- The amount of the item.
    }
  },

   {
  "type": "choice",                                         <- A choice entry allows for a selection between multiple items. You can have as many choices as you want.
  "options": [
    {
      "item": "minecraft:iron_sword",
      "count": 1
    },
    {
      "item": "minecraft:iron_axe",
      "count": 1
     }
    ]
  }

  {
  "type": "fixed",
      "item": {
        "item": "minecraft:fishing_rod",
        "count": 1,
        "nbt": "{Enchantments:[{id:\"minecraft:lure\",lvl:1}]}"     <- Here's an example of how you'd set an NBT tag on an item, an enchantment in this case.
      }
  },

 {
      "type": "fixed",
      "item": {
        "item": "minecraft:potion",
        "count": 1,
        "nbt": "{Potion:\"minecraft:invisibility\"}"                <- Here's an example of how you'd add a potion to a starting class.
      }
    },

     {
     "type": "mob",                                                 <- You can also spawn mobs when a player chooses a class. If the mob is a TamableAnimal or AbstractHorse,
     "entityId": "minecraft:wolf",                                     it will automatically be tamed. Otherwise, the mob will be untamed.
     "count": 1                                                        Mobs won't be automatically represented in the equipment list, so I'd
       }                                                               recommend adding a spawn egg to the equipment list. Unfortunately, right now
                                                                       I can't figure out a clean way to make choice mob entries, so they'll have to remain fixed/

     {
       "type": "mob",                                               <- Here's an example of how you'd spawn a mob with NBT, in this case a llama with a blue carpet,
       "entityId": "minecraft:llama",                                  a chest, and a strength of 5.
       "count": 1,
       "nbt": "{Tame:1b,Strength:5,ChestedHorse:1b,DecorItem:{id:\"minecraft:blue_carpet\",Count:1b}}"
     }
  ]
}

1.21+

  {
"id": "starting_classes:example",                             <- The id of the class. I would encourage adding your namespace so it doesn't get overwritten by another class.
"name": "Knight",                                             <- The name of the class that will be displayed in the UI.
"description": "A knight-errant in search of adventure.",     <- The description of the class that will be displayed in the UI.
"source": "Starting Classes",                                 <- The 'source' of the class that will be displayed under the name in the UI.

"icon": {
"type": "item",
"itemId": "minecraft:iron_sword"                            <- The icon of the class that will be displayed in the UI. This can be an item or a texture.
  },

  "icon": {
  "type": "texture",
  "texture": "yourmodname:textures/mystic"                  <- Here's an example of how you'd set a texture as the icon.
  },

  "equipment": [

  {
    "type": "fixed",                                            <- A fixed entry is the simplest entry type, it just gives you a single item.
    "item": {                                                      If an item isn't present, it will appear as a blank space in the GUI.
  "item": "minecraft:leather_helmet",                       <- The item for the entry.
  "count": 1                                                <- The amount of the item.
    }
  },

   {
  "type": "choice",                                         <- A choice entry allows for a selection between multiple items. You can have as many choices as you want.
  "options": [
    {
      "item": "minecraft:iron_sword",
      "count": 1
    },
    {
      "item": "minecraft:iron_axe",
      "count": 1
     }
    ]
  }

  {
  "type": "fixed",
      "item": {
        "item": "minecraft:fishing_rod",
        "count": 1,
        "components": {
        "minecraft:enchantments": {
          "levels": {
            "minecraft:fortune": 1                           <- Here's an example of how you'd set an NBT tag on an item, an enchantment in this case.
          }
        }
      }     
      }
  },

 {
      "type": "fixed",
      "item": {
        "item": "minecraft:potion",
        "count": 1,
         "components": {
      "minecraft:potion_contents": { 
        "potion": "minecraft:invisibility"                          <- Here's an example of how you'd add a potion to a starting class.
      }
    }                
      }
    },

     {
     "type": "mob",                                                 <- You can also spawn mobs when a player chooses a class. If the mob is a TamableAnimal or AbstractHorse,
     "entityId": "minecraft:wolf",                                     it will automatically be tamed. Otherwise, the mob will be untamed.
     "count": 1                                                        Mobs won't be automatically represented in the equipment list, so I'd
       }                                                               recommend adding a spawn egg to the equipment list. Unfortunately, right now
                                                                       I can't figure out a clean way to make choice mob entries, so they'll have to remain fixed/

     {
       "type": "mob",                                               <- Here's an example of how you'd spawn a mob with NBT, in this case a llama with a blue carpet,
       "entityId": "minecraft:llama",                                  a chest, and a strength of 5.
       "count": 1,
       "nbt": "{Strength:5,Tame:1,ChestedHorse:1,body_armor_item:{id:blue_carpet,count:1}}"
     }
  ]
}

Clone this wiki locally