From 89bd4173df1a7eeba8f8801b14890c21fdd526a1 Mon Sep 17 00:00:00 2001 From: Luke Darling Date: Fri, 11 Mar 2016 16:09:05 -0500 Subject: [PATCH] Added Block::fromString() method --- src/pocketmine/block/Block.php | 35 ++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/pocketmine/block/Block.php b/src/pocketmine/block/Block.php index ea53daada..0e7212fde 100644 --- a/src/pocketmine/block/Block.php +++ b/src/pocketmine/block/Block.php @@ -544,6 +544,41 @@ public static function get($id, $meta = 0, Position $pos = null){ return $block; } + /** + * @param string $str + * @param bool $multiple + * + * @return Block[]|Block + */ + public static function fromString(string $str, bool $multiple = false){ + if($multiple === true){ + $blocks = []; + foreach(explode(",", $str) as $b){ + $blocks[] = self::fromString($b, false); + } + + return $blocks; + }else{ + $b = explode(":", str_replace([" ", "minecraft:"], ["_", ""], trim($str))); + if(!isset($b[1])){ + $meta = 0; + }else{ + $meta = $b[1] & 0xFFFF; + } + + if(defined(Block::class . "::" . strtoupper($b[0]))){ + $block = self::get(constant(Block::class . "::" . strtoupper($b[0])), $meta); + if($block->getId() === self::AIR and strtoupper($b[0]) !== "AIR"){ + $block = self::get($b[0] & 0xFFFF, $meta); + } + }else{ + $block = self::get($b[0] & 0xFFFF, $meta); + } + + return $block; + } + } + /** * @param int $id * @param int $meta