getAction() public méthode

public getAction ( ) : integer
Résultat integer
Exemple #1
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.");
             }
         }
     }
 }
 /**
  * @param PlayerInteractEvent $event
  *
  * @priority LOW
  */
 public function onInteract(PlayerInteractEvent $event)
 {
     if ($event->getAction() !== PlayerInteractEvent::RIGHT_CLICK_BLOCK) {
         return;
     }
     $player = $event->getPlayer();
     $gamer = $this->hub->getGamerForPlayer($player);
     $item = $event->getItem();
     $block = $event->getBlock();
     if ($block instanceof SignPost) {
         $sign = $block->getLevel()->getTile($block);
         if (!$sign instanceof Sign) {
             unset($sign);
         }
     }
     foreach ($this->hub->getJoinMethods() as $method) {
         if (!$method->isLevelCorrect($player->getLevel())) {
             continue;
         }
         if ($method instanceof KeyJoinMethod) {
             if ($method->key === null or $method->key->equals($item, true, false)) {
                 if ($method->lock === null or $method->lock->equals($block)) {
                     $gamer->setModule($this->hub->getModule($method->target));
                     return;
                 }
             }
         } elseif (isset($sign) and $method instanceof SignJoinMethod) {
             if ($method->matches($sign)) {
                 $gamer->setModule($this->hub->getModule($method->target));
                 return;
             }
         }
     }
 }
 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 onPlayerInteract(PlayerInteractEvent $event)
 {
     if ($event->getAction() !== PlayerInteractEvent::RIGHT_CLICK_BLOCK) {
         return;
     }
     $loc = $this->getLocationByPosition($event->getBlock());
     if (!isset($this->shops[$loc])) {
         return;
     }
     $shopData = $this->shops[$loc];
     if ($event->getItem()->isPlaceable()) {
         array_push($this->placeQueue, $event->getPlayer());
     }
     $event->setCancelled();
     if (!$event->getPlayer()->hasPermission("exchange.use")) {
         $event->getPlayer()->sendMessage(TextFormat::RED . self::getTranslation("NO_PERMISSION_USE"));
         return;
     }
     if (!$event->getPlayer()->getInventory()->contains(Item::get($shopData["from"]["id"], $shopData["from"]["damage"], $shopData["from"]["count"]))) {
         $event->getPlayer()->sendMessage(TextFormat::RED . self::getTranslation("INSUFFICIENT_ITEM"));
         return;
     }
     if (!$event->getPlayer()->getInventory()->canAddItem(Item::get($shopData["to"]["id"], $shopData["to"]["damage"], $shopData["to"]["count"]))) {
         $event->getPlayer()->sendMessage(TextFormat::RED . self::getTranslation("INSUFFICIENT_INVENTORY"));
         return;
     }
     if (!isset($this->doubleTap[$event->getPlayer()->getName()])) {
         $this->setDoubleTap($event->getPlayer(), $loc);
         return;
     }
     if ($this->doubleTap[$event->getPlayer()->getName()]["id"] !== $loc) {
         $this->setDoubleTap($event->getPlayer(), $loc);
         return;
     }
     if ($this->doubleTap[$event->getPlayer()->getName()]["time"] - microtime(true) >= 1.5) {
         $this->setDoubleTap($event->getPlayer(), $loc);
         return;
     }
     unset($this->doubleTap[$event->getPlayer()->getName()]);
     $event->getPlayer()->sendMessage(TextFormat::AQUA . self::getTranslation("EXCHANGED"));
     if (count($event->getPlayer()->getInventory()->removeItem(Item::get($shopData["from"]["id"], $shopData["from"]["damage"], $shopData["from"]["count"]))) <= 0) {
         $event->getPlayer()->getInventory()->addItem(Item::get($shopData["to"]["id"], $shopData["to"]["damage"], $shopData["to"]["count"]));
     }
 }
Exemple #5
0
 public function onPlayerInteract(PlayerInteractEvent $event)
 {
     if ($event->getAction() === PlayerInteractEvent::RIGHT_CLICK_BLOCK) {
         $this->permissionCheck($event);
     }
 }
Exemple #6
0
 public function onTouch(PlayerInteractEvent $event)
 {
     if ($event->getAction() !== PlayerInteractEvent::RIGHT_CLICK_BLOCK) {
         return;
     }
     $block = $event->getBlock();
     $loc = $block->getX() . ":" . $block->getY() . ":" . $block->getZ() . ":" . $block->getLevel()->getName();
     if (isset($this->sell[$loc])) {
         $sell = $this->sell[$loc];
         $player = $event->getPlayer();
         if ($player->getGamemode() % 2 === 1) {
             $player->sendMessage($this->getMessage("creative-mode"));
             $event->setCancelled();
             return;
         }
         if (!$player->hasPermission("economysell.sell.sell")) {
             $player->sendMessage($this->getMessage("no-permission-sell"));
             $event->setCancelled();
             return;
         }
         $cnt = 0;
         foreach ($player->getInventory()->getContents() as $item) {
             if ($item->getID() == $sell["item"] and $item->getDamage() == $sell["meta"]) {
                 $cnt += $item->getCount();
             }
         }
         if (!isset($sell["itemName"])) {
             $item = $this->getItem($sell["item"], $sell["meta"], $sell["amount"]);
             if ($item === false) {
                 $item = $sell["item"] . ":" . $sell["meta"];
             } else {
                 $item = $item[0];
             }
             $this->sell[$loc]["itemName"] = $item;
             $sell["itemName"] = $item;
         }
         $now = microtime(true);
         if ($this->getConfig()->get("enable-double-tap")) {
             if (!isset($this->tap[$player->getName()]) or $now - $this->tap[$player->getName()][1] >= 1.5 or $this->tap[$player->getName()][0] !== $loc) {
                 $this->tap[$player->getName()] = [$loc, $now];
                 $player->sendMessage($this->getMessage("tap-again", [$sell["itemName"], $sell["cost"], $sell["amount"]]));
                 return;
             } else {
                 unset($this->tap[$player->getName()]);
             }
         }
         if ($cnt >= $sell["amount"]) {
             $this->removeItem($player, new Item($sell["item"], $sell["meta"], $sell["amount"]));
             EconomyAPI::getInstance()->addMoney($player, $sell["cost"], true, "EconomySell");
             $player->sendMessage($this->getMessage("sold-item", array($sell["amount"], $sell["item"] . ":" . $sell["meta"], $sell["cost"])));
         } else {
             $player->sendMessage($this->getMessage("no-item"));
         }
         $event->setCancelled(true);
         if ($event->getItem()->isPlaceable()) {
             $this->placeQueue[$player->getName()] = true;
         }
     }
 }
 public function onPlayerInteract(PlayerInteractEvent $event)
 {
     if ($event->getAction() !== PlayerInteractEvent::RIGHT_CLICK_BLOCK) {
         return;
     }
     $dispenserId = $this->getDispenserId($event->getBlock());
     if (!isset($this->dispensers[$dispenserId])) {
         return;
     }
     if ($this->useOld && $event->getItem()->isPlaceable() || !$this->useOld && $event->getItem()->canBePlaced()) {
         $this->itemPlaceList[$event->getPlayer()->getName()] = true;
     }
     $event->setCancelled(true);
     if (!$event->getPlayer()->hasPermission("potiondispenser.use")) {
         $event->getPlayer()->sendMessage(TextFormat::RED . $this->getTranslation("NO_PERMISSION_USE"));
         return;
     }
     if (!isset($this->doubleTap[$event->getPlayer()->getName()])) {
         $this->setDoubleTap($event->getPlayer(), $dispenserId);
         return;
     }
     if ($this->doubleTap[$event->getPlayer()->getName()]["id"] !== $dispenserId) {
         $this->setDoubleTap($event->getPlayer(), $dispenserId);
         return;
     }
     if ($this->doubleTap[$event->getPlayer()->getName()]["time"] - microtime(true) >= 1.5) {
         $this->setDoubleTap($event->getPlayer(), $dispenserId);
         return;
     }
     unset($this->doubleTap[$event->getPlayer()->getName()]);
     if ($event->getPlayer()->hasEffect($this->dispensers[$dispenserId]["name"])) {
         $event->getPlayer()->sendMessage(TextFormat::RED . $this->getTranslation("ALREADY_HAS_EFFECT"));
         return;
     }
     $api = EconomyAPI::getInstance();
     if ($api->myMoney($event->getPlayer()) >= $this->dispensers[$dispenserId]["cost"]) {
         if ($this->dispensers[$dispenserId]["cost"] > 0) {
             $api->reduceMoney($event->getPlayer(), $this->dispensers[$dispenserId]["cost"], true, "PotionDispenser");
         } else {
             $api->addMoney($event->getPlayer(), -$this->dispensers[$dispenserId]["cost"], true, "PotionDispenser");
         }
         $event->getPlayer()->sendMessage(TextFormat::AQUA . $this->getTranslation("BOUGHT"));
         if ($this->dispensers[$dispenserId]["name"] === "clear") {
             $event->getPlayer()->removeAllEffects();
             $event->getPlayer()->sendTip($this->getTranslation("BOUGHT_COLOR_NAME_MONEY", TextFormat::WHITE, $this->getTranslation("CLEAR"), $this->dispensers[$dispenserId]["cost"], $api->getMonetaryUnit()));
         } else {
             $effect = Effect::getEffect($this->dispensers[$dispenserId]["name"]);
             $effect->setAmplifier($this->dispensers[$dispenserId]["amplifier"])->setDuration($this->dispensers[$dispenserId]["duration"]);
             $event->getPlayer()->addEffect($effect);
             $effectColor = $effect->getColor();
             $event->getPlayer()->sendTip($this->getTranslation("BOUGHT_COLOR_NAME_MONEY", $this->getTextFormatFromColor($effectColor[0], $effectColor[1], $effectColor[2]), $this->getServer()->getLanguage()->translate(new TextContainer($effect->getName())), $this->dispensers[$dispenserId]["cost"], $api->getMonetaryUnit()));
         }
     } else {
         $event->getPlayer()->sendMessage(TextFormat::RED . $this->getTranslation("NO_MONEY"));
     }
 }
Exemple #8
0
 public function onPlayerTouch(PlayerInteractEvent $event)
 {
     if ($event->getAction() !== PlayerInteractEvent::RIGHT_CLICK_BLOCK) {
         return;
     }
     $block = $event->getBlock();
     $loc = $block->getX() . ":" . $block->getY() . ":" . $block->getZ() . ":" . $block->getLevel()->getFolderName();
     if (isset($this->shop[$loc])) {
         $shop = $this->shop[$loc];
         $player = $event->getPlayer();
         if ($player->getGamemode() % 2 == 1) {
             $player->sendMessage($this->getMessage("invalid-gamemode"));
             $event->setCancelled();
             return;
         }
         if (!$player->hasPermission("economyshop.shop.buy")) {
             $player->sendMessage($this->getMessage("no-permission-buy"));
             $event->setCancelled();
             return;
         }
         if (!$player->getInventory()->canAddItem(Item::get($shop["item"], $shop["meta"]))) {
             $player->sendMessage($this->getMessage("full-inventory"));
             return;
         }
         $money = EconomyAPI::getInstance()->myMoney($player);
         if ($shop["price"] > $money) {
             $player->sendMessage($this->getMessage("no-money-buy", [$shop["item"] . ":" . $shop["meta"], $shop["price"], "%3"]));
             $event->setCancelled(true);
             if ($event->getItem()->isPlaceable()) {
                 $this->placeQueue[$player->getName()] = true;
             }
             return;
         } else {
             if (!isset($shop["itemName"])) {
                 $item = $this->getItem($shop["item"], $shop["meta"], $shop["amount"]);
                 if ($item === false) {
                     $item = $shop["item"] . ":" . $shop["meta"];
                 } else {
                     $item = $item[0];
                 }
                 $this->shop[$loc]["itemName"] = $item;
                 $shop["itemName"] = $item;
             }
             $now = microtime(true);
             if ($this->getConfig()->get("enable-double-tap")) {
                 if (!isset($this->tap[$player->getName()]) or $now - $this->tap[$player->getName()][1] >= 1.5 or $this->tap[$player->getName()][0] !== $loc) {
                     $this->tap[$player->getName()] = [$loc, $now];
                     $player->sendMessage($this->getMessage("tap-again", [$shop["itemName"], $shop["price"], $shop["amount"]]));
                     return;
                 } else {
                     unset($this->tap[$player->getName()]);
                 }
             }
             $player->getInventory()->addItem(new Item($shop["item"], $shop["meta"], $shop["amount"]));
             EconomyAPI::getInstance()->reduceMoney($player, $shop["price"], true, "EconomyShop");
             $player->sendMessage($this->getMessage("bought-item", [$shop["amount"], $shop["itemName"], $shop["price"]]));
             $event->setCancelled(true);
             if ($event->getItem()->isPlaceable()) {
                 $this->placeQueue[$player->getName()] = true;
             }
         }
     }
 }
Exemple #9
0
 public function onInteract(PlayerInteractEvent $e)
 {
     $p = $e->getPlayer();
     if ($e->getAction() === $e::LEFT_CLICK_BLOCK) {
     }
 }
Exemple #10
0
 public function onmotion(PlayerInteractEvent $event)
 {
     $player = $event->getPlayer();
     $name = $player->getName();
     $hitem = $player->getInventory()->getItemInHand();
     if ($hitem->getID() == 351 and $hitem->getDamage() == 5 and isset($this->joinedpvp[$name])) {
         $directionVector = $player->getDirectionVector()->multiply(3);
         $player->setMotion($directionVector);
     } elseif ($hitem->getID() == 351 and $hitem->getDamage() == 6) {
         $directionVector = $player->getDirectionVector()->multiply(5);
         $player->setMotion($directionVector);
         /////////////////
         /////////////////
     } elseif ($event->getAction() === PlayerInteractEvent::RIGHT_CLICK_AIR and isset($this->joinedpvp[$name])) {
         if ($hitem->getID() == 351 and $hitem->getDamage() == 1) {
             $directionVector = $player->getDirectionVector()->multiply(3);
             $player->setMotion($directionVector);
         } elseif ($hitem->getID() == 351 and $hitem->getDamage() == 2) {
             $directionVector = $player->getDirectionVector()->multiply(5);
             $player->setMotion($directionVector);
         }
     }
 }
Exemple #11
0
 public function onPlayerInteract(PlayerInteractEvent $event)
 {
     $where = $event->getTouchVector();
     $teamBelong = false;
     foreach ($this->option["teamCore"] as $team => $axis) {
         if ($axis["x"] == $where . getX() and $axis["y"] == $where . getY() and $axis["z"] == $where . getZ()) {
             $teamBelong = $team;
         }
     }
     if ($teamBelong === false) {
         //the block is not a core.
         return;
     }
     if ($event->getBlock()->getId() == 0) {
         //problem in setup!
         return;
     }
     $player = $event->getPlayer();
     $teamPlayer = $this->plugin->teamInfo[mb_strtolower($player->getName())];
     if (!isset($teamPlayer)) {
         $player->sendMessage($this->plugin->system["messages"]["notInTeam"]);
         return;
     }
     if ($teamBelong == $teamPlayer) {
         //the player attacks its own core.
         $player->sendMessage($this->plugin->system["messages"]["yourCore"]);
         return;
     }
     $action = $event->getAction();
     if ($action != PlayerInteractEvent::LEFT_CLICK_BLOCK or $action != PlayerInteractEvent::RIGHT_CLICK_BLOCK) {
         return;
     }
     $inv = $player->getInventory();
     $item = $inv->getItemInHand();
     $handItemId = $item->getId();
     $damage = 5;
     switch ($handItemId) {
         case 283:
             //gold sword
             $damage = 55;
             break;
         case 284:
             //gold tools
         //gold tools
         case 285:
         case 286:
             $damage = 50;
             break;
         case 276:
             //diamond sword
             $damage = 45;
             break;
         case 275:
             //diamond tools
         //diamond tools
         case 274:
         case 273:
             $damage = 40;
             break;
         case 276:
             //iron sword
             $damage = 35;
             break;
         case 256:
             //iron tools
         //iron tools
         case 257:
         case 258:
             $damage = 30;
             break;
         case 276:
             //stone sword
             $damage = 25;
             break;
         case 256:
             //stone tools
         //stone tools
         case 257:
         case 258:
             $damage = 20;
             break;
         case 283:
             //wood sword
             $damage = 15;
             break;
         case 284:
             //wood tools
         //wood tools
         case 285:
         case 286:
             $damage = 10;
             break;
         case 290:
             //wood hoe
         //wood hoe
         case 291:
             //stone hoe
         //stone hoe
         case 292:
             //iron hoe
         //iron hoe
         case 293:
             //diamond hoe
         //diamond hoe
         case 294:
             //gold hoe
             $damage = 10;
             break;
     }
     processDamageCore($teamBelong, $damage);
 }
 public function PlayerInteractEvent(PlayerInteractEvent $ev)
 {
     if ($ev->getFace() == 255 || $ev->getAction() != PlayerInteractEvent::RIGHT_CLICK_BLOCK) {
         return;
     }
     $item = $ev->getItem();
     $player = $ev->getPlayer();
     $pos = $ev->getBlock()->getSide($ev->getFace());
     if ($item->getId() === Item::SPAWN_EGG) {
         $entity = self::create($item->getDamage(), $pos);
         if ($entity != null) {
             $entity->spawnToAll();
         }
         if ($player->isSurvival()) {
             $item->count--;
             $player->getInventory()->setItemInHand($item);
         }
         $ev->setCancelled();
     } elseif ($item->getId() === Item::MONSTER_SPAWNER) {
         self::$spawn["{$pos->x}:{$pos->y}:{$pos->z}:{$pos->level->getFolderName()}"] = ["radius" => 5, "mob-list" => ["Cow", "Pig", "Sheep", "Chicken", "Zombie", "Creeper", "Skeleton", "Spider", "PigZombie", "Enderman"]];
     }
 }
Exemple #13
0
 public function onPlayerInteract(PlayerInteractEvent $event)
 {
     if ($this->isValidPlayer($event->getPlayer())) {
         $player = $this->players[$event->getPlayer()->getName()];
         $skill = $player->getSkillByItem($event->getItem());
         if ($skill !== null) {
             $event->setCancelled();
         }
         if ($event->getAction() === PlayerInteractEvent::RIGHT_CLICK_BLOCK) {
             return;
         }
         /**
          * @var $skill Skill
          */
         if ($skill !== null) {
             $player->useSkill($skill, $event);
         }
     }
 }
Exemple #14
0
 public function onTouch(PlayerInteractEvent $event)
 {
     if (!$event->getAction()) {
         return;
     }
     if ($event->getPlayer()->isOp()) {
         return;
     }
     if ($this->checkSpawn($event->getBlock(), 5)) {
         $this->message($event->getPlayer(), $this->get("cannot-spawn-modify"));
         $event->setCancelled();
     }
 }
Exemple #15
0
 public function onInteract(PlayerInteractEvent $event)
 {
     if ($this->status === self::STAT_GAME_IN_PROGRESS) {
         $player = $event->getPlayer();
         $item = $player->getInventory()->getItemInHand();
         if ($event->getAction() === PlayerInteractEvent::RIGHT_CLICK_BLOCK) {
             if ($item->getId() === self::GUN_ID) {
                 $this->players[$player->getName()][0]->shoot();
             }
         } elseif ($event->getAction() === PlayerInteractEvent::RIGHT_CLICK_AIR) {
             if ($item->getId() === self::GRENADE_ID) {
                 $this->players[$player->getName()][1]->lob($event->getTouchVector());
                 $player->getInventory()->removeItem(Item::get(self::GRENADE_ID, 0, 1));
             }
         }
     }
 }
Exemple #16
0
 public function onBlockTouch(PlayerInteractEvent $event)
 {
     if ($event->getAction() !== PlayerInteractEvent::RIGHT_CLICK_BLOCK) {
         return;
     }
     $block = $event->getBlock();
     $loc = $block->getX() . ":" . $block->getY() . ":" . $block->getZ() . ":" . $block->getLevel()->getFolderName();
     if (isset($this->shop[$loc])) {
         $player = $event->getPlayer();
         if ($player->hasPermission("economypshop.shop.buy")) {
             $shop = $this->shop[$loc];
             if ($shop["owner"] == $player->getName()) {
                 $player->sendMessage($this->getMessage("same-player"));
                 return;
             }
             if ($shop["price"] < 0 or $shop["amount"] < 1) {
                 $player->sendMessage($this->getMessage("wrong-num"));
                 return;
             }
             $now = microtime(true);
             if (!isset($this->tap[$player->getName()]) or $now - $this->tap[$player->getName()][1] >= 1.5 or $this->tap[$player->getName()][0] !== $loc) {
                 $this->tap[$player->getName()] = [$loc, $now];
                 $player->sendMessage($this->getMessage("tap-again", [$shop["itemName"], $shop["price"], $shop["amount"]]));
                 return;
             } else {
                 unset($this->tap[$player->getName()]);
             }
             if (($cloud = $this->itemcloud->getCloudForPlayer($shop["owner"])) instanceof \onebone\itemcloud\ItemCloud) {
                 if ($shop["amount"] > $cloud->getCount($shop["item"], $shop["meta"])) {
                     $player->sendMessage($this->getMessage("no-stock"));
                 } else {
                     if ($player->getInventory()->canAddItem($item = new Item($shop["item"], $shop["meta"], $shop["amount"])) === false) {
                         $player->sendMessage($this->getMessage("no-space"));
                     } else {
                         $api = \onebone\economyapi\EconomyAPI::getInstance();
                         if ($api->myMoney($player) > $shop["price"]) {
                             $player->getInventory()->addItem($item);
                             $api->reduceMoney($player, $shop["price"], true, "EconomyPShop");
                             $player->sendMessage($this->getMessage("bought-item", [$shop["item"] . ":" . $shop["meta"], $shop["price"], $shop["amount"]]));
                             $cloud->removeItem($shop["item"], $shop["meta"], $shop["amount"]);
                             $api->addMoney($shop["owner"], $shop["price"], true, "EconomyPShop");
                         } else {
                             $player->sendMessage($this->getMessage("no-money"));
                         }
                     }
                 }
             } else {
                 $player->sendMessage($this->getMessage("shop-owner-no-account"));
             }
             $event->setCancelled();
             if ($event->getItem()->canBePlaced()) {
                 $this->placeQueue[$player->getName()] = true;
             }
         } else {
             $player->sendMessage($this->getMessage("no-permission-buy"));
         }
     }
 }
Exemple #17
0
 public function onBlockTouch(PlayerInteractEvent $event)
 {
     if ($event->getAction() !== PlayerInteractEvent::RIGHT_CLICK_BLOCK) {
         return;
     }
     $block = $event->getBlock();
     if (isset($this->airport[$block->getX() . ":" . $block->getY() . ":" . $block->getZ() . ":" . $block->getLevel()->getFolderName()])) {
         $airport = $this->airport[$block->getX() . ":" . $block->getY() . ":" . $block->getZ() . ":" . $block->getLevel()->getFolderName()];
         if ($airport["type"] === 1) {
             return;
         }
         $player = $event->getPlayer();
         if (isset($this->airport[$airport["targetX"] . ":" . $airport["targetY"] . ":" . $airport["targetZ"] . ":" . $airport["targetLevel"]]) and $this->airport[$airport["targetX"] . ":" . $airport["targetY"] . ":" . $airport["targetZ"] . ":" . $airport["targetLevel"]]["type"] === 1) {
             $money = EconomyAPI::getInstance()->myMoney($player);
             if (!$block->getLevel()->getTile(new Vector3($airport["targetX"], $airport["targetY"], $airport["targetZ"], $airport["targetLevel"])) instanceof Sign) {
                 $player->sendMessage($this->getMessage("no-airport", [$airport["target"], "%2"]));
                 unset($this->airport[$airport["target"]]);
                 return;
             }
             if ($money < $airport["cost"]) {
                 $player->sendMessage($this->getMessage("no-money", [$airport["cost"], $money]));
             } else {
                 EconomyAPI::getInstance()->reduceMoney($player, $airport["cost"], true, "EconomyAirport");
                 $level = $this->getServer()->getLevelByName($airport["targetLevel"]);
                 $player->teleport(new Position($airport["targetX"], $airport["targetY"], $airport["targetZ"], $level));
                 $time = $level->getTime();
                 $day = (int) ($time / Level::TIME_FULL);
                 $time -= $day * Level::TIME_FULL;
                 $phrase = "sunrise";
                 if ($time < 1200) {
                     $phrase = "day";
                 } elseif ($time % Level::TIME_SUNSET < 2000) {
                     $phrase = "sunset";
                 } elseif ($time % Level::TIME_NIGHT < 9000) {
                     $phrase = "night";
                 }
                 $player->sendMessage($this->getMessage("thank-you", [$airport["target"], $level->getTime() . " (" . $phrase . ")"]));
             }
         } else {
             $player->sendMessage($this->getMessage("no-airport", [$airport["target"], "%2"]));
         }
     }
 }
Exemple #18
0
 public function onPlayerInteract(PlayerInteractEvent $event)
 {
     if ($event->getAction() !== PlayerInteractEvent::RIGHT_CLICK_BLOCK) {
         return;
     }
     $tag = $event->getBlock()->getX() . ";" . $event->getBlock()->getY() . ";" . $event->getBlock()->getZ() . ";" . $event->getBlock()->getLevel()->getFolderName();
     if (!isset($this->shops[$tag])) {
         return;
     }
     if (!isset($this->doubleTap[$event->getPlayer()->getName()])) {
         $this->setDoubleTap($event->getPlayer(), $tag);
         return;
     }
     if ($this->doubleTap[$event->getPlayer()->getName()]["id"] !== $tag) {
         $this->setDoubleTap($event->getPlayer(), $tag);
         return;
     }
     if ($this->doubleTap[$event->getPlayer()->getName()]["time"] - microtime(true) >= 1.5) {
         $this->setDoubleTap($event->getPlayer(), $tag);
         return;
     }
     unset($this->doubleTap[$event->getPlayer()->getName()]);
     $returnVal = $this->shops[$tag]->canBuy($event->getPlayer());
     if ($returnVal !== true) {
         $event->getPlayer()->sendMessage(TextFormat::RED . ToAruPG::getTranslation($returnVal));
         return;
     }
     $this->shops[$tag]->buy($event->getPlayer());
     if ($event->getItem()->canBePlaced()) {
         $this->itemPlaceList[$event->getPlayer()->getName()] = true;
     }
     $event->setCancelled(true);
 }
 public function onBlockTouch(PlayerInteractEvent $event)
 {
     if ($event->getAction() !== PlayerInteractEvent::RIGHT_CLICK_BLOCK) {
         return;
     }
     $player = $event->getPlayer();
     $block = $event->getBlock();
     $iusername = strtolower($player->getName());
     if (isset($this->queue[$iusername])) {
         $queue = $this->queue[$iusername];
         $item = Item::fromString($queue[0]);
         $item->setCount($queue[1]);
         $ev = new ShopCreationEvent($block, $item, $queue[2], $queue[3]);
         $this->getServer()->getPluginManager()->callEvent($ev);
         if ($ev->isCancelled()) {
             $player->sendMessage($this->getMessage("shop-create-failed"));
             unset($this->queue[$iusername]);
             return;
         }
         $result = $this->provider->addShop($block, [$block->getX(), $block->getY(), $block->getZ(), $block->getLevel()->getFolderName(), $item->getID(), $item->getDamage(), $item->getName(), $queue[1], $queue[2], $queue[3]]);
         if ($result) {
             if ($queue[3] !== -2) {
                 $pos = $block;
                 if ($queue[3] !== -1) {
                     $pos = $block->getSide($queue[3]);
                 }
                 $this->items[$pos->getLevel()->getFolderName()][] = $dis = new ItemDisplayer($pos, $item, $block);
                 $dis->spawnToAll($pos->getLevel());
             }
             $player->sendMessage($this->getMessage("shop-created"));
         } else {
             $player->sendMessage($this->getMessage("shop-already-exist"));
         }
         if ($event->getItem()->canBePlaced()) {
             $this->placeQueue[$iusername] = true;
         }
         unset($this->queue[$iusername]);
         return;
     } elseif (isset($this->removeQueue[$iusername])) {
         $shop = $this->provider->getShop($block);
         foreach ($this->items as $level => $arr) {
             foreach ($arr as $key => $displayer) {
                 $link = $displayer->getLinked();
                 if ($link->getX() === $shop[0] and $link->getY() === $shop[1] and $link->getZ() === $shop[2] and $link->getLevel()->getFolderName() === $shop[3]) {
                     $displayer->despawnFromAll();
                     unset($this->items[$key]);
                     break 2;
                 }
             }
         }
         $this->provider->removeShop($block);
         unset($this->removeQueue[$iusername]);
         $player->sendMessage($this->getMessage("shop-removed"));
         if ($event->getItem()->canBePlaced()) {
             $this->placeQueue[$iusername] = true;
         }
         return;
     }
     if (($shop = $this->provider->getShop($block)) !== false) {
         if ($this->getConfig()->get("enable-double-tap")) {
             $now = time();
             if (isset($this->tap[$iusername]) and $now - $this->tap[$iusername] < 1) {
                 $this->buyItem($player, $shop);
                 unset($this->tap[$iusername]);
             } else {
                 $this->tap[$iusername] = $now;
                 $player->sendMessage($this->getMessage("tap-again", [$shop[7], $shop[6], $shop[8]]));
             }
         } else {
             $this->buyItem($player, $shop);
         }
         if ($event->getItem()->canBePlaced()) {
             $this->placeQueue[$iusername] = true;
         }
     }
 }
Exemple #20
0
 public function onTouch(PlayerInteractEvent $event)
 {
     $player = $event->getPlayer();
     if (isset($this->make_Queue[$event->getPlayer()->getName()])) {
         if ($this->make_Queue[$event->getPlayer()->getName()]["pos1"] == false) {
             $event->setCancelled();
             $this->make_Queue[$event->getPlayer()->getName()]["pos1"] = $event->getBlock()->getSide(0);
             $this->message($event->getPlayer(), $this->get("complete-pos1"));
             return;
         } else {
             if ($this->make_Queue[$event->getPlayer()->getName()]["pos2"] == false) {
                 $event->setCancelled();
                 $this->make_Queue[$event->getPlayer()->getName()]["pos2"] = $event->getBlock()->getSide(0);
                 $this->message($event->getPlayer(), $this->get("complete-pos2"));
                 $this->message($event->getPlayer(), $this->get("complete-pos-msg1"));
                 $this->message($event->getPlayer(), $this->get("complete-pos-msg2"));
                 return;
             }
         }
     }
     if ($event->getBlock()->getID() == 323 or $event->getBlock()->getID() == 63 or $event->getBlock()->getID() == 68) {
         $sign = $event->getPlayer()->getLevel()->getTile($event->getBlock());
         if ($sign instanceof Sign) {
             $lines = $sign->getText();
             if ($lines[0] == $this->signTemplate["signTemplate"][0] and isset(explode($this->signTemplate["signTemplate"][1], $lines[1])[1])) {
                 if ($lines[2] == $this->signTemplate["signTemplate"][2] and $lines[3] == $this->signTemplate["signTemplate"][3]) {
                     $size = explode($this->signTemplate["signTemplate"][1], $lines[1]);
                     if (!is_numeric($size[0]) or !is_numeric($size[1])) {
                         return;
                     }
                     $startX = $event->getBlock()->x + 1;
                     $startZ = $event->getBlock()->z + 1;
                     $endX = $event->getBlock()->x + $size[1] - 1;
                     $endZ = $event->getBlock()->z + $size[0] - 1;
                     $area_id = $this->db[$player->level->getFolderName()]->addArea(null, $startX, $endX, $startZ, $endZ, false);
                     if ($area_id == false) {
                         $this->message($player, $this->get("failed-buyarea-area-is-overlap"));
                     } else {
                         $this->db[$player->level->getFolderName()]->yml[$area_id]["is-home"] = true;
                         $this->message($player, $this->get("areaset-success"));
                     }
                 }
             }
         }
     }
     if ($event->getItem()->canBeActivated() or $event->getBlock()->canBeActivated()) {
         if (!$event->getAction()) {
             return;
         }
         if ($player->isOp()) {
             return;
         }
         if ($event->getBlock()->getId() == Block::CRAFTING_TABLE or $event->getBlock()->getId() == Block::FURNACE) {
             return;
         }
         $area = $this->db[$event->getBlock()->getLevel()->getFolderName()]->getArea($event->getBlock()->x, $event->getBlock()->z);
         if ($area != null) {
             if (isset($area["resident"][0])) {
                 if ($this->db[$event->getBlock()->getLevel()->getFolderName()]->checkResident($area["ID"], $player->getName())) {
                     return;
                 }
             }
             $event->setCancelled();
         } else {
             if ($this->db[$event->getBlock()->getLevel()->getFolderName()]->isWhiteWorld()) {
                 if ($this->db[$event->getBlock()->getLevel()->getFolderName()]->option["white-protect"] == true) {
                     $event->setCancelled();
                 }
             }
         }
     }
 }
Exemple #21
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;
             }
         }
     }
 }
 public function onTouch(PlayerInteractEvent $event)
 {
     //onTouch
     if ($event->getAction() == PlayerInteractEvent::RIGHT_CLICK_BLOCK) {
         $block = $event->getBlock();
         $this->log("touch - " . $block);
         switch ($block->getId()) {
             case Block::WALL_SIGN:
                 $tile = $event->getPlayer()->getLevel()->getTile($block);
                 if (!$tile instanceof Sign) {
                     return;
                 }
                 $two = $event->getPlayer()->getLevel()->getBlock(new Vector3($block->getX(), $block->getY() - 2, $block->getZ()));
                 $one = $event->getPlayer()->getLevel()->getBlock(new Vector3($block->getX(), $block->getY() - 1, $block->getZ()));
                 $this->log("bottom2: " . $two . " bottom1: " . $one);
                 if (Floor::isElevatorBlock($two) || Floor::isExtensionFloorBlock($two)) {
                     $this->log("onTouch-buttonUp run");
                     $this->buttonUp($two, $event->getPlayer(), $event);
                 } else {
                     if (Floor::isElevatorBlock($one) || Floor::isExtensionFloorBlock($one)) {
                         $this->log("onTouch-buttonDown run");
                         $this->buttonDown($one, $event->getPlayer(), $event);
                     }
                 }
                 break;
             default:
                 if (Floor::isBlockEqual($block, $this->getBlock("TYPE-ADVANCE-SLOW")) || Floor::isBlockEqual($block, $this->getBlock("TYPE-ADVANCE-FAST")) || Floor::isBlockEqual($block, $this->getBlock("TYPE-EXTENSION-FLOOR"))) {
                     $this->log("onTouch-advanceMove run");
                     $this->advanceMove($event->getPlayer(), $block, $event);
                 }
         }
     }
 }