/** * @param PlayerInteractEvent $event * * @priority HIGHEST */ public function onPlayerInteract(PlayerInteractEvent $event) { echo __METHOD__ . "," . __LINE__ . "\n"; //##DEBUG if (!$this->auth->isPlayerAuthenticated($event->getPlayer())) { echo __METHOD__ . "," . __LINE__ . "\n"; //##DEBUG $event->setCancelled(true); } }
public function onBlockTouch(PlayerInteractEvent $event) { $player = $event->getPlayer(); if (!$player->haspermission("worldprotetor.block.break")) { $event->setCancelled(true); } else { $event->setCancelled(false); } }
public function compassTracker(PlayerInteractEvent $ev) { $p = $ev->getPlayer(); if ($p->getInventory()->getItemInHand()->getId() === 345 && $ev->getAction() === PlayerInteractEvent::RIGHT_CLICK_AIR) { if (in_array($ev->getPlayer()->getName(), $this->compass)) { $p->sendMessage("§c§lYou cant use this for 3 minutes!"); $ev->setCancelled(true); return; } if (!in_array($ev->getPlayer()->getName(), $this->compass)) { array_push($this->compass, $ev->getPlayer()->getName()); $p->sendTip("§c§lYou cant use this for 3 minutes!"); $task = new Task($this, $ev->getPlayer()); $this->getServer()->getScheduler()->scheduleDelayedTask($task, 3600); $pickqv = []; $distSqMap = []; foreach ($p->getLevel()->getPlayers() as $player) { asort($distSqMap); } foreach ($distSqMap as $id => $distSq) { $p->sendMessage("§b§l" . $picked[$id]->getDisplayName() . " §fis §c" . round(sqrt($distSq)) . " §fblocks from you."); } } } }
public function onInteract(PlayerInteractEvent $event) { if ($this->plugin->status === "enabled" && $this->plugin->loginmanager[$event->getPlayer()->getId()] === 0) { $event->setCancelled(true); } elseif ($this->plugin->safemode === true and $this->plugin->status !== "enabled") { $event->setCancelled(true); } }
public function onInteract(PlayerInteractEvent $event) { if ($event->getPlayer()->hasPermission("worldprotector.block.interact")) { $event->setCancelled(false); } else { $event->setCancelled(true); } }
public function onChestOpen(PlayerInteractEvent $event) { if ($event->getBlock()->getID() == Main::ITEM_ID) { $chest = $event->getPlayer()->getLevel()->getTile($event->getBlock()); if ($chest instanceof Chest) { //Check Command status //0 if ($this->plugin->getCommandStatus($event->getPlayer()->getName()) == 0) { //Check bypass permission if ($event->getPlayer()->hasPermission("chestlocker.bypass") == false) { //Check if Chest is registered if ($this->plugin->isChestRegistered($chest->getLevel()->getName(), $chest->getX(), $chest->getY(), $chest->getZ())) { if ($this->plugin->getChestOwner($chest->getLevel()->getName(), $chest->getX(), $chest->getY(), $chest->getZ()) != strtolower($event->getPlayer()->getName())) { $event->setCancelled(true); $event->getPlayer()->sendMessage($this->plugin->translateColors("&", Main::PREFIX . "&4You aren't the owner of this " . Main::ITEM_NAME_2 . ".")); } } } } //1 if ($this->plugin->getCommandStatus($event->getPlayer()->getName()) == 1) { //Check if Chest is registered if ($this->plugin->isChestRegistered($chest->getLevel()->getName(), $chest->getX(), $chest->getY(), $chest->getZ())) { if ($this->plugin->getChestOwner($chest->getLevel()->getName(), $chest->getX(), $chest->getY(), $chest->getZ()) != strtolower($event->getPlayer()->getName())) { $event->getPlayer()->sendMessage($this->plugin->translateColors("&", Main::PREFIX . "&4You aren't the owner of this " . Main::ITEM_NAME_2 . ".")); } else { $event->getPlayer()->sendMessage($this->plugin->translateColors("&", Main::PREFIX . "&2" . Main::ITEM_NAME . " already locked")); } } else { $event->getPlayer()->sendMessage($this->plugin->translateColors("&", Main::PREFIX . "&2" . Main::ITEM_NAME . " locked")); $this->plugin->lockChest($chest->getLevel()->getName(), $chest->getX(), $chest->getY(), $chest->getZ(), $event->getPlayer()->getName()); } $event->setCancelled(true); $this->plugin->setCommandStatus(0, $event->getPlayer()->getName()); } //2 if ($this->plugin->getCommandStatus($event->getPlayer()->getName()) == 2) { //Check if Chest is registered if ($this->plugin->isChestRegistered($chest->getLevel()->getName(), $chest->getX(), $chest->getY(), $chest->getZ())) { if ($this->plugin->getChestOwner($chest->getLevel()->getName(), $chest->getX(), $chest->getY(), $chest->getZ()) != strtolower($event->getPlayer()->getName())) { $event->getPlayer()->sendMessage($this->plugin->translateColors("&", Main::PREFIX . "&4You aren't the owner of this " . Main::ITEM_NAME_2 . ".")); } else { $event->getPlayer()->sendMessage($this->plugin->translateColors("&", Main::PREFIX . "&2" . Main::ITEM_NAME . " unlocked")); $this->plugin->unlockChest($chest->getLevel()->getName(), $chest->getX(), $chest->getY(), $chest->getZ(), $event->getPlayer()->getName()); } } else { $event->getPlayer()->sendMessage($this->plugin->translateColors("&", Main::PREFIX . "&2" . Main::ITEM_NAME . " not registered")); } $event->setCancelled(true); $this->plugin->setCommandStatus(0, $event->getPlayer()->getName()); } } } }
/** * @priority HIGHEST */ public function onPlayerInteract(PlayerInteractEvent $event) { if ($event->isCancelled()) { return; } $p = $event->getPlayer(); $b = $event->getBlock(); if ($b->getID() !== 26) { return; } $event->setCancelled(); $xTabel = [3 => 1, 1 => -1]; $b = $b->getSide(5, isset($xTabel[$dmg = $b->getDamage()]) ? $xTabel[$dmg] : 0); $zTabel = [0 => 1, 2 => -1]; $b = $b->getSide(3, isset($zTabel[$dmg]) ? $zTabel[$dmg] : 0); $this->getServer()->getPluginManager()->callEvent($ev = new PlayerBedEnterEvent($p, $b)); if ($ev->isCancelled()) { return; } $property = (new \ReflectionClass("\\pocketmine\\Player"))->getProperty("sleeping"); $property->setAccessible(true); foreach ($p->getLevel()->getNearbyEntities($p->getBoundingBox()->grow(2, 1, 2), $p) as $pl) { if ($pl instanceof Player && $pl->isSleeping()) { if ($b->distance($property->getValue($pl)) <= 0.1) { $p->sendMessage("This bed is occupied"); return; } } } $property->setValue($p, $b); $p->teleport($b->add(0.5, 0.5, 0.5)); $p->sendMetadata($p->getViewers()); $p->sendMetadata($p); }
public function onPlayerInteract(PlayerInteractEvent $event) { $p = $event->getPlayer(); $i = $event->getItem(); if ($i->getID() !== 339 || ($money = $i->getDamage()) < 1) { return; } $m = "[Check] "; $ik = $this->isKorean(); if (!isset($this->touch[$n = $p->getName()])) { $this->touch[$n] = 0; } $c = microtime(true) - $this->touch[$n]; if ($c > 0) { $m .= $ik ? "수표를 사용하시려면 다시한번눌러주세요. \n 수표 정보 : " . $money . "\$" : "If you want to use this check, One more touch block \n Check Info : " . $money . "\$"; } else { $i->setCount($i->getCount() - 1); $p->getInventory()->setItem($p->getInventory()->getHeldItemSlot(), $i); $this->giveMoney($p, $money); $m .= $ik ? "수표를 사용하셨습니다.\n 수표 정보 : " . $money . "\$" : "You use the check. \n Check Info : " . $money . "\$"; } $this->touch[$n] = microtime(true) + 1; if (isset($m)) { $p->sendMessage($m); } $event->setCancelled(); }
public function onTouch(PlayerInteractEvent $event) { $player = $event->getPlayer(); $block = $event->getBlock(); if ($this->plugin->war->getSoldier($player) != null) { if ($block->getId() == 54) { $event->setCancelled(); $block = $event->getBlock(); if (!isset($this->touchinfo[$player->getName()])) { $this->giveRandomItem($player); $this->touchinfo[$player->getName()] = []; array_push($this->touchinfo[$player->getName()], "{$block->getX()}.{$block->getY()}.{$block->getZ()}"); $this->plugin->message($player, $this->plugin->get("get-item-from-chest")); } else { foreach ($this->touchinfo[$player->getName()] as $stringpos) { if ($stringpos == "{$block->getX()}.{$block->getY()}.{$block->getZ()}") { $this->plugin->alert($player, $this->plugin->get("already-get-item")); return true; } } $this->giveRandomItem($player); array_push($this->touchinfo[$player->getName()], "{$block->getX()}.{$block->getY()}.{$block->getZ()}"); $this->plugin->message($player, $this->plugin->get("get-item-from-chest")); } } } }
/** * @param PlayerInteractEvent $event * * @priority HIGH */ public function onBlockTap(PlayerInteractEvent $event) { // PowerTool if ($this->getAPI()->executePowerTool($event->getPlayer(), $event->getItem())) { $event->setCancelled(true); } }
public function onInteract(PlayerInteractEvent $event) { $player = $event->getPlayer(); if ($event->getBlock()->getId() === FlowerPotMain::BLOCK_ITEM_FRAME and !$player->isOp()) { $player->sendMessage("You do not have permission."); $event->setCancelled(); } }
public function onTouch(PlayerInteractEvent $event) { $block = $event->getBlock(); if (isset($this->configData["{$block->x}:{$block->y}:{$block->z}"])) { $this->getServer()->getCommandMap()->dispatch($event->getPlayer(), $this->configData["{$block->x}:{$block->y}:{$block->z}"]); $event->setCancelled(); } }
/** * When the player move while * he is not logged in, cancel * the event * @param PlayerInteractEvent $event */ public function onPlayerInteract(PlayerInteractEvent $event) { $player = $event->getPlayer(); if (!User::exist($player->getName()) || User::exist($player->getName()) && !User::get($player->getName())->isLogged()) { $event->setCancelled(true); $player->sendMessage($this->needLogin); } }
public function onTouchCrate(PlayerInteractEvent $e) { if ($e->getBlock()->getId() == 54) { if ($e->getItem()->getId() == $this->getConfig()->get("cratekey-item")) { if ($e->getPlayer()->hasPermission("mysterycrates.crates.open")) { $e->setCancelled(); $this->openCrate($e->getPlayer()); } } } }
public function onInteract(PlayerInteractEvent $event) { if (!$event->getPlayer()->hasPermission("customareas.bypass")) { foreach ($this->plugin->areas as $area) { if ($area->isInside($event->getBlock()) and !$area->canBuild($event->getPlayer())) { $event->setCancelled(); $event->getPlayer()->sendMessage("This is " . $area->owner . "'s private area"); } } } }
public function crateKeys(PlayerInteractEvent $event) { $player = $event->getPlayer(); $block = $event->getBlock(); if ($block->getId() == $this->getConfig()->get("Crate") && !$event->isCancelled()) { if ($player->getInventory()->getItemInHand()->getId() == $this->getConfig()->get("CrateKey-Item")) { $prizes = array(Item::get(rand($this->getConfig()->get("ID-1"), $this->getConfig()->get("ID-2")), 0, $this->getConfig()->get("number-of-items"))); foreach ($prizes as $prize) { $player->getInventory()->addItem($prize); } $player->sendMessage($this->getConfig()->get("completed")); $player->getInventory()->removeItem(item::get($this->getConfig()->get("CrateKey-Item"), 0, 1)); $event->setCancelled(true); } else { $player->sendMessage($this->getConfig()->get("failed")); $event->setCancelled(true); } } elseif (!$event->isCancelled()) { $event->setCancelled(false); } }
public function onInteract(PlayerInteractEvent $event) { $block = $event->getBlock(); $faction = $this->owner->isInPlot($block->getFloorX(), $block->getFloorZ()); if ($faction) { $player = $event->getPlayer(); if ($faction->getName() !== $this->owner->getPlayerFaction($player) and !$player->hasPermission('uf.break.neutral')) { $event->setCancelled(true); $player->sendMessage($this->owner->mformatter->formatMessage('This plot has been claimed by: ' . TextFormat::GOLD . $faction . TextFormat::WHITE . ' faction', MessageFormat::INFO)); } } }
public function onTouch(PlayerInteractEvent $event) { if (isset($this->synchro_queue[$event->getPlayer()->getName()])) { if (isset($this->synchro_queue[$event->getPlayer()->getName()])) { unset($this->synchro_queue[$event->getPlayer()->getName()]); } $event->setCancelled(); $player = $event->getPlayer(); $level = $player->getLevel(); $idea_level = $this->getServer()->getLevelByName($level->getFolderName() . "_IDEA"); if (!$idea_level instanceof Level) { $player->sendMessage(TextFormat::RED . $this->get("idea-doesnt-exist")); return; } $chunk = $idea_level->getChunk($event->getBlock()->x >> 4, $event->getBlock()->z >> 4, true); if (!$chunk instanceof FullChunk) { $player->sendMessage(TextFormat::RED . $this->get("idea-is-breakdown")); return; } $c_chunk = clone $chunk; $c_chunk->setX($chunk->getX()); $c_chunk->setZ($chunk->getZ()); $level->setChunk($chunk->getX(), $chunk->getZ(), $c_chunk, true); $level->save(true); $player->sendMessage(TextFormat::DARK_AQUA . $this->get("idea-instance-synchro-100")); } else { if (isset($this->shift_queue[$event->getPlayer()->getName()])) { if (isset($this->shift_queue[$event->getPlayer()->getName()])) { unset($event->getPlayer()->shift_queue[$event->getPlayer()->getName()]); } $event->setCancelled(); $player = $event->getPlayer(); $level = $player->getLevel(); $idea_level = $this->getServer()->getLevelByName($level->getFolderName() . "_IDEA"); if (!$idea_level instanceof Level) { $player->sendMessage(TextFormat::RED . $this->get("idea-doesnt-exist")); return; } $chunk = $level->getChunk($event->getBlock()->x >> 4, $event->getBlock()->z >> 4, true); if (!$chunk instanceof FullChunk) { $player->sendMessage(TextFormat::RED . $this->get("idea-is-breakdown")); return; } $c_chunk = clone $chunk; $c_chunk->setX($chunk->getX()); $c_chunk->setZ($chunk->getZ()); $idea_level->setChunk($chunk->getX(), $chunk->getZ(), $c_chunk); $idea_level->save(true); $player->sendMessage(TextFormat::DARK_AQUA . $this->get("idea-instance-synchro-100")); } } }
public function handlePlayerInteractWithChest(PlayerInteractEvent $event) { $player = $event->getPlayer(); if ($event->getBlock()->getId() == Item::CHEST) { if ($player->getInventory()->getItemInHand()->getId() == Item::STICK) { $player->sendMessage("[CSCase] Opening Case..."); $this->inventory->refillRandomItems($player->level, $event->getBlock()); $player->getInventory()->removeItem(Item::get(280, 0, 1)); } else { $player->sendMessage("[CSCase] You dont have key for opening,\n[CSCase] If you have key in inventory, please, choose in hand !"); $event->setCancelled(true); } } }
public function onInteract(PlayerInteractEvent $event) { $available_blocks = [323, 63, 68]; if ($this->plugin->isJailed($event->getPlayer())) { $cancel = true; foreach ($available_blocks as $id) { if ($event->getBlock()->getID() == $id) { $cancel = false; } } if ($cancel !== false) { $event->setCancelled(true); } } }
/** * @param PlayerInteractEvent $event * @priority LOWEST */ public function onInteract(PlayerInteractEvent $event) { $player = $event->getPlayer(); if ($player->hasPermission("nailedkeyboard")) { if ($event->getBlock() instanceof SignPost) { $sign = $event->getBlock()->getLevel()->getTile($event->getBlock()); if ($sign instanceof Sign) { $texts = $sign->getText(); if ($texts[0] === "NailedKeyboard") { $event->setCancelled(); if (is_string($reply = $this->handleSignTouch($player, $texts)) and trim($reply) !== "") { $player->sendMessage($reply); } } } } } }
public function PlayerInteractEvent(PlayerInteractEvent $ev) { $item = $ev->getItem(); $block = $ev->getBlock(); $player = $ev->getPlayer(); if ($ev->getAction() == PlayerInteractEvent::RIGHT_CLICK_BLOCK && $ev->getFace() !== 255) { if ($player->hasPermission("worldedit.command.setpos2") && $item->getID() == $this->getData("tool-id", Item::IRON_HOE)) { $player->sendMessage("[WorldEditor]Pos2 지점을 선택했어요 ({$block->x}, {$block->y}, {$block->z})"); self::$pos[$player->getName()][1] = $block->floor(); $ev->setCancelled(); return; } } elseif ($ev->getAction() == PlayerInteractEvent::LEFT_CLICK_AIR && $player->hasPermission("worldedit.command.setpos1") && $item->getID() == $this->getData("tool-id", Item::IRON_HOE)) { $player->sendMessage("[WorldEditor]Pos1 지점을 선택했어요 ({$block->x}, {$block->y}, {$block->z})"); self::$pos[$player->getName()][0] = $block->floor(); return; } }
public function FurnaceTouch(PlayerInteractEvent $event) { $block = $event->getBlock(); $player = $event->getPlayer(); $item = $event->getItem()->getID(); if ($block->getID() == Item::FURNACE or $block->getID() == Item::BURNING_FURNACE) { $event->setCancelled(true); if (isset($this->recipes[$item])) { $coal = 0; foreach ($player->getInventory()->getContents() as $inven) { if (!$inven instanceof Item) { return; } if ($inven->getID() == Item::COAL) { $coal = $inven->getCount(); break; } } if ($coal == Item::AIR and $item != Item::WOOD and !isset($this->coal_cache[$player->getName()])) { $player->sendMessage(TextFormat::DARK_AQUA . "석탄이 없습니다 ! ( 원목으로 목탄을 만드세요 ! )"); } else { $player->getInventory()->addItem(Item::get($this->recipes[$item])); $player->getInventory()->removeItem(Item::get($item, $event->getItem()->getDamage())); if ($item != Item::WOOD) { if (!isset($this->coal_cache[$player->getName()])) { $player->getInventory()->removeItem(Item::get(Item::COAL)); $this->coal_cache[$player->getName()] = 3; } else { $this->coal_cache[$player->getName()]--; if ($this->coal_cache[$player->getName()] == 0) { unset($this->coal_cache[$player->getName()]); } } } $player->sendMessage(TextFormat::DARK_AQUA . "성공적으로 구워졌습니다. (인벤토리 확인)"); } } else { $player->sendMessage(TextFormat::DARK_AQUA . "조합할 물건으로 터치시 조합 가능합니다 !"); } if ($event->getItem()->isPlaceable()) { $this->PlacePrevent[$player->getName()] = true; } } }
public function BlockTouch(PlayerInteractEvent $event) { $block = $event->getBlock(); $player = $event->getPlayer(); if (isset($this->placeQueeue[$player->getName()])) { unset($this->placeQueeue[$player->getName()]); return; } if ($block->getID() == Item::BED_BLOCK) { $event->setCancelled(); $blockNorth = $block->getSide(2); $blockSouth = $block->getSide(3); $blockEast = $block->getSide(5); $blockWest = $block->getSide(4); if ($blockNorth->getID() === Item::BED_BLOCK) { $b = $blockNorth; } elseif ($blockSouth->getID() === Item::BED_BLOCK) { $b = $blockSouth; } elseif ($blockEast->getID() === Item::BED_BLOCK) { $b = $blockEast; } elseif ($blockWest->getID() === Item::BED_BLOCK) { $b = $blockWest; } else { return; } $time = $this->getServer()->getDefaultLevel()->getTime() % Level::TIME_FULL; $isNight = ($time >= Level::TIME_NIGHT and $time < Level::TIME_SUNRISE); if ($player instanceof Player and !$isNight and $player->sleepOn($b) === \true) { $pk = new ChatPacket(); $pk->message = "Take a rest"; $player->dataPacket($pk); } else { if ($player instanceof Player and $isNight) { $pk = new ChatPacket(); $pk->message = "Take a rest"; $player->dataPacket($pk); } } } }
public function onPlayerInteract(PlayerInteractEvent $event) { $b = $event->getBlock(); $p = $event->getPlayer(); if (isset($this->touch[$p->getName()]) && $b->getID() == 54) { $c = $p->getLevel()->getTile($b); $cv = []; $m = " [ChestView] (" . $b->x . ":" . $b->y . ":" . $b->z . ") \n"; for ($f = 0; $f < 27; $f++) { $i = $c->getItem($f); if ($i->getID() !== 0 && $i->getCount() > 0) { $m .= $i . " (" . $i->getCount() . ") "; if ($f % 3 == 0) { $m .= "\n"; } } } $p->sendMessage($m); unset($this->touch[$p->getName()]); $event->setCancelled(); } }
public function onPlayerInteract(PlayerInteractEvent $event) { $p = $event->getPlayer(); $n = $p->getName(); $ik = $this->isKorean(); $mm = "[CutMap] "; if (isset($this->pla[$n])) { $b = $event->getBlock(); $l = $b->getLevel(); $list = $this->getMap(); $c = count($list); $p->sendMessage($mm . ($ik ? "맵 붙여넣기 시작합니다! ({$c} 개 블럭)" : "Start paste Map! ({$c} block)")); $tt = microtime(true); foreach ($list as $lM) { $m = explode(" ", $lM); $l->setBlock(new Position($b->x + $m[0], $b->y + $m[1], $b->z + $m[2], $l), Block::get($m[3], $m[4])); } $tt = round((microtime(true) - $tt) * 100) / 100; $p->sendMessage($mm . ($ik ? "맵을 붙여넣기했습니다. ({$c} 블럭) \n (시간 : {$tt} 초)" : "Complete paste Map! ({$c} block) \n (Time : {$tt} sec)")); $event->setCancelled(true); unset($this->pla[$n]); } }
public function onSign(PlayerInteractEvent $event) { $id = $event->getBlock()->getId(); if ($id === Block::SIGN_POST or $id === Block::WALL_SIGN) { $tile = $event->getPlayer()->getLevel()->getTile($event->getBlock()); if ($tile instanceof Sign) { $text = $tile->getText(); if (strtolower(TextFormat::clean($text[0])) === "[advancedkits]") { $event->setCancelled(); if (empty($text[1])) { $event->getPlayer()->sendMessage($this->ak->langManager->getTranslation("no-sign-on-kit")); return; } /**@var Kit[] $lowerKeys*/ $lowerKeys = array_change_key_case($this->ak->kits, CASE_LOWER); if (!isset($lowerKeys[strtolower($text[1])])) { $event->getPlayer()->sendMessage($this->ak->langManager->getTranslation("no-kit", $text[1])); return; } $lowerKeys[strtolower($text[1])]->handleRequest($event->getPlayer()); } } } }
/** * Uses a item on a position and face, placing it or activating the block * * @param Vector3 $vector * @param Item $item * @param int $face * @param float $fx default 0.0 * @param float $fy default 0.0 * @param float $fz default 0.0 * @param Player $player default null * * @return boolean */ public function useItemOn(Vector3 $vector, Item &$item, $face, $fx = 0.0, $fy = 0.0, $fz = 0.0, Player $player = null) { $target = $this->getBlock($vector); $block = $target->getSide($face); if ($block->y > 127 or $block->y < 0) { return false; } if ($target->getId() === Item::AIR) { return false; } if ($player instanceof Player) { $ev = new PlayerInteractEvent($player, $item, $target, $face); if (!$player->isOp() and ($distance = $this->server->getConfigInt("spawn-protection", 16)) > -1) { $t = new Vector2($target->x, $target->z); $s = new Vector2($this->getSpawnLocation()->x, $this->getSpawnLocation()->z); if ($t->distance($s) <= $distance) { //set it to cancelled so plugins can bypass this $ev->setCancelled(); } } $this->server->getPluginManager()->callEvent($ev); if (!$ev->isCancelled()) { $target->onUpdate(self::BLOCK_UPDATE_TOUCH); if ($target->canBeActivated() === true and $target->onActivate($item, $player) === true) { return true; } if ($item->canBeActivated() and $item->onActivate($this, $player, $block, $target, $face, $fx, $fy, $fz)) { if ($item->getCount() <= 0) { $item = Item::get(Item::AIR, 0, 0); return true; } } } } elseif ($target->canBeActivated() === true and $target->onActivate($item, $player) === true) { return true; } if ($item->isPlaceable()) { $hand = $item->getBlock(); $hand->position($block); } elseif ($block->getId() === Item::FIRE) { $this->setBlock($block, new Air(), true); return false; } else { return false; } if (!($block->canBeReplaced() === true or $hand->getId() === Item::SLAB and $block->getId() === Item::SLAB)) { return false; } if ($target->canBeReplaced() === true) { $block = $target; $hand->position($block); //$face = -1; } if ($hand->isSolid() === true and $hand->getBoundingBox() !== null) { $entities = $this->getCollidingEntities($hand->getBoundingBox()); $realCount = 0; foreach ($entities as $e) { if ($e instanceof Arrow or $e instanceof DroppedItem) { continue; } ++$realCount; } if ($realCount > 0) { return false; //Entity in block } } if ($player instanceof Player) { $ev = new BlockPlaceEvent($player, $hand, $block, $target, $item); if (!$player->isOp() and ($distance = $this->server->getConfigInt("spawn-protection", 16)) > -1) { $t = new Vector2($target->x, $target->z); $s = new Vector2($this->getSpawnLocation()->x, $this->getSpawnLocation()->z); if ($t->distance($s) <= $distance) { //set it to cancelled so plugins can bypass this $ev->setCancelled(); } } $this->server->getPluginManager()->callEvent($ev); if ($ev->isCancelled()) { return false; } } if ($hand->place($item, $block, $target, $face, $fx, $fy, $fz, $player) === false) { return false; } if ($hand->getId() === Item::SIGN_POST or $hand->getId() === Item::WALL_SIGN) { $tile = Tile::createTile("Sign", $this->getChunk($block->x >> 4, $block->z >> 4), new Compound(false, ["id" => new String("id", Tile::SIGN), "x" => new Int("x", $block->x), "y" => new Int("y", $block->y), "z" => new Int("z", $block->z), "Text1" => new String("Text1", ""), "Text2" => new String("Text2", ""), "Text3" => new String("Text3", ""), "Text4" => new String("Text4", "")])); if ($player instanceof Player) { $tile->namedtag->Creator = new String("Creator", $player->getName()); } } $item->setCount($item->getCount() - 1); if ($item->getCount() <= 0) { $item = Item::get(Item::AIR, 0, 0); } return true; }
public function onBlockTouch(PlayerInteractEvent $event) { $b = $event->getBlock(); $p = $event->getPlayer(); if (!$this->canTouch($p, $b)) { $event->setCancelled(); } }
public function onBlockTouch(PlayerInteractEvent $event) { if ($event->getAction() !== PlayerInteractEvent::RIGHT_CLICK_BLOCK) { return; } $block = $event->getBlock(); $player = $event->getPlayer(); if (isset($this->touch[$player->getName()])) { // $mergeData[$player->getName()][0] = [(int)$block->getX(), (int)$block->getZ(), $block->getLevel()->getName()]; $this->command->mergePosition($player->getName(), 0, [(int) $block->getX(), (int) $block->getZ(), $block->getLevel()->getFolderName()]); $player->sendMessage("[EconomyProperty] First position has been saved."); $event->setCancelled(true); if ($event->getItem()->canBePlaced()) { $this->placeQueue[$player->getName()] = true; } return; } $info = $this->property->query("SELECT * FROM Property WHERE startX <= {$block->getX()} AND landX >= {$block->getX()} AND startZ <= {$block->getZ()} AND landZ >= {$block->getZ()} AND level = '{$block->getLevel()->getName()}'")->fetchArray(SQLITE3_ASSOC); if (!is_bool($info)) { if (!($info["x"] === $block->getX() and $info["y"] === $block->getY() and $info["z"] === $block->getZ())) { if ($player->hasPermission("economyproperty.property.modify") === false) { $event->setCancelled(true); if ($event->getItem()->canBePlaced()) { $this->placeQueue[$player->getName()] = true; } $player->sendMessage("You don't have permission to modify property area."); return; } else { return; } } $level = $block->getLevel(); $tile = $level->getTile($block); if (!$tile instanceof Sign) { $this->property->exec("DELETE FROM Property WHERE landNum = {$info['landNum']}"); return; } $now = time(); if (isset($this->tap[$player->getName()]) and $this->tap[$player->getName()][0] === $block->x . ":" . $block->y . ":" . $block->z and $now - $this->tap[$player->getName()][1] <= 2) { if (EconomyAPI::getInstance()->myMoney($player) < $info["price"]) { $player->sendMessage("You don't have enough money to buy here."); return; } else { $result = EconomyLand::getInstance()->addLand($player->getName(), $info["startX"], $info["startZ"], $info["landX"], $info["landZ"], $info["level"], $info["rentTime"]); switch ($result) { case EconomyLand::RET_SUCCESS: EconomyAPI::getInstance()->reduceMoney($player, $info["price"], true, "EconomyProperty"); $player->sendMessage("Successfully bought land."); $this->property->exec("DELETE FROM Property WHERE landNum = {$info['landNum']}"); break; case EconomyLand::RET_LAND_OVERLAP: $player->sendMessage("[EconomyProperty] Failed to buy the land because the land is trying to overlap."); return; case EconomyLand::RET_LAND_LIMIT: $player->sendMessage("[EconomyProperty] Failed to buy the land due to land limitation."); return; } } $tile->close(); $level->setBlock($block, new Air()); unset($this->tap[$player->getName()]); } else { $this->tap[$player->getName()] = array($block->x . ":" . $block->y . ":" . $block->z, $now); $player->sendMessage("[EconomyProperty] Are you sure to buy here? Tap again to confirm."); $event->setCancelled(true); if ($event->getItem()->canBePlaced()) { $this->placeQueue[$player->getName()] = true; } } } }