How do I make Weapon items? - Catman-232/Homebrewery GitHub Wiki

Edit 2025/08/03 : This guide is going to be overhauled soon.

I'll make a proper guide out of this like the other item types eventually but if you can follow one of those, you should be able to intuit how to work these weapon param files.

A better technical breakdown of the properties can be found here: https://github.com/Catman-232/Homebrewery/wiki/Properties-that-only-Weapons-have

This is what the Template item params looks like

{
  "weaponType": "Dexterity_Ranged_2H",
  "_weaponHoldClipIndex": 1,
  "weaponMesh": "katar_07",
  "_weaponProjectileSet": "bow",
  "_textureColorAdjust": {
    "_hue": 0.0,
    "_saturation": 1.0,
    "_brightness": 0.0,
    "_contrast": 1.0
  },
  "_drawSound": "Catman-Homebrewery-SFX-FryingPan-DrawSound",
  "_hitSound": "Catman-Homebrewery-SFX-FryingPan-HitSound",
  "_swingSound": "Catman-Homebrewery-SFX-FryingPan-SwingSound",
  "_itemName": "This text is the Weapon's display name",
  "_itemDescription": "This text goes in the space beneath the Weapon's name"
}

Sounds from the pan just for examples sake.

weaponType (name) & _weaponHoldClipIndex (number)

  • Unarmed
    • 0 is Unarmed (No shit!)
  • Dexterity_Melee_2H
    • 0 is Fist Weapons
  • Strength_Melee_1H
    • 0 is Sword
    • 1 is Mace
  • Strength_Melee_2H
    • 0 is Hammer
    • 1 is Great Weapon
    • 2 is Polearm
  • Dexterity_Ranged_2H
    • 0 is Bow
    • 1 is Shotgun
  • Mind_Ranged_1H
    • 0 is Scepter
  • Mind_Ranged_2H
    • 0 is Magic Bell

_weaponProjectileSet values:

  • arrow
  • arrow_nature
  • arrow_pierce
  • arrow_shadow
  • arrow_water
  • scepter(ele_fire)_00
  • scepter(ele_fire)_01
  • scepter(ele_normal)
  • scepter(ele_shadow)
  • scepter(ele_shadow)_alt00
  • scepter(ele_water)_00
  • scepter(ele_water)_01
  • slmDiveBaton
  • scepter(wizscepter)
  • bell_coldgeist
  • bell_colossusTone
  • bell_normal
  • bell_shadow
  • magitekBurstGun

Sound effects are referenced similar to how custom model parts are, you need an SFX folder in your content pack, the name of the folder and the name of the file are used in the import process. So for example Catman-Homebrewery-SFX-FryingPan-SwingSound means the content pack "Catman-Homebrewery" (HB itself in this case), the "SFX" folder, a "FryingPan" folder inside SFX, and an mp3 file called "SwingSound" inside that FryingPan folder.

The MP3 files must be named correcly to establish context: Swing sound aliases:
"swing", "onswing", "swingsound", "onswingsound"

Draw sound aliases:
"draw", "ondraw", "unsheath", "drawsound", "ondrawsound", "unsheathsound"

Hitsound aliases:
"hit", "onhit", "strike", "hitsound", "onhitsound", "strikesound"

Due to jank with how the game registers hits, the hitsounds do not currently play, but they are being imported! I need to figure out how to make them play clientsided when you actually do score a hit, since the server is the authority of whether you hit or not, which makes it hard to tell when to actually play the sounds when you are a client.

Vanilla weaponMesh names:

  • _geistScythe_big
  • _heavyWeapon_greatsword01
  • _heavyWeapon_greatsword01_alt00
  • _axeHammer_01
  • _heavyMelee_hammer01
  • _axeHammer_02
  • _axeHammer_03
  • _axeHammer_04
  • _axeHammer_04HB (It's called _axeHammer_05 in the resources container but the mesh is misnamed with 04, so I had to account for that)
  • _heavyWeapon_axe01
  • _heavyWeapon_axe01HB (In the resources, the previous one's container is heavyaxe_01, while this one is heavyaxe_01_player, but the meshes have the same name anyway, so again I had to account for it)
  • _heavyWeapon_00
  • axe_test
  • weapon.hammerBasic
  • _lightWeapon_mace01
  • _mediumMelee_sword01
  • _mediumMelee_sword02
  • _weapon_blade03_alt00
  • _lightWeapon_blade04
  • _weapon_blade05
  • _weapon_blade05_alt00
  • _weapon_blade06
  • _weapon_blade07
  • sword_test
  • _lightMelee_dagger01
  • katar_01
  • katar_02
  • katar_03
  • katar_04
  • katar_06
  • katar_07
  • katar_08
  • _magicScepter_scepter01
  • _scepter02
  • _scepter02_alt00
  • _scepter03
  • _scepter04
  • _scepter05
  • _scepter06
  • _scepter07
  • _bell_01
  • _bell_02
  • _bell_03
  • _bell_04
  • _bell_05
  • bow_01
  • bow_02
  • bow_02_alt00
  • bow_03
  • bow_04
  • bow_05
  • bow_05_alt00
  • bow_06
  • polearm_01
  • polearm_02_alt00
  • polearm_02_alt01
  • polearm_02
  • polearm_03
  • polearm_04_alt00
  • polearm_04
  • polearm_bardiche
  • _playerDeathKnightSword
  • _weapon_blade03
  • _weapon_blade08
  • polearm_05
  • gun_00