Shulker
Registry name
etfuturum:shulker
Audit correction: previously written as
etfuturum.shulker(wrong separator). Evidence:core/proxy/CommonProxy.java:260registerEntity(EntityShulker.class, "shulker", 16, ...)
Basic info
-
Health: 30 HP
-
Armor: 0 (open) / 20 (closed) —
isClosed()returns true whenpeekTick == 0 -
Size:
1 × 1(base, but collision box dynamic based on attachment face and peek amount) -
Spawn conditions: No natural spawn is registered by default. The single
EntityRegistry.addSpawn(EntityShulker.class, 1, 1, 2, monster, END biomes)call is insideif (ConfigTweaks.shulkersSpawnAnywhere), and that option defaults to false (configuration/configs/ConfigTweaks.java:43). So by default shulkers do not spawn naturally; they are obtainable only via spawn egg / commands.When
shulkersSpawnAnywhere = true: weight 1, group 1–2, inBiomeDictionary.Type.ENDbiomes — i.e. it is an uncommon End spawn, roughly like endermen. The option’s own description states these randomly-grouped End spawns are “uncommon” and that the shulker is otherwise inaccessible. Evidence:core/proxy/CommonProxy.java:266-268.Audit correction: the previous text claimed shulkers “spawn on end gateway portals and on blocks in the End”. No end-gateway spawn rule exists anywhere in this source tree — the only spawn entry is the one above, and it is disabled by default.
Configuration gate
- Entity registration + shulker candy projectile:
ConfigEntities.enableShulker, keyenableShulker, default ON (ConfigEntities.java:61). - Natural spawning:
ConfigTweaks.shulkersSpawnAnywhere, default OFF (ConfigTweaks.java:43). - Drops: Shulker shell (50%+ chance, affected by loot table; only if
ModItems.SHULKER_SHELLenabled) - 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
EntityShulkerBulletwith levitation effect (10s on impact) - Attack cooldown: 20–40 ticks (random)
- Shoots in the direction of the attached face
Colour / dyeing
Colordata 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
EntityGolembase (same as iron golem)IMobinterface — counts as monster for spawning/difficulty rules- Collision box is
null(cannot be collided with for block movement) canDespawn: false ifpersistenceRequired = true- Eye height: 0.5 (relative to bottom of shulker body)
- Vertical/horizontal face speed: 180 (instant rotation)
applyEntityCollision: no-op (no entity push)