public function onActivate(Level $level, Player $player, Block $block, Block $target, $face, $fx, $fy, $fz) { if ($this->meta === Item::AIR) { if ($target instanceof Liquid) { $level->setBlock($target, new Air(), true); if (($player->gamemode & 0x1) === 0) { $this->meta = $target instanceof Water ? Item::WATER : Item::LAVA; } return true; } } elseif ($this->meta === Item::WATER) { //Support Make Non-Support Water to Support Water if ($block->getID() === self::AIR || $block instanceof Water && ($block->getDamage() & 0x7) != 0x0) { $water = new Water(); $level->setBlock($block, $water, true); $water->place(clone $this, $block, $target, $face, $fx, $fy, $fz, $player); if (($player->gamemode & 0x1) === 0) { $this->meta = 0; } return true; } } elseif ($this->meta === Item::LAVA) { if ($block->getID() === self::AIR) { $level->setBlock($block, new Lava(), true); if (($player->gamemode & 0x1) === 0) { $this->meta = 0; } return true; } } return false; }
public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null) { $down = $block->getSide(Vector3::SIDE_DOWN); if ($down->isTransparent() === false || $down instanceof Slab && ($down->meta & 0x8) === 0x8 || $down instanceof WoodSlab && ($down->meta & 0x8) === 0x8 || $down instanceof Stair && ($down->meta & 0x4) === 0x4) { $this->getLevel()->setBlock($this, Block::get($this->id, 0)); $up = $block->getSide(Vector3::SIDE_UP); if ($block->getSide(Vector3::SIDE_EAST) && $block->getSide(Vector3::SIDE_WEST)) { if ($up->getSide(Vector3::SIDE_EAST)) { $this->setDirection(Vector3::SIDE_EAST, true); } elseif ($up->getSide(Vector3::SIDE_WEST)) { $this->setDirection(Vector3::SIDE_WEST, true); } else { $this->setDirection(Vector3::SIDE_EAST); } } elseif ($block->getSide(Vector3::SIDE_SOUTH) && $block->getSide(Vector3::SIDE_NORTH)) { if ($up->getSide(Vector3::SIDE_SOUTH)) { $this->setDirection(Vector3::SIDE_SOUTH, true); } elseif ($up->getSide(Vector3::SIDE_NORTH)) { $this->setDirection(Vector3::SIDE_NORTH, true); } else { $this->setDirection(Vector3::SIDE_SOUTH); } } else { $this->setDirection(Vector3::SIDE_NORTH); } return true; } return false; }
public function onActivate(Level $level, Player $player, Block $block, Block $target, $face, $fx, $fy, $fz) { if ($target->isTransparent() === false and $face > 1 and $block->isSolid() === false) { $faces = [2 => 0, 3 => 2, 4 => 1, 5 => 3]; $motives = [["Kebab", 1, 1], ["Aztec", 1, 1], ["Alban", 1, 1], ["Aztec2", 1, 1], ["Bomb", 1, 1], ["Plant", 1, 1], ["Wasteland", 1, 1], ["Wanderer", 1, 2], ["Graham", 1, 2], ["Pool", 2, 1], ["Courbet", 2, 1], ["Sunset", 2, 1], ["Sea", 2, 1], ["Creebet", 2, 1], ["Match", 2, 2], ["Bust", 2, 2], ["Stage", 2, 2], ["Void", 2, 2], ["SkullAndRoses", 2, 2], ["Fighters", 4, 2], ["Skeleton", 4, 3], ["DonkeyKong", 4, 3], ["Pointer", 4, 4], ["Pigscene", 4, 4], ["Flaming Skull", 4, 4]]; $motive = $motives[mt_rand(0, count($motives) - 1)]; $data = ["x" => $target->x, "y" => $target->y + 0.4, "z" => $target->z, "yaw" => $faces[$face] * 90, "Motive" => $motive[0]]; $nbt = new CompoundTag("", ["Motive" => new StringTag("Motive", $data["Motive"]), "Pos" => new EnumTag("Pos", [new DoubleTag("", $data["x"]), new DoubleTag("", $data["y"]), new DoubleTag("", $data["z"])]), "Motion" => new EnumTag("Motion", [new DoubleTag("", 0), new DoubleTag("", 0), new DoubleTag("", 0)]), "Rotation" => new EnumTag("Rotation", [new FloatTag("", $data["yaw"]), new FloatTag("", 0)])]); $painting = new PaintingEntity($player->getLevel()->getChunk($block->getX() >> 4, $block->getZ() >> 4), $nbt); $painting->spawnToAll(); if ($player->isSurvival()) { $item = $player->getInventory()->getItemInHand(); $count = $item->getCount(); if (--$count <= 0) { $player->getInventory()->setItemInHand(Item::get(Item::AIR)); return; } $item->setCount($count); $player->getInventory()->setItemInHand($item); } //TODO //$e = $server->api->entity->add($level, ENTITY_OBJECT, OBJECT_PAINTING, $data); //$e->spawnToAll(); /*if(($player->gamemode & 0x01) === 0x00){ $player->removeItem(Item::get($this->getId(), $this->getDamage(), 1)); }*/ return true; } return false; }
public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null) { $down = $this->getSide(0); if ($target->isTransparent() === false and $face !== 0) { $faces = [1 => 5, 2 => 4, 3 => 3, 4 => 2, 5 => 1]; $this->meta = $faces[$face]; $side = $faces[$face]; $faces = [1 => 4, 2 => 5, 3 => 2, 4 => 3, 5 => 0, 6 => 0, 0 => 0]; if ($this->getSide($faces[$side])->isCharged($this->getHash())) { $this->id = 75; $this->getLevel()->setBlock($block, $this); return; } $this->getLevel()->setBlock($block, $this); $this->BroadcastRedstoneUpdate(Level::REDSTONE_UPDATE_PLACE, Block::REDSTONESOURCEPOWER); return true; } elseif ($down->isTransparent() === false or $down->getId() === self::FENCE or $down->getId() === self::COBBLE_WALL or $down->getId() === self::GLASS || $down instanceof Slab && ($down->meta & 0x8) === 0x8 || $down instanceof WoodSlab && ($down->meta & 0x8) === 0x8 || $down instanceof Stair && ($down->meta & 0x4) === 0x4) { $this->meta = 0; if ($target->isCharged($this->getHash())) { $this->id = 75; $this->getLevel()->setBlock($block, $this); return; } $this->getLevel()->setBlock($block, $this); $this->BroadcastRedstoneUpdate(Level::REDSTONE_UPDATE_PLACE, Block::REDSTONESOURCEPOWER); return true; } return false; }
public function onActivate(Level $level, Player $player, Block $block, Block $target, $face, $fx, $fy, $fz) { if ($player === null or $player->isSurvival() !== true) { return false; } if ($target->getId() === Block::STILL_WATER or $target->getId() === Block::WATER) { $player->getServer()->getPluginManager()->callEvent($ev = new PlayerGlassBottleEvent($player, $target, $this)); if ($ev->isCancelled()) { return false; } else { if ($this->count <= 1) { $player->getInventory()->setItemInHand(Item::get(Item::POTION, 0, 1)); return true; } else { $this->count--; $player->getInventory()->setItemInHand($this); } if ($player->getInventory()->canAddItem(Item::get(Item::POTION, 0, 1)) === true) { $player->getInventory()->AddItem(Item::get(Item::POTION, 0, 1)); } else { $motion = $player->getDirectionVector()->multiply(0.4); $position = clone $player->getPosition(); $player->getLevel()->dropItem($position->add(0, 0.5, 0), Item::get(Item::POTION, 0, 1), $motion, 40); } return true; } } return false; }
/** * @param Block $block * @return bool */ public function isFreezable(Block $block) { if (isset($this->configs[$ilevel = strtolower($block->getLevel()->getName())])) { return $this->configs[$ilevel]->exists($block->getId() . ":" . $block->getDamage(), true); } return false; }
public function onActivate(Level $level, Player $player, Block $block, Block $target, $face, $fx, $fy, $fz) { if ($target->getId() == Block::MONSTER_SPAWNER) { return true; } else { $entity = null; $chunk = $level->getChunk($block->getX() >> 4, $block->getZ() >> 4); if (!$chunk instanceof FullChunk) { return false; } $nbt = new CompoundTag("", ["Pos" => new EnumTag("Pos", [new DoubleTag("", $block->getX() + 0.5), new DoubleTag("", $block->getY()), new DoubleTag("", $block->getZ() + 0.5)]), "Motion" => new EnumTag("Motion", [new DoubleTag("", 0), new DoubleTag("", 0), new DoubleTag("", 0)]), "Rotation" => new EnumTag("Rotation", [new FloatTag("", lcg_value() * 360), new FloatTag("", 0)])]); if ($this->hasCustomName()) { $nbt->CustomName = new StringTag("CustomName", $this->getCustomName()); } $entity = Entity::createEntity($this->meta, $chunk, $nbt); if ($entity instanceof Entity) { if ($player->isSurvival()) { --$this->count; } $entity->spawnToAll(); return true; } } return false; }
/** * @param Block $block * @return bool */ private function isBlockSpecified(Block $block) { $key = array_change_key_case($this->getConfig()->getNested("level." . $block->getLevel()->getName()), CASE_LOWER); if (is_array($key)) { return in_array($block->getId() . ":" . $block->getDamage(), $key); } }
/** * @param Block $block * @return bool */ public function isBlockSpecified(Block $block) { $key = array_change_key_case($this->getConfig()->get("level"), CASE_LOWER); $levelKey = $key[strtolower($block->getLevel()->getName())]; if (is_array($levelKey)) { return in_array($block->getId() . ":" . $block->getDamage(), $levelKey); } }
public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null) { if ($target->isTransparent() === false || $target->getId() === self::FENCE) { $this->getLevel()->setBlock($block, $this, true, true); return true; } return false; }
public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null) { if ($block->getSide(0)->getID() === self::FARMLAND) { $this->getLevel()->setBlock($block, $this, true, true); return true; } return false; }
public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null) { $down = $target->getSide(Vector3::SIDE_DOWN); if ($down->isTransparent() === false || $down instanceof Fence || $down instanceof FenceGate) { $this->getLevel()->setBlock($block, $this, true, true); return true; } return false; }
public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null) { if ($face !== 0 && $face !== 1 && !$target->isTransparent()) { $ret = $this->setFacingDirection($face); $this->getLevel()->setBlock($block, $this, true); return $ret; } return false; }
public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null) { if (!$target->isTransparent() || ($face === 0 && ($this->getSide(0) instanceof Slab && ($this->getSide(0)->meta & 0x8) === 0x8) || $this->getSide(0) instanceof WoodSlab && ($this->getSide(0)->meta & 0x8) === 0x8 || $this->getSide(0) instanceof Stair && ($this->getSide(0)->meta & 0x4) === 0x4)) { $this->meta = $face; $this->getLevel()->setBlock($block, $this, true, false); return true; } return false; }
public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null) { if (!$target->isTransparent()) { $faces = [0 => 0, 1 => 1, 2 => 2, 3 => 3]; $this->meta = $faces[$face]; $this->getLevel()->setBlock($block, $this, true, true); return true; } return false; }
public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null) { if ($target->isTransparent() === false) { $faces = [2 => 3, 3 => 0, 0 => 1, 1 => 2]; $this->meta = $faces[$player instanceof Player ? $player->getDirection() : 0]; $this->getLevel()->setBlock($block, $this, true, true); return true; } return false; }
public function onActivate(Level $level, Player $player, Block $block, Block $target, $face, $fx, $fy, $fz) { $realPos = $target->getSide($face)->add(0.5, 0.4, 0.5); $camera = new TripoidCamera($player->getLevel()->getChunk($realPos->getX() >> 4, $realPos->getZ() >> 4), new CompoundTag("", ["Pos" => new ListTag("Pos", [new DoubleTag("", $realPos->getX()), new DoubleTag("", $realPos->getY()), new DoubleTag("", $realPos->getZ())]), "Motion" => new ListTag("Motion", [new DoubleTag("", 0), new DoubleTag("", 0), new DoubleTag("", 0)]), "Rotation" => new ListTag("Rotation", [new FloatTag("", 0), new FloatTag("", 0)])])); $camera->spawnToAll(); if ($player->isSurvival()) { --$this->count; } return true; }
public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null) { if ($target->isTransparent() === false) { $faces = [0 => 0, 1 => 1, 2 => 2, 3 => 3, 4 => 4, 5 => 5]; $this->setDamage($faces[$face]); $this->getLevel()->setBlock($block, $this, true, true); return true; } return false; }
public function __construct(Player $player, Block $block, Item $item, $instaBreak = \false) { $this->block = $block; $this->item = $item; $this->player = $player; $this->instaBreak = (bool) $instaBreak; $drops = $player->isSurvival() ? $block->getDrops($item) : []; foreach ($drops as $i) { $this->blockDrops[] = Item::get($i[0], $i[1], $i[2]); } }
public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null) { $down = $block->getSide(0); if ($down->isTransparent() === false || $down instanceof Slab && ($down->meta & 0x8) === 0x8 || $down instanceof WoodSlab && ($down->meta & 0x8) === 0x8 || $down instanceof Stair && ($down->meta & 0x4) === 0x4) { $this->getLevel()->setBlock($block, $this, true, true); $nbt = new Compound("", [new String("id", Tile::FLOWER_POT), new Int("x", $block->x), new Int("y", $block->y), new Int("z", $block->z), new Short("item", 0), new Int("mData", 0)]); $pot = Tile::createTile("FlowerPot", $this->getLevel()->getChunk($this->x >> 4, $this->z >> 4), $nbt); return true; } return false; }
public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null) { $down = $block->getSide(0); if ($down->getId() === self::AIR) { return false; } $faces = [0 => 3, 1 => 0, 2 => 1, 3 => 2]; $this->meta = $faces[$player instanceof Player ? $player->getDirection() : 0] & 0x3; $this->getLevel()->setBlock($block, $this, true, true); return true; }
public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = \null) { if ($target instanceof Water) { $up = $target->getSide(Vector3::SIDE_UP); if ($up->getId() === Block::AIR) { $this->getLevel()->setBlock($up, $this, \true, \true); return \true; } } return \false; }
public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null) { if ($target->isTransparent() === false and $face > 1 and $block->isSolid() === false) { $faces = [2 => 3, 3 => 2, 4 => 1, 5 => 0]; $this->meta = $faces[$face]; $this->getLevel()->setBlock($block, $this, true, true); $nbt = new CompoundTag("", [new StringTag("id", Tile::ITEM_FRAME), new IntTag("x", $block->x), new IntTag("y", $block->y), new IntTag("z", $block->z), new ByteTag("ItemRotation", 0), new FloatTag("ItemDropChance", 1.0)]); Tile::createTile(Tile::ITEM_FRAME, $this->getLevel()->getChunk($this->x >> 4, $this->z >> 4), $nbt); return true; } return false; }
public static function addToDeactiveQueue(\SplPriorityQueue $queue, Block $location, $updateLevel) { if ($updateLevel <= 0) { return; } for ($s = 0; $s <= 5; $s++) { $sideBlock = $location->getSide($s); if ($sideBlock->getPowerLevel() === $updateLevel - 1) { $queue->insert($sideBlock, $sideBlock->getPowerLevel()); } } }
public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = \null) { if ($target->isTransparent() === \false) { $faces = [2 => 2, 3 => 3, 4 => 4, 5 => 5]; if (isset($faces[$face])) { $this->meta = $faces[$face]; $this->getLevel()->setBlock($block, $this, \true, \true); return \true; } } return \false; }
public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null) { $down = $block->getSide(0); if ($down->isTransparent() && !($down instanceof Slab && ($down->meta & 0x8) === 0x8) || $down instanceof WoodSlab && ($down->meta & 0x8) === 0x8 || $down instanceof Stair && ($down->meta & 0x4) === 0x4) { return false; } if ($player instanceof Player) { $this->meta = ((int) $player->getDirection() + 5) % 4; } $this->getLevel()->setBlock($block, $this, true, true); return true; }
public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null) { if ($target->getId() === Block::WOOD and $target->getDamage() === Wood::JUNGLE) { if ($face !== 0 and $face !== 1) { $faces = [2 => 0, 3 => 2, 4 => 3, 5 => 1]; $this->meta = $faces[$face]; $this->getLevel()->setBlock($block, $this, true); return true; } } return false; }
public function place(Item $item, Block $block, Block $target, $face, $fx, $fy, $fz, Player $player = null) { if (($target->isTransparent() === false or $target->getId() === self::SLAB) and $face !== 0 and $face !== 1) { $faces = [2 => 0, 3 => 1, 4 => 2, 5 => 3]; $this->meta = $faces[$face] & 0x3; if ($fy > 0.5) { $this->meta |= 0x8; } $this->getLevel()->setBlock($block, $this, true, true); return true; } return false; }
/** * TODO: Move this to each item * * @param Entity|Block $object * * @return bool */ public function useOn($object) { if ($this->isHoe()) { if ($object instanceof Block and ($object->getId() === self::GRASS or $object->getId() === self::DIRT)) { $this->meta++; } } elseif ($object instanceof Entity and !$this->isSword()) { $this->meta += 2; } else { $this->meta++; } return true; }
public function onActivate(Level $level, Player $player, Block $block, Block $target, $face, $fx, $fy, $fz) { $targetBlock = Block::get($this->meta); if ($targetBlock instanceof Air) { if ($target instanceof Liquid and $target->getDamage() === 0) { $result = clone $this; $result->setDamage($target->getId()); $player->getServer()->getPluginManager()->callEvent($ev = new PlayerBucketFillEvent($player, $block, $face, $this, $result)); if (!$ev->isCancelled()) { $player->getLevel()->setBlock($target, new Air(), true, true); if ($player->isSurvival()) { $player->getInventory()->setItemInHand($ev->getItem(), $player); } return true; } else { $player->getInventory()->sendContents($player); } } } elseif ($targetBlock instanceof Liquid) { $result = clone $this; $result->setDamage(0); $player->getServer()->getPluginManager()->callEvent($ev = new PlayerBucketFillEvent($player, $block, $face, $this, $result)); if (!$ev->isCancelled()) { $player->getLevel()->setBlock($block, $targetBlock, true, true); if ($player->isSurvival()) { $player->getInventory()->setItemInHand($ev->getItem(), $player); } return true; } else { $player->getInventory()->sendContents($player); } } return false; }