/**
  * @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);
     }
 }
Beispiel #3
1
 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.");
             }
         }
     }
 }
Beispiel #4
0
 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());
             }
         }
     }
 }
Beispiel #7
0
 /**
  * @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);
 }
Beispiel #8
0
 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();
     }
 }
Beispiel #12
0
 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();
     }
 }
Beispiel #13
0
 /**
  * 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);
     }
 }
Beispiel #14
0
 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());
             }
         }
     }
 }
Beispiel #15
0
 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");
             }
         }
     }
 }
Beispiel #16
0
 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));
         }
     }
 }
Beispiel #18
0
 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"));
         }
     }
 }
Beispiel #19
0
 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);
         }
     }
 }
Beispiel #20
0
 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);
                     }
                 }
             }
         }
     }
 }
Beispiel #22
0
 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;
     }
 }
Beispiel #23
0
 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;
         }
     }
 }
Beispiel #24
0
 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);
             }
         }
     }
 }
Beispiel #25
0
 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();
     }
 }
Beispiel #26
0
 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]);
     }
 }
Beispiel #27
0
 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());
             }
         }
     }
 }
Beispiel #28
0
 /**
  * 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;
 }
Beispiel #29
0
 public function onBlockTouch(PlayerInteractEvent $event)
 {
     $b = $event->getBlock();
     $p = $event->getPlayer();
     if (!$this->canTouch($p, $b)) {
         $event->setCancelled();
     }
 }
Beispiel #30
0
 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;
             }
         }
     }
 }