/** * @param CommandSender $sender * @param Block $block */ public function sendBlockInfo(CommandSender $sender, Block $block) { $sender->sendMessage("Name: " . $block->getName()); $sender->sendMessage("XYZ: " . $block->getFloorX() . ":" . $block->getFloorY() . ":" . $block->getFloorZ()); $sender->sendMessage("Level: " . $block->getLevel()->getName()); $sender->sendMessage("Block-id: " . $block->getId() . ":" . $block->getDamage()); $sender->sendMessage("Hardness: " . $block->getHardness()); $sender->sendMessage("Resistance: " . $block->getResistance()); $sender->sendMessage("Tool-type: " . $block->getToolType()); $sender->sendMessage("Friction: " . $block->getFrictionFactor()); $sender->sendMessage("Light-level: " . $block->getLightLevel()); //$sender->sendMessage("Is-placeable: ".($block->canBePlaced() ? TextFormat::GREEN."yes" : TextFormat::RED."no")); $sender->sendMessage("Is-replaceable: " . ($block->canBeReplaced() ? TextFormat::GREEN . "yes" : TextFormat::RED . "no")); $sender->sendMessage("Is-transparent: " . ($block->isTransparent() ? TextFormat::GREEN . "yes" : TextFormat::RED . "no")); $sender->sendMessage("Is-solid: " . ($block->isSolid() ? TextFormat::GREEN . "yes" : TextFormat::RED . "no")); //$sender->sendMessage("Is-flowable: ".($block->canBeFlowedInto() ? TextFormat::GREEN."yes" : TextFormat::RED."no")); //$sender->sendMessage("Is-activateable: ".($block->canBeActivated() ? TextFormat::GREEN."yes" : TextFormat::RED."no")); $sender->sendMessage("Is-passable: " . ($block->canPassThrough() ? TextFormat::GREEN . "yes" : TextFormat::RED . "no")); $dropCount = 0; $dropNames = ""; foreach ($block->getDrops() as $drop) { $dropNames .= $drop->getName() . ", "; $dropCount++; } $sender->sendMessage("Drops (" . $dropCount . "): " . substr($dropNames, 0, -2)); }
/** * TODO: Move this to each item * * @param Entity|Block $object * @param 1 for break|2 for Touch $type * * @return bool */ public function useOn($object, $type = 1) { if ($this->isUnbreakable()) { return true; } $unbreakingl = $this->getEnchantmentLevel(Enchantment::TYPE_MINING_DURABILITY); $unbreakingl = $unbreakingl > 3 ? 3 : $unbreakingl; if (mt_rand(1, $unbreakingl + 1) !== 1) { return true; } if ($type === 1) { if ($object instanceof Entity) { if ($this->isHoe() !== false or $this->isSword() !== false) { //Hoe and Sword $this->meta++; return true; } elseif ($this->isPickaxe() !== false or $this->isAxe() !== false or $this->isShovel() !== false) { //Pickaxe Axe and Shovel $this->meta += 2; return true; } return true; //Other tool do not lost durability white hitting } elseif ($object instanceof Block) { if ($this->isShears() !== false) { if ($object->getToolType() === Tool::TYPE_SHEARS) { //This should be checked in each block $this->meta++; } return true; } elseif ($object->getHardness() > 0) { //Sword Pickaxe Axe and Shovel if ($this->isSword() !== false) { $this->meta += 2; return true; } elseif ($this->isPickaxe() !== false or $this->isAxe() !== false or $this->isShovel() !== false) { $this->meta += 1; return true; } } } } elseif ($type === 2) { //For Touch. only trigger when OnActivate return true if ($this->isHoe() !== false or $this->id === self::FLINT_STEEL or $this->isShovel() !== false) { $this->meta++; return true; } } return true; }