pocketmine\level\Level::getBlock PHP Метод

getBlock() публичный Метод

Gets the Block object on the Vector3 location
public getBlock ( Vector3 $pos, boolean $cached = true ) : Block
$pos pocketmine\math\Vector3
$cached boolean
Результат pocketmine\block\Block
    public function getBlock(Vector3 $pos, $cached = true) : Block
    {
        $pos = $pos->floor();
        $index = Level::blockHash($pos->x, $pos->y, $pos->z);
        if ($cached and isset($this->blockCache[$index])) {
            return $this->blockCache[$index];
        } elseif ($pos->y >= 0 and $pos->y < 128 and isset($this->chunks[$chunkIndex = Level::chunkHash($pos->x >> 4, $pos->z >> 4)])) {
            $fullState = $this->chunks[$chunkIndex]->getFullBlock($pos->x & 0xf, $pos->y & 0x7f, $pos->z & 0xf);
        } else {
            $fullState = 0;
        }
        $block = clone $this->blockStates[$fullState & 0xfff];
        $block->x = $pos->x;
        $block->y = $pos->y;
        $block->z = $pos->z;
        $block->level = $this;
        return $this->blockCache[$index] = $block;
    }

Usage Example

Пример #1
0
 public function onActivate(Level $level, Player $player, Block $block, Block $target, $face, $fx, $fy, $fz)
 {
     $blockTemp = $level->getBlock($block->add(0, -1, 0));
     //if($blockTemp->getId() != self::RAIL and $blockTemp->getId() != self::POWERED_RAIL) return;
     $minecart = new MinecartEntity($player->getLevel()->getChunk($block->getX() >> 4, $block->getZ() >> 4), new CompoundTag("", ["Pos" => new EnumTag("Pos", [new DoubleTag("", $block->getX()), new DoubleTag("", $block->getY() + 1), new DoubleTag("", $block->getZ())]), "Motion" => new EnumTag("Motion", [new DoubleTag("", 0), new DoubleTag("", 0), new DoubleTag("", 0)]), "Rotation" => new EnumTag("Rotation", [new FloatTag("", 0), new FloatTag("", 0)])]));
     $minecart->spawnToAll();
     if ($player->isSurvival()) {
         $item = $player->getInventory()->getItemInHand();
         $count = $item->getCount();
         if (--$count <= 0) {
             $player->getInventory()->setItemInHand(Item::get(Item::AIR));
             return;
         }
         $item->setCount($count);
         $player->getInventory()->setItemInHand($item);
     }
     return true;
 }
All Usage Examples Of pocketmine\level\Level::getBlock
Level