There are four categories of fish mobs in Minecraft:
Obtaining and transporting
A live fish can be captured by using a water bucket on a fish, to obtain a bucket of fish, which is the only way to obtain the live mob in item form. Using the bucket of fish on a water source block transfers the fish from the bucket to the body of water. A water bucket may also be used on axolotls in this manner.
|Fish||Warm Ocean||Lukewarm Ocean
Deep Lukewarm Ocean
Deep Cold Ocean
Deep Frozen Ocean
|Salmon||No||No[JE only]||No[JE only]||Yes||Yes||Yes|
|Yes[BE only]||Yes[BE only]|
|Tropical Fish[note 1]||Yes||Yes||No||No||No||No|
- Also spawns in Lush Caves at any Y-level.
In Java Edition, fish can spawn inside a water block at Y-level 50 to 63 (from 13 blocks below sea level up to inside the block one above it), that also has water above and below it. The spawn block and the block below can be any kind of water, such as a source block, falling water, bubble column, kelp, or even a waterlogged block (as long as the fish can be placed at the bottom center of the spawn block without colliding with anything solid). The block above must be pure water, such as a source block, falling water, or flowing water of any depth. Particularly, the block above cannot also be a bubble column, so fish no longer spawn inside bubble elevators.
Bedrock Edition does permit fish to spawn in bubble columns.
Fish can spawn between 24 and 64 block spherical range away from the player.[Java Edition only]