public function setMetadata($block, $metadataKey, MetadataValue $newMetadatavalue) { if (!$block instanceof Block) { throw new \InvalidArgumentException("Object must be a Block"); } if ($block->getLevel() === $this->owningLevel) { parent::setMetadata($block, $metadataKey, $newMetadatavalue); } else { throw new \InvalidStateException("Block does not belong to world " . $this->owningLevel->getName()); } }