示例#1
0
 public function onPlayerMove(PlayerMoveEvent $event)
 {
     if (!$this->plugin->getConfig()->get("ShowPlotPopup", true)) {
         return;
     }
     $levelName = $event->getPlayer()->getLevel()->getName();
     if (!$this->plugin->isLevelLoaded($levelName)) {
         return;
     }
     $plot = $this->plugin->getPlotByPosition($event->getTo());
     if ($plot !== null and $plot !== $this->plugin->getPlotByPosition($event->getFrom())) {
         $plotName = TextFormat::GREEN . $plot;
         $popup = $this->plugin->getLanguage()->translateString("popup", [$plotName]);
         if ($plot->owner != "") {
             $owner = TextFormat::GREEN . $plot->owner;
             $ownerPopup = $this->plugin->getLanguage()->translateString("popup.owner", [$owner]);
             $paddingSize = floor((strlen($popup) - strlen($ownerPopup)) / 2);
             $paddingPopup = str_repeat(" ", max(0, -$paddingSize));
             $paddingOwnerPopup = str_repeat(" ", max(0, $paddingSize));
             $popup = TextFormat::WHITE . $paddingPopup . $popup . "\n" . TextFormat::WHITE . $paddingOwnerPopup . $ownerPopup;
         } else {
             $ownerPopup = $this->plugin->getLanguage()->translateString("popup.available");
             $paddingSize = floor((strlen($popup) - strlen($ownerPopup)) / 2);
             $paddingPopup = str_repeat(" ", max(0, -$paddingSize));
             $paddingOwnerPopup = str_repeat(" ", max(0, $paddingSize));
             $popup = TextFormat::WHITE . $paddingPopup . $popup . "\n" . TextFormat::WHITE . $paddingOwnerPopup . $ownerPopup;
         }
         $event->getPlayer()->sendTip($popup);
     }
 }
示例#2
0
 /**
  * @param BlockPlaceEvent|BlockBreakEvent|PlayerInteractEvent $event
  */
 private function onEventOnBlock($event)
 {
     $levelName = $event->getBlock()->getLevel()->getName();
     if (!$this->plugin->isLevelLoaded($levelName)) {
         return;
     }
     $plot = $this->plugin->getPlotByPosition($event->getBlock());
     if ($plot !== null) {
         $username = $event->getPlayer()->getName();
         if ($plot->owner == $username or $plot->isHelper($username) or $event->getPlayer()->hasPermission("myplot.admin.build.plot")) {
             return;
         }
     } elseif ($event->getPlayer()->hasPermission("myplot.admin.build.road")) {
         return;
     }
     $event->setCancelled(true);
 }
示例#3
0
 /**
  * @param BlockPlaceEvent|BlockBreakEvent|PlayerInteractEvent $event
  */
 private function onEventOnBlock($event)
 {
     $levelName = $event->getBlock()->getLevel()->getName();
     if (!$this->plugin->isLevelLoaded($levelName)) {
         return;
     }
     $block = $event->getBlock();
     if ($block->x == 0 && $block->y == 0 && $block->z == 0) {
         // not sure what fires these events but they happen all the
         // time. Lets cancel the event and ignore them!
         $event->setCancelled(true);
         return;
     }
     $plot = $this->plugin->getPlotByPosition($block);
     if ($plot == null) {
         // this should never get called because plots have been
         // extended to include the road around in this particular
         // fork of MyPlot
         $event->setCancelled(true);
         return;
     }
     $username = $event->getPlayer()->getName();
     $hasRights = ($plot->owner == $username || $plot->isHelper($username)) && !$plot->locked;
     $hasAdmin = !$plot->locked && $event->getPlayer()->hasPermission("myplot.admin.build.plot");
     // even admins must unlock the plot first, great for preventing accidental damage
     $canPlace = $hasRights || $hasAdmin;
     if (!$canPlace) {
         $event->setCancelled(true);
         $ownerWithLock = $plot->owner == $username && $plot->locked;
         $helperWithLock = $plot->isHelper($username) && $plot->locked;
         if ($ownerWithLock) {
             $msg = "Your plot is locked - you may unlock it with /plot unlock";
         } elseif ($helperWithLock) {
             $msg = "This plot is locked by the owner - for owner info use /plot info";
         } else {
             $msg = "This plot does not belong to you and you are not a helper";
         }
         @$event->getPlayer()->sendMessage($msg);
     }
 }