Make factory register methods less verbose

This commit is contained in:
Dylan K. Taylor 2019-02-20 10:24:44 +00:00
parent f351a86653
commit 88c4b836f0
2 changed files with 436 additions and 436 deletions

View File

@ -76,256 +76,256 @@ class BlockFactory{
self::$stateMasks = new \SplFixedArray(8192);
self::registerBlock(new ActivatorRail());
self::registerBlock(new Air());
self::registerBlock(new Anvil(Block::ANVIL, Anvil::TYPE_NORMAL, "Anvil"));
self::registerBlock(new Anvil(Block::ANVIL, Anvil::TYPE_SLIGHTLY_DAMAGED, "Slightly Damaged Anvil"));
self::registerBlock(new Anvil(Block::ANVIL, Anvil::TYPE_VERY_DAMAGED, "Very Damaged Anvil"));
self::registerBlock(new Bed());
self::registerBlock(new Bedrock());
self::registerBlock(new Beetroot());
self::registerBlock(new BoneBlock());
self::registerBlock(new Bookshelf());
self::registerBlock(new BrewingStand());
self::registerBlock(new BrickStairs());
self::registerBlock(new Bricks());
self::registerBlock(new BrownMushroom());
self::registerBlock(new BrownMushroomBlock());
self::registerBlock(new Cactus());
self::registerBlock(new Cake());
self::registerBlock(new Carrot());
self::registerBlock(new Chest());
self::registerBlock(new Clay());
self::registerBlock(new Coal());
self::registerBlock(new CoalOre());
self::registerBlock(new CoarseDirt(Block::DIRT, Dirt::COARSE, "Coarse Dirt"));
self::registerBlock(new Cobblestone());
self::registerBlock(new CobblestoneStairs());
self::registerBlock(new Cobweb());
self::registerBlock(new CocoaBlock());
self::registerBlock(new CraftingTable());
self::registerBlock(new Dandelion());
self::registerBlock(new DaylightSensor());
self::registerBlock((new DaylightSensor())->setInverted()); //flattening hack
self::registerBlock(new DeadBush());
self::registerBlock(new DetectorRail());
self::registerBlock(new Diamond());
self::registerBlock(new DiamondOre());
self::registerBlock(new Dirt(Block::DIRT, Dirt::NORMAL, "Dirt"));
self::registerBlock(new DoublePlant(Block::DOUBLE_PLANT, 0, "Sunflower"));
self::registerBlock(new DoublePlant(Block::DOUBLE_PLANT, 1, "Lilac"));
self::registerBlock(new DoublePlant(Block::DOUBLE_PLANT, 4, "Rose Bush"));
self::registerBlock(new DoublePlant(Block::DOUBLE_PLANT, 5, "Peony"));
self::registerBlock(new DoubleTallGrass(Block::DOUBLE_PLANT, 2, "Double Tallgrass"));
self::registerBlock(new DoubleTallGrass(Block::DOUBLE_PLANT, 3, "Large Fern"));
self::registerBlock(new Emerald());
self::registerBlock(new EmeraldOre());
self::registerBlock(new EnchantingTable());
self::registerBlock(new EndPortalFrame());
self::registerBlock(new EndRod());
self::registerBlock(new EndStone());
self::registerBlock(new EndStoneBricks());
self::registerBlock(new EnderChest());
self::registerBlock(new Farmland());
self::registerBlock(new FenceGate(Block::ACACIA_FENCE_GATE, 0, "Acacia Fence Gate"));
self::registerBlock(new FenceGate(Block::BIRCH_FENCE_GATE, 0, "Birch Fence Gate"));
self::registerBlock(new FenceGate(Block::DARK_OAK_FENCE_GATE, 0, "Dark Oak Fence Gate"));
self::registerBlock(new FenceGate(Block::JUNGLE_FENCE_GATE, 0, "Jungle Fence Gate"));
self::registerBlock(new FenceGate(Block::OAK_FENCE_GATE, 0, "Oak Fence Gate"));
self::registerBlock(new FenceGate(Block::SPRUCE_FENCE_GATE, 0, "Spruce Fence Gate"));
self::registerBlock(new Fire());
self::registerBlock(new Flower(Block::RED_FLOWER, Flower::TYPE_ALLIUM, "Allium"));
self::registerBlock(new Flower(Block::RED_FLOWER, Flower::TYPE_AZURE_BLUET, "Azure Bluet"));
self::registerBlock(new Flower(Block::RED_FLOWER, Flower::TYPE_BLUE_ORCHID, "Blue Orchid"));
self::registerBlock(new Flower(Block::RED_FLOWER, Flower::TYPE_ORANGE_TULIP, "Orange Tulip"));
self::registerBlock(new Flower(Block::RED_FLOWER, Flower::TYPE_OXEYE_DAISY, "Oxeye Daisy"));
self::registerBlock(new Flower(Block::RED_FLOWER, Flower::TYPE_PINK_TULIP, "Pink Tulip"));
self::registerBlock(new Flower(Block::RED_FLOWER, Flower::TYPE_POPPY, "Poppy"));
self::registerBlock(new Flower(Block::RED_FLOWER, Flower::TYPE_RED_TULIP, "Red Tulip"));
self::registerBlock(new Flower(Block::RED_FLOWER, Flower::TYPE_WHITE_TULIP, "White Tulip"));
self::registerBlock(new Flower(Block::RED_FLOWER, Flower::TYPE_CORNFLOWER, "Cornflower"));
self::registerBlock(new Flower(Block::RED_FLOWER, Flower::TYPE_LILY_OF_THE_VALLEY, "Lily of the Valley"));
self::registerBlock(new FlowerPot());
self::registerBlock(new Furnace());
self::registerBlock((new Furnace())->setLit()); //flattening hack
self::registerBlock(new Glass(Block::GLASS, 0, "Glass"));
self::registerBlock(new GlassPane(Block::GLASS_PANE, 0, "Glass Pane"));
self::registerBlock(new GlazedTerracotta(Block::BLACK_GLAZED_TERRACOTTA, 0, "Black Glazed Terracotta"));
self::registerBlock(new GlazedTerracotta(Block::BLUE_GLAZED_TERRACOTTA, 0, "Blue Glazed Terracotta"));
self::registerBlock(new GlazedTerracotta(Block::BROWN_GLAZED_TERRACOTTA, 0, "Brown Glazed Terracotta"));
self::registerBlock(new GlazedTerracotta(Block::CYAN_GLAZED_TERRACOTTA, 0, "Cyan Glazed Terracotta"));
self::registerBlock(new GlazedTerracotta(Block::GRAY_GLAZED_TERRACOTTA, 0, "Grey Glazed Terracotta"));
self::registerBlock(new GlazedTerracotta(Block::GREEN_GLAZED_TERRACOTTA, 0, "Green Glazed Terracotta"));
self::registerBlock(new GlazedTerracotta(Block::LIGHT_BLUE_GLAZED_TERRACOTTA, 0, "Light Blue Glazed Terracotta"));
self::registerBlock(new GlazedTerracotta(Block::LIME_GLAZED_TERRACOTTA, 0, "Lime Glazed Terracotta"));
self::registerBlock(new GlazedTerracotta(Block::MAGENTA_GLAZED_TERRACOTTA, 0, "Magenta Glazed Terracotta"));
self::registerBlock(new GlazedTerracotta(Block::ORANGE_GLAZED_TERRACOTTA, 0, "Orange Glazed Terracotta"));
self::registerBlock(new GlazedTerracotta(Block::PINK_GLAZED_TERRACOTTA, 0, "Pink Glazed Terracotta"));
self::registerBlock(new GlazedTerracotta(Block::PURPLE_GLAZED_TERRACOTTA, 0, "Purple Glazed Terracotta"));
self::registerBlock(new GlazedTerracotta(Block::RED_GLAZED_TERRACOTTA, 0, "Red Glazed Terracotta"));
self::registerBlock(new GlazedTerracotta(Block::SILVER_GLAZED_TERRACOTTA, 0, "Light Grey Glazed Terracotta"));
self::registerBlock(new GlazedTerracotta(Block::WHITE_GLAZED_TERRACOTTA, 0, "White Glazed Terracotta"));
self::registerBlock(new GlazedTerracotta(Block::YELLOW_GLAZED_TERRACOTTA, 0, "Yellow Glazed Terracotta"));
self::registerBlock(new GlowingObsidian());
self::registerBlock(new Glowstone());
self::registerBlock(new Gold());
self::registerBlock(new GoldOre());
self::registerBlock(new Grass());
self::registerBlock(new GrassPath());
self::registerBlock(new Gravel());
self::registerBlock(new HardenedClay(Block::HARDENED_CLAY, 0, "Hardened Clay"));
self::registerBlock(new HardenedGlass(Block::HARD_GLASS, 0, "Hardened Glass"));
self::registerBlock(new HardenedGlassPane(Block::HARD_GLASS_PANE, 0, "Hardened Glass Pane"));
self::registerBlock(new HayBale());
self::registerBlock(new Ice());
self::registerBlock(new InfoUpdate(Block::INFO_UPDATE, 0, "update!"));
self::registerBlock(new InfoUpdate(Block::INFO_UPDATE2, 0, "ate!upd"));
self::registerBlock(new InvisibleBedrock());
self::registerBlock(new Iron());
self::registerBlock(new IronBars());
self::registerBlock(new IronDoor());
self::registerBlock(new IronOre());
self::registerBlock(new IronTrapdoor());
self::registerBlock(new ItemFrame());
self::registerBlock(new Ladder());
self::registerBlock(new Lapis());
self::registerBlock(new LapisOre());
self::registerBlock(new Lava());
self::registerBlock((new Lava())->setStill()); //flattening hack
self::registerBlock(new Lever());
self::registerBlock(new LitPumpkin());
self::registerBlock(new Magma());
self::registerBlock(new Melon());
self::registerBlock(new MelonStem());
self::registerBlock(new MonsterSpawner());
self::registerBlock(new MossyCobblestone());
self::registerBlock(new Mycelium());
self::registerBlock(new NetherBrick(Block::NETHER_BRICK_BLOCK, 0, "Nether Bricks"));
self::registerBlock(new NetherBrick(Block::RED_NETHER_BRICK, 0, "Red Nether Bricks"));
self::registerBlock(new NetherBrickFence());
self::registerBlock(new NetherBrickStairs());
self::registerBlock(new NetherQuartzOre());
self::registerBlock(new NetherReactor());
self::registerBlock(new NetherWartBlock());
self::registerBlock(new NetherWartPlant());
self::registerBlock(new Netherrack());
self::registerBlock(new NoteBlock());
self::registerBlock(new Obsidian());
self::registerBlock(new PackedIce());
self::registerBlock(new Podzol());
self::registerBlock(new Potato());
self::registerBlock(new PoweredRail());
self::registerBlock(new Prismarine(Block::PRISMARINE, Prismarine::BRICKS, "Prismarine Bricks"));
self::registerBlock(new Prismarine(Block::PRISMARINE, Prismarine::DARK, "Dark Prismarine"));
self::registerBlock(new Prismarine(Block::PRISMARINE, Prismarine::NORMAL, "Prismarine"));
self::registerBlock(new Pumpkin());
self::registerBlock(new PumpkinStem());
self::registerBlock(new Purpur(Block::PURPUR_BLOCK, 0, "Purpur Block"));
self::registerBlock(new class(Block::PURPUR_BLOCK, 2, "Purpur Pillar") extends Purpur{
self::register(new ActivatorRail());
self::register(new Air());
self::register(new Anvil(Block::ANVIL, Anvil::TYPE_NORMAL, "Anvil"));
self::register(new Anvil(Block::ANVIL, Anvil::TYPE_SLIGHTLY_DAMAGED, "Slightly Damaged Anvil"));
self::register(new Anvil(Block::ANVIL, Anvil::TYPE_VERY_DAMAGED, "Very Damaged Anvil"));
self::register(new Bed());
self::register(new Bedrock());
self::register(new Beetroot());
self::register(new BoneBlock());
self::register(new Bookshelf());
self::register(new BrewingStand());
self::register(new BrickStairs());
self::register(new Bricks());
self::register(new BrownMushroom());
self::register(new BrownMushroomBlock());
self::register(new Cactus());
self::register(new Cake());
self::register(new Carrot());
self::register(new Chest());
self::register(new Clay());
self::register(new Coal());
self::register(new CoalOre());
self::register(new CoarseDirt(Block::DIRT, Dirt::COARSE, "Coarse Dirt"));
self::register(new Cobblestone());
self::register(new CobblestoneStairs());
self::register(new Cobweb());
self::register(new CocoaBlock());
self::register(new CraftingTable());
self::register(new Dandelion());
self::register(new DaylightSensor());
self::register((new DaylightSensor())->setInverted()); //flattening hack
self::register(new DeadBush());
self::register(new DetectorRail());
self::register(new Diamond());
self::register(new DiamondOre());
self::register(new Dirt(Block::DIRT, Dirt::NORMAL, "Dirt"));
self::register(new DoublePlant(Block::DOUBLE_PLANT, 0, "Sunflower"));
self::register(new DoublePlant(Block::DOUBLE_PLANT, 1, "Lilac"));
self::register(new DoublePlant(Block::DOUBLE_PLANT, 4, "Rose Bush"));
self::register(new DoublePlant(Block::DOUBLE_PLANT, 5, "Peony"));
self::register(new DoubleTallGrass(Block::DOUBLE_PLANT, 2, "Double Tallgrass"));
self::register(new DoubleTallGrass(Block::DOUBLE_PLANT, 3, "Large Fern"));
self::register(new Emerald());
self::register(new EmeraldOre());
self::register(new EnchantingTable());
self::register(new EndPortalFrame());
self::register(new EndRod());
self::register(new EndStone());
self::register(new EndStoneBricks());
self::register(new EnderChest());
self::register(new Farmland());
self::register(new FenceGate(Block::ACACIA_FENCE_GATE, 0, "Acacia Fence Gate"));
self::register(new FenceGate(Block::BIRCH_FENCE_GATE, 0, "Birch Fence Gate"));
self::register(new FenceGate(Block::DARK_OAK_FENCE_GATE, 0, "Dark Oak Fence Gate"));
self::register(new FenceGate(Block::JUNGLE_FENCE_GATE, 0, "Jungle Fence Gate"));
self::register(new FenceGate(Block::OAK_FENCE_GATE, 0, "Oak Fence Gate"));
self::register(new FenceGate(Block::SPRUCE_FENCE_GATE, 0, "Spruce Fence Gate"));
self::register(new Fire());
self::register(new Flower(Block::RED_FLOWER, Flower::TYPE_ALLIUM, "Allium"));
self::register(new Flower(Block::RED_FLOWER, Flower::TYPE_AZURE_BLUET, "Azure Bluet"));
self::register(new Flower(Block::RED_FLOWER, Flower::TYPE_BLUE_ORCHID, "Blue Orchid"));
self::register(new Flower(Block::RED_FLOWER, Flower::TYPE_ORANGE_TULIP, "Orange Tulip"));
self::register(new Flower(Block::RED_FLOWER, Flower::TYPE_OXEYE_DAISY, "Oxeye Daisy"));
self::register(new Flower(Block::RED_FLOWER, Flower::TYPE_PINK_TULIP, "Pink Tulip"));
self::register(new Flower(Block::RED_FLOWER, Flower::TYPE_POPPY, "Poppy"));
self::register(new Flower(Block::RED_FLOWER, Flower::TYPE_RED_TULIP, "Red Tulip"));
self::register(new Flower(Block::RED_FLOWER, Flower::TYPE_WHITE_TULIP, "White Tulip"));
self::register(new Flower(Block::RED_FLOWER, Flower::TYPE_CORNFLOWER, "Cornflower"));
self::register(new Flower(Block::RED_FLOWER, Flower::TYPE_LILY_OF_THE_VALLEY, "Lily of the Valley"));
self::register(new FlowerPot());
self::register(new Furnace());
self::register((new Furnace())->setLit()); //flattening hack
self::register(new Glass(Block::GLASS, 0, "Glass"));
self::register(new GlassPane(Block::GLASS_PANE, 0, "Glass Pane"));
self::register(new GlazedTerracotta(Block::BLACK_GLAZED_TERRACOTTA, 0, "Black Glazed Terracotta"));
self::register(new GlazedTerracotta(Block::BLUE_GLAZED_TERRACOTTA, 0, "Blue Glazed Terracotta"));
self::register(new GlazedTerracotta(Block::BROWN_GLAZED_TERRACOTTA, 0, "Brown Glazed Terracotta"));
self::register(new GlazedTerracotta(Block::CYAN_GLAZED_TERRACOTTA, 0, "Cyan Glazed Terracotta"));
self::register(new GlazedTerracotta(Block::GRAY_GLAZED_TERRACOTTA, 0, "Grey Glazed Terracotta"));
self::register(new GlazedTerracotta(Block::GREEN_GLAZED_TERRACOTTA, 0, "Green Glazed Terracotta"));
self::register(new GlazedTerracotta(Block::LIGHT_BLUE_GLAZED_TERRACOTTA, 0, "Light Blue Glazed Terracotta"));
self::register(new GlazedTerracotta(Block::LIME_GLAZED_TERRACOTTA, 0, "Lime Glazed Terracotta"));
self::register(new GlazedTerracotta(Block::MAGENTA_GLAZED_TERRACOTTA, 0, "Magenta Glazed Terracotta"));
self::register(new GlazedTerracotta(Block::ORANGE_GLAZED_TERRACOTTA, 0, "Orange Glazed Terracotta"));
self::register(new GlazedTerracotta(Block::PINK_GLAZED_TERRACOTTA, 0, "Pink Glazed Terracotta"));
self::register(new GlazedTerracotta(Block::PURPLE_GLAZED_TERRACOTTA, 0, "Purple Glazed Terracotta"));
self::register(new GlazedTerracotta(Block::RED_GLAZED_TERRACOTTA, 0, "Red Glazed Terracotta"));
self::register(new GlazedTerracotta(Block::SILVER_GLAZED_TERRACOTTA, 0, "Light Grey Glazed Terracotta"));
self::register(new GlazedTerracotta(Block::WHITE_GLAZED_TERRACOTTA, 0, "White Glazed Terracotta"));
self::register(new GlazedTerracotta(Block::YELLOW_GLAZED_TERRACOTTA, 0, "Yellow Glazed Terracotta"));
self::register(new GlowingObsidian());
self::register(new Glowstone());
self::register(new Gold());
self::register(new GoldOre());
self::register(new Grass());
self::register(new GrassPath());
self::register(new Gravel());
self::register(new HardenedClay(Block::HARDENED_CLAY, 0, "Hardened Clay"));
self::register(new HardenedGlass(Block::HARD_GLASS, 0, "Hardened Glass"));
self::register(new HardenedGlassPane(Block::HARD_GLASS_PANE, 0, "Hardened Glass Pane"));
self::register(new HayBale());
self::register(new Ice());
self::register(new InfoUpdate(Block::INFO_UPDATE, 0, "update!"));
self::register(new InfoUpdate(Block::INFO_UPDATE2, 0, "ate!upd"));
self::register(new InvisibleBedrock());
self::register(new Iron());
self::register(new IronBars());
self::register(new IronDoor());
self::register(new IronOre());
self::register(new IronTrapdoor());
self::register(new ItemFrame());
self::register(new Ladder());
self::register(new Lapis());
self::register(new LapisOre());
self::register(new Lava());
self::register((new Lava())->setStill()); //flattening hack
self::register(new Lever());
self::register(new LitPumpkin());
self::register(new Magma());
self::register(new Melon());
self::register(new MelonStem());
self::register(new MonsterSpawner());
self::register(new MossyCobblestone());
self::register(new Mycelium());
self::register(new NetherBrick(Block::NETHER_BRICK_BLOCK, 0, "Nether Bricks"));
self::register(new NetherBrick(Block::RED_NETHER_BRICK, 0, "Red Nether Bricks"));
self::register(new NetherBrickFence());
self::register(new NetherBrickStairs());
self::register(new NetherQuartzOre());
self::register(new NetherReactor());
self::register(new NetherWartBlock());
self::register(new NetherWartPlant());
self::register(new Netherrack());
self::register(new NoteBlock());
self::register(new Obsidian());
self::register(new PackedIce());
self::register(new Podzol());
self::register(new Potato());
self::register(new PoweredRail());
self::register(new Prismarine(Block::PRISMARINE, Prismarine::BRICKS, "Prismarine Bricks"));
self::register(new Prismarine(Block::PRISMARINE, Prismarine::DARK, "Dark Prismarine"));
self::register(new Prismarine(Block::PRISMARINE, Prismarine::NORMAL, "Prismarine"));
self::register(new Pumpkin());
self::register(new PumpkinStem());
self::register(new Purpur(Block::PURPUR_BLOCK, 0, "Purpur Block"));
self::register(new class(Block::PURPUR_BLOCK, 2, "Purpur Pillar") extends Purpur{
use PillarRotationTrait;
});
self::registerBlock(new PurpurStairs());
self::registerBlock(new Quartz(Block::QUARTZ_BLOCK, Quartz::NORMAL, "Quartz Block"));
self::registerBlock(new class(Block::QUARTZ_BLOCK, Quartz::CHISELED, "Chiseled Quartz Block") extends Quartz{
self::register(new PurpurStairs());
self::register(new Quartz(Block::QUARTZ_BLOCK, Quartz::NORMAL, "Quartz Block"));
self::register(new class(Block::QUARTZ_BLOCK, Quartz::CHISELED, "Chiseled Quartz Block") extends Quartz{
use PillarRotationTrait;
});
self::registerBlock(new class(Block::QUARTZ_BLOCK, Quartz::PILLAR, "Quartz Pillar") extends Quartz{
self::register(new class(Block::QUARTZ_BLOCK, Quartz::PILLAR, "Quartz Pillar") extends Quartz{
use PillarRotationTrait;
});
self::registerBlock(new Quartz(Block::QUARTZ_BLOCK, Quartz::SMOOTH, "Smooth Quartz Block")); //TODO: this has axis rotation in 1.9, unsure if a bug (https://bugs.mojang.com/browse/MCPE-39074)
self::registerBlock(new QuartzStairs());
self::registerBlock(new Rail());
self::registerBlock(new RedMushroom());
self::registerBlock(new RedMushroomBlock());
self::registerBlock(new RedSandstoneStairs());
self::registerBlock(new Redstone());
self::registerBlock(new RedstoneLamp());
self::registerBlock((new RedstoneLamp())->setLit()); //flattening hack
self::registerBlock(new RedstoneOre());
self::registerBlock((new RedstoneOre())->setLit()); //flattening hack
self::registerBlock(new RedstoneRepeater());
self::registerBlock((new RedstoneRepeater())->setPowered());
self::registerBlock(new RedstoneTorch());
self::registerBlock((new RedstoneTorch())->setLit(false)); //flattening hack
self::registerBlock(new RedstoneWire());
self::registerBlock(new Reserved6(Block::RESERVED6, 0, "reserved6"));
self::registerBlock(new Sand(Block::SAND, 0, "Sand"));
self::registerBlock(new Sand(Block::SAND, 1, "Red Sand"));
self::registerBlock(new SandstoneStairs());
self::registerBlock(new SeaLantern());
self::registerBlock(new SignPost());
self::registerBlock(new Skull());
self::registerBlock(new SmoothStone(Block::STONE, Stone::NORMAL, "Stone"));
self::registerBlock(new Snow());
self::registerBlock(new SnowLayer());
self::registerBlock(new SoulSand());
self::registerBlock(new Sponge());
self::registerBlock(new StandingBanner());
self::registerBlock(new Stone(Block::STONE, Stone::ANDESITE, "Andesite"));
self::registerBlock(new Stone(Block::STONE, Stone::DIORITE, "Diorite"));
self::registerBlock(new Stone(Block::STONE, Stone::GRANITE, "Granite"));
self::registerBlock(new Stone(Block::STONE, Stone::POLISHED_ANDESITE, "Polished Andesite"));
self::registerBlock(new Stone(Block::STONE, Stone::POLISHED_DIORITE, "Polished Diorite"));
self::registerBlock(new Stone(Block::STONE, Stone::POLISHED_GRANITE, "Polished Granite"));
self::registerBlock(new StoneBrickStairs());
self::registerBlock(new StoneBricks(Block::STONE_BRICKS, StoneBricks::CHISELED, "Chiseled Stone Bricks"));
self::registerBlock(new StoneBricks(Block::STONE_BRICKS, StoneBricks::CRACKED, "Cracked Stone Bricks"));
self::registerBlock(new StoneBricks(Block::STONE_BRICKS, StoneBricks::MOSSY, "Mossy Stone Bricks"));
self::registerBlock(new StoneBricks(Block::STONE_BRICKS, StoneBricks::NORMAL, "Stone Bricks"));
self::registerBlock(new StoneButton());
self::registerBlock(new StonePressurePlate());
self::registerBlock(new Stonecutter());
self::registerBlock(new Sugarcane());
self::registerBlock(new TNT());
self::registerBlock(new TallGrass(Block::TALL_GRASS, 0, "Fern"));
self::registerBlock(new TallGrass(Block::TALL_GRASS, 1, "Tall Grass"));
self::registerBlock(new TallGrass(Block::TALL_GRASS, 2, "Fern"));
self::registerBlock(new TallGrass(Block::TALL_GRASS, 3, "Fern"));
self::registerBlock(new Torch(Block::COLORED_TORCH_BP, 0, "Blue Torch"));
self::registerBlock(new Torch(Block::COLORED_TORCH_BP, 8, "Purple Torch"));
self::registerBlock(new Torch(Block::COLORED_TORCH_RG, 0, "Red Torch"));
self::registerBlock(new Torch(Block::COLORED_TORCH_RG, 8, "Green Torch"));
self::registerBlock(new Torch(Block::TORCH, 0, "Torch"));
self::registerBlock(new Trapdoor());
self::registerBlock(new TrappedChest());
self::registerBlock(new Tripwire());
self::registerBlock(new TripwireHook());
self::registerBlock(new UnderwaterTorch(Block::UNDERWATER_TORCH, 0, "Underwater Torch"));
self::registerBlock(new Vine());
self::registerBlock(new WallBanner());
self::registerBlock(new WallSign());
self::registerBlock(new Water());
self::registerBlock((new Water())->setStill()); //flattening hack
self::registerBlock(new WaterLily());
self::registerBlock(new WeightedPressurePlateHeavy());
self::registerBlock(new WeightedPressurePlateLight());
self::registerBlock(new Wheat());
self::registerBlock(new WoodenButton());
self::registerBlock(new WoodenDoor(Block::ACACIA_DOOR_BLOCK, 0, "Acacia Door", Item::ACACIA_DOOR));
self::registerBlock(new WoodenDoor(Block::BIRCH_DOOR_BLOCK, 0, "Birch Door", Item::BIRCH_DOOR));
self::registerBlock(new WoodenDoor(Block::DARK_OAK_DOOR_BLOCK, 0, "Dark Oak Door", Item::DARK_OAK_DOOR));
self::registerBlock(new WoodenDoor(Block::JUNGLE_DOOR_BLOCK, 0, "Jungle Door", Item::JUNGLE_DOOR));
self::registerBlock(new WoodenDoor(Block::OAK_DOOR_BLOCK, 0, "Oak Door", Item::OAK_DOOR));
self::registerBlock(new WoodenDoor(Block::SPRUCE_DOOR_BLOCK, 0, "Spruce Door", Item::SPRUCE_DOOR));
self::registerBlock(new WoodenPressurePlate());
self::registerBlock(new WoodenStairs(Block::ACACIA_STAIRS, 0, "Acacia Stairs"));
self::registerBlock(new WoodenStairs(Block::BIRCH_STAIRS, 0, "Birch Stairs"));
self::registerBlock(new WoodenStairs(Block::DARK_OAK_STAIRS, 0, "Dark Oak Stairs"));
self::registerBlock(new WoodenStairs(Block::JUNGLE_STAIRS, 0, "Jungle Stairs"));
self::registerBlock(new WoodenStairs(Block::OAK_STAIRS, 0, "Oak Stairs"));
self::registerBlock(new WoodenStairs(Block::SPRUCE_STAIRS, 0, "Spruce Stairs"));
self::register(new Quartz(Block::QUARTZ_BLOCK, Quartz::SMOOTH, "Smooth Quartz Block")); //TODO: this has axis rotation in 1.9, unsure if a bug (https://bugs.mojang.com/browse/MCPE-39074)
self::register(new QuartzStairs());
self::register(new Rail());
self::register(new RedMushroom());
self::register(new RedMushroomBlock());
self::register(new RedSandstoneStairs());
self::register(new Redstone());
self::register(new RedstoneLamp());
self::register((new RedstoneLamp())->setLit()); //flattening hack
self::register(new RedstoneOre());
self::register((new RedstoneOre())->setLit()); //flattening hack
self::register(new RedstoneRepeater());
self::register((new RedstoneRepeater())->setPowered());
self::register(new RedstoneTorch());
self::register((new RedstoneTorch())->setLit(false)); //flattening hack
self::register(new RedstoneWire());
self::register(new Reserved6(Block::RESERVED6, 0, "reserved6"));
self::register(new Sand(Block::SAND, 0, "Sand"));
self::register(new Sand(Block::SAND, 1, "Red Sand"));
self::register(new SandstoneStairs());
self::register(new SeaLantern());
self::register(new SignPost());
self::register(new Skull());
self::register(new SmoothStone(Block::STONE, Stone::NORMAL, "Stone"));
self::register(new Snow());
self::register(new SnowLayer());
self::register(new SoulSand());
self::register(new Sponge());
self::register(new StandingBanner());
self::register(new Stone(Block::STONE, Stone::ANDESITE, "Andesite"));
self::register(new Stone(Block::STONE, Stone::DIORITE, "Diorite"));
self::register(new Stone(Block::STONE, Stone::GRANITE, "Granite"));
self::register(new Stone(Block::STONE, Stone::POLISHED_ANDESITE, "Polished Andesite"));
self::register(new Stone(Block::STONE, Stone::POLISHED_DIORITE, "Polished Diorite"));
self::register(new Stone(Block::STONE, Stone::POLISHED_GRANITE, "Polished Granite"));
self::register(new StoneBrickStairs());
self::register(new StoneBricks(Block::STONE_BRICKS, StoneBricks::CHISELED, "Chiseled Stone Bricks"));
self::register(new StoneBricks(Block::STONE_BRICKS, StoneBricks::CRACKED, "Cracked Stone Bricks"));
self::register(new StoneBricks(Block::STONE_BRICKS, StoneBricks::MOSSY, "Mossy Stone Bricks"));
self::register(new StoneBricks(Block::STONE_BRICKS, StoneBricks::NORMAL, "Stone Bricks"));
self::register(new StoneButton());
self::register(new StonePressurePlate());
self::register(new Stonecutter());
self::register(new Sugarcane());
self::register(new TNT());
self::register(new TallGrass(Block::TALL_GRASS, 0, "Fern"));
self::register(new TallGrass(Block::TALL_GRASS, 1, "Tall Grass"));
self::register(new TallGrass(Block::TALL_GRASS, 2, "Fern"));
self::register(new TallGrass(Block::TALL_GRASS, 3, "Fern"));
self::register(new Torch(Block::COLORED_TORCH_BP, 0, "Blue Torch"));
self::register(new Torch(Block::COLORED_TORCH_BP, 8, "Purple Torch"));
self::register(new Torch(Block::COLORED_TORCH_RG, 0, "Red Torch"));
self::register(new Torch(Block::COLORED_TORCH_RG, 8, "Green Torch"));
self::register(new Torch(Block::TORCH, 0, "Torch"));
self::register(new Trapdoor());
self::register(new TrappedChest());
self::register(new Tripwire());
self::register(new TripwireHook());
self::register(new UnderwaterTorch(Block::UNDERWATER_TORCH, 0, "Underwater Torch"));
self::register(new Vine());
self::register(new WallBanner());
self::register(new WallSign());
self::register(new Water());
self::register((new Water())->setStill()); //flattening hack
self::register(new WaterLily());
self::register(new WeightedPressurePlateHeavy());
self::register(new WeightedPressurePlateLight());
self::register(new Wheat());
self::register(new WoodenButton());
self::register(new WoodenDoor(Block::ACACIA_DOOR_BLOCK, 0, "Acacia Door", Item::ACACIA_DOOR));
self::register(new WoodenDoor(Block::BIRCH_DOOR_BLOCK, 0, "Birch Door", Item::BIRCH_DOOR));
self::register(new WoodenDoor(Block::DARK_OAK_DOOR_BLOCK, 0, "Dark Oak Door", Item::DARK_OAK_DOOR));
self::register(new WoodenDoor(Block::JUNGLE_DOOR_BLOCK, 0, "Jungle Door", Item::JUNGLE_DOOR));
self::register(new WoodenDoor(Block::OAK_DOOR_BLOCK, 0, "Oak Door", Item::OAK_DOOR));
self::register(new WoodenDoor(Block::SPRUCE_DOOR_BLOCK, 0, "Spruce Door", Item::SPRUCE_DOOR));
self::register(new WoodenPressurePlate());
self::register(new WoodenStairs(Block::ACACIA_STAIRS, 0, "Acacia Stairs"));
self::register(new WoodenStairs(Block::BIRCH_STAIRS, 0, "Birch Stairs"));
self::register(new WoodenStairs(Block::DARK_OAK_STAIRS, 0, "Dark Oak Stairs"));
self::register(new WoodenStairs(Block::JUNGLE_STAIRS, 0, "Jungle Stairs"));
self::register(new WoodenStairs(Block::OAK_STAIRS, 0, "Oak Stairs"));
self::register(new WoodenStairs(Block::SPRUCE_STAIRS, 0, "Spruce Stairs"));
foreach(TreeType::getAll() as $treeType){
$magicNumber = $treeType->getMagicNumber();
$name = $treeType->getDisplayName();
self::registerBlock(new Planks(Block::PLANKS, $magicNumber, $name . " Planks"));
self::registerBlock(new Sapling(Block::SAPLING, $magicNumber, $treeType, $name . " Sapling"));
self::registerBlock(new WoodenFence(Block::FENCE, $magicNumber, $name . " Fence"));
self::register(new Planks(Block::PLANKS, $magicNumber, $name . " Planks"));
self::register(new Sapling(Block::SAPLING, $magicNumber, $treeType, $name . " Sapling"));
self::register(new WoodenFence(Block::FENCE, $magicNumber, $name . " Fence"));
//TODO: find a better way to deal with this split
self::registerBlock(new Leaves($magicNumber >= 4 ? Block::LEAVES2 : Block::LEAVES, $magicNumber & 0x03, $treeType, $name . " Leaves"));
self::registerBlock(new Log($magicNumber >= 4 ? Block::WOOD2 : Block::WOOD, $magicNumber & 0x03, $treeType, $name . " Log"));
self::registerBlock(new Wood($magicNumber >= 4 ? Block::WOOD2 : Block::WOOD, ($magicNumber & 0x03) | 0b1100, $treeType, $name . " Wood"));
self::register(new Leaves($magicNumber >= 4 ? Block::LEAVES2 : Block::LEAVES, $magicNumber & 0x03, $treeType, $name . " Leaves"));
self::register(new Log($magicNumber >= 4 ? Block::WOOD2 : Block::WOOD, $magicNumber & 0x03, $treeType, $name . " Log"));
self::register(new Wood($magicNumber >= 4 ? Block::WOOD2 : Block::WOOD, ($magicNumber & 0x03) | 0b1100, $treeType, $name . " Wood"));
}
static $sandstoneTypes = [
@ -335,20 +335,20 @@ class BlockFactory{
Sandstone::SMOOTH => "Smooth "
];
foreach($sandstoneTypes as $variant => $prefix){
self::registerBlock(new Sandstone(Block::SANDSTONE, $variant, $prefix . "Sandstone"));
self::registerBlock(new Sandstone(Block::RED_SANDSTONE, $variant, $prefix . "Red Sandstone"));
self::register(new Sandstone(Block::SANDSTONE, $variant, $prefix . "Sandstone"));
self::register(new Sandstone(Block::RED_SANDSTONE, $variant, $prefix . "Red Sandstone"));
}
foreach(DyeColor::getAll() as $color){
self::registerBlock(new Carpet(Block::CARPET, $color->getMagicNumber(), $color->getDisplayName() . " Carpet"));
self::registerBlock(new Concrete(Block::CONCRETE, $color->getMagicNumber(), $color->getDisplayName() . " Concrete"));
self::registerBlock(new ConcretePowder(Block::CONCRETE_POWDER, $color->getMagicNumber(), $color->getDisplayName() . " Concrete Powder"));
self::registerBlock(new Glass(Block::STAINED_GLASS, $color->getMagicNumber(), $color->getDisplayName() . " Stained Glass"));
self::registerBlock(new GlassPane(Block::STAINED_GLASS_PANE, $color->getMagicNumber(), $color->getDisplayName() . " Stained Glass Pane"));
self::registerBlock(new HardenedClay(Block::STAINED_CLAY, $color->getMagicNumber(), $color->getDisplayName() . " Stained Clay"));
self::registerBlock(new HardenedGlass(Block::HARD_STAINED_GLASS, $color->getMagicNumber(), "Hardened " . $color->getDisplayName() . " Stained Glass"));
self::registerBlock(new HardenedGlassPane(Block::HARD_STAINED_GLASS_PANE, $color->getMagicNumber(), "Hardened " . $color->getDisplayName() . " Stained Glass Pane"));
self::registerBlock(new Wool(Block::WOOL, $color->getMagicNumber(), $color->getDisplayName() . " Wool"));
self::register(new Carpet(Block::CARPET, $color->getMagicNumber(), $color->getDisplayName() . " Carpet"));
self::register(new Concrete(Block::CONCRETE, $color->getMagicNumber(), $color->getDisplayName() . " Concrete"));
self::register(new ConcretePowder(Block::CONCRETE_POWDER, $color->getMagicNumber(), $color->getDisplayName() . " Concrete Powder"));
self::register(new Glass(Block::STAINED_GLASS, $color->getMagicNumber(), $color->getDisplayName() . " Stained Glass"));
self::register(new GlassPane(Block::STAINED_GLASS_PANE, $color->getMagicNumber(), $color->getDisplayName() . " Stained Glass Pane"));
self::register(new HardenedClay(Block::STAINED_CLAY, $color->getMagicNumber(), $color->getDisplayName() . " Stained Clay"));
self::register(new HardenedGlass(Block::HARD_STAINED_GLASS, $color->getMagicNumber(), "Hardened " . $color->getDisplayName() . " Stained Glass"));
self::register(new HardenedGlassPane(Block::HARD_STAINED_GLASS_PANE, $color->getMagicNumber(), "Hardened " . $color->getDisplayName() . " Stained Glass Pane"));
self::register(new Wool(Block::WOOL, $color->getMagicNumber(), $color->getDisplayName() . " Wool"));
}
/** @var Slab[] $slabTypes */
@ -374,8 +374,8 @@ class BlockFactory{
$slabTypes[] = new WoodenSlab(Block::WOODEN_SLAB, Block::DOUBLE_WOODEN_SLAB, $woodType->getMagicNumber(), $woodType->getDisplayName());
}
foreach($slabTypes as $type){
self::registerBlock($type);
self::registerBlock((clone $type)->setSlabType(SlabType::double())); //flattening hack
self::register($type);
self::register((clone $type)->setSlabType(SlabType::double())); //flattening hack
}
static $wallTypes = [
@ -395,7 +395,7 @@ class BlockFactory{
CobblestoneWall::STONE_BRICK_WALL => "Stone Brick"
];
foreach($wallTypes as $magicNumber => $prefix){
self::registerBlock(new CobblestoneWall(Block::COBBLESTONE_WALL, $magicNumber, $prefix . " Wall"));
self::register(new CobblestoneWall(Block::COBBLESTONE_WALL, $magicNumber, $prefix . " Wall"));
}
//TODO: minecraft:acacia_button
@ -531,7 +531,7 @@ class BlockFactory{
* @throws \RuntimeException if something attempted to override an already-registered block without specifying the
* $override parameter.
*/
public static function registerBlock(Block $block, bool $override = false) : void{
public static function register(Block $block, bool $override = false) : void{
$id = $block->getId();
$variant = $block->getVariant();

View File

@ -53,226 +53,226 @@ class ItemFactory{
public static function init(){
self::$list = []; //in case of re-initializing
self::registerItem(new Shovel(Item::IRON_SHOVEL, "Iron Shovel", TieredTool::TIER_IRON));
self::registerItem(new Pickaxe(Item::IRON_PICKAXE, "Iron Pickaxe", TieredTool::TIER_IRON));
self::registerItem(new Axe(Item::IRON_AXE, "Iron Axe", TieredTool::TIER_IRON));
self::registerItem(new FlintSteel());
self::registerItem(new Apple());
self::registerItem(new Bow());
self::registerItem(new Arrow());
self::registerItem(new Coal(Item::COAL, 0, "Coal"));
self::registerItem(new Coal(Item::COAL, 1, "Charcoal"));
self::registerItem(new Item(Item::DIAMOND, 0, "Diamond"));
self::registerItem(new Item(Item::IRON_INGOT, 0, "Iron Ingot"));
self::registerItem(new Item(Item::GOLD_INGOT, 0, "Gold Ingot"));
self::registerItem(new Sword(Item::IRON_SWORD, "Iron Sword", TieredTool::TIER_IRON));
self::registerItem(new Sword(Item::WOODEN_SWORD, "Wooden Sword", TieredTool::TIER_WOODEN));
self::registerItem(new Shovel(Item::WOODEN_SHOVEL, "Wooden Shovel", TieredTool::TIER_WOODEN));
self::registerItem(new Pickaxe(Item::WOODEN_PICKAXE, "Wooden Pickaxe", TieredTool::TIER_WOODEN));
self::registerItem(new Axe(Item::WOODEN_AXE, "Wooden Axe", TieredTool::TIER_WOODEN));
self::registerItem(new Sword(Item::STONE_SWORD, "Stone Sword", TieredTool::TIER_STONE));
self::registerItem(new Shovel(Item::STONE_SHOVEL, "Stone Shovel", TieredTool::TIER_STONE));
self::registerItem(new Pickaxe(Item::STONE_PICKAXE, "Stone Pickaxe", TieredTool::TIER_STONE));
self::registerItem(new Axe(Item::STONE_AXE, "Stone Axe", TieredTool::TIER_STONE));
self::registerItem(new Sword(Item::DIAMOND_SWORD, "Diamond Sword", TieredTool::TIER_DIAMOND));
self::registerItem(new Shovel(Item::DIAMOND_SHOVEL, "Diamond Shovel", TieredTool::TIER_DIAMOND));
self::registerItem(new Pickaxe(Item::DIAMOND_PICKAXE, "Diamond Pickaxe", TieredTool::TIER_DIAMOND));
self::registerItem(new Axe(Item::DIAMOND_AXE, "Diamond Axe", TieredTool::TIER_DIAMOND));
self::registerItem(new Stick());
self::registerItem(new Bowl());
self::registerItem(new MushroomStew());
self::registerItem(new Sword(Item::GOLDEN_SWORD, "Gold Sword", TieredTool::TIER_GOLD));
self::registerItem(new Shovel(Item::GOLDEN_SHOVEL, "Gold Shovel", TieredTool::TIER_GOLD));
self::registerItem(new Pickaxe(Item::GOLDEN_PICKAXE, "Gold Pickaxe", TieredTool::TIER_GOLD));
self::registerItem(new Axe(Item::GOLDEN_AXE, "Gold Axe", TieredTool::TIER_GOLD));
self::registerItem(new StringItem());
self::registerItem(new Item(Item::FEATHER, 0, "Feather"));
self::registerItem(new Item(Item::GUNPOWDER, 0, "Gunpowder"));
self::registerItem(new Hoe(Item::WOODEN_HOE, "Wooden Hoe", TieredTool::TIER_WOODEN));
self::registerItem(new Hoe(Item::STONE_HOE, "Stone Hoe", TieredTool::TIER_STONE));
self::registerItem(new Hoe(Item::IRON_HOE, "Iron Hoe", TieredTool::TIER_IRON));
self::registerItem(new Hoe(Item::DIAMOND_HOE, "Diamond Hoe", TieredTool::TIER_DIAMOND));
self::registerItem(new Hoe(Item::GOLDEN_HOE, "Golden Hoe", TieredTool::TIER_GOLD));
self::registerItem(new WheatSeeds());
self::registerItem(new Item(Item::WHEAT, 0, "Wheat"));
self::registerItem(new Bread());
self::registerItem(new LeatherCap());
self::registerItem(new LeatherTunic());
self::registerItem(new LeatherPants());
self::registerItem(new LeatherBoots());
self::registerItem(new ChainHelmet());
self::registerItem(new ChainChestplate());
self::registerItem(new ChainLeggings());
self::registerItem(new ChainBoots());
self::registerItem(new IronHelmet());
self::registerItem(new IronChestplate());
self::registerItem(new IronLeggings());
self::registerItem(new IronBoots());
self::registerItem(new DiamondHelmet());
self::registerItem(new DiamondChestplate());
self::registerItem(new DiamondLeggings());
self::registerItem(new DiamondBoots());
self::registerItem(new GoldHelmet());
self::registerItem(new GoldChestplate());
self::registerItem(new GoldLeggings());
self::registerItem(new GoldBoots());
self::registerItem(new Item(Item::FLINT, 0, "Flint"));
self::registerItem(new RawPorkchop());
self::registerItem(new CookedPorkchop());
self::registerItem(new PaintingItem());
self::registerItem(new GoldenApple());
self::registerItem(new Sign());
self::registerItem(new ItemBlock(Block::OAK_DOOR_BLOCK, 0, Item::OAK_DOOR));
self::register(new Shovel(Item::IRON_SHOVEL, "Iron Shovel", TieredTool::TIER_IRON));
self::register(new Pickaxe(Item::IRON_PICKAXE, "Iron Pickaxe", TieredTool::TIER_IRON));
self::register(new Axe(Item::IRON_AXE, "Iron Axe", TieredTool::TIER_IRON));
self::register(new FlintSteel());
self::register(new Apple());
self::register(new Bow());
self::register(new Arrow());
self::register(new Coal(Item::COAL, 0, "Coal"));
self::register(new Coal(Item::COAL, 1, "Charcoal"));
self::register(new Item(Item::DIAMOND, 0, "Diamond"));
self::register(new Item(Item::IRON_INGOT, 0, "Iron Ingot"));
self::register(new Item(Item::GOLD_INGOT, 0, "Gold Ingot"));
self::register(new Sword(Item::IRON_SWORD, "Iron Sword", TieredTool::TIER_IRON));
self::register(new Sword(Item::WOODEN_SWORD, "Wooden Sword", TieredTool::TIER_WOODEN));
self::register(new Shovel(Item::WOODEN_SHOVEL, "Wooden Shovel", TieredTool::TIER_WOODEN));
self::register(new Pickaxe(Item::WOODEN_PICKAXE, "Wooden Pickaxe", TieredTool::TIER_WOODEN));
self::register(new Axe(Item::WOODEN_AXE, "Wooden Axe", TieredTool::TIER_WOODEN));
self::register(new Sword(Item::STONE_SWORD, "Stone Sword", TieredTool::TIER_STONE));
self::register(new Shovel(Item::STONE_SHOVEL, "Stone Shovel", TieredTool::TIER_STONE));
self::register(new Pickaxe(Item::STONE_PICKAXE, "Stone Pickaxe", TieredTool::TIER_STONE));
self::register(new Axe(Item::STONE_AXE, "Stone Axe", TieredTool::TIER_STONE));
self::register(new Sword(Item::DIAMOND_SWORD, "Diamond Sword", TieredTool::TIER_DIAMOND));
self::register(new Shovel(Item::DIAMOND_SHOVEL, "Diamond Shovel", TieredTool::TIER_DIAMOND));
self::register(new Pickaxe(Item::DIAMOND_PICKAXE, "Diamond Pickaxe", TieredTool::TIER_DIAMOND));
self::register(new Axe(Item::DIAMOND_AXE, "Diamond Axe", TieredTool::TIER_DIAMOND));
self::register(new Stick());
self::register(new Bowl());
self::register(new MushroomStew());
self::register(new Sword(Item::GOLDEN_SWORD, "Gold Sword", TieredTool::TIER_GOLD));
self::register(new Shovel(Item::GOLDEN_SHOVEL, "Gold Shovel", TieredTool::TIER_GOLD));
self::register(new Pickaxe(Item::GOLDEN_PICKAXE, "Gold Pickaxe", TieredTool::TIER_GOLD));
self::register(new Axe(Item::GOLDEN_AXE, "Gold Axe", TieredTool::TIER_GOLD));
self::register(new StringItem());
self::register(new Item(Item::FEATHER, 0, "Feather"));
self::register(new Item(Item::GUNPOWDER, 0, "Gunpowder"));
self::register(new Hoe(Item::WOODEN_HOE, "Wooden Hoe", TieredTool::TIER_WOODEN));
self::register(new Hoe(Item::STONE_HOE, "Stone Hoe", TieredTool::TIER_STONE));
self::register(new Hoe(Item::IRON_HOE, "Iron Hoe", TieredTool::TIER_IRON));
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 WheatSeeds());
self::register(new Item(Item::WHEAT, 0, "Wheat"));
self::register(new Bread());
self::register(new LeatherCap());
self::register(new LeatherTunic());
self::register(new LeatherPants());
self::register(new LeatherBoots());
self::register(new ChainHelmet());
self::register(new ChainChestplate());
self::register(new ChainLeggings());
self::register(new ChainBoots());
self::register(new IronHelmet());
self::register(new IronChestplate());
self::register(new IronLeggings());
self::register(new IronBoots());
self::register(new DiamondHelmet());
self::register(new DiamondChestplate());
self::register(new DiamondLeggings());
self::register(new DiamondBoots());
self::register(new GoldHelmet());
self::register(new GoldChestplate());
self::register(new GoldLeggings());
self::register(new GoldBoots());
self::register(new Item(Item::FLINT, 0, "Flint"));
self::register(new RawPorkchop());
self::register(new CookedPorkchop());
self::register(new PaintingItem());
self::register(new GoldenApple());
self::register(new Sign());
self::register(new ItemBlock(Block::OAK_DOOR_BLOCK, 0, Item::OAK_DOOR));
//TODO: fix metadata for buckets with still liquid in them
//the meta values are intentionally hardcoded because block IDs will change in the future
self::registerItem(new Bucket(Item::BUCKET, 0, "Bucket"));
self::registerItem(new MilkBucket(Item::BUCKET, 1, "Milk Bucket"));
self::registerItem(new LiquidBucket(Item::BUCKET, 8, "Water Bucket", Block::FLOWING_WATER));
self::registerItem(new LiquidBucket(Item::BUCKET, 10, "Lava Bucket", Block::FLOWING_LAVA));
self::register(new Bucket(Item::BUCKET, 0, "Bucket"));
self::register(new MilkBucket(Item::BUCKET, 1, "Milk Bucket"));
self::register(new LiquidBucket(Item::BUCKET, 8, "Water Bucket", Block::FLOWING_WATER));
self::register(new LiquidBucket(Item::BUCKET, 10, "Lava Bucket", Block::FLOWING_LAVA));
self::registerItem(new Minecart());
self::register(new Minecart());
self::registerItem(new ItemBlock(Block::IRON_DOOR_BLOCK, 0, Item::IRON_DOOR));
self::registerItem(new Redstone());
self::registerItem(new Snowball());
self::register(new ItemBlock(Block::IRON_DOOR_BLOCK, 0, Item::IRON_DOOR));
self::register(new Redstone());
self::register(new Snowball());
self::registerItem(new Boat());
self::registerItem(new Item(Item::LEATHER, 0, "Leather"));
self::register(new Boat());
self::register(new Item(Item::LEATHER, 0, "Leather"));
self::registerItem(new Item(Item::BRICK, 0, "Brick"));
self::registerItem(new Item(Item::CLAY_BALL, 0, "Clay"));
self::registerItem(new ItemBlock(Block::SUGARCANE_BLOCK, 0, Item::SUGARCANE));
self::registerItem(new Item(Item::PAPER, 0, "Paper"));
self::registerItem(new Book());
self::registerItem(new Item(Item::SLIME_BALL, 0, "Slimeball"));
self::register(new Item(Item::BRICK, 0, "Brick"));
self::register(new Item(Item::CLAY_BALL, 0, "Clay"));
self::register(new ItemBlock(Block::SUGARCANE_BLOCK, 0, Item::SUGARCANE));
self::register(new Item(Item::PAPER, 0, "Paper"));
self::register(new Book());
self::register(new Item(Item::SLIME_BALL, 0, "Slimeball"));
self::registerItem(new Egg());
self::registerItem(new Compass());
self::registerItem(new FishingRod());
self::registerItem(new Clock());
self::registerItem(new Item(Item::GLOWSTONE_DUST, 0, "Glowstone Dust"));
self::registerItem(new RawFish());
self::registerItem(new CookedFish());
self::register(new Egg());
self::register(new Compass());
self::register(new FishingRod());
self::register(new Clock());
self::register(new Item(Item::GLOWSTONE_DUST, 0, "Glowstone Dust"));
self::register(new RawFish());
self::register(new CookedFish());
foreach(DyeColor::getAll() as $color){
//TODO: use colour object directly
//TODO: add interface to dye-colour objects
//TODO: new dedicated dyes
self::registerItem(new Dye($color->getInvertedMagicNumber(), $color->getDisplayName() . " Dye"));
self::registerItem(new Bed($color->getMagicNumber(), $color->getDisplayName() . " Bed"));
self::registerItem(new Banner($color->getInvertedMagicNumber(), $color->getDisplayName() . " Banner"));
self::register(new Dye($color->getInvertedMagicNumber(), $color->getDisplayName() . " Dye"));
self::register(new Bed($color->getMagicNumber(), $color->getDisplayName() . " Bed"));
self::register(new Banner($color->getInvertedMagicNumber(), $color->getDisplayName() . " Banner"));
}
self::registerItem(new Item(Item::BONE, 0, "Bone"));
self::registerItem(new Item(Item::SUGAR, 0, "Sugar"));
self::registerItem(new ItemBlock(Block::CAKE_BLOCK, 0, Item::CAKE));
self::register(new Item(Item::BONE, 0, "Bone"));
self::register(new Item(Item::SUGAR, 0, "Sugar"));
self::register(new ItemBlock(Block::CAKE_BLOCK, 0, Item::CAKE));
self::registerItem(new ItemBlock(Block::REPEATER_BLOCK, 0, Item::REPEATER));
self::registerItem(new Cookie());
self::register(new ItemBlock(Block::REPEATER_BLOCK, 0, Item::REPEATER));
self::register(new Cookie());
self::registerItem(new Shears());
self::registerItem(new Melon());
self::registerItem(new PumpkinSeeds());
self::registerItem(new MelonSeeds());
self::registerItem(new RawBeef());
self::registerItem(new Steak());
self::registerItem(new RawChicken());
self::registerItem(new CookedChicken());
self::registerItem(new RottenFlesh());
self::registerItem(new EnderPearl());
self::registerItem(new BlazeRod());
self::registerItem(new Item(Item::GHAST_TEAR, 0, "Ghast Tear"));
self::registerItem(new Item(Item::GOLD_NUGGET, 0, "Gold Nugget"));
self::registerItem(new ItemBlock(Block::NETHER_WART_PLANT, 0, Item::NETHER_WART));
self::register(new Shears());
self::register(new Melon());
self::register(new PumpkinSeeds());
self::register(new MelonSeeds());
self::register(new RawBeef());
self::register(new Steak());
self::register(new RawChicken());
self::register(new CookedChicken());
self::register(new RottenFlesh());
self::register(new EnderPearl());
self::register(new BlazeRod());
self::register(new Item(Item::GHAST_TEAR, 0, "Ghast Tear"));
self::register(new Item(Item::GOLD_NUGGET, 0, "Gold Nugget"));
self::register(new ItemBlock(Block::NETHER_WART_PLANT, 0, Item::NETHER_WART));
foreach(Potion::ALL as $type){
self::registerItem(new Potion($type));
self::registerItem(new SplashPotion($type));
self::register(new Potion($type));
self::register(new SplashPotion($type));
}
self::registerItem(new GlassBottle());
self::registerItem(new SpiderEye());
self::registerItem(new Item(Item::FERMENTED_SPIDER_EYE, 0, "Fermented Spider Eye"));
self::registerItem(new Item(Item::BLAZE_POWDER, 0, "Blaze Powder"));
self::registerItem(new Item(Item::MAGMA_CREAM, 0, "Magma Cream"));
self::registerItem(new ItemBlock(Block::BREWING_STAND_BLOCK, 0, Item::BREWING_STAND));
self::registerItem(new ItemBlock(Block::CAULDRON_BLOCK, 0, Item::CAULDRON));
self::register(new GlassBottle());
self::register(new SpiderEye());
self::register(new Item(Item::FERMENTED_SPIDER_EYE, 0, "Fermented Spider Eye"));
self::register(new Item(Item::BLAZE_POWDER, 0, "Blaze Powder"));
self::register(new Item(Item::MAGMA_CREAM, 0, "Magma Cream"));
self::register(new ItemBlock(Block::BREWING_STAND_BLOCK, 0, Item::BREWING_STAND));
self::register(new ItemBlock(Block::CAULDRON_BLOCK, 0, Item::CAULDRON));
self::registerItem(new Item(Item::GLISTERING_MELON, 0, "Glistering Melon"));
self::register(new Item(Item::GLISTERING_MELON, 0, "Glistering Melon"));
foreach(EntityFactory::getKnownTypes() as $className){
/** @var Living|string $className */
if(is_a($className, Living::class, true) and $className::NETWORK_ID !== -1){
self::registerItem(new SpawnEgg(Item::SPAWN_EGG, $className::NETWORK_ID, $className, "Spawn Egg"));
self::register(new SpawnEgg(Item::SPAWN_EGG, $className::NETWORK_ID, $className, "Spawn Egg"));
}
}
self::registerItem(new ExperienceBottle());
self::register(new ExperienceBottle());
self::registerItem(new WritableBook());
self::registerItem(new WrittenBook());
self::registerItem(new Item(Item::EMERALD, 0, "Emerald"));
self::registerItem(new ItemBlock(Block::ITEM_FRAME_BLOCK, 0, Item::ITEM_FRAME));
self::registerItem(new ItemBlock(Block::FLOWER_POT_BLOCK, 0, Item::FLOWER_POT));
self::registerItem(new Carrot());
self::registerItem(new Potato());
self::registerItem(new BakedPotato());
self::registerItem(new PoisonousPotato());
self::register(new WritableBook());
self::register(new WrittenBook());
self::register(new Item(Item::EMERALD, 0, "Emerald"));
self::register(new ItemBlock(Block::ITEM_FRAME_BLOCK, 0, Item::ITEM_FRAME));
self::register(new ItemBlock(Block::FLOWER_POT_BLOCK, 0, Item::FLOWER_POT));
self::register(new Carrot());
self::register(new Potato());
self::register(new BakedPotato());
self::register(new PoisonousPotato());
self::registerItem(new GoldenCarrot());
self::register(new GoldenCarrot());
self::registerItem(new ItemBlock(Block::SKULL_BLOCK, Skull::TYPE_SKELETON, Item::SKULL));
self::registerItem(new ItemBlock(Block::SKULL_BLOCK, Skull::TYPE_WITHER, Item::SKULL));
self::registerItem(new ItemBlock(Block::SKULL_BLOCK, Skull::TYPE_ZOMBIE, Item::SKULL));
self::registerItem(new ItemBlock(Block::SKULL_BLOCK, Skull::TYPE_HUMAN, Item::SKULL));
self::registerItem(new ItemBlock(Block::SKULL_BLOCK, Skull::TYPE_CREEPER, Item::SKULL));
self::registerItem(new ItemBlock(Block::SKULL_BLOCK, Skull::TYPE_DRAGON, Item::SKULL));
self::register(new ItemBlock(Block::SKULL_BLOCK, Skull::TYPE_SKELETON, Item::SKULL));
self::register(new ItemBlock(Block::SKULL_BLOCK, Skull::TYPE_WITHER, Item::SKULL));
self::register(new ItemBlock(Block::SKULL_BLOCK, Skull::TYPE_ZOMBIE, Item::SKULL));
self::register(new ItemBlock(Block::SKULL_BLOCK, Skull::TYPE_HUMAN, Item::SKULL));
self::register(new ItemBlock(Block::SKULL_BLOCK, Skull::TYPE_CREEPER, Item::SKULL));
self::register(new ItemBlock(Block::SKULL_BLOCK, Skull::TYPE_DRAGON, Item::SKULL));
self::registerItem(new Item(Item::NETHER_STAR, 0, "Nether Star"));
self::registerItem(new PumpkinPie());
self::register(new Item(Item::NETHER_STAR, 0, "Nether Star"));
self::register(new PumpkinPie());
self::registerItem(new ItemBlock(Block::COMPARATOR_BLOCK, 0, Item::COMPARATOR));
self::registerItem(new Item(Item::NETHER_BRICK, 0, "Nether Brick"));
self::registerItem(new Item(Item::NETHER_QUARTZ, 0, "Nether Quartz"));
self::register(new ItemBlock(Block::COMPARATOR_BLOCK, 0, Item::COMPARATOR));
self::register(new Item(Item::NETHER_BRICK, 0, "Nether Brick"));
self::register(new Item(Item::NETHER_QUARTZ, 0, "Nether Quartz"));
self::registerItem(new Item(Item::PRISMARINE_SHARD, 0, "Prismarine Shard"));
self::registerItem(new ItemBlock(Block::HOPPER_BLOCK, 0, Item::HOPPER));
self::registerItem(new RawRabbit());
self::registerItem(new CookedRabbit());
self::registerItem(new RabbitStew());
self::registerItem(new Item(Item::RABBIT_FOOT, 0, "Rabbit's Foot"));
self::registerItem(new Item(Item::RABBIT_HIDE, 0, "Rabbit Hide"));
self::register(new Item(Item::PRISMARINE_SHARD, 0, "Prismarine Shard"));
self::register(new ItemBlock(Block::HOPPER_BLOCK, 0, Item::HOPPER));
self::register(new RawRabbit());
self::register(new CookedRabbit());
self::register(new RabbitStew());
self::register(new Item(Item::RABBIT_FOOT, 0, "Rabbit's Foot"));
self::register(new Item(Item::RABBIT_HIDE, 0, "Rabbit Hide"));
self::registerItem(new Item(Item::PRISMARINE_CRYSTALS, 0, "Prismarine Crystals"));
self::registerItem(new RawMutton());
self::registerItem(new CookedMutton());
self::register(new Item(Item::PRISMARINE_CRYSTALS, 0, "Prismarine Crystals"));
self::register(new RawMutton());
self::register(new CookedMutton());
self::registerItem(new ItemBlock(Block::SPRUCE_DOOR_BLOCK, 0, Item::SPRUCE_DOOR));
self::registerItem(new ItemBlock(Block::BIRCH_DOOR_BLOCK, 0, Item::BIRCH_DOOR));
self::registerItem(new ItemBlock(Block::JUNGLE_DOOR_BLOCK, 0, Item::JUNGLE_DOOR));
self::registerItem(new ItemBlock(Block::ACACIA_DOOR_BLOCK, 0, Item::ACACIA_DOOR));
self::registerItem(new ItemBlock(Block::DARK_OAK_DOOR_BLOCK, 0, Item::DARK_OAK_DOOR));
self::registerItem(new ChorusFruit());
self::registerItem(new Item(Item::CHORUS_FRUIT_POPPED, 0, "Popped Chorus Fruit"));
self::register(new ItemBlock(Block::SPRUCE_DOOR_BLOCK, 0, Item::SPRUCE_DOOR));
self::register(new ItemBlock(Block::BIRCH_DOOR_BLOCK, 0, Item::BIRCH_DOOR));
self::register(new ItemBlock(Block::JUNGLE_DOOR_BLOCK, 0, Item::JUNGLE_DOOR));
self::register(new ItemBlock(Block::ACACIA_DOOR_BLOCK, 0, Item::ACACIA_DOOR));
self::register(new ItemBlock(Block::DARK_OAK_DOOR_BLOCK, 0, Item::DARK_OAK_DOOR));
self::register(new ChorusFruit());
self::register(new Item(Item::CHORUS_FRUIT_POPPED, 0, "Popped Chorus Fruit"));
self::registerItem(new Item(Item::DRAGON_BREATH, 0, "Dragon's Breath"));
self::register(new Item(Item::DRAGON_BREATH, 0, "Dragon's Breath"));
self::registerItem(new Item(Item::SHULKER_SHELL, 0, "Shulker Shell"));
self::register(new Item(Item::SHULKER_SHELL, 0, "Shulker Shell"));
self::registerItem(new Totem());
self::registerItem(new Item(Item::BLEACH, 0, "Bleach")); //EDU
self::registerItem(new Item(Item::IRON_NUGGET, 0, "Iron Nugget"));
self::register(new Totem());
self::register(new Item(Item::BLEACH, 0, "Bleach")); //EDU
self::register(new Item(Item::IRON_NUGGET, 0, "Iron Nugget"));
self::registerItem(new Beetroot());
self::registerItem(new BeetrootSeeds());
self::registerItem(new BeetrootSoup());
self::registerItem(new RawSalmon());
self::registerItem(new Clownfish());
self::registerItem(new Pufferfish());
self::registerItem(new CookedSalmon());
self::registerItem(new DriedKelp());
self::registerItem(new Item(Item::NAUTILUS_SHELL, 0, "Nautilus Shell"));
self::registerItem(new GoldenAppleEnchanted());
self::registerItem(new Item(Item::HEART_OF_THE_SEA, 0, "Heart of the Sea"));
self::registerItem(new Item(Item::TURTLE_SHELL_PIECE, 0, "Scute"));
self::register(new Beetroot());
self::register(new BeetrootSeeds());
self::register(new BeetrootSoup());
self::register(new RawSalmon());
self::register(new Clownfish());
self::register(new Pufferfish());
self::register(new CookedSalmon());
self::register(new DriedKelp());
self::register(new Item(Item::NAUTILUS_SHELL, 0, "Nautilus Shell"));
self::register(new GoldenAppleEnchanted());
self::register(new Item(Item::HEART_OF_THE_SEA, 0, "Heart of the Sea"));
self::register(new Item(Item::TURTLE_SHELL_PIECE, 0, "Scute"));
//TODO: minecraft:acacia_sign
//TODO: minecraft:armor_stand
@ -342,7 +342,7 @@ class ItemFactory{
* @throws \RuntimeException if something attempted to override an already-registered item without specifying the
* $override parameter.
*/
public static function registerItem(Item $item, bool $override = false){
public static function register(Item $item, bool $override = false){
$id = $item->getId();
$variant = $item->getDamage();