기초 부분 재작성: Thanks to @PocketMine for idea.