Added creative mode block list API

This commit is contained in:
Shoghi Cervantes 2015-04-17 18:01:10 +02:00
parent 5b10ccf431
commit 08a612954e
3 changed files with 355 additions and 311 deletions

View File

@ -1003,8 +1003,8 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{
}else{
$pk = new ContainerSetContentPacket();
$pk->windowid = ContainerSetContentPacket::SPECIAL_CREATIVE;
foreach(Block::$creative as $item){
$pk->slots[] = Item::get($item[0], $item[1]); //TODO: change this for plugins
foreach(Item::getCreativeItems() as $item){
$pk->slots[] = clone $item;
}
$this->dataPacket($pk->setChannel(Network::CHANNEL_WORLD_EVENTS));
}
@ -1090,16 +1090,6 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{
return [];
}
protected function getCreativeBlock(Item $item){
foreach(Block::$creative as $i => $d){
if($d[0] === $item->getId() and ($item->isTool() or $d[1] === $item->getDamage())){
return $i;
}
}
return -1;
}
public function addEntityMotion($entityId, $x, $y, $z){
$this->motionToSend[$entityId] = [$entityId, $x, $y, $z];
}
@ -1613,8 +1603,8 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{
}else{
$pk = new ContainerSetContentPacket();
$pk->windowid = ContainerSetContentPacket::SPECIAL_CREATIVE;
foreach(Block::$creative as $item){
$pk->slots[] = Item::get($item[0], $item[1]); //TODO: change this for plugins
foreach(Item::getCreativeItems() as $item){
$pk->slots[] = clone $item;
}
$this->dataPacket($pk->setChannel(Network::CHANNEL_PRIORITY));
}
@ -1670,7 +1660,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{
if($this->isCreative()){ //Creative mode match
$item = Item::get($packet->item, $packet->meta, 1);
$slot = $this->getCreativeBlock($item);
$slot = Item::getCreativeItemIndex($item);
}else{
$item = $this->inventory->getItem($packet->slot);
$slot = $packet->slot;
@ -1704,11 +1694,6 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{
$this->inventory->sendContents($this);
break;
}elseif($this->isCreative()){
$item = Item::get(
Block::$creative[$slot][0],
Block::$creative[$slot][1],
1
);
$this->inventory->setHeldItemIndex($packet->slot);
}else{
if($packet->selectedSlot >= 0 and $packet->selectedSlot < 9){
@ -2350,7 +2335,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{
break;
}
if($this->isCreative()){
if($this->getCreativeBlock($packet->item) !== -1){
if(Item::getCreativeItemIndex($packet->item) !== -1){
$this->inventory->setItem($packet->slot, $packet->item);
$this->inventory->setHotbarSlotIndex($packet->slot, $packet->slot); //links $hotbar[$packet->slot] to $slots[$packet->slot]
}

View File

@ -247,296 +247,6 @@ class Block extends Position implements Metadatable{
const GLOWING_OBSIDIAN = 246;
const NETHER_REACTOR = 247;
public static $creative = [ //TODO: make this available to plugins
//Building
[Item::COBBLESTONE, 0],
[Item::STONE_BRICKS, 0],
[Item::STONE_BRICKS, 1],
[Item::STONE_BRICKS, 2],
[Item::STONE_BRICKS, 3],
[Item::MOSS_STONE, 0],
[Item::WOODEN_PLANKS, 0],
[Item::WOODEN_PLANKS, 1],
[Item::WOODEN_PLANKS, 2],
[Item::WOODEN_PLANKS, 3],
[Item::WOODEN_PLANKS, 4],
[Item::WOODEN_PLANKS, 5],
[Item::BRICKS, 0],
[Item::STONE, 0],
[Item::STONE, 1],
[Item::STONE, 2],
[Item::STONE, 3],
[Item::STONE, 4],
[Item::STONE, 5],
[Item::STONE, 6],
[Item::DIRT, 0],
[Item::PODZOL, 0],
[Item::GRASS, 0],
[Item::MYCELIUM, 0],
[Item::CLAY_BLOCK, 0],
[Item::HARDENED_CLAY, 0],
[Item::STAINED_CLAY, 0],
[Item::STAINED_CLAY, 7],
[Item::STAINED_CLAY, 6],
[Item::STAINED_CLAY, 5],
[Item::STAINED_CLAY, 4],
[Item::STAINED_CLAY, 3],
[Item::STAINED_CLAY, 2],
[Item::STAINED_CLAY, 1],
[Item::STAINED_CLAY, 15],
[Item::STAINED_CLAY, 14],
[Item::STAINED_CLAY, 13],
[Item::STAINED_CLAY, 12],
[Item::STAINED_CLAY, 11],
[Item::STAINED_CLAY, 10],
[Item::STAINED_CLAY, 9],
[Item::STAINED_CLAY, 8],
[Item::SANDSTONE, 0],
[Item::SANDSTONE, 1],
[Item::SANDSTONE, 2],
[Item::SAND, 0],
[Item::SAND, 1],
[Item::GRAVEL, 0],
[Item::TRUNK, 0],
[Item::TRUNK, 1],
[Item::TRUNK, 2],
[Item::TRUNK, 3],
[Item::TRUNK2, 0],
[Item::TRUNK2, 1],
[Item::NETHER_BRICKS, 0],
[Item::NETHERRACK, 0],
[Item::BEDROCK, 0],
[Item::COBBLESTONE_STAIRS, 0],
[Item::OAK_WOODEN_STAIRS, 0],
[Item::SPRUCE_WOODEN_STAIRS, 0],
[Item::BIRCH_WOODEN_STAIRS, 0],
[Item::JUNGLE_WOODEN_STAIRS, 0],
[Item::ACACIA_WOODEN_STAIRS, 0],
[Item::DARK_OAK_WOODEN_STAIRS, 0],
[Item::BRICK_STAIRS, 0],
[Item::SANDSTONE_STAIRS, 0],
[Item::STONE_BRICK_STAIRS, 0],
[Item::NETHER_BRICKS_STAIRS, 0],
[Item::QUARTZ_STAIRS, 0],
[Item::SLAB, 0],
[Item::SLAB, 1],
[Item::WOODEN_SLAB, 0],
[Item::WOODEN_SLAB, 1],
[Item::WOODEN_SLAB, 2],
[Item::WOODEN_SLAB, 3],
[Item::WOODEN_SLAB, 4],
[Item::WOODEN_SLAB, 5],
[Item::SLAB, 3],
[Item::SLAB, 4],
[Item::SLAB, 5],
[Item::SLAB, 6],
[Item::QUARTZ_BLOCK, 0],
[Item::QUARTZ_BLOCK, 1],
[Item::QUARTZ_BLOCK, 2],
[Item::COAL_ORE, 0],
[Item::IRON_ORE, 0],
[Item::GOLD_ORE, 0],
[Item::DIAMOND_ORE, 0],
[Item::LAPIS_ORE, 0],
[Item::REDSTONE_ORE, 0],
[Item::EMERALD_ORE, 0],
[Item::OBSIDIAN, 0],
[Item::ICE, 0],
[Item::SNOW_BLOCK, 0],
[Item::END_STONE, 0],
//Decoration
[Item::COBBLESTONE_WALL, 0],
[Item::COBBLESTONE_WALL, 1],
//TODO: Lilly Pad
[Item::GOLD_BLOCK, 0],
[Item::IRON_BLOCK, 0],
[Item::DIAMOND_BLOCK, 0],
[Item::LAPIS_BLOCK, 0],
[Item::COAL_BLOCK, 0],
[Item::EMERALD_BLOCK, 0],
[Item::REDSTONE_BLOCK, 0],
[Item::SNOW_LAYER, 0],
[Item::GLASS, 0],
[Item::GLOWSTONE_BLOCK, 0],
[Item::VINES, 0],
[Item::NETHER_REACTOR, 0],
[Item::LADDER, 0],
[Item::SPONGE, 0],
[Item::GLASS_PANE, 0],
[Item::WOODEN_DOOR, 0],
[Item::TRAPDOOR, 0],
[Item::FENCE, 0],
[Item::FENCE, 1],
[Item::FENCE, 2],
[Item::FENCE, 3],
[Item::FENCE, 4],
[Item::FENCE, 5],
[Item::FENCE_GATE, 0],
[Item::FENCE_GATE_BIRCH, 0],
[Item::FENCE_GATE_SPRUCE, 0],
[Item::FENCE_GATE_DARK_OAK, 0],
[Item::FENCE_GATE_JUNGLE, 0],
[Item::FENCE_GATE_ACACIA, 0],
[Item::IRON_BARS, 0],
[Item::BED, 0],
[Item::BOOKSHELF, 0],
[Item::PAINTING, 0],
[Item::WORKBENCH, 0],
[Item::STONECUTTER, 0],
[Item::CHEST, 0],
[Item::FURNACE, 0],
[Item::END_PORTAL, 0],
[Item::DANDELION, 0],
[Item::POPPY, 0],
//TODO: blue orchid
//TODO: Allium
//TODO: Azure Bluet
//TODO: Red Tulip
//TODO: Orange Tulip
//TODO: White Tulip
//TODO: Pink Tulip
//TODO: Oxeye Daisy
//TODO: Lilac
//TODO: Double Tallgrass
//TODO: Large Fern
//TODO: Rose Bush
//TODO: Peony
[Item::BROWN_MUSHROOM, 0],
[Item::RED_MUSHROOM, 0],
//TODO: Mushroom block (brown, cover)
//TODO: Mushroom block (red, cover)
//TODO: Mushroom block (brown, stem)
//TODO: Mushroom block (red, stem)
[Item::CACTUS, 0],
[Item::MELON_BLOCK, 0],
[Item::PUMPKIN, 0],
[Item::LIT_PUMPKIN, 0],
[Item::COBWEB, 0],
[Item::HAY_BALE, 0],
[Item::TALL_GRASS, 1],
[Item::TALL_GRASS, 2],
[Item::DEAD_BUSH, 0],
[Item::SAPLING, 0],
[Item::SAPLING, 1],
[Item::SAPLING, 2],
[Item::SAPLING, 3],
[Item::SAPLING, 4],
[Item::SAPLING, 5],
[Item::LEAVES, 0],
[Item::LEAVES, 1],
[Item::LEAVES, 2],
[Item::LEAVES, 3],
[Item::LEAVES, 3],
[Item::LEAVES2, 0],
[Item::LEAVES2, 1],
[Item::CAKE, 0],
[Item::SIGN, 0],
[Item::MONSTER_SPAWNER, 0],
[Item::WOOL, 0],
[Item::WOOL, 7],
[Item::WOOL, 6],
[Item::WOOL, 5],
[Item::WOOL, 4],
[Item::WOOL, 3],
[Item::WOOL, 2],
[Item::WOOL, 1],
[Item::WOOL, 15],
[Item::WOOL, 14],
[Item::WOOL, 13],
[Item::WOOL, 12],
[Item::WOOL, 11],
[Item::WOOL, 10],
[Item::WOOL, 9],
[Item::WOOL, 8],
[Item::CARPET, 0],
[Item::CARPET, 7],
[Item::CARPET, 6],
[Item::CARPET, 5],
[Item::CARPET, 4],
[Item::CARPET, 3],
[Item::CARPET, 2],
[Item::CARPET, 1],
[Item::CARPET, 15],
[Item::CARPET, 14],
[Item::CARPET, 13],
[Item::CARPET, 12],
[Item::CARPET, 11],
[Item::CARPET, 10],
[Item::CARPET, 9],
[Item::CARPET, 8],
//Tools
//TODO [Item::RAILS, 0],
//TODO [Item::POWERED_RAILS, 0],
[Item::TORCH, 0],
[Item::BUCKET, 0],
[Item::BUCKET, 1],
[Item::BUCKET, 8],
[Item::BUCKET, 10],
[Item::TNT, 0],
[Item::IRON_HOE, 0],
[Item::IRON_SHOVEL,0],
[Item::IRON_SWORD, 0],
[Item::BOW, 0],
[Item::SHEARS, 0],
[Item::FLINT_AND_STEEL, 0],
[Item::CLOCK, 0],
[Item::COMPASS, 0],
[Item::MINECART, 0],
[Item::SPAWN_EGG, Villager::NETWORK_ID],
//[Item::SPAWN_EGG, 10], //Chicken
//[Item::SPAWN_EGG, 11], //Cow
//[Item::SPAWN_EGG, 12], //Pig
//[Item::SPAWN_EGG, 13], //Sheep
//TODO: Wolf
//TODO: Mooshroom
//TODO: Creeper
//TODO: Enderman
//TODO: Silverfish
//TODO: Skeleton
//TODO: Slime
[Item::SPAWN_EGG, Zombie::NETWORK_ID],
//TODO: PigZombie
[Item::SPAWN_EGG, Squid::NETWORK_ID],
//Seeds
[Item::SUGARCANE, 0],
[Item::WHEAT, 0],
[Item::SEEDS, 0],
[Item::MELON_SEEDS, 0],
[Item::PUMPKIN_SEEDS, 0],
[Item::CARROT, 0],
[Item::POTATO, 0],
[Item::BEETROOT_SEEDS, 0],
[Item::EGG, 0],
[Item::RAW_FISH, 0],
[Item::RAW_FISH, 1],
[Item::RAW_FISH, 2],
[Item::RAW_FISH, 3],
[Item::COOKED_FISH, 0],
[Item::COOKED_FISH, 1],
[Item::DYE, 0],
[Item::DYE, 7],
[Item::DYE, 6],
[Item::DYE, 5],
[Item::DYE, 4],
[Item::DYE, 3],
[Item::DYE, 2],
[Item::DYE, 1],
[Item::DYE, 15],
[Item::DYE, 14],
[Item::DYE, 13],
[Item::DYE, 12],
[Item::DYE, 11],
[Item::DYE, 10],
[Item::DYE, 9],
[Item::DYE, 8],
];
/** @var \SplFixedArray */
public static $list = null;
/** @var \SplFixedArray */

View File

@ -26,6 +26,9 @@ namespace pocketmine\item;
use pocketmine\block\Block;
use pocketmine\entity\Entity;
use pocketmine\entity\Squid;
use pocketmine\entity\Villager;
use pocketmine\entity\Zombie;
use pocketmine\inventory\Fuel;
use pocketmine\level\Level;
use pocketmine\Player;
@ -492,6 +495,352 @@ class Item{
}
}
}
self::initCreativeItems();
}
private static $creative = [];
private static function initCreativeItems(){
self::clearCreativeItems();
//Building
self::addCreativeItem(Item::get(Item::COBBLESTONE, 0));
self::addCreativeItem(Item::get(Item::STONE_BRICKS, 0));
self::addCreativeItem(Item::get(Item::STONE_BRICKS, 1));
self::addCreativeItem(Item::get(Item::STONE_BRICKS, 2));
self::addCreativeItem(Item::get(Item::STONE_BRICKS, 3));
self::addCreativeItem(Item::get(Item::MOSS_STONE, 0));
self::addCreativeItem(Item::get(Item::WOODEN_PLANKS, 0));
self::addCreativeItem(Item::get(Item::WOODEN_PLANKS, 1));
self::addCreativeItem(Item::get(Item::WOODEN_PLANKS, 2));
self::addCreativeItem(Item::get(Item::WOODEN_PLANKS, 3));
self::addCreativeItem(Item::get(Item::WOODEN_PLANKS, 4));
self::addCreativeItem(Item::get(Item::WOODEN_PLANKS, 5));
self::addCreativeItem(Item::get(Item::BRICKS, 0));
self::addCreativeItem(Item::get(Item::STONE, 0));
self::addCreativeItem(Item::get(Item::STONE, 1));
self::addCreativeItem(Item::get(Item::STONE, 2));
self::addCreativeItem(Item::get(Item::STONE, 3));
self::addCreativeItem(Item::get(Item::STONE, 4));
self::addCreativeItem(Item::get(Item::STONE, 5));
self::addCreativeItem(Item::get(Item::STONE, 6));
self::addCreativeItem(Item::get(Item::DIRT, 0));
self::addCreativeItem(Item::get(Item::PODZOL, 0));
self::addCreativeItem(Item::get(Item::GRASS, 0));
self::addCreativeItem(Item::get(Item::MYCELIUM, 0));
self::addCreativeItem(Item::get(Item::CLAY_BLOCK, 0));
self::addCreativeItem(Item::get(Item::HARDENED_CLAY, 0));
self::addCreativeItem(Item::get(Item::STAINED_CLAY, 0));
self::addCreativeItem(Item::get(Item::STAINED_CLAY, 7));
self::addCreativeItem(Item::get(Item::STAINED_CLAY, 6));
self::addCreativeItem(Item::get(Item::STAINED_CLAY, 5));
self::addCreativeItem(Item::get(Item::STAINED_CLAY, 4));
self::addCreativeItem(Item::get(Item::STAINED_CLAY, 3));
self::addCreativeItem(Item::get(Item::STAINED_CLAY, 2));
self::addCreativeItem(Item::get(Item::STAINED_CLAY, 1));
self::addCreativeItem(Item::get(Item::STAINED_CLAY, 15));
self::addCreativeItem(Item::get(Item::STAINED_CLAY, 14));
self::addCreativeItem(Item::get(Item::STAINED_CLAY, 13));
self::addCreativeItem(Item::get(Item::STAINED_CLAY, 12));
self::addCreativeItem(Item::get(Item::STAINED_CLAY, 11));
self::addCreativeItem(Item::get(Item::STAINED_CLAY, 10));
self::addCreativeItem(Item::get(Item::STAINED_CLAY, 9));
self::addCreativeItem(Item::get(Item::STAINED_CLAY, 8));
self::addCreativeItem(Item::get(Item::SANDSTONE, 0));
self::addCreativeItem(Item::get(Item::SANDSTONE, 1));
self::addCreativeItem(Item::get(Item::SANDSTONE, 2));
self::addCreativeItem(Item::get(Item::SAND, 0));
self::addCreativeItem(Item::get(Item::SAND, 1));
self::addCreativeItem(Item::get(Item::GRAVEL, 0));
self::addCreativeItem(Item::get(Item::TRUNK, 0));
self::addCreativeItem(Item::get(Item::TRUNK, 1));
self::addCreativeItem(Item::get(Item::TRUNK, 2));
self::addCreativeItem(Item::get(Item::TRUNK, 3));
self::addCreativeItem(Item::get(Item::TRUNK2, 0));
self::addCreativeItem(Item::get(Item::TRUNK2, 1));
self::addCreativeItem(Item::get(Item::NETHER_BRICKS, 0));
self::addCreativeItem(Item::get(Item::NETHERRACK, 0));
self::addCreativeItem(Item::get(Item::BEDROCK, 0));
self::addCreativeItem(Item::get(Item::COBBLESTONE_STAIRS, 0));
self::addCreativeItem(Item::get(Item::OAK_WOODEN_STAIRS, 0));
self::addCreativeItem(Item::get(Item::SPRUCE_WOODEN_STAIRS, 0));
self::addCreativeItem(Item::get(Item::BIRCH_WOODEN_STAIRS, 0));
self::addCreativeItem(Item::get(Item::JUNGLE_WOODEN_STAIRS, 0));
self::addCreativeItem(Item::get(Item::ACACIA_WOODEN_STAIRS, 0));
self::addCreativeItem(Item::get(Item::DARK_OAK_WOODEN_STAIRS, 0));
self::addCreativeItem(Item::get(Item::BRICK_STAIRS, 0));
self::addCreativeItem(Item::get(Item::SANDSTONE_STAIRS, 0));
self::addCreativeItem(Item::get(Item::STONE_BRICK_STAIRS, 0));
self::addCreativeItem(Item::get(Item::NETHER_BRICKS_STAIRS, 0));
self::addCreativeItem(Item::get(Item::QUARTZ_STAIRS, 0));
self::addCreativeItem(Item::get(Item::SLAB, 0));
self::addCreativeItem(Item::get(Item::SLAB, 1));
self::addCreativeItem(Item::get(Item::WOODEN_SLAB, 0));
self::addCreativeItem(Item::get(Item::WOODEN_SLAB, 1));
self::addCreativeItem(Item::get(Item::WOODEN_SLAB, 2));
self::addCreativeItem(Item::get(Item::WOODEN_SLAB, 3));
self::addCreativeItem(Item::get(Item::WOODEN_SLAB, 4));
self::addCreativeItem(Item::get(Item::WOODEN_SLAB, 5));
self::addCreativeItem(Item::get(Item::SLAB, 3));
self::addCreativeItem(Item::get(Item::SLAB, 4));
self::addCreativeItem(Item::get(Item::SLAB, 5));
self::addCreativeItem(Item::get(Item::SLAB, 6));
self::addCreativeItem(Item::get(Item::QUARTZ_BLOCK, 0));
self::addCreativeItem(Item::get(Item::QUARTZ_BLOCK, 1));
self::addCreativeItem(Item::get(Item::QUARTZ_BLOCK, 2));
self::addCreativeItem(Item::get(Item::COAL_ORE, 0));
self::addCreativeItem(Item::get(Item::IRON_ORE, 0));
self::addCreativeItem(Item::get(Item::GOLD_ORE, 0));
self::addCreativeItem(Item::get(Item::DIAMOND_ORE, 0));
self::addCreativeItem(Item::get(Item::LAPIS_ORE, 0));
self::addCreativeItem(Item::get(Item::REDSTONE_ORE, 0));
self::addCreativeItem(Item::get(Item::EMERALD_ORE, 0));
self::addCreativeItem(Item::get(Item::OBSIDIAN, 0));
self::addCreativeItem(Item::get(Item::ICE, 0));
self::addCreativeItem(Item::get(Item::SNOW_BLOCK, 0));
self::addCreativeItem(Item::get(Item::END_STONE, 0));
//Decoration
self::addCreativeItem(Item::get(Item::COBBLESTONE_WALL, 0));
self::addCreativeItem(Item::get(Item::COBBLESTONE_WALL, 1));
//TODO: Lilly Pad
self::addCreativeItem(Item::get(Item::GOLD_BLOCK, 0));
self::addCreativeItem(Item::get(Item::IRON_BLOCK, 0));
self::addCreativeItem(Item::get(Item::DIAMOND_BLOCK, 0));
self::addCreativeItem(Item::get(Item::LAPIS_BLOCK, 0));
self::addCreativeItem(Item::get(Item::COAL_BLOCK, 0));
self::addCreativeItem(Item::get(Item::EMERALD_BLOCK, 0));
self::addCreativeItem(Item::get(Item::REDSTONE_BLOCK, 0));
self::addCreativeItem(Item::get(Item::SNOW_LAYER, 0));
self::addCreativeItem(Item::get(Item::GLASS, 0));
self::addCreativeItem(Item::get(Item::GLOWSTONE_BLOCK, 0));
self::addCreativeItem(Item::get(Item::VINES, 0));
self::addCreativeItem(Item::get(Item::NETHER_REACTOR, 0));
self::addCreativeItem(Item::get(Item::LADDER, 0));
self::addCreativeItem(Item::get(Item::SPONGE, 0));
self::addCreativeItem(Item::get(Item::GLASS_PANE, 0));
self::addCreativeItem(Item::get(Item::WOODEN_DOOR, 0));
self::addCreativeItem(Item::get(Item::TRAPDOOR, 0));
self::addCreativeItem(Item::get(Item::FENCE, 0));
self::addCreativeItem(Item::get(Item::FENCE, 1));
self::addCreativeItem(Item::get(Item::FENCE, 2));
self::addCreativeItem(Item::get(Item::FENCE, 3));
self::addCreativeItem(Item::get(Item::FENCE, 4));
self::addCreativeItem(Item::get(Item::FENCE, 5));
self::addCreativeItem(Item::get(Item::FENCE_GATE, 0));
self::addCreativeItem(Item::get(Item::FENCE_GATE_BIRCH, 0));
self::addCreativeItem(Item::get(Item::FENCE_GATE_SPRUCE, 0));
self::addCreativeItem(Item::get(Item::FENCE_GATE_DARK_OAK, 0));
self::addCreativeItem(Item::get(Item::FENCE_GATE_JUNGLE, 0));
self::addCreativeItem(Item::get(Item::FENCE_GATE_ACACIA, 0));
self::addCreativeItem(Item::get(Item::IRON_BARS, 0));
self::addCreativeItem(Item::get(Item::BED, 0));
self::addCreativeItem(Item::get(Item::BOOKSHELF, 0));
self::addCreativeItem(Item::get(Item::PAINTING, 0));
self::addCreativeItem(Item::get(Item::WORKBENCH, 0));
self::addCreativeItem(Item::get(Item::STONECUTTER, 0));
self::addCreativeItem(Item::get(Item::CHEST, 0));
self::addCreativeItem(Item::get(Item::FURNACE, 0));
self::addCreativeItem(Item::get(Item::END_PORTAL, 0));
self::addCreativeItem(Item::get(Item::DANDELION, 0));
self::addCreativeItem(Item::get(Item::POPPY, 0));
//TODO: blue orchid
//TODO: Allium
//TODO: Azure Bluet
//TODO: Red Tulip
//TODO: Orange Tulip
//TODO: White Tulip
//TODO: Pink Tulip
//TODO: Oxeye Daisy
//TODO: Lilac
//TODO: Double Tallgrass
//TODO: Large Fern
//TODO: Rose Bush
//TODO: Peony
self::addCreativeItem(Item::get(Item::BROWN_MUSHROOM, 0));
self::addCreativeItem(Item::get(Item::RED_MUSHROOM, 0));
//TODO: Mushroom block (brown, cover)
//TODO: Mushroom block (red, cover)
//TODO: Mushroom block (brown, stem)
//TODO: Mushroom block (red, stem)
self::addCreativeItem(Item::get(Item::CACTUS, 0));
self::addCreativeItem(Item::get(Item::MELON_BLOCK, 0));
self::addCreativeItem(Item::get(Item::PUMPKIN, 0));
self::addCreativeItem(Item::get(Item::LIT_PUMPKIN, 0));
self::addCreativeItem(Item::get(Item::COBWEB, 0));
self::addCreativeItem(Item::get(Item::HAY_BALE, 0));
self::addCreativeItem(Item::get(Item::TALL_GRASS, 1));
self::addCreativeItem(Item::get(Item::TALL_GRASS, 2));
self::addCreativeItem(Item::get(Item::DEAD_BUSH, 0));
self::addCreativeItem(Item::get(Item::SAPLING, 0));
self::addCreativeItem(Item::get(Item::SAPLING, 1));
self::addCreativeItem(Item::get(Item::SAPLING, 2));
self::addCreativeItem(Item::get(Item::SAPLING, 3));
self::addCreativeItem(Item::get(Item::SAPLING, 4));
self::addCreativeItem(Item::get(Item::SAPLING, 5));
self::addCreativeItem(Item::get(Item::LEAVES, 0));
self::addCreativeItem(Item::get(Item::LEAVES, 1));
self::addCreativeItem(Item::get(Item::LEAVES, 2));
self::addCreativeItem(Item::get(Item::LEAVES, 3));
self::addCreativeItem(Item::get(Item::LEAVES, 3));
self::addCreativeItem(Item::get(Item::LEAVES2, 0));
self::addCreativeItem(Item::get(Item::LEAVES2, 1));
self::addCreativeItem(Item::get(Item::CAKE, 0));
self::addCreativeItem(Item::get(Item::SIGN, 0));
self::addCreativeItem(Item::get(Item::MONSTER_SPAWNER, 0));
self::addCreativeItem(Item::get(Item::WOOL, 0));
self::addCreativeItem(Item::get(Item::WOOL, 7));
self::addCreativeItem(Item::get(Item::WOOL, 6));
self::addCreativeItem(Item::get(Item::WOOL, 5));
self::addCreativeItem(Item::get(Item::WOOL, 4));
self::addCreativeItem(Item::get(Item::WOOL, 3));
self::addCreativeItem(Item::get(Item::WOOL, 2));
self::addCreativeItem(Item::get(Item::WOOL, 1));
self::addCreativeItem(Item::get(Item::WOOL, 15));
self::addCreativeItem(Item::get(Item::WOOL, 14));
self::addCreativeItem(Item::get(Item::WOOL, 13));
self::addCreativeItem(Item::get(Item::WOOL, 12));
self::addCreativeItem(Item::get(Item::WOOL, 11));
self::addCreativeItem(Item::get(Item::WOOL, 10));
self::addCreativeItem(Item::get(Item::WOOL, 9));
self::addCreativeItem(Item::get(Item::WOOL, 8));
self::addCreativeItem(Item::get(Item::CARPET, 0));
self::addCreativeItem(Item::get(Item::CARPET, 7));
self::addCreativeItem(Item::get(Item::CARPET, 6));
self::addCreativeItem(Item::get(Item::CARPET, 5));
self::addCreativeItem(Item::get(Item::CARPET, 4));
self::addCreativeItem(Item::get(Item::CARPET, 3));
self::addCreativeItem(Item::get(Item::CARPET, 2));
self::addCreativeItem(Item::get(Item::CARPET, 1));
self::addCreativeItem(Item::get(Item::CARPET, 15));
self::addCreativeItem(Item::get(Item::CARPET, 14));
self::addCreativeItem(Item::get(Item::CARPET, 13));
self::addCreativeItem(Item::get(Item::CARPET, 12));
self::addCreativeItem(Item::get(Item::CARPET, 11));
self::addCreativeItem(Item::get(Item::CARPET, 10));
self::addCreativeItem(Item::get(Item::CARPET, 9));
self::addCreativeItem(Item::get(Item::CARPET, 8));
//Tools
//TODO self::addCreativeItem(Item::get(Item::RAILS, 0));
//TODO self::addCreativeItem(Item::get(Item::POWERED_RAILS, 0));
self::addCreativeItem(Item::get(Item::TORCH, 0));
self::addCreativeItem(Item::get(Item::BUCKET, 0));
self::addCreativeItem(Item::get(Item::BUCKET, 1));
self::addCreativeItem(Item::get(Item::BUCKET, 8));
self::addCreativeItem(Item::get(Item::BUCKET, 10));
self::addCreativeItem(Item::get(Item::TNT, 0));
self::addCreativeItem(Item::get(Item::IRON_HOE, 0));
self::addCreativeItem(Item::get(Item::IRON_SHOVEL, 0));
self::addCreativeItem(Item::get(Item::IRON_SWORD, 0));
self::addCreativeItem(Item::get(Item::BOW, 0));
self::addCreativeItem(Item::get(Item::SHEARS, 0));
self::addCreativeItem(Item::get(Item::FLINT_AND_STEEL, 0));
self::addCreativeItem(Item::get(Item::CLOCK, 0));
self::addCreativeItem(Item::get(Item::COMPASS, 0));
self::addCreativeItem(Item::get(Item::MINECART, 0));
self::addCreativeItem(Item::get(Item::SPAWN_EGG, Villager::NETWORK_ID));
//self::addCreativeItem(Item::get(Item::SPAWN_EGG, 10)); //Chicken
//self::addCreativeItem(Item::get(Item::SPAWN_EGG, 11)); //Cow
//self::addCreativeItem(Item::get(Item::SPAWN_EGG, 12)); //Pig
//self::addCreativeItem(Item::get(Item::SPAWN_EGG, 13)); //Sheep
//TODO: Wolf
//TODO: Mooshroom
//TODO: Creeper
//TODO: Enderman
//TODO: Silverfish
//TODO: Skeleton
//TODO: Slime
self::addCreativeItem(Item::get(Item::SPAWN_EGG, Zombie::NETWORK_ID));
//TODO: PigZombie
self::addCreativeItem(Item::get(Item::SPAWN_EGG, Squid::NETWORK_ID));
//Seeds
self::addCreativeItem(Item::get(Item::SUGARCANE, 0));
self::addCreativeItem(Item::get(Item::WHEAT, 0));
self::addCreativeItem(Item::get(Item::SEEDS, 0));
self::addCreativeItem(Item::get(Item::MELON_SEEDS, 0));
self::addCreativeItem(Item::get(Item::PUMPKIN_SEEDS, 0));
self::addCreativeItem(Item::get(Item::CARROT, 0));
self::addCreativeItem(Item::get(Item::POTATO, 0));
self::addCreativeItem(Item::get(Item::BEETROOT_SEEDS, 0));
self::addCreativeItem(Item::get(Item::EGG, 0));
self::addCreativeItem(Item::get(Item::RAW_FISH, 0));
self::addCreativeItem(Item::get(Item::RAW_FISH, 1));
self::addCreativeItem(Item::get(Item::RAW_FISH, 2));
self::addCreativeItem(Item::get(Item::RAW_FISH, 3));
self::addCreativeItem(Item::get(Item::COOKED_FISH, 0));
self::addCreativeItem(Item::get(Item::COOKED_FISH, 1));
self::addCreativeItem(Item::get(Item::DYE, 0));
self::addCreativeItem(Item::get(Item::DYE, 7));
self::addCreativeItem(Item::get(Item::DYE, 6));
self::addCreativeItem(Item::get(Item::DYE, 5));
self::addCreativeItem(Item::get(Item::DYE, 4));
self::addCreativeItem(Item::get(Item::DYE, 3));
self::addCreativeItem(Item::get(Item::DYE, 2));
self::addCreativeItem(Item::get(Item::DYE, 1));
self::addCreativeItem(Item::get(Item::DYE, 15));
self::addCreativeItem(Item::get(Item::DYE, 14));
self::addCreativeItem(Item::get(Item::DYE, 13));
self::addCreativeItem(Item::get(Item::DYE, 12));
self::addCreativeItem(Item::get(Item::DYE, 11));
self::addCreativeItem(Item::get(Item::DYE, 10));
self::addCreativeItem(Item::get(Item::DYE, 9));
self::addCreativeItem(Item::get(Item::DYE, 8));
}
public static function clearCreativeItems(){
Item::$creative = [];
}
public static function getCreativeItems(){
return Item::$creative;
}
public static function addCreativeItem(Item $item){
Item::$creative[] = Item::get($item->getId(), $item->getDamage());
}
public static function removeCreativeItem(Item $item){
$index = self::getCreativeItemIndex($item);
if($index !== -1){
unset(Item::$creative[$index]);
}
}
public static function isCreativeItem(Item $item){
foreach(Item::$creative as $i => $d){
if($item->equals($d, !$item->isTool())){
return true;
}
}
return false;
}
/**
* @param $index
* @return Item
*/
public static function getCreativeItem($index){
return isset(Item::$creative[$index]) ? Item::$creative[$index] : null;
}
/**
* @param Item $item
* @return int
*/
public static function getCreativeItemIndex(Item $item){
foreach(Item::$creative as $i => $d){
if($item->equals($d, !$item->isTool())){
return $i;
}
}
return -1;
}
public static function get($id, $meta = 0, $count = 1){