Skip to content

Commit

Permalink
Resend outline if chunks are out of view
Browse files Browse the repository at this point in the history
  • Loading branch information
inxomnyaa committed Oct 11, 2021
1 parent 576de87 commit c204d05
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 7 deletions.
15 changes: 15 additions & 0 deletions src/xenialdan/MagicWE2/EventListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
use pocketmine\event\player\PlayerItemHeldEvent;
use pocketmine\event\player\PlayerItemUseEvent;
use pocketmine\event\player\PlayerJoinEvent;
use pocketmine\event\player\PlayerMoveEvent;
use pocketmine\event\player\PlayerQuitEvent;
use pocketmine\item\ItemIds;
use pocketmine\nbt\UnexpectedTagTypeException;
Expand Down Expand Up @@ -460,4 +461,18 @@ public function onStructureBlockClick(PlayerInteractEvent $event): void
}

}

public function onStructureBlockOutOfView(PlayerMoveEvent $event): void
{
if ($event->getFrom()->floor()->equals($event->getTo()->floor())) return;
$player = $event->getPlayer();
$session = SessionHelper::getUserSession($player);
if (!$session instanceof UserSession) return;
$selection = $session->getLatestSelection();
if (!$selection instanceof Selection) return;
if (!$session->isOutlineEnabled()) return;
if (!$player->isUsingChunk($session->getOutline()->getPosition()->getFloorX() >> 4, $session->getOutline()->getPosition()->getFloorZ())) {
$session->createOrUpdateOutline($selection);
}
}
}
15 changes: 8 additions & 7 deletions src/xenialdan/MagicWE2/session/data/Outline.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,9 @@
use pocketmine\network\mcpe\protocol\UpdateBlockPacket;
use pocketmine\player\Player;
use pocketmine\world\Position;
use ReflectionException;
use ReflectionProperty;
use ReflectionClass;
use xenialdan\libstructure\tile\StructureBlockTile;
use xenialdan\MagicWE2\selection\Selection;
use function get_class;

class Outline
{
Expand Down Expand Up @@ -82,13 +80,11 @@ public function __toString(): string
return 'Outline';
}

/**
* @throws ReflectionException
*/
private function updatePosition(): Position
{
$this->position = $this->updateBlockPosition();
$reflection = new ReflectionProperty(get_class($this->fakeTile), 'position');
$reflectionc = new ReflectionClass($this->fakeTile);
$reflection = $reflectionc->getProperty('position');
$reflection->setAccessible(true);
$reflection->setValue($this->fakeTile, $this->position);
return $this->position;
Expand All @@ -98,4 +94,9 @@ private function updateBlockPosition(): Position
{
return Position::fromObject($this->player->getPosition()->withComponents(null, $this->player->getPosition()->getWorld()->getMinY(), null)->floor(), $this->player->getWorld());
}

public function getPosition(): Position
{
return $this->position;
}
}

0 comments on commit c204d05

Please sign in to comment.