diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index 50454eb0a5..fe13485f01 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -734,7 +734,11 @@ public class CraftWorld implements World { } else if (Skeleton.class.isAssignableFrom(clazz)) { entity = new EntitySkeleton(world); } else if (Slime.class.isAssignableFrom(clazz)) { - entity = new EntitySlime(world); + if (MagmaCube.class.isAssignableFrom(clazz)) { + entity = new EntityLavaSlime(world); + } else { + entity = new EntitySlime(world); + } } else if (Spider.class.isAssignableFrom(clazz)) { if (CaveSpider.class.isAssignableFrom(clazz)) { entity = new EntityCaveSpider(world); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java index df90513cce..76bc408450 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -15,6 +15,7 @@ import java.util.List; import java.util.Map; import java.util.UUID; import org.bukkit.Bukkit; +import org.bukkit.entity.MagmaCube; public abstract class CraftEntity implements org.bukkit.entity.Entity { private static final Map players = new MapMaker().softValues().makeMap(); @@ -79,7 +80,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { else { return new CraftCreature(server, (EntityCreature) entity); } } // Slimes are a special (and broken) case - else if (entity instanceof EntitySlime) { return new CraftSlime(server, (EntitySlime) entity); } + else if (entity instanceof EntitySlime) { + if (entity instanceof MagmaCube) { return new CraftMagmaCube(server, (EntityLavaSlime) entity); } + else { return new CraftSlime(server, (EntitySlime) entity); } + } // Flying else if (entity instanceof EntityFlying) { if (entity instanceof EntityGhast) { return new CraftGhast(server, (EntityGhast) entity); }