getItem() public méthode

public getItem ( ) : Item
Résultat pocketmine\item\Item
Exemple #1
0
 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;
             }
         }
     }
 }
Exemple #2
0
 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);
     }
 }
Exemple #4
0
 public function onPlayerInteract(PlayerInteractEvent $event)
 {
     $p = $event->getPlayer();
     $i = $event->getItem();
     if ($i->getID() !== 339 || ($money = $i->getDamage()) < 1) {
         return;
     }
     $m = "[Check] ";
     $ik = $this->isKorean();
     if (!isset($this->touch[$n = $p->getName()])) {
         $this->touch[$n] = 0;
     }
     $c = microtime(true) - $this->touch[$n];
     if ($c > 0) {
         $m .= $ik ? "수표를 사용하시려면 다시한번눌러주세요. \n 수표 정보 : " . $money . "\$" : "If you want to use this check, One more touch block \n Check Info : " . $money . "\$";
     } else {
         $i->setCount($i->getCount() - 1);
         $p->getInventory()->setItem($p->getInventory()->getHeldItemSlot(), $i);
         $this->giveMoney($p, $money);
         $m .= $ik ? "수표를 사용하셨습니다.\n 수표 정보 : " . $money . "\$" : "You use the check. \n Check Info : " . $money . "\$";
     }
     $this->touch[$n] = microtime(true) + 1;
     if (isset($m)) {
         $p->sendMessage($m);
     }
     $event->setCancelled();
 }
 /**
  * @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;
         }
     }
 }
Exemple #7
0
 public function onTouchCrate(PlayerInteractEvent $e)
 {
     if ($e->getBlock()->getId() == 54) {
         if ($e->getItem()->getId() == $this->getConfig()->get("cratekey-item")) {
             if ($e->getPlayer()->hasPermission("mysterycrates.crates.open")) {
                 $e->setCancelled();
                 $this->openCrate($e->getPlayer());
             }
         }
     }
 }
Exemple #8
0
 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);
             }
         }
     }
 }
Exemple #9
0
 /**
  * @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;
     }
 }
Exemple #11
0
 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
     }
 }
Exemple #14
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;
             }
         }
     }
 }
 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 #16
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;
         }
     }
 }
Exemple #17
0
 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);
     }
 }
Exemple #18
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();
                 }
             }
         }
     }
 }
 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;
         }
     }
 }
Exemple #20
0
 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);
 }
Exemple #21
0
 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);
 }
Exemple #22
0
 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);
     }
 }
Exemple #23
0
 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;
         }
     }
 }
Exemple #24
0
 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;
         }
     }
 }
Exemple #26
0
 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();
 }
Exemple #28
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);
 }
Exemple #29
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 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"));
     }
 }