diff --git a/src/pocketmine/block/Anvil.php b/src/pocketmine/block/Anvil.php index 2fd5b634e..1c81b20e7 100644 --- a/src/pocketmine/block/Anvil.php +++ b/src/pocketmine/block/Anvil.php @@ -68,6 +68,10 @@ class Anvil extends Fallable{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function recalculateBoundingBox() : ?AxisAlignedBB{ $inset = 0.125; @@ -107,7 +111,7 @@ class Anvil extends Fallable{ } public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ + if($this->canBeBrokenWith($item)){ return [ ItemFactory::get($this->getItemId(), $this->getDamage() & 0x0c, 1) ]; diff --git a/src/pocketmine/block/Block.php b/src/pocketmine/block/Block.php index c84f0ca1f..c6336651f 100644 --- a/src/pocketmine/block/Block.php +++ b/src/pocketmine/block/Block.php @@ -429,9 +429,13 @@ class Block extends Position implements BlockIds, Metadatable{ * @return Item[] */ public function getDrops(Item $item) : array{ - return [ - ItemFactory::get($this->getItemId(), $this->getVariant(), 1) - ]; + if($this->canBeBrokenWith($item)){ + return [ + ItemFactory::get($this->getItemId(), $this->getVariant(), 1) + ]; + } + + return []; } /** diff --git a/src/pocketmine/block/BoneBlock.php b/src/pocketmine/block/BoneBlock.php index 6852bddb3..b8be9ba12 100644 --- a/src/pocketmine/block/BoneBlock.php +++ b/src/pocketmine/block/BoneBlock.php @@ -49,6 +49,10 @@ class BoneBlock extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function place(Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, Player $player = null) : bool{ $this->meta = PillarRotationHelper::getMetaFromFace($this->meta, $face); return $this->getLevel()->setBlock($blockReplace, $this, true, true); @@ -57,13 +61,4 @@ class BoneBlock extends Solid{ public function getVariantBitmask() : int{ return 0x03; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; - } - } \ No newline at end of file diff --git a/src/pocketmine/block/BrickStairs.php b/src/pocketmine/block/BrickStairs.php index 173405728..4a02d5923 100644 --- a/src/pocketmine/block/BrickStairs.php +++ b/src/pocketmine/block/BrickStairs.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\item\TieredTool; + class BrickStairs extends Stair{ protected $id = self::BRICK_STAIRS; @@ -43,6 +45,10 @@ class BrickStairs extends Stair{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getName() : string{ return "Brick Stairs"; } diff --git a/src/pocketmine/block/Bricks.php b/src/pocketmine/block/Bricks.php index 38ce53abd..0fc804b79 100644 --- a/src/pocketmine/block/Bricks.php +++ b/src/pocketmine/block/Bricks.php @@ -46,15 +46,11 @@ class Bricks extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getName() : string{ return "Bricks"; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; - } } \ No newline at end of file diff --git a/src/pocketmine/block/BurningFurnace.php b/src/pocketmine/block/BurningFurnace.php index bdea392d1..ad09052af 100644 --- a/src/pocketmine/block/BurningFurnace.php +++ b/src/pocketmine/block/BurningFurnace.php @@ -51,6 +51,10 @@ class BurningFurnace extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getLightLevel() : int{ return 13; } @@ -90,12 +94,4 @@ class BurningFurnace extends Solid{ public function getVariantBitmask() : int{ return 0; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; - } } \ No newline at end of file diff --git a/src/pocketmine/block/Coal.php b/src/pocketmine/block/Coal.php index 4776cde8c..8b1c3fa40 100644 --- a/src/pocketmine/block/Coal.php +++ b/src/pocketmine/block/Coal.php @@ -42,16 +42,12 @@ class Coal extends Solid{ return BlockToolType::TYPE_PICKAXE; } - public function getName() : string{ - return "Coal Block"; + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; } - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; + public function getName() : string{ + return "Coal Block"; } public function getFuelTime() : int{ diff --git a/src/pocketmine/block/CoalOre.php b/src/pocketmine/block/CoalOre.php index e99244500..e965a2786 100644 --- a/src/pocketmine/block/CoalOre.php +++ b/src/pocketmine/block/CoalOre.php @@ -43,12 +43,16 @@ class CoalOre extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getName() : string{ return "Coal Ore"; } public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ + if($this->canBeBrokenWith($item)){ return [ ItemFactory::get(Item::COAL, 0, 1) ]; diff --git a/src/pocketmine/block/Cobblestone.php b/src/pocketmine/block/Cobblestone.php index bcf330807..7e91bdc21 100644 --- a/src/pocketmine/block/Cobblestone.php +++ b/src/pocketmine/block/Cobblestone.php @@ -38,6 +38,10 @@ class Cobblestone extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getName() : string{ return "Cobblestone"; } @@ -45,12 +49,4 @@ class Cobblestone extends Solid{ public function getHardness() : float{ return 2; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; - } } \ No newline at end of file diff --git a/src/pocketmine/block/CobblestoneStairs.php b/src/pocketmine/block/CobblestoneStairs.php index bd58d6a15..b50d8fba2 100644 --- a/src/pocketmine/block/CobblestoneStairs.php +++ b/src/pocketmine/block/CobblestoneStairs.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\item\TieredTool; + class CobblestoneStairs extends Stair{ protected $id = self::COBBLESTONE_STAIRS; @@ -39,6 +41,10 @@ class CobblestoneStairs extends Stair{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getName() : string{ return "Cobblestone Stairs"; } diff --git a/src/pocketmine/block/Cobweb.php b/src/pocketmine/block/Cobweb.php index 095976e74..5a95c88ca 100644 --- a/src/pocketmine/block/Cobweb.php +++ b/src/pocketmine/block/Cobweb.php @@ -47,7 +47,11 @@ class Cobweb extends Flowable{ } public function getToolType() : int{ - return BlockToolType::TYPE_SWORD; + return BlockToolType::TYPE_SWORD | BlockToolType::TYPE_SHEARS; + } + + public function getToolHarvestLevel() : int{ + return 1; } public function onEntityCollide(Entity $entity) : void{ diff --git a/src/pocketmine/block/Concrete.php b/src/pocketmine/block/Concrete.php index 6c0095dd7..17744ec71 100644 --- a/src/pocketmine/block/Concrete.php +++ b/src/pocketmine/block/Concrete.php @@ -47,12 +47,7 @@ class Concrete extends Solid{ return BlockToolType::TYPE_PICKAXE; } - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; } - } \ No newline at end of file diff --git a/src/pocketmine/block/Diamond.php b/src/pocketmine/block/Diamond.php index d3f602dbc..50c506403 100644 --- a/src/pocketmine/block/Diamond.php +++ b/src/pocketmine/block/Diamond.php @@ -46,11 +46,7 @@ class Diamond extends Solid{ return BlockToolType::TYPE_PICKAXE; } - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_IRON){ - return parent::getDrops($item); - } - - return []; + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_IRON; } } \ No newline at end of file diff --git a/src/pocketmine/block/DiamondOre.php b/src/pocketmine/block/DiamondOre.php index c96cb59a6..68c863e56 100644 --- a/src/pocketmine/block/DiamondOre.php +++ b/src/pocketmine/block/DiamondOre.php @@ -47,8 +47,12 @@ class DiamondOre extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_IRON; + } + public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_IRON){ + if($this->canBeBrokenWith($item)){ return [ ItemFactory::get(Item::DIAMOND, 0, 1) ]; diff --git a/src/pocketmine/block/DoubleStoneSlab.php b/src/pocketmine/block/DoubleStoneSlab.php index 8c7ef5857..71a285e6b 100644 --- a/src/pocketmine/block/DoubleStoneSlab.php +++ b/src/pocketmine/block/DoubleStoneSlab.php @@ -42,12 +42,7 @@ class DoubleStoneSlab extends DoubleSlab{ return BlockToolType::TYPE_PICKAXE; } - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; } - } \ No newline at end of file diff --git a/src/pocketmine/block/Emerald.php b/src/pocketmine/block/Emerald.php index f13886d1c..abe4f1e3a 100644 --- a/src/pocketmine/block/Emerald.php +++ b/src/pocketmine/block/Emerald.php @@ -42,15 +42,11 @@ class Emerald extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_IRON; + } + public function getName() : string{ return "Emerald Block"; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_IRON){ - return parent::getDrops($item); - } - - return []; - } } \ No newline at end of file diff --git a/src/pocketmine/block/EmeraldOre.php b/src/pocketmine/block/EmeraldOre.php index 51de4fa99..33a8367ba 100644 --- a/src/pocketmine/block/EmeraldOre.php +++ b/src/pocketmine/block/EmeraldOre.php @@ -43,12 +43,16 @@ class EmeraldOre extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_IRON; + } + public function getHardness() : float{ return 3; } public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_IRON){ + if($this->canBeBrokenWith($item)){ return [ ItemFactory::get(Item::EMERALD, 0, 1) ]; diff --git a/src/pocketmine/block/EnchantingTable.php b/src/pocketmine/block/EnchantingTable.php index 8d6952832..6f7fd2607 100644 --- a/src/pocketmine/block/EnchantingTable.php +++ b/src/pocketmine/block/EnchantingTable.php @@ -63,6 +63,10 @@ class EnchantingTable extends Transparent{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function onActivate(Item $item, Player $player = null) : bool{ if($player instanceof Player){ //TODO lock @@ -72,12 +76,4 @@ class EnchantingTable extends Transparent{ return true; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; - } } \ No newline at end of file diff --git a/src/pocketmine/block/EndStoneBricks.php b/src/pocketmine/block/EndStoneBricks.php index a7c95a503..fbc0b5de8 100644 --- a/src/pocketmine/block/EndStoneBricks.php +++ b/src/pocketmine/block/EndStoneBricks.php @@ -46,12 +46,7 @@ class EndStoneBricks extends Solid{ return BlockToolType::TYPE_PICKAXE; } - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; } - } \ No newline at end of file diff --git a/src/pocketmine/block/EnderChest.php b/src/pocketmine/block/EnderChest.php index 8dc7cfbf3..6e7acaffd 100644 --- a/src/pocketmine/block/EnderChest.php +++ b/src/pocketmine/block/EnderChest.php @@ -55,6 +55,10 @@ class EnderChest extends Chest{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function place(Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, Player $player = null) : bool{ $faces = [ 0 => 4, @@ -98,8 +102,10 @@ class EnderChest extends Chest{ } public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return [ItemFactory::get(Item::OBSIDIAN, 0, 8)]; + if($this->canBeBrokenWith($item)){ + return [ + ItemFactory::get(Item::OBSIDIAN, 0, 8) + ]; } return []; diff --git a/src/pocketmine/block/GlazedTerracotta.php b/src/pocketmine/block/GlazedTerracotta.php index 6faef4d3c..5d555d7fa 100644 --- a/src/pocketmine/block/GlazedTerracotta.php +++ b/src/pocketmine/block/GlazedTerracotta.php @@ -39,6 +39,10 @@ class GlazedTerracotta extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function place(Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, Player $player = null) : bool{ if($player !== null){ $faces = [ @@ -56,12 +60,4 @@ class GlazedTerracotta extends Solid{ public function getVariantBitmask() : int{ return 0; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; - } } \ No newline at end of file diff --git a/src/pocketmine/block/Gold.php b/src/pocketmine/block/Gold.php index 10625d00b..a243c5723 100644 --- a/src/pocketmine/block/Gold.php +++ b/src/pocketmine/block/Gold.php @@ -46,11 +46,7 @@ class Gold extends Solid{ return BlockToolType::TYPE_PICKAXE; } - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_IRON){ - return parent::getDrops($item); - } - - return []; + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_IRON; } } \ No newline at end of file diff --git a/src/pocketmine/block/GoldOre.php b/src/pocketmine/block/GoldOre.php index 5e47730ae..3b0977d37 100644 --- a/src/pocketmine/block/GoldOre.php +++ b/src/pocketmine/block/GoldOre.php @@ -46,11 +46,7 @@ class GoldOre extends Solid{ return BlockToolType::TYPE_PICKAXE; } - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_IRON){ - return parent::getDrops($item); - } - - return []; + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_IRON; } } \ No newline at end of file diff --git a/src/pocketmine/block/Iron.php b/src/pocketmine/block/Iron.php index d50af3c80..371cf0c65 100644 --- a/src/pocketmine/block/Iron.php +++ b/src/pocketmine/block/Iron.php @@ -42,15 +42,11 @@ class Iron extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_STONE; + } + public function getHardness() : float{ return 5; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_STONE){ - return parent::getDrops($item); - } - - return []; - } } \ No newline at end of file diff --git a/src/pocketmine/block/IronBars.php b/src/pocketmine/block/IronBars.php index 0ff17c8d4..2c98f95c2 100644 --- a/src/pocketmine/block/IronBars.php +++ b/src/pocketmine/block/IronBars.php @@ -46,17 +46,12 @@ class IronBars extends Thin{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getVariantBitmask() : int{ return 0; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; - } - } diff --git a/src/pocketmine/block/IronDoor.php b/src/pocketmine/block/IronDoor.php index 195544264..fd0bc96a7 100644 --- a/src/pocketmine/block/IronDoor.php +++ b/src/pocketmine/block/IronDoor.php @@ -44,15 +44,11 @@ class IronDoor extends Door{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getHardness() : float{ return 5; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; - } } \ No newline at end of file diff --git a/src/pocketmine/block/IronOre.php b/src/pocketmine/block/IronOre.php index 76ad80f38..1b4dec570 100644 --- a/src/pocketmine/block/IronOre.php +++ b/src/pocketmine/block/IronOre.php @@ -42,15 +42,11 @@ class IronOre extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_STONE; + } + public function getHardness() : float{ return 3; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_STONE){ - return parent::getDrops($item); - } - - return []; - } } \ No newline at end of file diff --git a/src/pocketmine/block/Lapis.php b/src/pocketmine/block/Lapis.php index 780e3d221..91389de10 100644 --- a/src/pocketmine/block/Lapis.php +++ b/src/pocketmine/block/Lapis.php @@ -42,16 +42,11 @@ class Lapis extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_STONE; + } + public function getHardness() : float{ return 3; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_STONE){ - return parent::getDrops($item); - } - - return []; - } - } \ No newline at end of file diff --git a/src/pocketmine/block/LapisOre.php b/src/pocketmine/block/LapisOre.php index 35ed16e86..0bc499509 100644 --- a/src/pocketmine/block/LapisOre.php +++ b/src/pocketmine/block/LapisOre.php @@ -43,12 +43,16 @@ class LapisOre extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_STONE; + } + public function getName() : string{ return "Lapis Lazuli Ore"; } public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_STONE){ + if($this->canBeBrokenWith($item)){ return [ ItemFactory::get(Item::DYE, 4, mt_rand(4, 8)) ]; diff --git a/src/pocketmine/block/Magma.php b/src/pocketmine/block/Magma.php index a8ba28bbb..be532e553 100644 --- a/src/pocketmine/block/Magma.php +++ b/src/pocketmine/block/Magma.php @@ -49,6 +49,10 @@ class Magma extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getLightLevel() : int{ return 3; } @@ -63,13 +67,4 @@ class Magma extends Solid{ $entity->attack($ev); } } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; - } - } \ No newline at end of file diff --git a/src/pocketmine/block/NetherBrick.php b/src/pocketmine/block/NetherBrick.php index 957b29f36..78097bfaa 100644 --- a/src/pocketmine/block/NetherBrick.php +++ b/src/pocketmine/block/NetherBrick.php @@ -32,15 +32,11 @@ class NetherBrick extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getHardness() : float{ return 2; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; - } } \ No newline at end of file diff --git a/src/pocketmine/block/NetherBrickFence.php b/src/pocketmine/block/NetherBrickFence.php index cb9435c7b..762271c4e 100644 --- a/src/pocketmine/block/NetherBrickFence.php +++ b/src/pocketmine/block/NetherBrickFence.php @@ -38,15 +38,11 @@ class NetherBrickFence extends Fence{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getName() : string{ return "Nether Brick Fence"; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; - } } diff --git a/src/pocketmine/block/NetherBrickStairs.php b/src/pocketmine/block/NetherBrickStairs.php index 14083b393..e4b905cf4 100644 --- a/src/pocketmine/block/NetherBrickStairs.php +++ b/src/pocketmine/block/NetherBrickStairs.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\item\TieredTool; + class NetherBrickStairs extends Stair{ protected $id = self::NETHER_BRICK_STAIRS; @@ -43,4 +45,8 @@ class NetherBrickStairs extends Stair{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + } \ No newline at end of file diff --git a/src/pocketmine/block/NetherQuartzOre.php b/src/pocketmine/block/NetherQuartzOre.php index 7bc7a555f..b0d1b5610 100644 --- a/src/pocketmine/block/NetherQuartzOre.php +++ b/src/pocketmine/block/NetherQuartzOre.php @@ -47,8 +47,12 @@ class NetherQuartzOre extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ + if($this->canBeBrokenWith($item)){ return [ ItemFactory::get(Item::QUARTZ, 0, 1) ]; diff --git a/src/pocketmine/block/NetherReactor.php b/src/pocketmine/block/NetherReactor.php index b5c82b0a7..6fdc4684b 100644 --- a/src/pocketmine/block/NetherReactor.php +++ b/src/pocketmine/block/NetherReactor.php @@ -47,12 +47,16 @@ class NetherReactor extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getHardness() : float{ return 3; } public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ + if($this->canBeBrokenWith($item)){ return [ ItemFactory::get(Item::IRON_INGOT, 0, 6), ItemFactory::get(Item::DIAMOND, 0, 3) diff --git a/src/pocketmine/block/Netherrack.php b/src/pocketmine/block/Netherrack.php index eed176e57..fa1e3a562 100644 --- a/src/pocketmine/block/Netherrack.php +++ b/src/pocketmine/block/Netherrack.php @@ -46,11 +46,7 @@ class Netherrack extends Solid{ return BlockToolType::TYPE_PICKAXE; } - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; } } \ No newline at end of file diff --git a/src/pocketmine/block/Obsidian.php b/src/pocketmine/block/Obsidian.php index 918542682..b96e47905 100644 --- a/src/pocketmine/block/Obsidian.php +++ b/src/pocketmine/block/Obsidian.php @@ -42,6 +42,10 @@ class Obsidian extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_DIAMOND; + } + public function getHardness() : float{ return 35; //50 in PC } @@ -49,12 +53,4 @@ class Obsidian extends Solid{ public function getBlastResistance() : float{ return 6000; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_DIAMOND){ - return parent::getDrops($item); - } - - return []; - } } \ No newline at end of file diff --git a/src/pocketmine/block/Prismarine.php b/src/pocketmine/block/Prismarine.php index e8119fc67..8683e9a3c 100644 --- a/src/pocketmine/block/Prismarine.php +++ b/src/pocketmine/block/Prismarine.php @@ -55,15 +55,11 @@ class Prismarine extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getVariantBitmask() : int{ return 0x03; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; - } } \ No newline at end of file diff --git a/src/pocketmine/block/PurpurStairs.php b/src/pocketmine/block/PurpurStairs.php index 0be5fa182..eba61b0fa 100644 --- a/src/pocketmine/block/PurpurStairs.php +++ b/src/pocketmine/block/PurpurStairs.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\item\TieredTool; + class PurpurStairs extends Stair{ protected $id = self::PURPUR_STAIRS; @@ -39,6 +41,10 @@ class PurpurStairs extends Stair{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getHardness() : float{ return 1.5; } diff --git a/src/pocketmine/block/Quartz.php b/src/pocketmine/block/Quartz.php index 3badbb913..fbb98352c 100644 --- a/src/pocketmine/block/Quartz.php +++ b/src/pocketmine/block/Quartz.php @@ -65,15 +65,11 @@ class Quartz extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getVariantBitmask() : int{ return 0x03; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; - } } \ No newline at end of file diff --git a/src/pocketmine/block/QuartzStairs.php b/src/pocketmine/block/QuartzStairs.php index 3e1f6662e..75a60dd7d 100644 --- a/src/pocketmine/block/QuartzStairs.php +++ b/src/pocketmine/block/QuartzStairs.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\item\TieredTool; + class QuartzStairs extends Stair{ protected $id = self::QUARTZ_STAIRS; @@ -39,6 +41,10 @@ class QuartzStairs extends Stair{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getName() : string{ return "Quartz Stairs"; } diff --git a/src/pocketmine/block/Redstone.php b/src/pocketmine/block/Redstone.php index 3517bf6eb..273dfb307 100644 --- a/src/pocketmine/block/Redstone.php +++ b/src/pocketmine/block/Redstone.php @@ -42,15 +42,11 @@ class Redstone extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getName() : string{ return "Redstone Block"; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; - } } \ No newline at end of file diff --git a/src/pocketmine/block/RedstoneOre.php b/src/pocketmine/block/RedstoneOre.php index 19e26b422..e2211954b 100644 --- a/src/pocketmine/block/RedstoneOre.php +++ b/src/pocketmine/block/RedstoneOre.php @@ -64,8 +64,12 @@ class RedstoneOre extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_IRON; + } + public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_IRON){ + if($this->canBeBrokenWith($item)){ return [ ItemFactory::get(Item::REDSTONE_DUST, 0, mt_rand(4, 5)) ]; diff --git a/src/pocketmine/block/Sandstone.php b/src/pocketmine/block/Sandstone.php index 9eccd0c27..2bc820f72 100644 --- a/src/pocketmine/block/Sandstone.php +++ b/src/pocketmine/block/Sandstone.php @@ -55,16 +55,11 @@ class Sandstone extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getVariantBitmask() : int{ return 0x03; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; - } - } \ No newline at end of file diff --git a/src/pocketmine/block/SandstoneStairs.php b/src/pocketmine/block/SandstoneStairs.php index 6772ba6ca..a33e9cabe 100644 --- a/src/pocketmine/block/SandstoneStairs.php +++ b/src/pocketmine/block/SandstoneStairs.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\item\TieredTool; + class SandstoneStairs extends Stair{ protected $id = self::SANDSTONE_STAIRS; @@ -39,6 +41,10 @@ class SandstoneStairs extends Stair{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getName() : string{ return "Sandstone Stairs"; } diff --git a/src/pocketmine/block/Stair.php b/src/pocketmine/block/Stair.php index 443f1c283..d12fc85d6 100644 --- a/src/pocketmine/block/Stair.php +++ b/src/pocketmine/block/Stair.php @@ -102,12 +102,4 @@ abstract class Stair extends Transparent{ public function getVariantBitmask() : int{ return 0; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; - } } diff --git a/src/pocketmine/block/Stone.php b/src/pocketmine/block/Stone.php index 2d8baf1f4..adb91d7ec 100644 --- a/src/pocketmine/block/Stone.php +++ b/src/pocketmine/block/Stone.php @@ -50,6 +50,10 @@ class Stone extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getName() : string{ static $names = [ self::NORMAL => "Stone", @@ -64,7 +68,7 @@ class Stone extends Solid{ } public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ + if($this->canBeBrokenWith($item)){ if($this->getDamage() === self::NORMAL){ return [ ItemFactory::get(Item::COBBLESTONE, $this->getDamage(), 1) diff --git a/src/pocketmine/block/StoneBrickStairs.php b/src/pocketmine/block/StoneBrickStairs.php index befb05cfd..019bf73e3 100644 --- a/src/pocketmine/block/StoneBrickStairs.php +++ b/src/pocketmine/block/StoneBrickStairs.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace pocketmine\block; +use pocketmine\item\TieredTool; + class StoneBrickStairs extends Stair{ protected $id = self::STONE_BRICK_STAIRS; @@ -35,6 +37,10 @@ class StoneBrickStairs extends Stair{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getHardness() : float{ return 1.5; } diff --git a/src/pocketmine/block/StoneBricks.php b/src/pocketmine/block/StoneBricks.php index a193f96b7..85851d399 100644 --- a/src/pocketmine/block/StoneBricks.php +++ b/src/pocketmine/block/StoneBricks.php @@ -46,6 +46,10 @@ class StoneBricks extends Solid{ return BlockToolType::TYPE_PICKAXE; } + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; + } + public function getName() : string{ static $names = [ self::NORMAL => "Stone Bricks", @@ -55,13 +59,4 @@ class StoneBricks extends Solid{ ]; return $names[$this->getVariant()] ?? "Unknown"; } - - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; - } - } \ No newline at end of file diff --git a/src/pocketmine/block/StoneSlab.php b/src/pocketmine/block/StoneSlab.php index 47eb795a6..d3d5cf41c 100644 --- a/src/pocketmine/block/StoneSlab.php +++ b/src/pocketmine/block/StoneSlab.php @@ -64,11 +64,7 @@ class StoneSlab extends Slab{ return BlockToolType::TYPE_PICKAXE; } - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; } } \ No newline at end of file diff --git a/src/pocketmine/block/Stonecutter.php b/src/pocketmine/block/Stonecutter.php index a7fdb0976..7492e8a08 100644 --- a/src/pocketmine/block/Stonecutter.php +++ b/src/pocketmine/block/Stonecutter.php @@ -42,11 +42,7 @@ class Stonecutter extends Solid{ return BlockToolType::TYPE_PICKAXE; } - public function getDrops(Item $item) : array{ - if($item->isPickaxe() >= TieredTool::TIER_WOODEN){ - return parent::getDrops($item); - } - - return []; + public function getToolHarvestLevel() : int{ + return TieredTool::TIER_WOODEN; } } \ No newline at end of file diff --git a/src/pocketmine/block/WoodenStairs.php b/src/pocketmine/block/WoodenStairs.php index f6f54f3cc..570ed4101 100644 --- a/src/pocketmine/block/WoodenStairs.php +++ b/src/pocketmine/block/WoodenStairs.php @@ -39,11 +39,4 @@ class WoodenStairs extends Stair{ public function getToolType() : int{ return BlockToolType::TYPE_AXE; } - - public function getDrops(Item $item) : array{ - //TODO: Hierarchy problem (base class is for stone stairs) - return [ - ItemFactory::get($this->getItemId(), $this->getVariant(), 1) - ]; - } } \ No newline at end of file