diff --git a/plugin.yml b/plugin.yml index 65c187ba..3827e064 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,7 +1,7 @@ --- name: MagicWE2 main: xenialdan\MagicWE2\Loader -version: 5.7.0 +version: 5.7.1 api: - 3.0.0-ALPHA10 load: STARTUP diff --git a/src/xenialdan/MagicWE2/API.php b/src/xenialdan/MagicWE2/API.php index 38e7b69e..5f5c3c2c 100644 --- a/src/xenialdan/MagicWE2/API.php +++ b/src/xenialdan/MagicWE2/API.php @@ -643,6 +643,6 @@ public static function rotationMetaHelper(Block $block, $timesRotate = 1){ $currentrotationindex += $timesRotate; #return $rotation[($currentrotationindex % count($rotation))]; $extra = intval($meta / count($rotation)); - return $rotation[$currentrotationindex % count($rotation)] + ($extra * count($rotation)); + return $rotation[$currentrotationindex % count($rotation)] + ($extra * count($rotation)) % 16; } } \ No newline at end of file diff --git a/src/xenialdan/MagicWE2/EventListener.php b/src/xenialdan/MagicWE2/EventListener.php index 2bcc766b..dbc1d03f 100644 --- a/src/xenialdan/MagicWE2/EventListener.php +++ b/src/xenialdan/MagicWE2/EventListener.php @@ -50,20 +50,28 @@ public function onBreak(BlockBreakEvent $event){ private function onBreakBlock(BlockBreakEvent $event){ if (!is_null($event->getItem()->getNamedTagEntry("MagicWE"))){ $event->setCancelled(); + /** @var Session $session */ + $session = API::getSession($event->getPlayer()); + if (is_null($session)){ + throw new \Exception("No session was created - probably no permission to use " . $this->owner->getName()); + } switch ($event->getItem()->getId()){ case ItemIds::WOODEN_AXE: { /** @var Session $session */ - if (!($session = API::getSession($event->getPlayer()))->isWandEnabled()){ + if (!$session->isWandEnabled()){ $event->getPlayer()->sendMessage(Loader::$prefix . TextFormat::RED . "The wand tool is disabled. Use //togglewand to re-enable it");//TODO #translation break; } $selection = $session->getLatestSelection() ?? $session->addSelection(new Selection($event->getBlock()->getLevel())); // TODO check if the selection inside of the session updates + if (is_null($selection)){ + throw new \Error("No selection created - Check the console for errors"); + } $event->getPlayer()->sendMessage($selection->setPos1(new Position($event->getBlock()->x, $event->getBlock()->y, $event->getBlock()->z, $event->getBlock()->getLevel()))); break; } case ItemIds::STICK: { /** @var Session $session */ - if (!($session = API::getSession($event->getPlayer()))->isDebugStickEnabled()){ + if (!$session->isDebugStickEnabled()){ $event->getPlayer()->sendMessage(Loader::$prefix . TextFormat::RED . "The debug stick is disabled. Use //toggledebug to re-enable it");//TODO #translation break; } @@ -77,6 +85,11 @@ private function onBreakBlock(BlockBreakEvent $event){ private function onRightClickBlock(PlayerInteractEvent $event){ if (!is_null($event->getItem()->getNamedTagEntry("MagicWE"))){ $event->setCancelled(); + /** @var Session $session */ + $session = API::getSession($event->getPlayer()); + if (is_null($session)){ + throw new \Exception("No session was created - probably no permission to use " . $this->owner->getName()); + } switch ($event->getItem()->getId()){ /*case ItemIds::WOODEN_SHOVEL: { //TODO Open issue on pmmp, RIGHT_CLICK_BLOCK + RIGHT_CLICK_AIR are BOTH called when right clicking a block - Turns out to be a client bug $target = $event->getBlock(); @@ -87,17 +100,20 @@ private function onRightClickBlock(PlayerInteractEvent $event){ }*/ case ItemIds::WOODEN_AXE: { /** @var Session $session */ - if (!($session = API::getSession($event->getPlayer()))->isWandEnabled()){ + if (!$session->isWandEnabled()){ $event->getPlayer()->sendMessage(Loader::$prefix . TextFormat::RED . "The wand tool is disabled. Use //togglewand to re-enable it");//TODO #translation break; } $selection = $session->getLatestSelection() ?? $session->addSelection(new Selection($event->getBlock()->getLevel())); // TODO check if the selection inside of the session updates + if (is_null($selection)){ + throw new \Error("No selection created - Check the console for errors"); + } $event->getPlayer()->sendMessage($selection->setPos2(new Position($event->getBlock()->x, $event->getBlock()->y, $event->getBlock()->z, $event->getBlock()->getLevel()))); break; } case ItemIds::STICK: { /** @var Session $session */ - if (!($session = API::getSession($event->getPlayer()))->isDebugStickEnabled()){ + if (!$session->isDebugStickEnabled()){ $event->getPlayer()->sendMessage(Loader::$prefix . TextFormat::RED . "The debug stick is disabled. Use //toggledebug to re-enable it");//TODO #translation break; } diff --git a/src/xenialdan/MagicWE2/Selection.php b/src/xenialdan/MagicWE2/Selection.php index ab447e0b..5dc196c9 100644 --- a/src/xenialdan/MagicWE2/Selection.php +++ b/src/xenialdan/MagicWE2/Selection.php @@ -55,7 +55,7 @@ public function getPos1(){ public function setPos1(Position $position){ $this->pos1 = $position; - return Loader::$prefix . TextFormat::GREEN . "Position 1 set"; + return Loader::$prefix . TextFormat::GREEN . "Position 1 set to X: " . $position->getX() . " Y: " . $position->getY() . " Z: " . $position->getZ(); } public function getPos2(){ @@ -67,7 +67,7 @@ public function getPos2(){ public function setPos2(Position $position){ $this->pos2 = $position; - return Loader::$prefix . TextFormat::GREEN . "Position 2 set"; + return Loader::$prefix . TextFormat::GREEN . "Position 2 set to X: " . $position->getX() . " Y: " . $position->getY() . " Z: " . $position->getZ(); } public function getMinVec3(){