powodem, dla którego nie działa, jest to, że (moim zdaniem ) serwer jest trochę zdezorientowany, w jaki sposób poprawnie obsłuży nazwy kolumn. Aby to zadziałało, dodaj alias do każdej tabeli o tej samej nazwie, do której chcesz dołączyć, a także do kolumn, np.
SELECT achievements.*,
a.Name as TypeName,
b.Name AS BlockName,
c.Name as DataName,
d.Name AS ValueName
FROM achievements
INNER JOIN stats a ON achievements.type = a.type
INNER JOIN stats b ON achievements.block = b.block
INNER JOIN stats c ON achievements.data = c.data
INNER JOIN stats d ON achievements.value = d.value
WHERE player_id = $id
zakładając, że chcesz uzyskać nazwy poszczególnych kolumn .