mojira.dev
MC-1788

Ocelots do not spawn naturally on peaceful difficulty in jungle and bamboo jungle biomes

The bug

Despite being friendly mobs, ocelots will not spawn on peaceful in jungle or bamboo jungle biomes

Code Analysis

The reason this happens is because for the mob cap in jungle and bamboo jungle biomes they are counted as monsters instead of creatures

Current Code

net/minecraft/data/worldgen/biome/OverworldBiomes.java

public static Biome jungle() {
      MobSpawnSettings.Builder mobspawnsettings$builder = new MobSpawnSettings.Builder();
      BiomeDefaultFeatures.baseJungleSpawns(mobspawnsettings$builder);
      mobspawnsettings$builder.addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.PARROT, 40, 1, 2)).addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.OCELOT, 2, 1, 3)).addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.PANDA, 1, 1, 2));
      return baseJungle(0.9F, false, false, true, mobspawnsettings$builder);
   }

   public static Biome bambooJungle() {
      MobSpawnSettings.Builder mobspawnsettings$builder = new MobSpawnSettings.Builder();
      BiomeDefaultFeatures.baseJungleSpawns(mobspawnsettings$builder);
      mobspawnsettings$builder.addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.PARROT, 40, 1, 2)).addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.PANDA, 80, 1, 2)).addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.OCELOT, 2, 1, 1));
      return baseJungle(0.9F, true, false, true, mobspawnsettings$builder);
   }

Fixed Code

net/minecraft/data/worldgen/biome/OverworldBiomes.java

public static Biome jungle() {
      MobSpawnSettings.Builder mobspawnsettings$builder = new MobSpawnSettings.Builder();
      BiomeDefaultFeatures.baseJungleSpawns(mobspawnsettings$builder);
      //Setting the MobCategory to Creature for Ocelot fixes MC-1788
      mobspawnsettings$builder.addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.PARROT, 40, 1, 2)).addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.OCELOT, 2, 1, 3)).addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.PANDA, 1, 1, 2));
      return baseJungle(0.9F, false, false, true, mobspawnsettings$builder);
   }

   public static Biome bambooJungle() {
      MobSpawnSettings.Builder mobspawnsettings$builder = new MobSpawnSettings.Builder();
      BiomeDefaultFeatures.baseJungleSpawns(mobspawnsettings$builder);
      //Setting the MobCategory to Creature for Ocelot fixes MC-1788
      mobspawnsettings$builder.addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.PARROT, 40, 1, 2)).addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.PANDA, 80, 1, 2)).addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.OCELOT, 2, 1, 1));
      return baseJungle(0.9F, true, false, true, mobspawnsettings$builder);
   }

Linked issues

Comments 37

Brandon Bourgeois

Were you in the jungle, which is the only biome they naturally spawn in?

Yes of course.

Alexander Hammett

Yes, annoyed me from the very beginning 😞

^ Hi five! πŸ˜‰ That also annoys me, that's why I brought it up here.
If You could please just vote it up, so it's more likely it'll get noticed…

Alexander Hammett

Here, have an upvote πŸ˜‰

27 more comments

Can confirm in 1.20.1

Minecraft386882

Can confirm for 1.21.3

Minecraft386882

Confirmed in 1.21.4 prerelease 2

stephen clayton

confirm 1.21.4

Still true in 1.21.8. Please fix this. I want ocelots.

Alisha J.

anthony cicinelli

(Unassigned)

Confirmed

Gameplay

Normal

Mob spawning

mob, ocelot, peaceful, spawning

Minecraft 1.4.2, 1.16.3, 1.16.4 Pre-release 1, 1.16.4 Pre-release 2, 1.16.4 Release Candidate 1, ..., 1.20.1, 23w32a, 1.21 Pre-Release 3, 1.21, 1.21.3

Retrieved