Pull tier info out of TieredTool, create ToolTier enum

This commit is contained in:
Dylan K. Taylor 2019-07-17 18:06:49 +01:00
parent 7954a81602
commit 1a1feefd3e
37 changed files with 220 additions and 174 deletions

View File

@ -28,7 +28,7 @@ use pocketmine\block\utils\Fallable;
use pocketmine\block\utils\FallableTrait;
use pocketmine\inventory\AnvilInventory;
use pocketmine\item\Item;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
use pocketmine\math\AxisAlignedBB;
use pocketmine\math\Bearing;
use pocketmine\math\Facing;
@ -43,7 +43,7 @@ class Anvil extends Transparent implements Fallable{
protected $facing = Facing::NORTH;
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(5.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 6000.0));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0));
}
protected function writeStateToMeta() : int{

View File

@ -50,7 +50,7 @@ use pocketmine\block\utils\PillarRotationTrait;
use pocketmine\block\utils\TreeType;
use pocketmine\item\Item;
use pocketmine\item\ItemIds;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
use pocketmine\world\Position;
use function array_fill;
use function array_filter;
@ -99,7 +99,7 @@ class BlockFactory{
self::register(new Bookshelf(new BID(Ids::BOOKSHELF), "Bookshelf"));
self::register(new BrewingStand(new BID(Ids::BREWING_STAND_BLOCK, 0, ItemIds::BREWING_STAND, TileBrewingStand::class), "Brewing Stand"));
$bricksBreakInfo = new BlockBreakInfo(2.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 30.0);
$bricksBreakInfo = new BlockBreakInfo(2.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0);
self::register(new Stair(new BID(Ids::BRICK_STAIRS), "Brick Stairs", $bricksBreakInfo));
self::register(new Solid(new BID(Ids::BRICK_BLOCK), "Bricks", $bricksBreakInfo));
@ -114,7 +114,7 @@ class BlockFactory{
self::register(new CoalOre(new BID(Ids::COAL_ORE), "Coal Ore"));
self::register(new CoarseDirt(new BID(Ids::DIRT, Meta::DIRT_COARSE), "Coarse Dirt"));
$cobblestoneBreakInfo = new BlockBreakInfo(2.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 30.0);
$cobblestoneBreakInfo = new BlockBreakInfo(2.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0);
self::register(new Solid(new BID(Ids::COBBLESTONE), "Cobblestone", $cobblestoneBreakInfo));
self::register(new Solid(new BID(Ids::MOSSY_COBBLESTONE), "Mossy Cobblestone", $cobblestoneBreakInfo));
self::register(new Stair(new BID(Ids::COBBLESTONE_STAIRS), "Cobblestone Stairs", $cobblestoneBreakInfo));
@ -127,7 +127,7 @@ class BlockFactory{
self::register(new DeadBush(new BID(Ids::DEADBUSH), "Dead Bush"));
self::register(new DetectorRail(new BID(Ids::DETECTOR_RAIL), "Detector Rail"));
self::register(new Solid(new BID(Ids::DIAMOND_BLOCK), "Diamond Block", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, TieredTool::TIER_IRON, 30.0)));
self::register(new Solid(new BID(Ids::DIAMOND_BLOCK), "Diamond Block", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0)));
self::register(new DiamondOre(new BID(Ids::DIAMOND_ORE), "Diamond Ore"));
self::register(new Dirt(new BID(Ids::DIRT, Meta::DIRT_NORMAL), "Dirt"));
self::register(new DoublePlant(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_SUNFLOWER), "Sunflower"));
@ -138,14 +138,14 @@ class BlockFactory{
self::register(new DoubleTallGrass(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_LARGE_FERN), "Large Fern"));
self::register(new DragonEgg(new BID(Ids::DRAGON_EGG), "Dragon Egg"));
self::register(new DriedKelp(new BID(Ids::DRIED_KELP_BLOCK), "Dried Kelp Block", new BlockBreakInfo(0.5, BlockToolType::NONE, 0, 12.5)));
self::register(new Solid(new BID(Ids::EMERALD_BLOCK), "Emerald Block", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, TieredTool::TIER_IRON, 30.0)));
self::register(new Solid(new BID(Ids::EMERALD_BLOCK), "Emerald Block", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0)));
self::register(new EmeraldOre(new BID(Ids::EMERALD_ORE), "Emerald Ore"));
self::register(new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, 0, null, TileEnchantingTable::class), "Enchanting Table"));
self::register(new EndPortalFrame(new BID(Ids::END_PORTAL_FRAME), "End Portal Frame"));
self::register(new EndRod(new BID(Ids::END_ROD), "End Rod"));
self::register(new Solid(new BID(Ids::END_STONE), "End Stone", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 45.0)));
self::register(new Solid(new BID(Ids::END_STONE), "End Stone", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 45.0)));
$endBrickBreakInfo = new BlockBreakInfo(0.8, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 4.0);
$endBrickBreakInfo = new BlockBreakInfo(0.8, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 4.0);
self::register(new Solid(new BID(Ids::END_BRICKS), "End Stone Bricks", $endBrickBreakInfo));
self::register(new Stair(new BID(Ids::END_BRICK_STAIRS), "End Stone Brick Stairs", $endBrickBreakInfo));
@ -171,8 +171,8 @@ class BlockFactory{
self::register(new GlassPane(new BID(Ids::GLASS_PANE), "Glass Pane"));
self::register(new GlowingObsidian(new BID(Ids::GLOWINGOBSIDIAN), "Glowing Obsidian"));
self::register(new Glowstone(new BID(Ids::GLOWSTONE), "Glowstone"));
self::register(new Solid(new BID(Ids::GOLD_BLOCK), "Gold Block", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, TieredTool::TIER_IRON, 30.0)));
self::register(new Solid(new BID(Ids::GOLD_ORE), "Gold Ore", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, TieredTool::TIER_IRON)));
self::register(new Solid(new BID(Ids::GOLD_BLOCK), "Gold Block", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0)));
self::register(new Solid(new BID(Ids::GOLD_ORE), "Gold Ore", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel())));
self::register(new Grass(new BID(Ids::GRASS), "Grass"));
self::register(new GrassPath(new BID(Ids::GRASS_PATH), "Grass Path"));
self::register(new Gravel(new BID(Ids::GRAVEL), "Gravel"));
@ -180,7 +180,7 @@ class BlockFactory{
self::register(new HardenedGlass(new BID(Ids::HARD_GLASS), "Hardened Glass"));
self::register(new HardenedGlassPane(new BID(Ids::HARD_GLASS_PANE), "Hardened Glass Pane"));
self::register(new HayBale(new BID(Ids::HAY_BALE), "Hay Bale"));
self::register(new Hopper(new BID(Ids::HOPPER_BLOCK, 0, ItemIds::HOPPER, TileHopper::class), "Hopper", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 15.0)));
self::register(new Hopper(new BID(Ids::HOPPER_BLOCK, 0, ItemIds::HOPPER, TileHopper::class), "Hopper", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 15.0)));
self::register(new Ice(new BID(Ids::ICE), "Ice"));
self::register(new class(new BID(Ids::MONSTER_EGG, Meta::INFESTED_STONE), "Infested Stone") extends InfestedStone{
public function getSilkTouchDrops(Item $item) : array{
@ -217,14 +217,14 @@ class BlockFactory{
self::register(new Solid(new BID(Ids::INFO_UPDATE), "update!", $updateBlockBreakInfo));
self::register(new Solid(new BID(Ids::INFO_UPDATE2), "ate!upd", $updateBlockBreakInfo));
self::register(new Transparent(new BID(Ids::INVISIBLEBEDROCK), "Invisible Bedrock", BlockBreakInfo::indestructible()));
self::register(new Solid(new BID(Ids::IRON_BLOCK), "Iron Block", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, TieredTool::TIER_STONE, 30.0)));
self::register(new Thin(new BID(Ids::IRON_BARS), "Iron Bars", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 30.0)));
self::register(new Door(new BID(Ids::IRON_DOOR_BLOCK, 0, ItemIds::IRON_DOOR), "Iron Door", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 25.0)));
self::register(new Solid(new BID(Ids::IRON_ORE), "Iron Ore", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, TieredTool::TIER_STONE)));
self::register(new Trapdoor(new BID(Ids::IRON_TRAPDOOR), "Iron Trapdoor", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 25.0)));
self::register(new Solid(new BID(Ids::IRON_BLOCK), "Iron Block", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 30.0)));
self::register(new Thin(new BID(Ids::IRON_BARS), "Iron Bars", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0)));
self::register(new Door(new BID(Ids::IRON_DOOR_BLOCK, 0, ItemIds::IRON_DOOR), "Iron Door", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 25.0)));
self::register(new Solid(new BID(Ids::IRON_ORE), "Iron Ore", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel())));
self::register(new Trapdoor(new BID(Ids::IRON_TRAPDOOR), "Iron Trapdoor", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 25.0)));
self::register(new ItemFrame(new BID(Ids::FRAME_BLOCK, 0, ItemIds::FRAME, TileItemFrame::class), "Item Frame"));
self::register(new Ladder(new BID(Ids::LADDER), "Ladder"));
self::register(new Solid(new BID(Ids::LAPIS_BLOCK), "Lapis Lazuli Block", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, TieredTool::TIER_STONE)));
self::register(new Solid(new BID(Ids::LAPIS_BLOCK), "Lapis Lazuli Block", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel())));
self::register(new LapisOre(new BID(Ids::LAPIS_ORE), "Lapis Lazuli Ore"));
self::register(new Lava(new BIDFlattened(Ids::FLOWING_LAVA, Ids::STILL_LAVA), "Lava"));
self::register(new Lever(new BID(Ids::LEVER), "Lever"));
@ -234,7 +234,7 @@ class BlockFactory{
self::register(new MonsterSpawner(new BID(Ids::MOB_SPAWNER, 0, null, TileMonsterSpawner::class), "Monster Spawner"));
self::register(new Mycelium(new BID(Ids::MYCELIUM), "Mycelium"));
$netherBrickBreakInfo = new BlockBreakInfo(2.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 30.0);
$netherBrickBreakInfo = new BlockBreakInfo(2.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0);
self::register(new Solid(new BID(Ids::NETHER_BRICK_BLOCK), "Nether Bricks", $netherBrickBreakInfo));
self::register(new Solid(new BID(Ids::RED_NETHER_BRICK), "Red Nether Bricks", $netherBrickBreakInfo));
self::register(new Fence(new BID(Ids::NETHER_BRICK_FENCE), "Nether Brick Fence", $netherBrickBreakInfo));
@ -247,13 +247,13 @@ class BlockFactory{
self::register(new NetherWartPlant(new BID(Ids::NETHER_WART_PLANT, 0, ItemIds::NETHER_WART), "Nether Wart"));
self::register(new Netherrack(new BID(Ids::NETHERRACK), "Netherrack"));
self::register(new Note(new BID(Ids::NOTEBLOCK, 0, null, TileNote::class), "Note Block"));
self::register(new Solid(new BID(Ids::OBSIDIAN), "Obsidian", new BlockBreakInfo(35.0 /* 50 in PC */, BlockToolType::PICKAXE, TieredTool::TIER_DIAMOND, 6000.0)));
self::register(new Solid(new BID(Ids::OBSIDIAN), "Obsidian", new BlockBreakInfo(35.0 /* 50 in PC */, BlockToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 6000.0)));
self::register(new PackedIce(new BID(Ids::PACKED_ICE), "Packed Ice"));
self::register(new Podzol(new BID(Ids::PODZOL), "Podzol"));
self::register(new Potato(new BID(Ids::POTATOES), "Potato Block"));
self::register(new PoweredRail(new BID(Ids::GOLDEN_RAIL, Meta::RAIL_STRAIGHT_NORTH_SOUTH), "Powered Rail"));
$prismarineBreakInfo = new BlockBreakInfo(1.5, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 30.0);
$prismarineBreakInfo = new BlockBreakInfo(1.5, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0);
self::register(new Solid(new BID(Ids::PRISMARINE, Meta::PRISMARINE_BRICKS), "Prismarine Bricks", $prismarineBreakInfo));
self::register(new Stair(new BID(Ids::PRISMARINE_BRICKS_STAIRS), "Prismarine Bricks Stairs", $prismarineBreakInfo));
self::register(new Solid(new BID(Ids::PRISMARINE, Meta::PRISMARINE_DARK), "Dark Prismarine", $prismarineBreakInfo));
@ -271,14 +271,14 @@ class BlockFactory{
self::register(new PumpkinStem(new BID(Ids::PUMPKIN_STEM, 0, ItemIds::PUMPKIN_SEEDS), "Pumpkin Stem"));
$purpurBreakInfo = new BlockBreakInfo(1.5, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 30.0);
$purpurBreakInfo = new BlockBreakInfo(1.5, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0);
self::register(new Solid(new BID(Ids::PURPUR_BLOCK, Meta::PURPUR_NORMAL), "Purpur Block", $purpurBreakInfo));
self::register(new class(new BID(Ids::PURPUR_BLOCK, Meta::PURPUR_PILLAR), "Purpur Pillar", $purpurBreakInfo) extends Solid{
use PillarRotationTrait;
});
self::register(new Stair(new BID(Ids::PURPUR_STAIRS), "Purpur Stairs", $purpurBreakInfo));
$quartzBreakInfo = new BlockBreakInfo(0.8, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN);
$quartzBreakInfo = new BlockBreakInfo(0.8, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel());
self::register(new Solid(new BID(Ids::QUARTZ_BLOCK, Meta::QUARTZ_NORMAL), "Quartz Block", $quartzBreakInfo));
self::register(new Stair(new BID(Ids::QUARTZ_STAIRS), "Quartz Stairs", $quartzBreakInfo));
self::register(new class(new BID(Ids::QUARTZ_BLOCK, Meta::QUARTZ_CHISELED), "Chiseled Quartz Block", $quartzBreakInfo) extends Solid{
@ -314,7 +314,7 @@ class BlockFactory{
self::register(new SoulSand(new BID(Ids::SOUL_SAND), "Soul Sand"));
self::register(new Sponge(new BID(Ids::SPONGE), "Sponge"));
$stoneBreakInfo = new BlockBreakInfo(1.5, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 30.0);
$stoneBreakInfo = new BlockBreakInfo(1.5, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0);
self::register(new class(new BID(Ids::STONE, Meta::STONE_NORMAL), "Stone", $stoneBreakInfo) extends Solid{
public function getDropsForCompatibleTool(Item $item) : array{
return [VanillaBlocks::COBBLESTONE()->asItem()];
@ -344,7 +344,7 @@ class BlockFactory{
self::register(new StonePressurePlate(new BID(Ids::STONE_PRESSURE_PLATE), "Stone Pressure Plate"));
//TODO: in the future this won't be the same for all the types
$stoneSlabBreakInfo = new BlockBreakInfo(2.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 30.0);
$stoneSlabBreakInfo = new BlockBreakInfo(2.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0);
self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, Meta::STONE_SLAB_BRICK), "Brick", $stoneSlabBreakInfo));
self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, Meta::STONE_SLAB_COBBLESTONE), "Cobblestone", $stoneSlabBreakInfo));
self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, Meta::STONE_SLAB_FAKE_WOODEN), "Fake Wooden", $stoneSlabBreakInfo));
@ -374,7 +374,7 @@ class BlockFactory{
self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB4, Ids::DOUBLE_STONE_SLAB4, Meta::STONE_SLAB4_MOSSY_STONE_BRICK), "Mossy Stone Brick", $stoneSlabBreakInfo));
self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB4, Ids::DOUBLE_STONE_SLAB4, Meta::STONE_SLAB4_SMOOTH_QUARTZ), "Smooth Quartz", $stoneSlabBreakInfo));
self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB4, Ids::DOUBLE_STONE_SLAB4, Meta::STONE_SLAB4_STONE), "Stone", $stoneSlabBreakInfo));
self::register(new Solid(new BID(Ids::STONECUTTER), "Stonecutter", new BlockBreakInfo(3.5, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN)));
self::register(new Solid(new BID(Ids::STONECUTTER), "Stonecutter", new BlockBreakInfo(3.5, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel())));
self::register(new Sugarcane(new BID(Ids::REEDS_BLOCK, 0, ItemIds::REEDS), "Sugarcane"));
self::register(new TNT(new BID(Ids::TNT), "TNT"));
@ -498,7 +498,7 @@ class BlockFactory{
Meta::SANDSTONE_CUT => "Cut ",
Meta::SANDSTONE_SMOOTH => "Smooth "
];
$sandstoneBreakInfo = new BlockBreakInfo(0.8, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN);
$sandstoneBreakInfo = new BlockBreakInfo(0.8, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel());
self::register(new Stair(new BID(Ids::RED_SANDSTONE_STAIRS), "Red Sandstone Stairs", $sandstoneBreakInfo));
self::register(new Stair(new BID(Ids::SMOOTH_RED_SANDSTONE_STAIRS), "Smooth Red Sandstone Stairs", $sandstoneBreakInfo));
self::register(new Stair(new BID(Ids::SANDSTONE_STAIRS), "Sandstone Stairs", $sandstoneBreakInfo));

View File

@ -24,12 +24,12 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\block\utils\PillarRotationTrait;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
class BoneBlock extends Solid{
use PillarRotationTrait;
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(2.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(2.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()));
}
}

View File

@ -25,7 +25,7 @@ namespace pocketmine\block;
use pocketmine\block\tile\BrewingStand as TileBrewingStand;
use pocketmine\item\Item;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
use pocketmine\math\Vector3;
use pocketmine\player\Player;
@ -39,7 +39,7 @@ class BrewingStand extends Transparent{
protected $southwestSlot = false;
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(0.5, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(0.5, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()));
}
protected function writeStateToMeta() : int{

View File

@ -23,12 +23,12 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
class Coal extends Solid{
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(5.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 30.0));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0));
}
public function getFuelTime() : int{

View File

@ -24,14 +24,14 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\item\Item;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
use pocketmine\item\VanillaItems;
use function mt_rand;
class CoalOre extends Solid{
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(3.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()));
}
public function getDropsForCompatibleTool(Item $item) : array{

View File

@ -23,11 +23,11 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
class Concrete extends Solid{
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(1.8, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(1.8, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()));
}
}

View File

@ -24,14 +24,14 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\item\Item;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
use pocketmine\item\VanillaItems;
use function mt_rand;
class DiamondOre extends Solid{
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(3.0, BlockToolType::PICKAXE, TieredTool::TIER_IRON));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()));
}
public function getDropsForCompatibleTool(Item $item) : array{

View File

@ -27,7 +27,7 @@ use pocketmine\block\utils\Fallable;
use pocketmine\block\utils\FallableTrait;
use pocketmine\event\block\BlockTeleportEvent;
use pocketmine\item\Item;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
use pocketmine\math\Vector3;
use pocketmine\player\Player;
use pocketmine\world\particle\DragonEggTeleportParticle;
@ -40,7 +40,7 @@ class DragonEgg extends Transparent implements Fallable{
use FallableTrait;
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(3.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()));
}
public function getLightLevel() : int{

View File

@ -24,14 +24,14 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\item\Item;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
use pocketmine\item\VanillaItems;
use function mt_rand;
class EmeraldOre extends Solid{
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(3.0, BlockToolType::PICKAXE, TieredTool::TIER_IRON));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()));
}
public function getDropsForCompatibleTool(Item $item) : array{

View File

@ -25,7 +25,7 @@ namespace pocketmine\block;
use pocketmine\inventory\EnchantInventory;
use pocketmine\item\Item;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
use pocketmine\math\AxisAlignedBB;
use pocketmine\math\Facing;
use pocketmine\math\Vector3;
@ -34,7 +34,7 @@ use pocketmine\player\Player;
class EnchantingTable extends Transparent{
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(5.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 6000.0));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 6000.0));
}
protected function recalculateBoundingBox() : ?AxisAlignedBB{

View File

@ -26,7 +26,7 @@ namespace pocketmine\block;
use pocketmine\block\tile\EnderChest as TileEnderChest;
use pocketmine\block\utils\BlockDataValidator;
use pocketmine\item\Item;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
use pocketmine\math\AxisAlignedBB;
use pocketmine\math\Facing;
use pocketmine\math\Vector3;
@ -39,7 +39,7 @@ class EnderChest extends Transparent{
protected $facing = Facing::NORTH;
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(22.5, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 3000.0));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(22.5, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 3000.0));
}
protected function writeStateToMeta() : int{

View File

@ -26,7 +26,7 @@ namespace pocketmine\block;
use pocketmine\block\tile\Furnace as TileFurnace;
use pocketmine\block\utils\BlockDataValidator;
use pocketmine\item\Item;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
use pocketmine\math\Facing;
use pocketmine\math\Vector3;
use pocketmine\player\Player;
@ -42,7 +42,7 @@ class Furnace extends Solid{
protected $lit = false; //this is set based on the blockID
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(3.5, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(3.5, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()));
}
public function getId() : int{

View File

@ -26,7 +26,7 @@ namespace pocketmine\block;
use pocketmine\block\utils\BlockDataValidator;
use pocketmine\item\Item;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
use pocketmine\math\Facing;
use pocketmine\math\Vector3;
use pocketmine\player\Player;
@ -38,7 +38,7 @@ class GlazedTerracotta extends Solid{
protected $facing = Facing::NORTH;
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(1.4, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(1.4, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()));
}
protected function writeStateToMeta() : int{

View File

@ -24,12 +24,12 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
class GlowingObsidian extends Solid{
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(10.0, BlockToolType::PICKAXE, TieredTool::TIER_DIAMOND, 50.0));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(10.0, BlockToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 50.0));
}
public function getLightLevel() : int{

View File

@ -23,11 +23,11 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
class HardenedClay extends Solid{
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(1.25, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 21.0));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(1.25, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 21.0));
}
}

View File

@ -24,14 +24,14 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\item\Item;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
use pocketmine\item\VanillaItems;
use function mt_rand;
class LapisOre extends Solid{
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(3.0, BlockToolType::PICKAXE, TieredTool::TIER_STONE));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()));
}
public function getDropsForCompatibleTool(Item $item) : array{

View File

@ -26,12 +26,12 @@ namespace pocketmine\block;
use pocketmine\entity\Entity;
use pocketmine\event\entity\EntityDamageByBlockEvent;
use pocketmine\event\entity\EntityDamageEvent;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
class Magma extends Solid{
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(0.5, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(0.5, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()));
}
public function getLightLevel() : int{

View File

@ -24,13 +24,13 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\item\Item;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
use function mt_rand;
class MonsterSpawner extends Transparent{
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(5.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()));
}
public function getDropsForCompatibleTool(Item $item) : array{

View File

@ -24,14 +24,14 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\item\Item;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
use pocketmine\item\VanillaItems;
use function mt_rand;
class NetherQuartzOre extends Solid{
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(3.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()));
}
public function getDropsForCompatibleTool(Item $item) : array{

View File

@ -25,7 +25,7 @@ namespace pocketmine\block;
use pocketmine\block\utils\BlockDataValidator;
use pocketmine\item\Item;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
use pocketmine\item\VanillaItems;
class NetherReactor extends Solid{
@ -34,7 +34,7 @@ class NetherReactor extends Solid{
protected $state = BlockLegacyMetadata::NETHER_REACTOR_INACTIVE;
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(3.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()));
}
protected function writeStateToMeta() : int{

View File

@ -23,12 +23,12 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
class Netherrack extends Solid{
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(0.4, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(0.4, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()));
}
public function burnsForever() : bool{

View File

@ -23,11 +23,11 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
class Redstone extends Solid{
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(5.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 30.0));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0));
}
}

View File

@ -24,7 +24,7 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\item\Item;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
use pocketmine\item\VanillaItems;
use pocketmine\math\Vector3;
use pocketmine\player\Player;
@ -38,7 +38,7 @@ class RedstoneOre extends Solid{
protected $lit = false;
public function __construct(BlockIdentifierFlattened $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(3.0, BlockToolType::PICKAXE, TieredTool::TIER_IRON));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()));
}
public function getId() : int{

View File

@ -24,13 +24,13 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\item\Item;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
use pocketmine\item\VanillaItems;
class Snow extends Solid{
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(0.2, BlockToolType::SHOVEL, TieredTool::TIER_WOODEN));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(0.2, BlockToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()));
}
public function getDropsForCompatibleTool(Item $item) : array{

View File

@ -27,7 +27,7 @@ use pocketmine\block\utils\BlockDataValidator;
use pocketmine\block\utils\Fallable;
use pocketmine\block\utils\FallableTrait;
use pocketmine\item\Item;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
use pocketmine\item\VanillaItems;
use pocketmine\math\AxisAlignedBB;
use pocketmine\math\Facing;
@ -44,7 +44,7 @@ class SnowLayer extends Flowable implements Fallable{
protected $layers = 1;
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(0.1, BlockToolType::SHOVEL, TieredTool::TIER_WOODEN));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(0.1, BlockToolType::SHOVEL, ToolTier::WOOD()->getHarvestLevel()));
}
protected function writeStateToMeta() : int{

View File

@ -23,11 +23,11 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
class StonePressurePlate extends SimplePressurePlate{
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(0.5, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(0.5, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()));
}
}

View File

@ -23,7 +23,7 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
use pocketmine\math\AxisAlignedBB;
use pocketmine\math\Facing;
@ -35,7 +35,7 @@ class Wall extends Transparent{
protected $up = false;
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(2.0, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN, 30.0));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(2.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0));
}
public function readStateFromWorld() : void{

View File

@ -23,11 +23,11 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
class WeightedPressurePlateHeavy extends WeightedPressurePlate{
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(0.5, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(0.5, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()));
}
}

View File

@ -23,11 +23,11 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\item\TieredTool;
use pocketmine\item\ToolTier;
class WeightedPressurePlateLight extends WeightedPressurePlate{
public function __construct(BlockIdentifier $idInfo, string $name, ?BlockBreakInfo $breakInfo = null){
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(0.5, BlockToolType::PICKAXE, TieredTool::TIER_WOODEN));
parent::__construct($idInfo, $name, $breakInfo ?? new BlockBreakInfo(0.5, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()));
}
}

View File

@ -34,11 +34,11 @@ class Axe extends TieredTool{
}
public function getBlockToolHarvestLevel() : int{
return $this->tier;
return $this->tier->getHarvestLevel();
}
public function getAttackPoints() : int{
return self::getBaseDamageFromTier($this->tier) - 1;
return $this->tier->getBaseAttackPoints() - 1;
}
public function onDestroyBlock(Block $block) : bool{

View File

@ -57,11 +57,11 @@ class ItemFactory{
self::register(new Apple(Item::APPLE, 0, "Apple"));
self::register(new Arrow(Item::ARROW, 0, "Arrow"));
self::register(new Axe(Item::DIAMOND_AXE, "Diamond Axe", TieredTool::TIER_DIAMOND));
self::register(new Axe(Item::GOLDEN_AXE, "Golden Axe", TieredTool::TIER_GOLD));
self::register(new Axe(Item::IRON_AXE, "Iron Axe", TieredTool::TIER_IRON));
self::register(new Axe(Item::STONE_AXE, "Stone Axe", TieredTool::TIER_STONE));
self::register(new Axe(Item::WOODEN_AXE, "Wooden Axe", TieredTool::TIER_WOODEN));
self::register(new Axe(Item::DIAMOND_AXE, "Diamond Axe", ToolTier::DIAMOND()));
self::register(new Axe(Item::GOLDEN_AXE, "Golden Axe", ToolTier::GOLD()));
self::register(new Axe(Item::IRON_AXE, "Iron Axe", ToolTier::IRON()));
self::register(new Axe(Item::STONE_AXE, "Stone Axe", ToolTier::STONE()));
self::register(new Axe(Item::WOODEN_AXE, "Wooden Axe", ToolTier::WOOD()));
self::register(new BakedPotato(Item::BAKED_POTATO, 0, "Baked Potato"));
self::register(new Beetroot(Item::BEETROOT, 0, "Beetroot"));
self::register(new BeetrootSeeds(Item::BEETROOT_SEEDS, 0, "Beetroot Seeds"));
@ -113,11 +113,11 @@ class ItemFactory{
self::register(new Helmet(Item::GOLDEN_HELMET, 0, "Golden Helmet", new ArmorTypeInfo(2, 78)));
self::register(new Helmet(Item::IRON_HELMET, 0, "Iron Helmet", new ArmorTypeInfo(2, 166)));
self::register(new Helmet(Item::LEATHER_HELMET, 0, "Leather Cap", new ArmorTypeInfo(1, 56)));
self::register(new Hoe(Item::DIAMOND_HOE, "Diamond Hoe", TieredTool::TIER_DIAMOND));
self::register(new Hoe(Item::GOLDEN_HOE, "Golden Hoe", TieredTool::TIER_GOLD));
self::register(new Hoe(Item::IRON_HOE, "Iron Hoe", TieredTool::TIER_IRON));
self::register(new Hoe(Item::STONE_HOE, "Stone Hoe", TieredTool::TIER_STONE));
self::register(new Hoe(Item::WOODEN_HOE, "Wooden Hoe", TieredTool::TIER_WOODEN));
self::register(new Hoe(Item::DIAMOND_HOE, "Diamond Hoe", ToolTier::DIAMOND()));
self::register(new Hoe(Item::GOLDEN_HOE, "Golden Hoe", ToolTier::GOLD()));
self::register(new Hoe(Item::IRON_HOE, "Iron Hoe", ToolTier::IRON()));
self::register(new Hoe(Item::STONE_HOE, "Stone Hoe", ToolTier::STONE()));
self::register(new Hoe(Item::WOODEN_HOE, "Wooden Hoe", ToolTier::WOOD()));
self::register(new Item(Item::BLAZE_POWDER, 0, "Blaze Powder"));
self::register(new Item(Item::BLEACH, 0, "Bleach")); //EDU
self::register(new Item(Item::BONE, 0, "Bone"));
@ -227,11 +227,11 @@ class ItemFactory{
self::register(new Minecart(Item::MINECART, 0, "Minecart"));
self::register(new MushroomStew(Item::MUSHROOM_STEW, 0, "Mushroom Stew"));
self::register(new PaintingItem(Item::PAINTING, 0, "Painting"));
self::register(new Pickaxe(Item::DIAMOND_PICKAXE, "Diamond Pickaxe", TieredTool::TIER_DIAMOND));
self::register(new Pickaxe(Item::GOLDEN_PICKAXE, "Golden Pickaxe", TieredTool::TIER_GOLD));
self::register(new Pickaxe(Item::IRON_PICKAXE, "Iron Pickaxe", TieredTool::TIER_IRON));
self::register(new Pickaxe(Item::STONE_PICKAXE, "Stone Pickaxe", TieredTool::TIER_STONE));
self::register(new Pickaxe(Item::WOODEN_PICKAXE, "Wooden Pickaxe", TieredTool::TIER_WOODEN));
self::register(new Pickaxe(Item::DIAMOND_PICKAXE, "Diamond Pickaxe", ToolTier::DIAMOND()));
self::register(new Pickaxe(Item::GOLDEN_PICKAXE, "Golden Pickaxe", ToolTier::GOLD()));
self::register(new Pickaxe(Item::IRON_PICKAXE, "Iron Pickaxe", ToolTier::IRON()));
self::register(new Pickaxe(Item::STONE_PICKAXE, "Stone Pickaxe", ToolTier::STONE()));
self::register(new Pickaxe(Item::WOODEN_PICKAXE, "Wooden Pickaxe", ToolTier::WOOD()));
self::register(new PoisonousPotato(Item::POISONOUS_POTATO, 0, "Poisonous Potato"));
self::register(new Potato(Item::POTATO, 0, "Potato"));
self::register(new Pufferfish(Item::PUFFERFISH, 0, "Pufferfish"));
@ -248,11 +248,11 @@ class ItemFactory{
self::register(new Redstone(Item::REDSTONE, 0, "Redstone"));
self::register(new RottenFlesh(Item::ROTTEN_FLESH, 0, "Rotten Flesh"));
self::register(new Shears(Item::SHEARS, 0, "Shears"));
self::register(new Shovel(Item::DIAMOND_SHOVEL, "Diamond Shovel", TieredTool::TIER_DIAMOND));
self::register(new Shovel(Item::GOLDEN_SHOVEL, "Golden Shovel", TieredTool::TIER_GOLD));
self::register(new Shovel(Item::IRON_SHOVEL, "Iron Shovel", TieredTool::TIER_IRON));
self::register(new Shovel(Item::STONE_SHOVEL, "Stone Shovel", TieredTool::TIER_STONE));
self::register(new Shovel(Item::WOODEN_SHOVEL, "Wooden Shovel", TieredTool::TIER_WOODEN));
self::register(new Shovel(Item::DIAMOND_SHOVEL, "Diamond Shovel", ToolTier::DIAMOND()));
self::register(new Shovel(Item::GOLDEN_SHOVEL, "Golden Shovel", ToolTier::GOLD()));
self::register(new Shovel(Item::IRON_SHOVEL, "Iron Shovel", ToolTier::IRON()));
self::register(new Shovel(Item::STONE_SHOVEL, "Stone Shovel", ToolTier::STONE()));
self::register(new Shovel(Item::WOODEN_SHOVEL, "Wooden Shovel", ToolTier::WOOD()));
self::register(new Sign(BlockLegacyIds::STANDING_SIGN, 0, Item::SIGN));
self::register(new Sign(BlockLegacyIds::SPRUCE_STANDING_SIGN, 0, Item::SPRUCE_SIGN));
self::register(new Sign(BlockLegacyIds::BIRCH_STANDING_SIGN, 0, Item::BIRCH_SIGN));
@ -264,11 +264,11 @@ class ItemFactory{
self::register(new Steak(Item::STEAK, 0, "Steak"));
self::register(new Stick(Item::STICK, 0, "Stick"));
self::register(new StringItem(Item::STRING, 0, "String"));
self::register(new Sword(Item::DIAMOND_SWORD, "Diamond Sword", TieredTool::TIER_DIAMOND));
self::register(new Sword(Item::GOLDEN_SWORD, "Golden Sword", TieredTool::TIER_GOLD));
self::register(new Sword(Item::IRON_SWORD, "Iron Sword", TieredTool::TIER_IRON));
self::register(new Sword(Item::STONE_SWORD, "Stone Sword", TieredTool::TIER_STONE));
self::register(new Sword(Item::WOODEN_SWORD, "Wooden Sword", TieredTool::TIER_WOODEN));
self::register(new Sword(Item::DIAMOND_SWORD, "Diamond Sword", ToolTier::DIAMOND()));
self::register(new Sword(Item::GOLDEN_SWORD, "Golden Sword", ToolTier::GOLD()));
self::register(new Sword(Item::IRON_SWORD, "Iron Sword", ToolTier::IRON()));
self::register(new Sword(Item::STONE_SWORD, "Stone Sword", ToolTier::STONE()));
self::register(new Sword(Item::WOODEN_SWORD, "Wooden Sword", ToolTier::WOOD()));
self::register(new Totem(Item::TOTEM, 0, "Totem of Undying"));
self::register(new WheatSeeds(Item::WHEAT_SEEDS, 0, "Wheat Seeds"));
self::register(new WritableBook(Item::WRITABLE_BOOK, 0, "Book & Quill"));

View File

@ -34,11 +34,11 @@ class Pickaxe extends TieredTool{
}
public function getBlockToolHarvestLevel() : int{
return $this->tier;
return $this->tier->getHarvestLevel();
}
public function getAttackPoints() : int{
return self::getBaseDamageFromTier($this->tier) - 2;
return $this->tier->getBaseAttackPoints() - 2;
}
public function onDestroyBlock(Block $block) : bool{

View File

@ -34,11 +34,11 @@ class Shovel extends TieredTool{
}
public function getBlockToolHarvestLevel() : int{
return $this->tier;
return $this->tier->getHarvestLevel();
}
public function getAttackPoints() : int{
return self::getBaseDamageFromTier($this->tier) - 3;
return $this->tier->getBaseAttackPoints() - 3;
}
public function onDestroyBlock(Block $block) : bool{

View File

@ -34,7 +34,7 @@ class Sword extends TieredTool{
}
public function getAttackPoints() : int{
return self::getBaseDamageFromTier($this->tier);
return $this->tier->getBaseAttackPoints();
}
public function getBlockToolHarvestLevel() : int{

View File

@ -24,82 +24,29 @@ declare(strict_types=1);
namespace pocketmine\item;
abstract class TieredTool extends Tool{
public const TIER_WOODEN = 1;
public const TIER_GOLD = 2;
public const TIER_STONE = 3;
public const TIER_IRON = 4;
public const TIER_DIAMOND = 5;
/** @var int */
/** @var ToolTier */
protected $tier;
public function __construct(int $id, string $name, int $tier){
public function __construct(int $id, string $name, ToolTier $tier){
parent::__construct($id, 0, $name);
$this->tier = $tier;
}
public function getMaxDurability() : int{
return self::getDurabilityFromTier($this->tier);
return $this->tier->getMaxDurability();
}
public function getTier() : int{
public function getTier() : ToolTier{
return $this->tier;
}
public static function getDurabilityFromTier(int $tier) : int{
static $levels = [
self::TIER_GOLD => 33,
self::TIER_WOODEN => 60,
self::TIER_STONE => 132,
self::TIER_IRON => 251,
self::TIER_DIAMOND => 1562
];
if(!isset($levels[$tier])){
throw new \InvalidArgumentException("Unknown tier '$tier'");
}
return $levels[$tier];
}
protected static function getBaseDamageFromTier(int $tier) : int{
static $levels = [
self::TIER_WOODEN => 5,
self::TIER_GOLD => 5,
self::TIER_STONE => 6,
self::TIER_IRON => 7,
self::TIER_DIAMOND => 8
];
if(!isset($levels[$tier])){
throw new \InvalidArgumentException("Unknown tier '$tier'");
}
return $levels[$tier];
}
public static function getBaseMiningEfficiencyFromTier(int $tier) : float{
static $levels = [
self::TIER_WOODEN => 2,
self::TIER_STONE => 4,
self::TIER_IRON => 6,
self::TIER_DIAMOND => 8,
self::TIER_GOLD => 12
];
if(!isset($levels[$tier])){
throw new \InvalidArgumentException("Unknown tier '$tier'");
}
return $levels[$tier];
}
protected function getBaseMiningEfficiency() : float{
return self::getBaseMiningEfficiencyFromTier($this->tier);
return $this->tier->getBaseEfficiency();
}
public function getFuelTime() : int{
if($this->tier === self::TIER_WOODEN){
if($this->tier->equals(ToolTier::WOOD())){
return 200;
}

View File

@ -0,0 +1,99 @@
<?php
/*
*
* ____ _ _ __ __ _ __ __ ____
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* @author PocketMine Team
* @link http://www.pocketmine.net/
*
*
*/
declare(strict_types=1);
namespace pocketmine\item;
use pocketmine\utils\EnumTrait;
/**
* This doc-block is generated automatically, do not modify it manually.
* This must be regenerated whenever registry members are added, removed or changed.
* @see RegistryTrait::_generateMethodAnnotations()
*
* @method static self WOOD()
* @method static self GOLD()
* @method static self STONE()
* @method static self IRON()
* @method static self DIAMOND()
*/
final class ToolTier{
use EnumTrait {
__construct as Enum___construct;
}
protected static function setup() : iterable{
return [
new self("wood", 1, 60, 5, 2),
new self("gold", 2, 33, 5, 12),
new self("stone", 3, 132, 6, 4),
new self("iron", 4, 251, 7, 6),
new self("diamond", 5, 1562, 8, 8)
];
}
/** @var int */
private $harvestLevel;
/** @var int */
private $maxDurability;
/** @var int */
private $baseAttackPoints;
/** @var int */
private $baseEfficiency;
private function __construct(string $name, int $harvestLevel, int $maxDurability, int $baseAttackPoints, int $baseEfficiency){
$this->Enum___construct($name);
$this->harvestLevel = $harvestLevel;
$this->maxDurability = $maxDurability;
$this->baseAttackPoints = $baseAttackPoints;
$this->baseEfficiency = $baseEfficiency;
}
/**
* @return int
*/
public function getHarvestLevel() : int{
return $this->harvestLevel;
}
/**
* @return int
*/
public function getMaxDurability() : int{
return $this->maxDurability;
}
/**
* @return int
*/
public function getBaseAttackPoints() : int{
return $this->baseAttackPoints;
}
/**
* @return int
*/
public function getBaseEfficiency() : int{
return $this->baseEfficiency;
}
}