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"])); } }
public function onPlayerInteract(PlayerInteractEvent $event) { if ($event->getAction() === PlayerInteractEvent::RIGHT_CLICK_BLOCK) { $this->permissionCheck($event); } }
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")); } }
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; } } } }
public function onInteract(PlayerInteractEvent $e) { $p = $e->getPlayer(); if ($e->getAction() === $e::LEFT_CLICK_BLOCK) { } }
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); } } }
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"]]; } }
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); } } }
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(); } }
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)); } } } }
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")); } } }
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"])); } } }
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; } } }
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(); } } } } }
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); } } } }