Created by szm hxz
Contributed by Matthijs Sluiter
Contributed by Lucas Descroix
Contributed by Blaze Type