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
isUnarmed
(No shit!)
Dexterity_Melee_2H
0
isFist Weapons
Strength_Melee_1H
0
isSword
1
isMace
Strength_Melee_2H
0
isHammer
1
isGreat Weapon
2
isPolearm
Dexterity_Ranged_2H
0
isBow
1
isShotgun
Mind_Ranged_1H
0
isScepter
Mind_Ranged_2H
0
isMagic 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