Skip to content

Adding Projectiles

Projectiles are entities launched by interactions. They travel through the world and trigger effects on impact.

Pack location: Server/Projectiles/
Base game reference: Assets.zip/Server/Projectiles/

Create Server/Projectiles/My_Bullet.json in your pack:

{
"Appearance": "Bullet_Blunderbuss",
"MuzzleVelocity": 100,
"Gravity": 10,
"Damage": 20,
"TimeToLive": 30
}
{
"MuzzleVelocity": 100, // initial speed (units/sec)
"TerminalVelocity": 100, // max speed
"Gravity": 10, // downward acceleration (0 = straight line)
"Bounciness": 0, // 0-1, ricochet factor
"ImpactSlowdown": 0 // speed reduction on bounce
}
{
"Radius": 0.2, // collision radius
"Height": 0 // cylinder height (0 = sphere)
}
{
"TimeToLive": 30, // max seconds before despawn
"DeadTime": 0.5, // linger time after hit (for effects)
"DeadTimeMiss": 0 // linger time on miss
}
{
"Damage": 50, // hit damage
"DeathEffectsOnHit": true // play death effects on hit
}
{
"Appearance": "Arrow_Basic", // model ID
"SticksVertically": true, // stick into surfaces
"PitchAdjustShot": true, // rotate to match trajectory
"DepthShot": 0.5, // penetration depth visual
"DeathParticles": { "SystemId": "Impact_Arrow" },
"DeathSoundEventId": "SFX_Arrow_Hit"
}
{
"VerticalCenterShot": 0, // Y offset at spawn
"HorizontalCenterShot": 0 // X offset at spawn
}

Use LaunchProjectile interaction:

{
"Type": "LaunchProjectile",
"ProjectileId": "My_Bullet",
"RunTime": 0.1,
"SpawnOffset": { "X": 0, "Y": 1.5, "Z": 0.5 },
"Effects": {
"ItemAnimationId": "Shoot",
"WorldSoundEventId": "SFX_Fire"
}
}

Server/Projectiles/My_Arrow.json:

{
"Appearance": "Arrow_Basic",
"Radius": 0.1,
"MuzzleVelocity": 60,
"TerminalVelocity": 80,
"Gravity": 15,
"Bounciness": 0,
"TimeToLive": 30,
"Damage": 25,
"SticksVertically": true,
"PitchAdjustShot": true,
"DepthShot": 0.3,
"DeathEffectsOnHit": true,
"DeathParticles": { "SystemId": "Impact_Arrow" },
"DeathSoundEventId": "SFX_Arrow_Impact"
}

Server/Projectiles/My_Bullet.json:

{
"Appearance": "Bullet_Blunderbuss",
"Radius": 0.1,
"MuzzleVelocity": 300,
"TerminalVelocity": 300,
"Gravity": 5,
"TimeToLive": 60,
"Damage": 50,
"DeadTime": 0.1,
"DeathEffectsOnHit": true,
"DeathParticles": { "SystemId": "Gun_Impact" },
"DeathSoundEventId": "SFX_Bullet_Impact"
}

Server/Projectiles/My_Fireball.json:

{
"Appearance": "Fireball",
"Radius": 0.3,
"MuzzleVelocity": 30,
"TerminalVelocity": 30,
"Gravity": 2,
"TimeToLive": 20,
"Damage": 40,
"DeadTime": 0.5,
"DeathEffectsOnHit": true,
"DeathParticles": { "SystemId": "Explosion_Fire" },
"DeathSoundEventId": "SFX_Explosion"
}

Server/Projectiles/My_Bouncer.json:

{
"Appearance": "Orb_Magic",
"Radius": 0.2,
"MuzzleVelocity": 40,
"Gravity": 20,
"Bounciness": 0.8,
"ImpactSlowdown": 0.1,
"TimeToLive": 15,
"Damage": 15,
"DeathParticles": { "SystemId": "Magic_Pop" }
}

Server/Projectiles/My_Grenade.json:

{
"Appearance": "Grenade_Frag",
"Radius": 0.15,
"MuzzleVelocity": 25,
"Gravity": 25,
"Bounciness": 0.3,
"ImpactSlowdown": 0.5,
"TimeToLive": 3,
"Damage": 0,
"DeadTime": 0.1,
"DeathEffectsOnHit": false,
"DeathParticles": { "SystemId": "Explosion_Frag" },
"DeathSoundEventId": "SFX_Grenade_Explode"
}

Note: Grenade damage would be handled by area effect on death, not direct hit.

{
"Interactions": {
"Primary": {
"Cooldown": { "Cooldown": 0.2 },
"Interactions": [{
"Type": "LaunchProjectile",
"ProjectileId": "My_Bullet",
"Effects": {
"ItemAnimationId": "Shoot",
"WorldSoundEventId": "SFX_Gunshot",
"CameraEffect": "Gun_Recoil"
}
}]
}
}
}
{
"Interactions": {
"Primary": {
"Type": "Charging",
"Next": {
"0.3": {
"Type": "LaunchProjectile",
"ProjectileId": "Arrow_Weak",
"Effects": { "ItemAnimationId": "Release" }
},
"1.0": {
"Type": "LaunchProjectile",
"ProjectileId": "Arrow_Full",
"Effects": { "ItemAnimationId": "Release" }
}
}
}
}
}
{
"Type": "Serial",
"Interactions": [
{ "Type": "LaunchProjectile", "ProjectileId": "Pellet" },
{ "Type": "LaunchProjectile", "ProjectileId": "Pellet" },
{ "Type": "LaunchProjectile", "ProjectileId": "Pellet" },
{ "Type": "LaunchProjectile", "ProjectileId": "Pellet" },
{ "Type": "LaunchProjectile", "ProjectileId": "Pellet" }
],
"Effects": {
"WorldSoundEventId": "SFX_Shotgun_Blast"
}
}
{
"Type": "Serial",
"Interactions": [
{
"Type": "LaunchProjectile",
"ProjectileId": "Bullet",
"RunTime": 0.05
},
{
"Type": "LaunchProjectile",
"ProjectileId": "Bullet",
"RunTime": 0.05
},
{
"Type": "LaunchProjectile",
"ProjectileId": "Bullet",
"RunTime": 0.05
}
]
}
{
"Type": "ModifyInventory",
"ItemToRemove": { "Id": "Ammo_Bullet", "Quantity": 1 },
"Next": {
"Type": "LaunchProjectile",
"ProjectileId": "My_Bullet"
},
"Failed": {
"Type": "Simple",
"Effects": {
"WorldSoundEventId": "SFX_Click_Empty"
}
}
}

From base game Assets.zip/Common/Items/Projectiles/:

  • Arrow_Basic, Arrow_Fire, Arrow_Ice
  • Bullet_Blunderbuss
  • Spear_Thrown
  • Orb_Magic

From Hypixel minigames:

  • Bullet (GunPvP)
  • Grenade_Frag
WhatYour PackBase Game Reference
Projectile configsServer/Projectiles/Assets.zip/Server/Projectiles/
Projectile modelsCommon/Items/Projectiles/Assets.zip/Common/Items/Projectiles/
Impact particlesServer/Particles/Assets.zip/Server/Particles/
Impact soundsCommon/Sounds/Assets.zip/Common/Sounds/Projectiles/