Shulker Bullet

Registry name

etfuturum.shulkerBullet

Basic info

  • Health: Not applicable (projectile)
  • Armor: None
  • Size: 0.3125 × 0.3125 (width × height)
  • Spawn conditions: Spawned by EntityShulker when attacking a target within range
  • Drops: None (no death drops)
  • Behaviour: Homing projectile fired by shulkers. Travels in the direction the shulker is facing, accelerating toward the target. Applies Levitation on hit.

Homing mechanics

  • Initial direction: toward the shulker’s attached face direction
  • After initial travel: recalculates direction toward target
  • targetDelta adjusts 2.5% per tick (clamped to ±1.0), creating a homing curve
  • Speed: 0.15 units per tick in each axis
  • Changes direction at step boundaries (every 10–50 ticks randomly)

Movement phases

  1. Initial (steps > 0): travels in straight line from shulker face
  2. Homing (steps == 0, target exists): curves toward target with targetDelta adjustment
  3. Dormant (target dead/null): falls with gravity (motionY -= 0.04)

Collision and hit detection

  • Raycasts each tick using Utils.forwardsRaycast
  • bulletHit() on collision:
    • If hits block: spawns largeexplode particle, plays hit sound
    • If hits entity: deals 4.0 indirect mob damage + applies Levitation (10 seconds)

Levitation effect

Applied via ModPotions.levitation: 10 × 20 = 200 ticks of Levitation I

Destruction

  • Dies on any collision (block or entity)
  • Dies immediately in Peaceful difficulty
  • Attacked by player: spawns 12 crit particles, plays hurt sound, dies

Notes

  • noClip = true — phases through blocks
  • isBurning() = false — never renders as burning
  • Brightness: always 1.0 (full bright, no lighting falloff)
  • getBrightnessForRender returns 15728880 (max)
  • canBeCollidedWith returns true — can be attacked/hit by player
  • Owner UUID tracked for multiplayer sync; recreated on first tick if null