<?php

class NetherReactorStructure{
	
	/*pretty long =D*/
	private static $structure = [
		-2 => [
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN"
		],
		-1 => [
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN"
		],
		0 => [
			"NNNNNNNNNNNNNNNNN",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N      ___      N",
			"N      ___      N",
			"N      ___      N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"NNNNNNNNNNNNNNNNN"
		],
		1 => [
			"NNNNNNNNNNNNNNNNN",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N      ___      N",
			"N      ___      N",
			"N      ___      N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"NNNNNNNNNNNNNNNNN"
		],
		2 => [
			"NNNNNNNNNNNNNNNNN",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N      ___      N",
			"N      ___      N",
			"N      ___      N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"NNNNNNNNNNNNNNNNN"
		],
		3 => [
			"NNNNNNNNNNNNNNNNN",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"NNNNNNNNNNNNNNNNN"
		],
		4 => [
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN",
			"NNNNNNNNNNNNNNNNN"
		],
		5 => [
			"NNNNNNNNNNNNNNNNN",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"N               N",
			"NNNNNNNNNNNNNNNNN"
		],
		6 => [
			"NNNNNNNNNNNNNNNNN",
			"N               N",
			"N               N",
			"N  NNNNNNNNNNN  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  NNNNNNNNNNN  N",
			"N               N",
			"N               N",
			"NNNNNNNNNNNNNNNNN",
		],
		7 => [ //spaces are required
			"NNNNNNNNNNNNNNNNN",
			"N               N",
			"N               N",
			"N  NNNNNNNNNNN  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  NNNNNNNNNNN  N",
			"N              NN",
			"N             NNN",
			"NNNNNNNNNNNNNNNN ",
		],
		8 => [
			"NNNNNNNNNNNNNNNNN",
			"N               N",
			"N               N",
			"N  NNNNNNNNNNN  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N NN",
			"N  NNNNNNNNNNNNNN",
			"N            NNN ",
			"N           NNN  ",
			"NNNNNNNNNNNNNN   ",
		],
		9 => [
			"NNNNNNNNNNNNNNNNN",
			"N               N",
			"N               N",
			"N  NNNNNNNNNNN  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N NN",
			"N  N         NNNN",
			"N  N         NNN ",
			"N  NNNNNNNNNNNN  ",
			"N          NNN   ",
			"N         NNN    ",
			"NNNNNNNNNNNN     ",
		],
		10 => [
			"NNNNNNNNNNNNNNNNN",
			"N               N",
			"N               N",
			"N  NNNNNNNNNNN  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N NN",
			"N  N         NNNN",
			"N  N         NNN ",
			"N  N        NNN  ",
			"N  N       NNN   ",
			"N  NNNNNNNNNNN   ",
			"N        NNN     ",
			"N       NNN      ",
			"NNNNNNNNNN       ",
		],
		11 => [
			"NNNNNNNNNNNNNNNNN",
			"N               N",
			"N               N",
			"N  NNNNNNNNNNN  N",
			"N  N         N  N",
			"N  N         N  N",
			"N  N         N NN",
			"N  N         NNNN",
			"N  N         NNN ",
			"N  N        NNN  ",
			"N  N       NNN   ",
			"N  N      NNNN   ",
			"N  N     NNN N   ",
			"N  NNNNNNNNNNN   ",
			"N      NNN       ",
			"N     NNN        ",
			"NNNNNNNN         ",
		],
		12 => [
			"NNNNNNNNNNNNNNNNN",
			"N               N",
			"N               N",
			"N  NNNNNNNNNNN  N",
			"N  N         N NN",
			"N  N NNNNNNN NNNN",
			"N  N N     N NNN ",
			"N  N N     NNNN  ",
			"N  N N     NNN   ",
			"N  N N    NNNN   ",
			"N  N N   NNN N   ",
			"N  N NNNNNNN N   ",
			"N  N   NNN   N   ",
			"N  NNNNNNNNNNN   ",
			"N    NNN         ",
			"N   NNN          ",
			"NNNNNN           ",
		],
		13 => [
			"NNNNNNNNNNNNNNNNN",
			"N               N",
			"N              NN",
			"N  NNNNNNNNNNNNNN",
			"N  N         NNN ",
			"N  N NNNNNNNNNN  ",
			"N  N N     NNN   ",
			"N  N N    NNNN   ",
			"N  N N   NNN N   ",
			"N  N N  NNNN N   ",
			"N  N N NNN N N   ",
			"N  N NNNNNNN N   ",
			"N  N NNN     N   ",
			"N  NNNNNNNNNNN   ",
			"N  NNN           ",
			"N NNN            ",
			"NNNN             ",
		],
		14 => [
			"NNNNNNNNNNNNNNNNN",
			"N             NNN",
			"N            NNN ",
			"N  NNNNNNNNNNNN  ",
			"N  NN      NNN   ",
			"N  N NNNNNNNNN   ",
			"N  N N   NNN N   ",
			"N  N N  NNNN N   ",
			"N  N N NNN N N   ",
			"N  N NNNN  N N   ",
			"N  N NNN   N N   ",
			"N  NNNNNNNNN N   ",
			"N  NNN       N   ",
			"N NNNNNNNNNNNN   ",
			"NNNN             ",
			"NNN              ",
			"NN               ",
		],
		15 => [
			"NNNNNNNNNNNNNNNN ",
			"N           NNN  ",
			"N          NNN   ",
			"N    NNNNNNNNN   ",
			"N   NNN  NNN N   ",
			"N  NNNNNNNNN N   ",
			"N  NNN NNN N N   ",
			"N  N NNNN  N N   ",
			"N  N NNN   N N   ",
			"N  NNNN    N N   ",
			"N  NNN     N N   ",
			"N NNNNNNNNNN N   ",
			"NNNN         N   ",
			"NNNNNNNNNNNNNN   ",
			"NN               ",
			"N                ",
		],
		16 => [
			"NNNNNNNNNNNNNN   ",
			"N         NNN    ",
			"N        NNN     ",
			"N      NNNNNNN   ",
			"N     NNNN   N   ",
			"N    NNNNNNN N   ",
			"N   NNNN   N N   ",
			"N  NNNN    N N   ",
			"N  NNN     N N   ",
			"N NNNN     N N   ",
			"NNNN N     N N   ",
			"NNNN NNNNNNN N   ",
			"NN N         N   ",
			"N  NNNNNNNNNNN   ",
		],
		17 => [
			"NNNNNNNNNNNN     ",
			"N       NNN      ",
			"N      NNN       ",
			"N     NNNNNNNN   ",
			"N    NNNNNN  N   ",
			"N   NNNNNNNN N   ",
			"N  NNNNNN  N N   ",
			"N NNNNNN   N N   ",
			"NNNNNNN    N N   ",
			"NNNNNN     N N   ",
			"NN NNN     N N   ",
			"N  N NNNNNNN N   ",
			"   N         N   ",
			"   NNNNNNNNNNN   ",
		],
		18 => [
			"NNNNNNNNNN       ",
			"N     NNN        ",
			"N    NNN         ",
			"N   NNN    NNN   ",
			"N  NNN    NNNN   ",
			"N NNNNNNNNNN N   ",
			"NNNN N  NNNN N   ",
			"NNN  N NNN N N   ",
			"NN   NNNN  N N   ",
			"N    NNN   N N   ",
			"    NNN    N N   ",
			"   NNNNNNNNN N   ",
			"   NN        N   ",
			"   NNNNNNNNNNN   ",
		],
		19 => [
			"NNNNNNNN         ",
			"N   NNN          ",
			"N  NNN           ",
			"N NNN        N   ",
			"NNNN        NN   ",
			"NNN  NNNNNNNNN   ",
			"NN   N    NNNN   ",
			"N    N   NNN N   ",
			"     N  NNNN N   ",
			"     N NNN N N   ",
			"     NNNN  N N   ",
			"     NNNNNNN N   ",
			"    NNN      N   ",
			"   NNNNNNNNNNN   ",
		],
		20 => [
			"NNNNNN           ",
			"N NNN            ",
			"NNNN             ",
			"NNN              ",
			"NN               ",
			"N    NNNNNNN N   ",
			"     N     NNN   ",
			"     N     NNN   ",
			"     N    NNNN   ",
			"     N   NNN N   ",
			"     N  NNNN N   ",
			"     NNNNNNN N   ",
			"      NNN    N   ",
			"     NNNNNNNNN   ",
		],
		21 => [
			"NNNN             ",
			"NNN              ",
			"NN               ",
			"N                ",
			"", //nothing is here =D
			"     NNNNNNN     ",
			"     N     N     ",
			"     N     N N   ",
			"     N     NNN   ",
			"     N     NNN   ",
			"     N    NNNN   ",
			"     NNNNNNN N   ",
			"        NNN  N   ",
			"       NNNNNNN   ",
		],
		22 => [
			"NN               ",
			"N                ",
			"",
			"",
			"",
			"     NNNNNNN     ",
			"     N     N     ",
			"     N     N     ",
			"     N     N     ",
			"     N     N N   ",
			"     N     NNN   ",
			"     NNNNNNNNN   ",
			"          NNNN   ",
			"         NNNNN   ",
		],
		23 => [
			"",
			"",
			"",
			"",
			"",
			"     NNNNNNN     ",
			"     N     N     ",
			"     N     N     ",
			"     N     N     ",
			"     N     N     ",
			"     N     N     ",
			"     NNNNNNN N   ",
			"            NN   ",
			"           NNN   ",
		],
		24 => [
			"",
			"",
			"",
			"",
			"",
			"     NNNNNNN     ",
			"     N     N     ",
			"     N     N     ",
			"     N     N     ",
			"     N     N     ",
			"     N     N     ",
			"     NNNNNNN     ",
		],
		25 => [
			"",
			"",
			"",
			"",
			"",
			"     NNNNNNN     ",
			"     N     N     ",
			"     N     N     ",
			"     N     N     ",
			"     N     N     ",
			"     N     N     ",
			"     NNNNNNN     ",
		],
		26 => [
			"",
			"",
			"",
			"",
			"",
			"     NNNNNNN     ",
			"     N     N     ",
			"     N     N     ",
			"     N     N     ",
			"     N     N     ",
			"     N     N     ",
			"     NNNNNNN     ",
		],
		27 => [
			"",
			"",
			"",
			"",
			"",
			"     NNNNNNN     ",
			"     N     N     ",
			"     N     N     ",
			"     N     N     ",
			"     N    NN     ",
			"     N   NNN     ",
			"     NNNNNN      ",
		],
		28 => [
			"",
			"",
			"",
			"",
			"",
			"     NNNNNNN     ",
			"     N     N     ",
			"     N    NN     ",
			"     N   NNN     ",
			"     N  NNN      ",
			"     N NNN       ",
			"     NNNN        ",
		],
		29 => [
			"",
			"",
			"",
			"",
			"",
			"     NNNNNNN     ",
			"     N   NNN     ",
			"     N  NNN      ",
			"     N NNN       ",
			"     NNNN        ",
			"     NNN         ",
			"     NN          ",
		],
		30 => [
			"",
			"",
			"",
			"",
			"",
			"     NNNNNN      ",
			"     N NNN       ",
			"     NNNN        ",
			"     NNN         ",
			"     NN          ",
			"     N           ",
		],
		31 => [
			"",
			"",
			"",
			"",
			"",
			"     NNNN        ",
			"     NNN         ",
			"     NN          ",
			"     N           ",
		],
		32 => [
			"",
			"",
			"",
			"",
			"",
			"     NN          ",
			"     N           ",
		],
	];
	
	public static function buildReactor($level, $x, $y, $z){ /*use CENTER positions*/
		$offsetX = 0;
		$offsetZ = 0;
		foreach(NetherReactorStructure::$structure as $layerCount => $layer){
			foreach($layer as $line){
				$line = rtrim($line); //remove useless spaces(only from right)
				foreach(str_split($line) as $char){
					switch($char){
						case "N": //Netherrack
							$level->setBlockRaw(new Vector3($x - 8 + $offsetX, $y - 1 + $layerCount, $z - 8 + $offsetZ), new NetherrackBlock());
							break;
						case " ":
							$block = $level->getBlock(new Vector3($x - 8 + $offsetX, $y - 1 + $layerCount, $z - 8 + $offsetZ))->getID();
							if($block == 0){
								break;
							}
							$level->setBlockRaw(new Vector3($x - 8 + $offsetX, $y - 1 + $layerCount, $z - 8 + $offsetZ), new AirBlock());
							break;
					}
					++$offsetX;
				}
				++$offsetZ;
				$offsetX = 0;
			}
			$offsetZ = 0;
		}
	}
}