public function onBlock(PlayerInteractEvent $event) { if (!$event->getPlayer()->hasPermission("Farms") and !$event->getPlayer()->hasPermission("Farms.VIP")) { return; } $block = $event->getBlock()->getSide(1); // Cocoa been if ($event->getItem()->getId() == Item::DYE and $event->getItem()->getDamage() == 3) { $tree = $event->getBlock()->getSide($event->getFace()); // Jungle wood if ($tree->getId() == Block::WOOD and $tree->getDamage() == 3) { $event->getBlock()->getLevel()->setBlock($event->getBlock()->getSide($event->getFace()), new CocoaBeanBlock($event->getFace()), true, true); return; } } // Farmland or sand if ($event->getBlock()->getId() == Item::FARMLAND or $event->getBlock()->getId() == Item::SAND) { foreach ($this->crops as $crop) { if ($event->getItem()->getId() == $crop["item"]) { $key = $block->x . "." . $block->y . "." . $block->z; $this->farmData[$key]['id'] = $crop["block"]; $this->farmData[$key]['damage'] = 0; $this->farmData[$key]['level'] = $block->getLevel()->getFolderName(); $this->farmData[$key]['time'] = $this->makeTimestamp(date("Y-m-d H:i:s")); $this->farmData[$key]['growtime'] = $this->speedData[$event->getPlayer()->hasPermission("Farms.VIP") ? "vip-growing-time" : "growing-time"]; break; } } } }
public function onBlock(PlayerInteractEvent $event) { if (!$event->getPlayer()->hasPermission("Farms")) { return; } $block = $event->getBlock()->getSide(1); $blockid = $block->getID(); $itemid = $event->getItem()->getID(); $itemdamage = $event->getItem()->getDamage(); if ($itemid == 351 and $itemdamage == 3) { $tree = $event->getBlock()->getSide($event->getFace()); if ($tree->getID() == 17 or $tree->getDamage() == 3) { $event->getBlock()->getLevel()->setBlock($event->getBlock()->getSide($event->getFace()), new CocoaBeanBlock($event->getFace()), true, true); return true; } } if ($event->getBlock()->getID() == Item::FARMLAND or $event->getBlock()->getID() == Item::SAND) { foreach ($this->growids as $index => $growid) { if ($itemid == $growid) { $this->farmdata[$block->x . "." . $block->y . "." . $block->z]['id'] = $this->blockids[$index]; $this->farmdata[$block->x . "." . $block->y . "." . $block->z]['damage'] = 0; $this->farmdata[$block->x . "." . $block->y . "." . $block->z]['time'] = $this->configdata["growing-time"]; break; } } } }
/** * @param PlayerInteractEvent $event * * @priority HIGH */ public function onBlockTap(PlayerInteractEvent $event) { // PowerTool if ($this->getAPI()->executePowerTool($event->getPlayer(), $event->getItem())) { $event->setCancelled(true); } }
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(); }
/** * @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 FurnaceTouch(PlayerInteractEvent $event) { $block = $event->getBlock(); $player = $event->getPlayer(); $item = $event->getItem()->getID(); if ($block->getID() == Item::FURNACE or $block->getID() == Item::BURNING_FURNACE) { $event->setCancelled(true); if (isset($this->recipes[$item])) { $coal = 0; foreach ($player->getInventory()->getContents() as $inven) { if (!$inven instanceof Item) { return; } if ($inven->getID() == Item::COAL) { $coal = $inven->getCount(); break; } } if ($coal == Item::AIR and $item != Item::WOOD and !isset($this->coal_cache[$player->getName()])) { $player->sendMessage(TextFormat::DARK_AQUA . "석탄이 없습니다 ! ( 원목으로 목탄을 만드세요 ! )"); } else { $player->getInventory()->addItem(Item::get($this->recipes[$item])); $player->getInventory()->removeItem(Item::get($item, $event->getItem()->getDamage())); if ($item != Item::WOOD) { if (!isset($this->coal_cache[$player->getName()])) { $player->getInventory()->removeItem(Item::get(Item::COAL)); $this->coal_cache[$player->getName()] = 3; } else { $this->coal_cache[$player->getName()]--; if ($this->coal_cache[$player->getName()] == 0) { unset($this->coal_cache[$player->getName()]); } } } $player->sendMessage(TextFormat::DARK_AQUA . "성공적으로 구워졌습니다. (인벤토리 확인)"); } } else { $player->sendMessage(TextFormat::DARK_AQUA . "조합할 물건으로 터치시 조합 가능합니다 !"); } if ($event->getItem()->isPlaceable()) { $this->PlacePrevent[$player->getName()] = true; } } }
public function onTouchCrate(PlayerInteractEvent $e) { if ($e->getBlock()->getId() == 54) { if ($e->getItem()->getId() == $this->getConfig()->get("cratekey-item")) { if ($e->getPlayer()->hasPermission("mysterycrates.crates.open")) { $e->setCancelled(); $this->openCrate($e->getPlayer()); } } } }
public function onPlayerInteract(PlayerInteractEvent $event) { $i = $event->getItem(); $b = $event->getBlock(); $p = $event->getPlayer(); if ($b->getID() == 17 && $b->getDamage() == 3) { if ($i->getID() == 351 && $i->getDamage() == 3) { $f = $event->getFace(); if ($b->getSide($f)->getID() !== 0) { return; } switch ($f) { case 2: $meta = 0; break; case 3: $meta = 2; break; case 4: $meta = 3; break; case 5: $meta = 1; break; } if (!isset($meta)) { return; } $this->beanPlace($b->getSide($f), $meta); if (!$p->isCreative()) { $i = $p->getInventory()->getItemInHand(); $i->setCount($i->getCount() - 1); $inv = $p->getInventory(); $inv->setItem($inv->getHeldItemSlot(), $i); } } } elseif ($b->getID() == 127) { if (!isset($this->grow[$this->getPos($b)])) { $this->beanPlace($b, $b->getDamage()); } if ($i->getID() == 351 && $i->getDamage() == 15) { $this->beanGrow($b, true); if (!$p->isCreative()) { $i = $p->getInventory()->getItemInHand(); $i->setCount($i->getCount() - 1); $inv = $p->getInventory(); $inv->setItem($inv->getHeldItemSlot(), $i); } } } }
/** * @param PlayerInteractEvent $ev */ public function onInteract(PlayerInteractEvent $ev) { if ($ev->getItem()->getId() == 296) { $player = $ev->getPlayer(); $effect = Effect::getEffect(5); $effect->setDuration(20 * 1000); $effect->setAmplifier(1); $player->getEffect($effect); $effect1 = Effect::getEffect(4); $effect1->setDuration(20 * 1000); $effect1->setAmplifier(1); $player->getEffect($effect1); } }
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 playerBlockTouch(PlayerInteractEvent $event) { $sender = $event->getPlayer(); $block = $event->getBlock(); $item = $event->getItem()->getID(); $xyz = $block->x . ":" . $block->y . ":" . $block->z; if (!($event->getBlock()->getID() == 323 or $event->getBlock()->getID() == 63 or $event->getBlock()->getID() == 68)) { return; } $sign = $event->getPlayer()->getLevel()->getTile($block); if (!$sign instanceof Sign) { return; } $sign = $sign->getText(); if (!($sign[0] == "[터치시 돈 획득]")) { return; } if (isset($sign[1])) { if (!isset($this->list[$sender->getName()][$xyz]["time"])) { $e = explode("\$", $sign[1]); $money = $e[1]; $this->api->addMoney($sender, $money); $sender->sendMessage(TextFormat::DARK_AQUA . "[안내] \$" . $money . "를 획득하셨습니다 !"); $this->list[$sender->getName()][$xyz]["time"] = date("d"); return; } else { if ($this->list[$sender->getName()][$xyz]["time"] != date("d")) { $e = explode("\$", $sign[1]); $money = $e[1]; $this->api->addMoney($sender, $money); $sender->sendMessage(TextFormat::DARK_AQUA . "[안내] \$" . $money . "를 획득하셨습니다 !"); $this->list[$sender->getName()][$xyz]["time"] = date("d"); return; } else { $sender->sendMessage(TextFormat::RED . "[안내] 보상은 하루 한번만 가능합니다 !"); return; } } } else { $sender->sendMessage(TextFormat::RED . "[안내] 잘못된 표시판 ! 작동되지않습니다 !"); return; } }
public function onPlayerTouch(PlayerInteractEvent $event) { $player = $event->getPlayer(); $block = $event->getBlock(); $item = $event->getItem()->getID(); if (!($block->getID() == 323 or $block->getID() == 63 or $block->getID() == 68)) { return; } $sign = $event->getPlayer()->getLevel()->getTile($block); if (!$sign instanceof Sign) { return; } $sign = $sign->getText(); if (!($sign[0] == "[색상체크]")) { return; } $player->sendMessage($this->getColorMessage($player)); $this->placeQueue[$player->getName()] = true; }
public function groundPound(PlayerInteractEvent $e) { $player = $e->getPlayer(); if ($e->getItem() == 256) { $player->setMotion($jump = new Vector3(0, 0.5, 0)); $this->onGround = true; $player->afftected = false; //To not make the player be affected by the if in the pound() function } }
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 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 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 onTouch(PlayerInteractEvent $ev) { if ($ev->isCancelled()) { return; } $pl = $ev->getPlayer(); if (!$this->getState($pl, false)) { return; } if ($ev->getBlock()->getId() == Block::AIR) { return; } if (!$pl->isCreative() || !$this->creative) { if ($this->items && !isset($this->items[$ev->getItem()->getId()])) { //echo "Not using an PickAxe\n"; //##DEBUG return; } } $bl = $ev->getBlock(); if ($this->items && $this->itemwear) { $hand = $pl->getInventory()->getItemInHand(); $bl->getLevel()->useBreakOn($bl, $hand, $pl); $pl->getInventory()->setItemInHand($hand); } else { $bl->getLevel()->useBreakOn($bl, null, $pl); } }
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 onPlayerInteract(\pocketmine\event\player\PlayerInteractEvent $event) { $block = $event->getBlock(); if ($block->getID() !== 20) { $block = $block->getSide($event->getFace()); } $player = $event->getPlayer(); if (isset($this->editors[$name = $player->getName()])) { return false; } $t = $this->touch; $sh = $this->sh; $ik = $this->isKorean(); $pos = $this->getPos($block); if (isset($t[$name])) { switch ($t[$name]["Type"]) { case "Add": $this->addShop($pos, $t[$name]["Mode"] == self::BUY ? "Buy" : "Sell", $t[$name]["Item"], $t[$name]["Count"], $t[$name]["Price"]); $player->sendMessage(Color::YELLOW . "[Shop] " . ($ik ? "상점이 생성되었습니다." : "Shop Create")); unset($t[$name]); break; case "Change": if (!isset($sh[$pos])) { $player->sendMessage(Color::RED . "[Shop] " . ($ik ? "이곳에는 상점이 없습니다." : "Shop is not exist here")); } else { $this->removeShop($pos); $this->addShop($pos, $t[$name]["Mode"] == self::BUY ? "Buy" : "Sell", $t[$name]["Item"], $t[$name]["Count"], $t[$name]["Price"]); $player->sendMessage(Color::YELLOW . "[Shop] " . ($ik ? "상점이 변경되었습니다." : "Shop Changed")); unset($t[$name]); } break; case "Del": if (!isset($sh[$pos])) { $player->sendMessage(Color::RED . "[Shop] " . ($ik ? "이곳에는 상점이 없습니다." : "Shop is not exist here")); } else { $this->removeShop($pos); $player->sendMessage(Color::YELLOW . "[Shop] " . ($ik ? "상점이 제거되었습니다." : "Shop is Delete")); unset($t[$name]); } break; case "DelMode": if (!isset($sh[$pos])) { $player->sendMessage(Color::RED . "[Shop] " . ($ik ? "이곳에는 상점이 없습니다." : "Shop is not exist here")); } else { $this->removeShop($pos); $player->sendMessage(Color::YELLOW . "[Shop] " . ($ik ? "[제거모드] 상점이 제거되었습니다." : "[DelMode] Shop is Delete")); } break; } $this->touch = $t; } elseif (isset($sh[$pos])) { $shop = $sh[$pos]; if ($player->isCreative()) { $player->sendMessage(Color::RED . "[Shop] " . ($ik ? " 당신은 크리에이티브입니다.\n" . Color::RED . "[{$shop['0']}] 상점정보 : [구매] 아이디: {$shop['1']} (갯수 : {$shop['2']}) 가격 : {$shop['3']} 원" : " You are Creative mode\n" . Color::RED . "[Shop] StoreInfo : [{$shop['0']}] ID: {$shop['1']} (Count: {$shop['2']}) Price: {$shop['3']} \$")); } else { $tap = $this->tap; $item = Item::fromString($shop[1]); $item->setCount($shop[2]); if (!isset($tap[$name]) || $tap[$name][1] !== $pos) { $tap[$name] = [0, $pos]; } $player->getLevel()->addSound(new \pocketmine\level\sound\ClickSound($block), [$player]); switch ($shop[0]) { case "Buy": if (microtime(true) - $tap[$name][0] > 0) { $player->sendMessage(Color::YELLOW . "[Shop] " . ($ik ? "구매하시려면 다시한번눌러주세요.\n" . Color::YELLOW . " [Shop] 상점정보 : [구매] 아이디: {$shop['1']} (갯수 : {$shop['2']}) 가격 : {$shop['3']} 원" : "If you want to buy, One more touch block\n" . Color::YELLOW . " [Shop] StoreInfo : [Buy] ID: {$shop['1']} (Count: {$shop['2']}) Price: {$shop['3']} \$")); } elseif (($money = $this->getMoney($player)) < $shop[3]) { $player->sendMessage(Color::RED . "[Shop] " . ($ik ? "돈이 부족합니다. \n" . Color::YELLOW . "[Shop] 나의돈 : {$money} 원" : "You has less money than its price \n" . Color::YELLOW . "[Shop] Your money : {$money} \$")); } else { $player->getInventory()->addItem($item); $this->giveMoney($player, -$shop[3]); $player->sendMessage(Color::YELLOW . "[Shop] " . ($ik ? "아이템을 구매하셨습니다. 아이디 : {$shop['1']} (갯수 : {$shop['2']}) 가격 : {$shop['3']} 원\n" . Color::YELLOW . " [Shop] 나의 돈: " . $this->getMoney($player) . " \$" : "You buy Item. ID: {$shop['1']} (Count: {$shop['2']}) Price: {$shop['3']} \$\n" . Color::YELLOW . " [Shop] Your money: " . $this->getMoney($player) . " \$")); } break; case "Sell": if (microtime(true) - $tap[$name][0] > 0) { $player->sendMessage(Color::YELLOW . "[Shop] " . ($ik ? "판매하시려면 다시한번눌러주세요.\n" . Color::YELLOW . " [Shop] 상점정보 : [판매] 아이디: {$shop['1']} (갯수 : {$shop['2']}) 가격 : {$shop['3']} 원" : "If you want to sell, One more touch block\n" . Color::YELLOW . " [Shop] StoreInfo : [Sell] ID: {$shop['1']} (Count: {$shop['2']}) Price: {$shop['3']} \$")); } else { $count = 0; foreach ($player->getInventory()->getContents() as $ii) { if ($item->equals($ii, true)) { $count += $ii->getCount(); } } if ($count < $shop[2]) { $player->sendMessage(Color::RED . "[Shop] " . ($ik ? "아이템이 부족합니다.\n" . Color::RED . " [Shop] 소유갯수 : " : "You has less Item than its count\n" . Color::RED . " [Shop] Your have : ") . $count); } else { $player->getInventory()->removeItem($item); $this->giveMoney($player, $shop[3]); $player->sendMessage(Color::YELLOW . "[Shop] " . ($ik ? "아이템을 판매하셨습니다. 아이디 : {$shop['1']} (갯수 : {$shop['2']}) 가격 : {$shop['3']} 원\n" . Color::YELLOW . " [Shop] 나의 돈 : " . $this->getMoney($player) . " \$" : "You sell Item. ID: {$shop['1']} (Count: {$shop['2']}) Price: {$shop['3']} \$\n" . Color::YELLOW . " [Shop] Your money: " . $this->getMoney($player) . " \$")); } } break; } $this->tap[$name] = [microtime(true) + 1, $pos]; } $event->setCancelled(); if ($event->getItem()->isPlaceable()) { $this->place[$name] = true; } } }
public function playerTouchIt(PlayerInteractEvent $event) { if ($event->getBlock()->getId() != Block::SIGN_POST && $event->getBlock()->getId() != Block::WALL_SIGN) { return; } $pl = $event->getPlayer(); $sign = $pl->getLevel()->getTile($event->getBlock()); if (!$sign instanceof Sign) { return; } $sign = $sign->getText(); if (!isset($this->text["sign"][$sign[0]])) { return; } if (!$pl->hasPermission("signwarp.touch.sign")) { $pl->sendMessage(mc::_("Nothing happens...")); return; } if ($event->getItem()->getId() == Item::SIGN) { // Check if the user is holding a sign this stops teleports $pl->sendMessage(mc::_("Can not teleport while holding sign!")); return; } $pos = $this->checkSign($pl, $sign); if ($pos === null) { return; } if ($pos instanceof Position) { $this->teleporters[$pl->getName()] = time(); $pl->sendMessage(mc::_("Teleporting...")); $pl->teleport($pos); return; } // FastTransfer if (!$pl->hasPermission("signwarp.touch.transfer.sign")) { $pl->sendMessage(mc::_("Did you expect something to happen?")); return; } $this->teleporters[$pl->getName()] = time(); $ft = $this->getServer()->getPluginManager()->getPlugin("FastTransfer"); if (!$ft) { $this->getLogger()->error(mc::_("FAST TRANSFER NOT INSTALLED")); $pl->sendMessage(TextFormat::RED . mc::_("Nothing happens!")); $pl->sendMessage(TextFormat::RED . mc::_("Somebody removed FastTransfer!")); return; } list($addr, $port) = $pos; $this->getLogger()->info(mc::_("FastTransfer being used hope it works!")); $this->getLogger()->info(mc::_("- Player: %1% => %2%:%3%", $pl->getName(), $addr, $port)); $ft->transferPlayer($pl, $addr, $port); }
public function onPlayerInteract(PlayerInteractEvent $event) { $b = $event->getBlock(); if ($b->getID() !== 20) { $b = $b->getSide($event->getFace()); } $p = $event->getPlayer(); $n = $p->getName(); $t = $this->touch; $sh = $this->sh; $m = "[Shop] "; $ik = $this->isKorean(); $pos = $this->getPos($b); if (isset($t[$n])) { $tc = $t[$n]; switch ($tc["Type"]) { case "Add": $this->addShop($pos, $tc["Mode"], $tc["Item"], $tc["Count"], $tc["Price"]); $m .= $ik ? "상점이 생성되었습니다." : "Shop Create"; unset($t[$n]); break; case "Del": if (!isset($sh[$pos])) { $m .= $ik ? "이곳에는 상점이 없습니다." : "Shop is not exist here"; } else { $this->delShop($pos); $m .= $ik ? "상점이 제거되었습니다." : "Shop is Delete "; unset($t[$n]); } break; } $this->touch = $t; } elseif (isset($sh[$pos])) { if ($p->getGamemode() == 1) { $m .= $ik ? " 당신은 크리에이티브입니다." : " You - Creative mode"; } else { $tap = $this->tap; $money = $this->money; $s = $sh[$pos]; $i = Item::fromString($s[1]); $i->setCount($s[2]); $pr = $s[3]; if (!isset($tap[$n]) || $tap[$n][1] !== $pos) { $tap[$n] = [0, $pos]; } $c = microtime(true) - $tap[$n][0]; $inv = $p->getInventory(); switch ($s[0]) { case "Buy": if ($c > 0) { $m .= $ik ? "구매하시려면 다시한번눌러주세요. \n 상점정보 : [구매] 아이디: {$s['1']} (갯수 : {$s['2']}) 가격 : {$pr} 원" : "If you want to buy, One more touch block \n StoreInfo : [Buy] ID: {$s['1']} (Count: {$s['2']}) Price: {$pr} \$"; } elseif (!$money->hasMoney($n, $pr)) { $m .= $ik ? "돈이 부족합니다. \n 나의돈 : " . $money->getMoney($n) . " 원" : "You has less money than its price \nYour money : " . $money->getMoney($n) . "\$"; } else { $inv->addItem($i); $this->giveMoney($p, -$pr); $m .= $ik ? "아이템을 구매하셨습니다. 아이디 : {$s['1']} (갯수 : {$s['2']}) 가격 : {$pr} 원 \n 나의 돈:" . $this->getMoney($p) . "\$" : "You buy Item. ID: {$s['1']} (Count: {$s['2']}) Price: {$pr} \$ \n Your money:" . $this->getMoney($p) . "\$"; } break; case "Sell": if ($c > 0) { $m .= $ik ? "판매하시려면 다시한번눌러주세요. \n 상점정보 : [판매] 아이디: {$s['1']} (갯수 : {$s['2']}) 가격 : {$pr} 원" : "If you want to sell, One more touch block \n StoreInfo : [Sell] ID: {$s['1']} (Count: {$s['2']}) Price: {$pr} \$"; } else { $cnt = 0; foreach ($inv->getContents() as $ii) { if ($i->equals($ii, true)) { $cnt += $ii->getCount(); } } if ($cnt < $i->getCount()) { $m .= ($ik ? "아이템이 부족합니다. \n 소유갯수 : " : "You has less Item than its count \n Your have : ") . $cnt; } else { $inv->removeItem($i, $p); $this->giveMoney($p, $pr); $m .= $ik ? "아이템을 판매하셨습니다. 아이디 : {$s['1']} (갯수 : {$s['2']}) 가격 : {$pr} 원 \n 나의 돈 :" . $this->getMoney($p) . "\$" : "You sell Item. ID: {$s['1']} (Count: {$s['2']}) Price: {$pr} \$ \n Your money:" . $this->getMoney($p) . "\$"; } } break; } $inv->sendContents($p); $this->tap[$n] = [microtime(true) + 1, $pos]; } } else { return; } if (isset($m)) { $p->sendMessage($m); } $event->setCancelled(); if ($event->getItem()->isPlaceable()) { $this->place[$p->getName()] = true; } $this->onBlockEvent($event, true); }
public function onPlayerInteract(PlayerInteractEvent $event) { $b = $event->getBlock(); if ($b->getID() !== 20) { $b = $b->getSide($event->getFace()); } $p = $event->getPlayer(); $n = $p->getName(); $t = $this->touch; $ic = $this->ic; $m = "[ItemCase] "; $ik = $this->isKorean(); if (isset($t[$n])) { $pos = $this->getPos($b); $tc = $t[$n]; switch ($tc["Type"]) { case "Add": if (!$this->addCase($pos, $tc["Item"], $tc["Size"])) { $m .= $ik ? "이미 3개가 존재합니다." : "Already 3 ItemCase Here"; } else { $m .= ($ik ? "아이템케이스가 생성되었습니다." : "ItemCase Create") . " [{$pos}]"; } unset($t[$n]); break; case "Del": if (!isset($ic[$pos])) { $m .= $ik ? "이곳에는 아이템 케이스가 없습니다." : "ItemCase is not exist here"; } else { $m .= ($ik ? "아이템케이스가 제거되었습니다." : "ItemCase is Delete ") . "[{$pos}]"; $this->delCase($pos); unset($t[$n]); } break; } $this->touch = $t; $this->spawnCase(); if (isset($m)) { $p->sendMessage($m); } $event->setCancelled(); if ($event->getItem()->isPlaceable()) { $this->place[$p->getName()] = true; } } else { $this->onBlockEvent($event, true); } }
public function onTouch(PlayerInteractEvent $event) { $block = $event->getBlock(); $player = $event->getPlayer(); $blockPos = "{$block->x}.{$block->y}.{$block->z}"; if ($block->getID() == Item::DIAMOND_BLOCK) { $event->setCancelled(); if (isset($this->touchedQueue[$player->getName()][$blockPos])) { $this->alert($player, $this->get("already-touched")); $this->getServer()->getScheduler()->scheduleDelayedTask(new CallbackTask([$this, "setBlockPacket"], [$player, $block->x, $block->y, $block->z, Block::GLOWING_OBSIDIAN]), 2); return; } $rand = mt_rand(1, 100); if ($rand >= 1 and $rand <= 20) { $index = mt_rand(0, 8); } else { if ($rand >= 21 and $rand <= 50) { $index = 9; } else { if ($rand >= 51 and $rand <= 100) { $index = mt_rand(11, 13); } } } $this->touchedQueue[$player->getName()][$blockPos] = 0; $this->getServer()->getScheduler()->scheduleDelayedTask(new CallbackTask([$this, "setBlockPacket"], [$player, $block->x, $block->y, $block->z, Block::GLOWING_OBSIDIAN]), 2); $armorRand = rand(1, 4); if ($armorRand == 1) { $armorContents = $player->getInventory()->getArmorContents(); $check = 0; foreach ($player->getInventory()->getContents() as $invenItem) { foreach ($this->armorItem as $armorSet) { foreach ($armorSet as $armorItem) { if ($invenItem->getID() == $armorItem->getID()) { $check = 1; break; } if ($check == 1) { break; } } if ($check == 1) { break; } } } if ($check != 1) { $armorRand = mt_rand(0, 4); $player->getInventory()->setArmorContents($this->armorItem[$armorRand]); $player->getInventory()->sendArmorContents($player); $this->message($player, $this->get("successfully-get-armor") . " : " . $this->armorItemName[$armorRand]); return; } } if ($index == 9) { foreach ($player->getInventory()->getContents() as $inven) { if ($inven->getID() == Item::BOW) { $player->getInventory()->addItem($this->hungerItem[9]); $this->message($player, $this->get("successfully-get-item") . " [ " . $this->hungerItemName[9] . " ]"); return; } } $player->getInventory()->addItem($this->hungerItem[9]); $this->message($player, $this->get("successfully-get-item") . " [ " . $this->hungerItemName[9] . " ]"); $player->getInventory()->addItem($this->hungerItem[10]); $this->message($player, $this->get("successfully-get-item") . " [ " . $this->hungerItemName[10] . " ]"); } else { $player->getInventory()->addItem($this->hungerItem[$index]); $this->message($player, $this->get("successfully-get-item") . " [ " . $this->hungerItemName[$index] . " ]"); } } if ($block->getID() == Item::CAKE_BLOCK) { $event->setCancelled(); if (isset($this->touchedQueue[$player->getName()][$blockPos])) { $this->alert($player, $this->get("already-touched")); return; } $player->setHealth($player->getHealth() + 2); $this->message($player, $this->get("successfully-cared")); } foreach ($this->hungerItem as $index => $hungerItem) { if ($index > 8) { break; } if ($event->getItem()->getId() == $hungerItem->getId()) { $block = $block->getSide(1); $blockPos = "{$block->x}.{$block->y}.{$block->z}"; if (!isset($this->fireblock[$blockPos])) { foreach ($this->getServer()->getOnlinePlayers() as $player) { $this->getServer()->getScheduler()->scheduleDelayedTask(new CallbackTask([$this, "setBlockPacket"], [$player, $block->x, $block->y, $block->z, Block::FIRE]), 2); } $this->getServer()->getScheduler()->scheduleDelayedTask(new CallbackTask([$this, "restoreBlock"], [$block->x, $block->y, $block->z]), 80); } else { $this->restoreBlock($block->x, $block->y, $block->z); } $this->fireblock[$blockPos]["id"] = $block->getId(); $this->fireblock[$blockPos]["damage"] = $block->getDamage(); break; } } }
public function onPlayerInteract(PlayerInteractEvent $ev) { $pl = $ev->getPlayer(); if (!isset($this->touches[$pl->getName()])) { return; } $bl = $ev->getBlock(); if ($this->classic) { if ($bl->getID() != Block::GLASS) { if ($bl->getID() == Block::SLAB) { $bl = $bl->getSide(Vector3::SIDE_UP); } else { $pl->sendMessage("You must place item cases on slabs"); $pl->sendMessage("or glass blocks!"); return; } } } else { if ($bl->getID() != Block::GLASS) { $bl = $bl->getSide(Vector3::SIDE_UP); } } $cid = implode(":", [$bl->getX(), $bl->getY(), $bl->getZ()]); $item = $pl->getInventory()->getItemInHand(); if ($item->getId() === Item::AIR) { $pl->sendMessage("You must be holding an item!"); $ev->setCancelled(); return; } if (!$this->addItemCase($bl->getLevel(), $cid, implode(":", [$item->getId(), $item->getDamage()]), $item->getCount())) { $pl->sendMessage("There is already an ItemCase there!"); } else { $pl->sendMessage("ItemCase placed!"); } unset($this->touches[$pl->getName()]); $ev->setCancelled(); if (is_callable([$ev->getItem(), "canBePlaced"])) { if ($ev->getItem()->canBePlaced()) { $this->places[$pl->getName()] = $pl->getName(); } } elseif (is_callable([$ev->getItem(), "isPlaceable"])) { if ($ev->getItem()->isPlaceable()) { $this->places[$pl->getName()] = $pl->getName(); } } }
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 onPlayerInteract(PlayerInteractEvent $event) { $b = $event->getBlock(); $p = $event->getPlayer(); $n = $p->getName(); $t = $this->touch; $cb = $this->cb; $m = "[CommandBlock] "; $ik = $this->isKorean(); if (isset($t[$n])) { $pos = $this->getPos($b); $tc = $t[$n]; switch ($tc["Type"]) { case "Add": $m .= ($ik ? "커맨드블럭이 생성되었습니다." : "CommandBlock Create") . " [{$pos}]"; if (!isset($this->cb[$pos])) { $this->cb[$pos] = []; } $this->cb[$pos][] = $tc["Command"]; unset($t[$n]); break; case "Del": if (!isset($cb[$pos])) { $m .= $ik ? "이곳에는 커맨드 블럭이 없습니다." : "CommandBlock is not exist here"; } else { $m .= ($ik ? "커맨드블럭이 제거되었습니다." : "CommandBlock is Delete ") . "[{$pos}]"; unset($this->cb[$pos]); unset($t[$n]); } break; } $this->touch = $t; if (isset($m)) { $p->sendMessage($m); } $this->saveYml(); $event->setCancelled(); if ($event->getItem()->isPlaceable()) { $this->place[$p->getName()] = true; } } else { $this->onBlockEvent($event, true); } }
public function onInteract(PlayerInteractEvent $ev) { if ($ev->isCancelled()) { return; } $pl = $ev->getPlayer(); $world = $pl->getLevel()->getName(); if (!isset($this->wcfg[$world])) { return; } $item = $ev->getItem(); if (!isset($this->wcfg[$world][$item->getId()])) { return; } $pl->sendMessage(mc::_("You can not use that item here!")); $ev->setCancelled(); }
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; } $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 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")); } }