diff --git a/src/pocketmine/block/Chest.php b/src/pocketmine/block/Chest.php index 01fac4452..4c2a7cf32 100644 --- a/src/pocketmine/block/Chest.php +++ b/src/pocketmine/block/Chest.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; use pocketmine\math\AxisAlignedBB; use pocketmine\nbt\NBT; use pocketmine\nbt\tag\Compound; @@ -52,6 +53,10 @@ class Chest extends Transparent{ return "Chest"; } + public function getToolType(){ + return Tool::TYPE_AXE; + } + protected function recalculateBoundingBox(){ return new AxisAlignedBB( $this->x + 0.0625, diff --git a/src/pocketmine/block/Clay.php b/src/pocketmine/block/Clay.php index 54c777668..c8ab40d3e 100644 --- a/src/pocketmine/block/Clay.php +++ b/src/pocketmine/block/Clay.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class Clay extends Solid{ @@ -35,6 +36,10 @@ class Clay extends Solid{ return 0.6; } + public function getToolType(){ + return Tool::TYPE_SHOVEL; + } + public function getName(){ return "Clay Block"; } diff --git a/src/pocketmine/block/Coal.php b/src/pocketmine/block/Coal.php index 86246fd16..75e4fb0d4 100644 --- a/src/pocketmine/block/Coal.php +++ b/src/pocketmine/block/Coal.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class Coal extends Solid{ @@ -35,6 +36,10 @@ class Coal extends Solid{ return 5; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getName(){ return "Coal Block"; } diff --git a/src/pocketmine/block/CoalOre.php b/src/pocketmine/block/CoalOre.php index 7a9586c2e..964ed7647 100644 --- a/src/pocketmine/block/CoalOre.php +++ b/src/pocketmine/block/CoalOre.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class CoalOre extends Solid{ @@ -35,6 +36,10 @@ class CoalOre extends Solid{ return 3; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getName(){ return "Coal Ore"; } diff --git a/src/pocketmine/block/CobblestoneStairs.php b/src/pocketmine/block/CobblestoneStairs.php index afabf557b..055ecdb29 100644 --- a/src/pocketmine/block/CobblestoneStairs.php +++ b/src/pocketmine/block/CobblestoneStairs.php @@ -22,6 +22,8 @@ namespace pocketmine\block; +use pocketmine\item\Tool; + class CobblestoneStairs extends Stair{ protected $id = self::COBBLESTONE_STAIRS; @@ -34,6 +36,10 @@ class CobblestoneStairs extends Stair{ return 2; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getName(){ return "Cobblestone Stairs"; } diff --git a/src/pocketmine/block/Cobweb.php b/src/pocketmine/block/Cobweb.php index 1f5ebc299..5804af836 100644 --- a/src/pocketmine/block/Cobweb.php +++ b/src/pocketmine/block/Cobweb.php @@ -23,6 +23,7 @@ namespace pocketmine\block; use pocketmine\entity\Entity; use pocketmine\item\Item; +use pocketmine\item\Tool; class Cobweb extends Flowable{ @@ -44,6 +45,10 @@ class Cobweb extends Flowable{ return 4; } + public function getToolType(){ + return Tool::TYPE_SWORD; + } + public function onEntityCollide(Entity $entity){ $entity->resetFallDistance(); } diff --git a/src/pocketmine/block/DarkOakWoodStairs.php b/src/pocketmine/block/DarkOakWoodStairs.php index c5a4cc06f..1ed510416 100644 --- a/src/pocketmine/block/DarkOakWoodStairs.php +++ b/src/pocketmine/block/DarkOakWoodStairs.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class DarkOakWoodStairs extends Stair{ @@ -35,6 +36,10 @@ class DarkOakWoodStairs extends Stair{ return "Dark Oak Wood Stairs"; } + public function getToolType(){ + return Tool::TYPE_AXE; + } + public function getDrops(Item $item){ return [ [$this->id, 0, 1], diff --git a/src/pocketmine/block/Diamond.php b/src/pocketmine/block/Diamond.php index 0c574dcfa..cbe924c95 100644 --- a/src/pocketmine/block/Diamond.php +++ b/src/pocketmine/block/Diamond.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class Diamond extends Solid{ @@ -39,6 +40,10 @@ class Diamond extends Solid{ return "Diamond Block"; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getDrops(Item $item){ if($item->isPickaxe() >= 4){ return [ diff --git a/src/pocketmine/block/DiamondOre.php b/src/pocketmine/block/DiamondOre.php index 2c3a8dc01..e9b9466db 100644 --- a/src/pocketmine/block/DiamondOre.php +++ b/src/pocketmine/block/DiamondOre.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class DiamondOre extends Solid{ @@ -39,6 +40,10 @@ class DiamondOre extends Solid{ return "Diamond Ore"; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getDrops(Item $item){ if($item->isPickaxe() >= 4){ return [ diff --git a/src/pocketmine/block/DoubleSlab.php b/src/pocketmine/block/DoubleSlab.php index 94a6b346a..23c712ab8 100644 --- a/src/pocketmine/block/DoubleSlab.php +++ b/src/pocketmine/block/DoubleSlab.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class DoubleSlab extends Solid{ @@ -35,6 +36,10 @@ class DoubleSlab extends Solid{ return 2; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getName(){ static $names = [ 0 => "Stone", diff --git a/src/pocketmine/block/DoubleWoodSlab.php b/src/pocketmine/block/DoubleWoodSlab.php index ec0c2a4a2..f8f3310ee 100644 --- a/src/pocketmine/block/DoubleWoodSlab.php +++ b/src/pocketmine/block/DoubleWoodSlab.php @@ -35,6 +35,10 @@ class DoubleWoodSlab extends Solid{ return 2; } + public function getToolType(){ + return Tool::TYPE_AXE; + } + public function getName(){ static $names = [ 0 => "Oak", diff --git a/src/pocketmine/block/Emerald.php b/src/pocketmine/block/Emerald.php index 6d4b0121c..b5db557e0 100644 --- a/src/pocketmine/block/Emerald.php +++ b/src/pocketmine/block/Emerald.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class Emerald extends Solid{ @@ -35,6 +36,10 @@ class Emerald extends Solid{ return 5; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getName(){ return "Emerald Block"; } diff --git a/src/pocketmine/block/EmeraldOre.php b/src/pocketmine/block/EmeraldOre.php index 367ddd2b1..54971f3b4 100644 --- a/src/pocketmine/block/EmeraldOre.php +++ b/src/pocketmine/block/EmeraldOre.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class EmeraldOre extends Solid{ @@ -35,6 +36,10 @@ class EmeraldOre extends Solid{ return "Emerald Ore"; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getHardness(){ return 3; } diff --git a/src/pocketmine/block/EndStone.php b/src/pocketmine/block/EndStone.php index 9fec1e4af..fa14abbd7 100644 --- a/src/pocketmine/block/EndStone.php +++ b/src/pocketmine/block/EndStone.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class EndStone extends Solid{ @@ -35,6 +36,10 @@ class EndStone extends Solid{ return "End Stone"; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getHardness(){ return 3; } diff --git a/src/pocketmine/block/Fallable.php b/src/pocketmine/block/Fallable.php index 5a7417531..eb4854ccf 100644 --- a/src/pocketmine/block/Fallable.php +++ b/src/pocketmine/block/Fallable.php @@ -24,6 +24,7 @@ namespace pocketmine\block; use pocketmine\entity\Entity; use pocketmine\item\Item; use pocketmine\level\Level; +use pocketmine\math\Vector3; use pocketmine\nbt\tag\Byte; use pocketmine\nbt\tag\Compound; use pocketmine\nbt\tag\Double; @@ -42,7 +43,7 @@ abstract class Fallable extends Solid{ public function onUpdate($type){ if($type === Level::BLOCK_UPDATE_NORMAL){ - $down = $this->getSide(0); + $down = $this->getSide(Vector3::SIDE_DOWN); if($down->getId() === self::AIR or ($down instanceof Liquid)){ $fall = Entity::createEntity("FallingSand", $this->getLevel()->getChunk($this->x >> 4, $this->z >> 4), new Compound("", [ "Pos" => new Enum("Pos", [ diff --git a/src/pocketmine/block/Farmland.php b/src/pocketmine/block/Farmland.php index ca19fbd42..ba662699d 100644 --- a/src/pocketmine/block/Farmland.php +++ b/src/pocketmine/block/Farmland.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; use pocketmine\math\AxisAlignedBB; class Farmland extends Solid{ @@ -40,6 +41,10 @@ class Farmland extends Solid{ return 0.6; } + public function getToolType(){ + return Tool::TYPE_SHOVEL; + } + protected function recalculateBoundingBox(){ return new AxisAlignedBB( $this->x, diff --git a/src/pocketmine/block/Fence.php b/src/pocketmine/block/Fence.php index b8a5dbd1a..2262e1490 100644 --- a/src/pocketmine/block/Fence.php +++ b/src/pocketmine/block/Fence.php @@ -21,6 +21,7 @@ namespace pocketmine\block; +use pocketmine\item\Tool; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Vector3; @@ -36,6 +37,10 @@ class Fence extends Transparent{ return 2; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getName(){ static $names = [ diff --git a/src/pocketmine/block/FenceGate.php b/src/pocketmine/block/FenceGate.php index a8899b764..582ddc92c 100644 --- a/src/pocketmine/block/FenceGate.php +++ b/src/pocketmine/block/FenceGate.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; use pocketmine\math\AxisAlignedBB; use pocketmine\Player; @@ -45,6 +46,10 @@ class FenceGate extends Transparent{ return true; } + public function getToolType(){ + return Tool::TYPE_AXE; + } + protected function recalculateBoundingBox(){ diff --git a/src/pocketmine/block/GlowingRedstoneOre.php b/src/pocketmine/block/GlowingRedstoneOre.php index b4428c2ba..a1675fc02 100644 --- a/src/pocketmine/block/GlowingRedstoneOre.php +++ b/src/pocketmine/block/GlowingRedstoneOre.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; use pocketmine\level\Level; class GlowingRedstoneOre extends Solid{ @@ -40,6 +41,10 @@ class GlowingRedstoneOre extends Solid{ return "Glowing Redstone Ore"; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getLightLevel(){ return 9; } diff --git a/src/pocketmine/block/Glowstone.php b/src/pocketmine/block/Glowstone.php index 491d0e317..7eff86404 100644 --- a/src/pocketmine/block/Glowstone.php +++ b/src/pocketmine/block/Glowstone.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class Glowstone extends Transparent{ @@ -39,6 +40,10 @@ class Glowstone extends Transparent{ return 0.3; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getLightLevel(){ return 15; } diff --git a/src/pocketmine/block/Gold.php b/src/pocketmine/block/Gold.php index c35ce26ab..cb9421124 100644 --- a/src/pocketmine/block/Gold.php +++ b/src/pocketmine/block/Gold.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class Gold extends Solid{ @@ -39,6 +40,10 @@ class Gold extends Solid{ return 3; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getDrops(Item $item){ if($item->isPickaxe() >= 4){ return [ diff --git a/src/pocketmine/block/GoldOre.php b/src/pocketmine/block/GoldOre.php index f85f434c9..5c87c16d4 100644 --- a/src/pocketmine/block/GoldOre.php +++ b/src/pocketmine/block/GoldOre.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class GoldOre extends Solid{ @@ -39,6 +40,10 @@ class GoldOre extends Solid{ return 3; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getDrops(Item $item){ if($item->isPickaxe() >= 4){ return [ diff --git a/src/pocketmine/block/GrassPath.php b/src/pocketmine/block/GrassPath.php index ede485b8e..c53ed2eed 100644 --- a/src/pocketmine/block/GrassPath.php +++ b/src/pocketmine/block/GrassPath.php @@ -23,6 +23,7 @@ namespace pocketmine\block; use pocketmine\event\block\BlockSpreadEvent; use pocketmine\item\Item; +use pocketmine\item\Tool; use pocketmine\level\generator\object\TallGrass as TallGrassObject; use pocketmine\level\Level; use pocketmine\math\AxisAlignedBB; @@ -43,6 +44,10 @@ class GrassPath extends Transparent{ return "Grass Path"; } + public function getToolType(){ + return Tool::TYPE_SHOVEL; + } + protected function recalculateBoundingBox(){ return new AxisAlignedBB( $this->x, diff --git a/src/pocketmine/block/Gravel.php b/src/pocketmine/block/Gravel.php index e33383b8a..37add89d6 100644 --- a/src/pocketmine/block/Gravel.php +++ b/src/pocketmine/block/Gravel.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class Gravel extends Fallable{ @@ -39,6 +40,10 @@ class Gravel extends Fallable{ return 0.6; } + public function getToolType(){ + return Tool::TYPE_SHOVEL; + } + public function getDrops(Item $item){ if(mt_rand(1, 10) === 1){ return [ diff --git a/src/pocketmine/block/HardenedClay.php b/src/pocketmine/block/HardenedClay.php index 3e8504337..c01c8c349 100644 --- a/src/pocketmine/block/HardenedClay.php +++ b/src/pocketmine/block/HardenedClay.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class HardenedClay extends Solid{ @@ -35,6 +36,10 @@ class HardenedClay extends Solid{ return "Hardened Clay"; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getHardness(){ return 1.25; } diff --git a/src/pocketmine/block/Ice.php b/src/pocketmine/block/Ice.php index dfe00942b..5b90bd544 100644 --- a/src/pocketmine/block/Ice.php +++ b/src/pocketmine/block/Ice.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class Ice extends Transparent{ @@ -39,6 +40,10 @@ class Ice extends Transparent{ return 0.5; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function onBreak(Item $item){ $this->getLevel()->setBlock($this, new Water(), true); diff --git a/src/pocketmine/block/Iron.php b/src/pocketmine/block/Iron.php index f8e557acb..66a2c28ee 100644 --- a/src/pocketmine/block/Iron.php +++ b/src/pocketmine/block/Iron.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class Iron extends Solid{ @@ -35,6 +36,10 @@ class Iron extends Solid{ return "Iron Block"; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getHardness(){ return 5; } diff --git a/src/pocketmine/block/IronBars.php b/src/pocketmine/block/IronBars.php index ffca1b769..bebe0f3a2 100644 --- a/src/pocketmine/block/IronBars.php +++ b/src/pocketmine/block/IronBars.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class IronBars extends Thin{ @@ -34,10 +35,15 @@ class IronBars extends Thin{ public function getName(){ return "Iron Bars"; } + public function getHardness(){ return 5; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getDrops(Item $item){ if($item->isPickaxe() >= 1){ return [ diff --git a/src/pocketmine/block/IronDoor.php b/src/pocketmine/block/IronDoor.php index 6b74e29f0..447b723f9 100644 --- a/src/pocketmine/block/IronDoor.php +++ b/src/pocketmine/block/IronDoor.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class IronDoor extends Door{ @@ -35,6 +36,10 @@ class IronDoor extends Door{ return "Iron Door Block"; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getHardness(){ return 5; } diff --git a/src/pocketmine/block/IronOre.php b/src/pocketmine/block/IronOre.php index 610a2c665..01e8be86d 100644 --- a/src/pocketmine/block/IronOre.php +++ b/src/pocketmine/block/IronOre.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class IronOre extends Solid{ @@ -35,6 +36,10 @@ class IronOre extends Solid{ return "Iron Ore"; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getHardness(){ return 3; } diff --git a/src/pocketmine/block/JungleWoodStairs.php b/src/pocketmine/block/JungleWoodStairs.php index bf958f6f8..1062bb4e5 100644 --- a/src/pocketmine/block/JungleWoodStairs.php +++ b/src/pocketmine/block/JungleWoodStairs.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class JungleWoodStairs extends Stair{ @@ -35,6 +36,10 @@ class JungleWoodStairs extends Stair{ return "Jungle Wood Stairs"; } + public function getToolType(){ + return Tool::TYPE_AXE; + } + public function getDrops(Item $item){ return [ [$this->id, 0, 1], diff --git a/src/pocketmine/block/Ladder.php b/src/pocketmine/block/Ladder.php index 59212ff24..f69202389 100644 --- a/src/pocketmine/block/Ladder.php +++ b/src/pocketmine/block/Ladder.php @@ -23,6 +23,7 @@ namespace pocketmine\block; use pocketmine\entity\Entity; use pocketmine\item\Item; +use pocketmine\item\Tool; use pocketmine\level\Level; use pocketmine\math\AxisAlignedBB; use pocketmine\Player; @@ -133,6 +134,10 @@ class Ladder extends Transparent{ return false; } + public function getToolType(){ + return Tool::TYPE_AXE; + } + public function getDrops(Item $item){ return [ [$this->id, 0, 1], diff --git a/src/pocketmine/block/Lapis.php b/src/pocketmine/block/Lapis.php index a348f2522..aa0b9212f 100644 --- a/src/pocketmine/block/Lapis.php +++ b/src/pocketmine/block/Lapis.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class Lapis extends Solid{ @@ -35,6 +36,10 @@ class Lapis extends Solid{ return "Lapis Lazuli Block"; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getHardness(){ return 3; } diff --git a/src/pocketmine/block/LapisOre.php b/src/pocketmine/block/LapisOre.php index 629959c87..44d6e9eeb 100644 --- a/src/pocketmine/block/LapisOre.php +++ b/src/pocketmine/block/LapisOre.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class LapisOre extends Solid{ @@ -35,6 +36,10 @@ class LapisOre extends Solid{ return 3; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getName(){ return "Lapis Lazuli Ore"; } diff --git a/src/pocketmine/block/Leaves.php b/src/pocketmine/block/Leaves.php index ab863191f..855f41641 100644 --- a/src/pocketmine/block/Leaves.php +++ b/src/pocketmine/block/Leaves.php @@ -23,6 +23,7 @@ namespace pocketmine\block; use pocketmine\event\block\LeavesDecayEvent; use pocketmine\item\Item; +use pocketmine\item\Tool; use pocketmine\level\Level; use pocketmine\Player; use pocketmine\Server; @@ -45,6 +46,10 @@ class Leaves extends Transparent{ return 0.2; } + public function getToolType(){ + return Tool::TYPE_SHEARS; + } + public function getName(){ static $names = [ self::OAK => "Oak Leaves", diff --git a/src/pocketmine/block/LitPumpkin.php b/src/pocketmine/block/LitPumpkin.php index 6b4329ac6..b04381006 100644 --- a/src/pocketmine/block/LitPumpkin.php +++ b/src/pocketmine/block/LitPumpkin.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; use pocketmine\Player; class LitPumpkin extends Solid{ @@ -36,6 +37,10 @@ class LitPumpkin extends Solid{ return 1; } + public function getToolType(){ + return Tool::TYPE_AXE; + } + public function getName(){ return "Jack o'Lantern"; } diff --git a/src/pocketmine/block/Melon.php b/src/pocketmine/block/Melon.php index 398346661..c43e421be 100644 --- a/src/pocketmine/block/Melon.php +++ b/src/pocketmine/block/Melon.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class Melon extends Transparent{ @@ -39,6 +40,10 @@ class Melon extends Transparent{ return 1; } + public function getToolType(){ + return Tool::TYPE_AXE; + } + public function getDrops(Item $item){ return [ [Item::MELON_SLICE, 0, mt_rand(3, 7)], diff --git a/src/pocketmine/block/MonsterSpawner.php b/src/pocketmine/block/MonsterSpawner.php index 47a963581..e6b9da1d1 100644 --- a/src/pocketmine/block/MonsterSpawner.php +++ b/src/pocketmine/block/MonsterSpawner.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class MonsterSpawner extends Solid{ @@ -35,6 +36,10 @@ class MonsterSpawner extends Solid{ return 5; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getName(){ return "Monster Spawner"; } diff --git a/src/pocketmine/block/MossStone.php b/src/pocketmine/block/MossStone.php index f95fcbb73..5700d5928 100644 --- a/src/pocketmine/block/MossStone.php +++ b/src/pocketmine/block/MossStone.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class MossStone extends Solid{ @@ -39,6 +40,10 @@ class MossStone extends Solid{ return 2; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getDrops(Item $item){ if($item->isPickaxe() >= 1){ return [ diff --git a/src/pocketmine/block/Mycelium.php b/src/pocketmine/block/Mycelium.php index 4a91890e9..f3b9b655d 100644 --- a/src/pocketmine/block/Mycelium.php +++ b/src/pocketmine/block/Mycelium.php @@ -23,6 +23,7 @@ namespace pocketmine\block; use pocketmine\event\block\BlockSpreadEvent; use pocketmine\item\Item; +use pocketmine\item\Tool; use pocketmine\level\Level; use pocketmine\math\Vector3; use pocketmine\Server; @@ -39,6 +40,10 @@ class Mycelium extends Solid{ return "Mycelium"; } + public function getToolType(){ + return Tool::TYPE_SHOVEL; + } + public function getHardness(){ return 0.6; } diff --git a/src/pocketmine/block/NetherBrick.php b/src/pocketmine/block/NetherBrick.php index 655be931a..937713b80 100644 --- a/src/pocketmine/block/NetherBrick.php +++ b/src/pocketmine/block/NetherBrick.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class NetherBrick extends Solid{ @@ -31,6 +32,10 @@ class NetherBrick extends Solid{ } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getName(){ return "Nether Bricks"; } diff --git a/src/pocketmine/block/NetherBrickStairs.php b/src/pocketmine/block/NetherBrickStairs.php index 26c4ee9e3..56d570376 100644 --- a/src/pocketmine/block/NetherBrickStairs.php +++ b/src/pocketmine/block/NetherBrickStairs.php @@ -22,6 +22,8 @@ namespace pocketmine\block; +use pocketmine\item\Tool; + class NetherBrickStairs extends Stair{ protected $id = self::NETHER_BRICKS_STAIRS; @@ -34,6 +36,10 @@ class NetherBrickStairs extends Stair{ return 2; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function __construct($meta = 0){ $this->meta = $meta; } diff --git a/src/pocketmine/block/Netherrack.php b/src/pocketmine/block/Netherrack.php index ec31c4e57..8d3d5135a 100644 --- a/src/pocketmine/block/Netherrack.php +++ b/src/pocketmine/block/Netherrack.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class Netherrack extends Solid{ @@ -39,6 +40,10 @@ class Netherrack extends Solid{ return 2; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getDrops(Item $item){ if($item->isPickaxe() >= 1){ return [ diff --git a/src/pocketmine/block/Obsidian.php b/src/pocketmine/block/Obsidian.php index 11212e830..cc93e4379 100644 --- a/src/pocketmine/block/Obsidian.php +++ b/src/pocketmine/block/Obsidian.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class Obsidian extends Solid{ @@ -35,6 +36,10 @@ class Obsidian extends Solid{ return "Obsidian"; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getHardness(){ return 50; } diff --git a/src/pocketmine/block/Planks.php b/src/pocketmine/block/Planks.php index 5123b03a3..e0452a657 100644 --- a/src/pocketmine/block/Planks.php +++ b/src/pocketmine/block/Planks.php @@ -22,6 +22,8 @@ namespace pocketmine\block; +use pocketmine\item\Tool; + class Planks extends Solid{ const OAK = 0; const SPRUCE = 1; @@ -40,6 +42,10 @@ class Planks extends Solid{ return 2; } + public function getToolType(){ + return Tool::TYPE_AXE; + } + public function getName(){ static $names = [ self::OAK => "Oak Wood Planks", diff --git a/src/pocketmine/block/Podzol.php b/src/pocketmine/block/Podzol.php index 752aaa018..ea86f7445 100644 --- a/src/pocketmine/block/Podzol.php +++ b/src/pocketmine/block/Podzol.php @@ -21,6 +21,8 @@ namespace pocketmine\block; +use pocketmine\item\Tool; + class Podzol extends Solid{ protected $id = self::PODZOL; @@ -29,6 +31,10 @@ class Podzol extends Solid{ } + public function getToolType(){ + return Tool::TYPE_SHOVEL; + } + public function getName(){ return "Podzol"; } diff --git a/src/pocketmine/block/Pumpkin.php b/src/pocketmine/block/Pumpkin.php index 02b30dae5..d68f41692 100644 --- a/src/pocketmine/block/Pumpkin.php +++ b/src/pocketmine/block/Pumpkin.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; use pocketmine\Player; class Pumpkin extends Solid{ @@ -36,6 +37,10 @@ class Pumpkin extends Solid{ return 1; } + public function getToolType(){ + return Tool::TYPE_AXE; + } + public function getName(){ return "Pumpkin"; } diff --git a/src/pocketmine/block/Quartz.php b/src/pocketmine/block/Quartz.php index fa4153965..74b4deb72 100644 --- a/src/pocketmine/block/Quartz.php +++ b/src/pocketmine/block/Quartz.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class Quartz extends Solid{ @@ -45,6 +46,10 @@ class Quartz extends Solid{ return $names[$this->meta & 0x03]; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getDrops(Item $item){ if($item->isPickaxe() >= 1){ return [ diff --git a/src/pocketmine/block/QuartzStairs.php b/src/pocketmine/block/QuartzStairs.php index d55b6ee7d..13c658fd8 100644 --- a/src/pocketmine/block/QuartzStairs.php +++ b/src/pocketmine/block/QuartzStairs.php @@ -22,6 +22,8 @@ namespace pocketmine\block; +use pocketmine\item\Tool; + class QuartzStairs extends Stair{ protected $id = self::QUARTZ_STAIRS; @@ -34,6 +36,10 @@ class QuartzStairs extends Stair{ return 0.8; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getName(){ return "Quartz Stairs"; } diff --git a/src/pocketmine/block/Redstone.php b/src/pocketmine/block/Redstone.php index 0f51131d8..c2707e016 100644 --- a/src/pocketmine/block/Redstone.php +++ b/src/pocketmine/block/Redstone.php @@ -22,8 +22,9 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; -class Redstone extends Transparent{ +class Redstone extends Solid{ protected $id = self::REDSTONE_BLOCK; @@ -35,6 +36,10 @@ class Redstone extends Transparent{ return 5; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getName(){ return "Redstone Block"; } diff --git a/src/pocketmine/block/RedstoneOre.php b/src/pocketmine/block/RedstoneOre.php index 9a1c6ce98..6b31c4090 100644 --- a/src/pocketmine/block/RedstoneOre.php +++ b/src/pocketmine/block/RedstoneOre.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; use pocketmine\level\Level; class RedstoneOre extends Solid{ @@ -50,6 +51,12 @@ class RedstoneOre extends Solid{ return false; } + + + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getDrops(Item $item){ if($item->isPickaxe() >= 2){ return [ diff --git a/src/pocketmine/block/Sand.php b/src/pocketmine/block/Sand.php index 9fd9757e2..d7ea90a5b 100644 --- a/src/pocketmine/block/Sand.php +++ b/src/pocketmine/block/Sand.php @@ -22,6 +22,8 @@ namespace pocketmine\block; +use pocketmine\item\Tool; + class Sand extends Fallable{ protected $id = self::SAND; @@ -34,6 +36,10 @@ class Sand extends Fallable{ return 0.5; } + public function getToolType(){ + return Tool::TYPE_SHOVEL; + } + public function getName(){ if($this->meta === 0x01){ return "Red Sand"; diff --git a/src/pocketmine/block/Sandstone.php b/src/pocketmine/block/Sandstone.php index 98c000e26..a94a32ae3 100644 --- a/src/pocketmine/block/Sandstone.php +++ b/src/pocketmine/block/Sandstone.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class Sandstone extends Solid{ @@ -45,6 +46,10 @@ class Sandstone extends Solid{ return $names[$this->meta & 0x03]; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getDrops(Item $item){ if($item->isPickaxe() >= 1){ return [ diff --git a/src/pocketmine/block/SandstoneStairs.php b/src/pocketmine/block/SandstoneStairs.php index 6ddc59cb9..aebad02ce 100644 --- a/src/pocketmine/block/SandstoneStairs.php +++ b/src/pocketmine/block/SandstoneStairs.php @@ -22,6 +22,8 @@ namespace pocketmine\block; +use pocketmine\item\Tool; + class SandstoneStairs extends Stair{ protected $id = self::SANDSTONE_STAIRS; @@ -34,6 +36,10 @@ class SandstoneStairs extends Stair{ return 0.8; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getName(){ return "Sandstone Stairs"; } diff --git a/src/pocketmine/block/SignPost.php b/src/pocketmine/block/SignPost.php index 7bafd8711..c151f0731 100644 --- a/src/pocketmine/block/SignPost.php +++ b/src/pocketmine/block/SignPost.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; use pocketmine\level\Level; use pocketmine\Player; @@ -97,4 +98,8 @@ class SignPost extends Transparent{ [Item::SIGN, 0, 1], ]; } + + public function getToolType(){ + return Tool::TYPE_AXE; + } } \ No newline at end of file diff --git a/src/pocketmine/block/Slab.php b/src/pocketmine/block/Slab.php index e23a0d70a..303d8fbd0 100644 --- a/src/pocketmine/block/Slab.php +++ b/src/pocketmine/block/Slab.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; use pocketmine\math\AxisAlignedBB; use pocketmine\Player; @@ -132,4 +133,10 @@ class Slab extends Transparent{ return []; } } + + + + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } } \ No newline at end of file diff --git a/src/pocketmine/block/Snow.php b/src/pocketmine/block/Snow.php index 30ce81a92..43be78c72 100644 --- a/src/pocketmine/block/Snow.php +++ b/src/pocketmine/block/Snow.php @@ -22,6 +22,8 @@ namespace pocketmine\block; +use pocketmine\item\Tool; + class Snow extends Solid{ protected $id = self::SNOW_BLOCK; @@ -34,6 +36,10 @@ class Snow extends Solid{ return 0.2; } + public function getToolType(){ + return Tool::TYPE_SHOVEL; + } + public function getName(){ return "Snow Block"; } diff --git a/src/pocketmine/block/SnowLayer.php b/src/pocketmine/block/SnowLayer.php index 86e4e8055..b78e6ff7a 100644 --- a/src/pocketmine/block/SnowLayer.php +++ b/src/pocketmine/block/SnowLayer.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; use pocketmine\level\Level; use pocketmine\Player; @@ -45,6 +46,10 @@ class SnowLayer extends Flowable{ return 0.1; } + public function getToolType(){ + return Tool::TYPE_SHOVEL; + } + public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null){ $down = $this->getSide(0); diff --git a/src/pocketmine/block/SoulSand.php b/src/pocketmine/block/SoulSand.php index 074b9b7ce..7a538c409 100644 --- a/src/pocketmine/block/SoulSand.php +++ b/src/pocketmine/block/SoulSand.php @@ -22,6 +22,7 @@ namespace pocketmine\block; +use pocketmine\item\Tool; use pocketmine\math\AxisAlignedBB; class SoulSand extends Solid{ @@ -40,6 +41,10 @@ class SoulSand extends Solid{ return 0.5; } + public function getToolType(){ + return Tool::TYPE_SHOVEL; + } + protected function recalculateBoundingBox(){ return new AxisAlignedBB( diff --git a/src/pocketmine/block/SpruceWoodStairs.php b/src/pocketmine/block/SpruceWoodStairs.php index 38c0cd8db..6c97a36fe 100644 --- a/src/pocketmine/block/SpruceWoodStairs.php +++ b/src/pocketmine/block/SpruceWoodStairs.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class SpruceWoodStairs extends Stair{ @@ -35,6 +36,10 @@ class SpruceWoodStairs extends Stair{ return "Spruce Wood Stairs"; } + public function getToolType(){ + return Tool::TYPE_AXE; + } + public function getDrops(Item $item){ return [ [$this->id, 0, 1], diff --git a/src/pocketmine/block/StainedClay.php b/src/pocketmine/block/StainedClay.php index a0ceeb5e0..c67d138ab 100644 --- a/src/pocketmine/block/StainedClay.php +++ b/src/pocketmine/block/StainedClay.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class StainedClay extends Solid{ @@ -35,6 +36,10 @@ class StainedClay extends Solid{ return 1.25; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getName(){ static $names = [ 0 => "White Stained Clay", diff --git a/src/pocketmine/block/StoneBrickStairs.php b/src/pocketmine/block/StoneBrickStairs.php index 45af5d987..5dfd81c9b 100644 --- a/src/pocketmine/block/StoneBrickStairs.php +++ b/src/pocketmine/block/StoneBrickStairs.php @@ -22,6 +22,8 @@ namespace pocketmine\block; +use pocketmine\item\Tool; + class StoneBrickStairs extends Stair{ protected $id = self::STONE_BRICK_STAIRS; @@ -30,6 +32,10 @@ class StoneBrickStairs extends Stair{ $this->meta = $meta; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getHardness(){ return 1.5; } diff --git a/src/pocketmine/block/StoneBricks.php b/src/pocketmine/block/StoneBricks.php index 27296e077..ecb17ed5e 100644 --- a/src/pocketmine/block/StoneBricks.php +++ b/src/pocketmine/block/StoneBricks.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class StoneBricks extends Solid{ @@ -35,6 +36,10 @@ class StoneBricks extends Solid{ return 1.5; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getName(){ static $names = [ 0 => "Stone Bricks", diff --git a/src/pocketmine/block/StoneWall.php b/src/pocketmine/block/StoneWall.php index 0e3fd79bf..953c182c0 100644 --- a/src/pocketmine/block/StoneWall.php +++ b/src/pocketmine/block/StoneWall.php @@ -22,6 +22,7 @@ namespace pocketmine\block; +use pocketmine\item\Tool; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Vector3; @@ -37,6 +38,10 @@ class StoneWall extends Transparent{ return false; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function getHardness(){ return 2; } diff --git a/src/pocketmine/block/Stonecutter.php b/src/pocketmine/block/Stonecutter.php index fa9f28fde..3dc127c46 100644 --- a/src/pocketmine/block/Stonecutter.php +++ b/src/pocketmine/block/Stonecutter.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; use pocketmine\Player; //TODO: check orientation @@ -37,6 +38,10 @@ class Stonecutter extends Solid{ return "Stonecutter"; } + public function getToolType(){ + return Tool::TYPE_PICKAXE; + } + public function canBeActivated(){ return true; } diff --git a/src/pocketmine/block/Trapdoor.php b/src/pocketmine/block/Trapdoor.php index 0158ade5d..c3b8f8a70 100644 --- a/src/pocketmine/block/Trapdoor.php +++ b/src/pocketmine/block/Trapdoor.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; use pocketmine\math\AxisAlignedBB; use pocketmine\Player; @@ -148,4 +149,8 @@ class Trapdoor extends Transparent{ return true; } + + public function getToolType(){ + return Tool::TYPE_AXE; + } } \ No newline at end of file diff --git a/src/pocketmine/block/Vine.php b/src/pocketmine/block/Vine.php index e1a718a51..14def3f33 100644 --- a/src/pocketmine/block/Vine.php +++ b/src/pocketmine/block/Vine.php @@ -163,4 +163,8 @@ class Vine extends Transparent{ return []; } } + + public function getToolType(){ + return Tool::TYPE_AXE; + } } \ No newline at end of file diff --git a/src/pocketmine/block/Wood.php b/src/pocketmine/block/Wood.php index 1374855c4..c80da4734 100644 --- a/src/pocketmine/block/Wood.php +++ b/src/pocketmine/block/Wood.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; use pocketmine\Player; class Wood extends Solid{ @@ -73,4 +74,8 @@ class Wood extends Solid{ [$this->id, $this->meta & 0x03, 1], ]; } + + public function getToolType(){ + return Tool::TYPE_AXE; + } } \ No newline at end of file diff --git a/src/pocketmine/block/WoodDoor.php b/src/pocketmine/block/WoodDoor.php index 537aea9ed..48b512334 100644 --- a/src/pocketmine/block/WoodDoor.php +++ b/src/pocketmine/block/WoodDoor.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class WoodDoor extends Door{ @@ -43,6 +44,10 @@ class WoodDoor extends Door{ return 3; } + public function getToolType(){ + return Tool::TYPE_AXE; + } + public function getDrops(Item $item){ return [ [Item::WOODEN_DOOR, 0, 1], diff --git a/src/pocketmine/block/WoodSlab.php b/src/pocketmine/block/WoodSlab.php index 3d36e16af..45a8b8454 100644 --- a/src/pocketmine/block/WoodSlab.php +++ b/src/pocketmine/block/WoodSlab.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; use pocketmine\math\AxisAlignedBB; use pocketmine\Player; @@ -122,6 +123,10 @@ class WoodSlab extends Transparent{ return true; } + public function getToolType(){ + return Tool::TYPE_AXE; + } + public function getDrops(Item $item){ return [ [$this->id, $this->meta & 0x07, 1], diff --git a/src/pocketmine/block/WoodStairs.php b/src/pocketmine/block/WoodStairs.php index c100ed5c9..450a7fc1d 100644 --- a/src/pocketmine/block/WoodStairs.php +++ b/src/pocketmine/block/WoodStairs.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; class WoodStairs extends Stair{ @@ -35,6 +36,10 @@ class WoodStairs extends Stair{ return "Wood Stairs"; } + public function getToolType(){ + return Tool::TYPE_AXE; + } + public function getDrops(Item $item){ return [ [$this->id, 0, 1], diff --git a/src/pocketmine/block/Wool.php b/src/pocketmine/block/Wool.php index 46ec8b58e..0fd537f0e 100644 --- a/src/pocketmine/block/Wool.php +++ b/src/pocketmine/block/Wool.php @@ -22,6 +22,8 @@ namespace pocketmine\block; +use pocketmine\item\Tool; + class Wool extends Solid{ protected $id = self::WOOL; @@ -34,6 +36,10 @@ class Wool extends Solid{ return 0.8; } + public function getToolType(){ + return Tool::TYPE_SHEARS; + } + public function getName(){ static $names = [ 0 => "White Wool", diff --git a/src/pocketmine/block/Workbench.php b/src/pocketmine/block/Workbench.php index dfbc3d90d..ab1e53742 100644 --- a/src/pocketmine/block/Workbench.php +++ b/src/pocketmine/block/Workbench.php @@ -22,6 +22,7 @@ namespace pocketmine\block; use pocketmine\item\Item; +use pocketmine\item\Tool; use pocketmine\Player; //TODO: check orientation @@ -45,6 +46,10 @@ class Workbench extends Solid{ return "Crafting Table"; } + public function getToolType(){ + return Tool::TYPE_AXE; + } + public function onActivate(Item $item, Player $player = null){ if($player instanceof Player){ $player->craftingType = 1; diff --git a/src/pocketmine/entity/FallingSand.php b/src/pocketmine/entity/FallingSand.php index 758cbe577..e6c97bc0e 100644 --- a/src/pocketmine/entity/FallingSand.php +++ b/src/pocketmine/entity/FallingSand.php @@ -95,12 +95,13 @@ class FallingSand extends Entity{ if($tickDiff <= 0 and !$this->justCreated){ return true; } + $this->lastUpdate = $currentTick; $hasUpdate = $this->entityBaseTick($tickDiff); if($this->isAlive()){ - $pos = (new Vector3($this->x - 0.5, $this->y, $this->z - 0.5))->floor(); + $pos = (new Vector3($this->x - 0.5, $this->y, $this->z - 0.5))->round(); if($this->ticksLived === 1){ $block = $this->level->getBlock($pos); diff --git a/src/pocketmine/item/Item.php b/src/pocketmine/item/Item.php index 1ec933430..6bdaf6a94 100644 --- a/src/pocketmine/item/Item.php +++ b/src/pocketmine/item/Item.php @@ -686,7 +686,6 @@ class Item{ self::addCreativeItem(Item::get(Item::LEAVES, 1)); self::addCreativeItem(Item::get(Item::LEAVES, 2)); self::addCreativeItem(Item::get(Item::LEAVES, 3)); - self::addCreativeItem(Item::get(Item::LEAVES, 3)); self::addCreativeItem(Item::get(Item::LEAVES2, 0)); self::addCreativeItem(Item::get(Item::LEAVES2, 1)); self::addCreativeItem(Item::get(Item::CAKE, 0));