Shulker

Registry name

etfuturum.shulker

Basic info

  • Health: 30 HP
  • Armor: 0 (open) / 20 (closed) — isClosed() returns true when peekTick == 0
  • Size: 1 × 1 (base, but collision box dynamic based on attachment face and peek amount)
  • Spawn conditions: End dimension; spawns on end gateway portals and on blocks in the End (attached to surfaces)
  • Drops: Shulker shell (50%+ chance, affected by loot table; only if ModItems.SHULKER_SHELL enabled)
  • Behaviour: Stationary golem that attaches to block faces. Opens to reveal head and shoots projectiles at players.

Attachment and movement

  • Attaches to any solid block face on spawn
  • Teleports to a new nearby position (up to 8 blocks away) if block below attachment becomes air, or if below 50% health and random check passes
  • Teleport targets require: air block at target, solid face on one of the 6 adjacent sides
  • Does not move on its own otherwise

Combat mechanics

  • Closed state (peekTick == 0): immune to arrows, armor value = 20
  • Open/attacking state: armor value = normal (0), can be damaged
  • When health drops below 50%: 25% chance per tick to teleport
  • If hit by another shulker’s bullet and teleported: may spawn a new shulker at the original position (chance based on nearby shulker count)

Shooting

  • Range: 16 blocks (shoots if target within 400 blocks²)
  • Fires EntityShulkerBullet with levitation effect (10s on impact)
  • Attack cooldown: 20–40 ticks (random)
  • Shoots in the direction of the attached face

Colour / dyeing

  • Color data watcher: values 0–15 for dye colours, 16 = default purple (undyed)
  • Right-click with dye: changes colour
  • Right-click with water bucket on water-immersed shulker: resets to colour 16 (undyed)
  • Colour is preserved on teleport/spawn

Sound events

  • Ambient: minecraft:entity.shulker.ambient
  • Hurt (open): minecraft:entity.shulker.hurt
  • Hurt (closed): minecraft:entity.shulker.hurt_closed
  • Death: minecraft:entity.shulker.death
  • Open: minecraft:entity.shulker.open
  • Close: minecraft:entity.shulker.close
  • Shoot: minecraft:entity.shulker.shoot
  • Teleport: minecraft:entity.shulker.teleport

Notes

  • EntityGolem base (same as iron golem)
  • IMob interface — counts as monster for spawning/difficulty rules
  • Collision box is null (cannot be collided with for block movement)
  • canDespawn: false if persistenceRequired = true
  • Eye height: 0.5 (relative to bottom of shulker body)
  • Vertical/horizontal face speed: 180 (instant rotation)
  • applyEntityCollision: no-op (no entity push)