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); } }
/** * @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); }
/** * @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); } }