Помогитея ядро сломано

Когда убиваешь человека в другом мире спасибо в консоле и кикает игрока,

Направление src/pocketmine/level/generator/flat.php

Ядро FrozenCore из сборки UnderWorld

Code:

?php

/*

*

* __ _ _ __ __ _ __ __ __

* | _ \ __ __| | ____| |_| \/ (_)_ __ __ | \/ | _ \

* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |

* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/

* |_| \__/ \__|_|\_\__|\__|_| |_|_|_| |_|\__| |_| |_|_|

*

* This program is free software: you can redistribute it and/or modify

* it under the terms of the GNU Lesser General Public License as published by

* the Free Software Foundation, either version 3 of the License, or

* (at your option) any later version.

*

* @author PocketMine Team

* @link http://www.pocketmine.net/

*

*

*/

namespace pocketmine\level\generator;

use pocketmine\block\Block;

use pocketmine\item\Item;

use pocketmine\level\ChunkManager;

use pocketmine\level\format\Chunk;

use pocketmine\level\generator\object\OreType;

use pocketmine\level\generator\populator\Ore;

use pocketmine\level\generator\populator\Populator;

use pocketmine\math\Vector3;

use pocketmine\utils\Random;

use function array_map;

use function count;

use function explode;

use function preg_match;

use function preg_match_all;

class Flat extends Generator{

/\*\* @var Chunk \*/

private $chunk;

/\*\* @var Populator\[\] \*/

private $populators = \[\];

/\*\* @var int\[\]\[\] \*/

private $structure;

/\*\* @var int \*/

private $floorLevel;

/\*\* @var int \*/

private $biome;

/\*\* @var mixed\[\] \*/

private $options;

/\*\* @var string \*/

private $preset;



/\*\*

 \* @return array

 \*/

public function getSettings(){

	return $this->options;

}



/\*\*

 \* @return string

 \*/

public function getName() : string{

	return "flat";

}



/\*\*

 \* @param array $options

 \*

 \* @throws InvalidGeneratorOptionsException

 \*/

public function \__construct(array $options = \[\]){

	$this->options = $options;

	if(isset($this->options\["preset"\]) and $this->options\["preset"\] != ""){

		$this->preset = $this->options\["preset"\];

	}else{

		$this->preset = "2;7,2x3,2;1;";

		//$this->preset = "2;7,59x1,3x3,2;1;spawn(radius=10 block=89),decoration(treecount=80 grasscount=45)";

	}



	$this->parsePreset();



	if(isset($this->options\["decoration"\])){

		$ores = new Ore();

		$ores->setOreTypes(\[

			new OreType(Block::get(Block::COAL_ORE), 20, 16, 0, 128),

			new OreType(Block::get(Block::IRON_ORE), 20, 8, 0, 64),

			new OreType(Block::get(Block::REDSTONE_ORE), 8, 7, 0, 16),

			new OreType(Block::get(Block::LAPIS_ORE), 1, 6, 0, 32),

			new OreType(Block::get(Block::GOLD_ORE), 2, 8, 0, 32),

			new OreType(Block::get(Block::DIAMOND_ORE), 1, 7, 0, 16),

			new OreType(Block::get(Block::DIRT), 20, 32, 0, 128),

			new OreType(Block::get(Block::GRAVEL), 10, 16, 0, 128)

		\]);

		$this->populators\[\] = $ores;

	}



}



/\*\*

 \* @param string $layers

 \*

 \* @return int\[\]\[\]

 \* @throws InvalidGeneratorOptionsException

 \*/

public static function parseLayers(string $layers) : array{

	$result = \[\];

	$split = array_map('\\trim', explode(',', $layers));

	$y = 0;

	foreach($split as $line){

		preg_match('#^(?:(\\d+)\[x|\*\])?(.+)$#', $line, $matches);

		if(count($matches) !== 3){

			throw new InvalidGeneratorOptionsException("Invalid preset layer \\"$line\\"");

		}



		$cnt = $matches\[1\] !== "" ? (int) $matches\[1\] : 1;

		try{

		}catch(\\InvalidArgumentException $e){

			throw new InvalidGeneratorOptionsException("Invalid preset layer \\"$line\\": " . $e->getMessage(), 0, $e);

		}

		for($cY = $y, $y += $cnt; $cY < $y; ++$cY){

			$result\[$cY\] = \[$b->getId(), $b->getDamage()\];

		}

	}



	return $result;

}



protected function parsePreset() : void{

	$preset = explode(";", $this->preset);

	$blocks = (string) ($preset\[1\] ?? "");

	$this->biome = (int) ($preset\[2\] ?? 1);

	$options = (string) ($preset\[3\] ?? "");

	$this->structure = self::parseLayers($blocks);



	$this->floorLevel = count($this->structure);



	//TODO: more error checking

	preg_match_all('#((\[0-9a-z\_\]{1,})\\(?(\[0-9a-z\_ =:\]{0,})\\)?),?#', $options, $matches);

	foreach($matches\[2\] as $i => $option){

		$params = true;

		if($matches\[3\]\[$i\] !== ""){

			$params = \[\];

			$p = explode(" ", $matches\[3\]\[$i\]);

			foreach($p as $k){

				$k = explode("=", $k);

				if(isset($k\[1\])){

					$params\[$k\[0\]\] = $k\[1\];

				}

			}

		}

		$this->options\[$option\] = $params;

	}

}



protected function generateBaseChunk() : void{

	$this->chunk = new Chunk(0, 0);

	$this->chunk->setGenerated();



	for($Z = 0; $Z < 16; ++$Z){

		for($X = 0; $X < 16; ++$X){

			$this->chunk->setBiomeId($X, $Z, $this->biome);

		}

	}



	$count = count($this->structure);

	for($sy = 0; $sy < $count; $sy += 16){

		$subchunk = $this->chunk->getSubChunk($sy >> 4, true);

		for($y = 0; $y < 16 and isset($this->structure\[$y | $sy\]); ++$y){

			list($id, $meta) = $this->structure\[$y | $sy\];



			for($Z = 0; $Z < 16; ++$Z){

				for($X = 0; $X < 16; ++$X){

					$subchunk->setBlock($X, $y, $Z, $id, $meta);

				}

			}

		}

	}

}



public function init(ChunkManager $level, Random $random) : void{

	parent::init($level, $random);

	$this->generateBaseChunk();

}



public function generateChunk($chunkX, $chunkZ){

	$chunk = clone $this->chunk;

	$chunk->setX($chunkX);

	$chunk->setZ($chunkZ);

	$this->level->setChunk($chunkX, $chunkZ, $chunk);

}



public function populateChunk($chunkX, $chunkZ){

	$this->random->setSeed(0xdeadbeef ^ ($chunkX << 8) ^ $chunkZ ^ $this->level->getSeed());

	foreach($this->populators as $populator){

		$populator->populate($this->level, $chunkX, $chunkZ, $this->random);

	}



}



public function getSpawn(){

	return new Vector3(128, $this->floorLevel, 128);

}

}

Т9 исправил, короче когда убиваешь игрока в другом мире в консоле начинает спамить и кикает игрока

Что консоль спамит, самим гадать? И при чем тут flat

пожалуйста

нахуя тут везде экранирование?

как я вижу ты каждые темы здесь хуесосишь, как фрик

ну так есть за что

PHPDoc называется

экранирования не только в коментариях

пиздeц ты еблан

услышал тебя брат

оно тупое.

поскули