PHP: /** * @param BlockBreakEvent $event */ public function onPlayerBreakBlock(BlockBreakEvent $event){ if ($event->getBlock()->getID() == Item::SIGN || $event->getBlock()->getID() == Item::WALL_SIGN || $event->getBlock()->getID() == Item::SIGN_POST) { $signt = $event->getBlock(); if (($tile = $signt->getLevel()->getTile($signt))){ if($tile instanceof Sign) { if(strtolower(trim($signt->getLine(0))) == "status" || strtolower(trim($signt->getLine(0))) == "[status]"){ if ($event->getBlock()->getX() == $this->sign->getNested("sign.x") || $event->getBlock()->getY() == $this->sign->getNested("sign.y") || $event->getBlock()->getZ() == $this->sign->getNested("sign.z")) { if($event->getPlayer()->hasPermission("signstatus.break")) { $this->sign->setNested("sign.x", $event->getBlock()->getX()); $this->sign->setNested("sign.y", $event->getBlock()->getY()); $this->sign->setNested("sign.z", $event->getBlock()->getZ()); $this->sign->setNested("sign.enabled", false); $this->sign->setNested("sign.level", "world"); $this->sign->save(); $this->sign->reload(); $event->getPlayer()->sendMessage($this->prefix.$this->translation->get("sign_destroyed")); }else{ $event->getPlayer()->sendMessage($this->prefix.$this->translation->get("sign_no_perms")); $event->setCancelled(); } } } } } } } Error: Call to undefined method pocketmine\block\WallSign::getLine() The error is on if(strtolower(trim($signt->getLine(0))) == "status" || strtolower(trim($signt->getLine(0))) == "[status]"){
$signt must be a tile, so use PHP: $this->getServer()->getLevelByName("level")->getTile(new Vector3($event->getBlock()->getX(), $event->getBlock()->getY(), $event->getBlock()->getZ()));
Now it's Fatal error: Call to undefined method pocketmine\tile\Sign::getLine() in G:\Daten_Schnell\Tim\PocketServerTest\plugins\SignStatusV2.2.1-FIXload9099\src\SignStatus\SignStatus.php on line 145
Fatal error: Call to undefined method pocketmine\tile\Sign::getLine() in G:\Daten_Schnell\Tim\PocketServerTest\plugins\SignStatusV2.2.1-FIXload9099\src\SignStatus\SignStatus.php on line 145 when using it as tile
PHP: public function onPlayerBreakBlock(BlockBreakEvent $event){ if ($event->getBlock()->getID() == Item::SIGN || $event->getBlock()->getID() == Item::WALL_SIGN || $event->getBlock()->getID() == Item::SIGN_POST) { $signt = $event->getBlock(); if (($tile = $signt->getLevel()->getTile($signt))){ if($tile instanceof Sign) { if(strtolower(trim($signt->getLevel()->getTile($signt)->getText(0))) == "status" || strtolower(trim($signt->getLevel()->getTile($signt)->getText(0))) == "[status]"){ if ($event->getBlock()->getX() == $this->sign->getNested("sign.x") || $event->getBlock()->getY() == $this->sign->getNested("sign.y") || $event->getBlock()->getZ() == $this->sign->getNested("sign.z")) { if($event->getPlayer()->hasPermission("signstatus.break")) { $this->sign->setNested("sign.x", $event->getBlock()->getX()); $this->sign->setNested("sign.y", $event->getBlock()->getY()); $this->sign->setNested("sign.z", $event->getBlock()->getZ()); $this->sign->setNested("sign.enabled", false); $this->sign->setNested("sign.level", "world"); $this->sign->save(); $this->sign->reload(); $event->getPlayer()->sendMessage($this->prefix.$this->translation->get("sign_destroyed")); }else{ $event->getPlayer()->sendMessage($this->prefix.$this->translation->get("sign_no_perms")); $event->setCancelled(); } } } } } } } That doesn't work, too: 2015-12-19 [08:32:26] [CRITICAL]: "Could not pass event 'pocketmine\event\block\BlockBreakEvent' to 'SignStatus v2.1': trim() expects parameter 1 to be string, array given on SignStatus\SignStatus 2015-12-19 [08:32:26] [WARNING]: InvalidArgumentException: "trim() expects parameter 1 to be string, array given" (E_WARNING) in "/SignStatusV2.2.2/src/SignStatus/SignStatus" at line 145
Excuse me: 1. What sense are you trying to make? It is the return value not the parameter that is array. The function has void parameters. 2. Block::Sign? Excuse me, are you speaking in PHP?
That: PHP: /** * @param BlockBreakEvent $event */ public function onPlayerBreakBlock(BlockBreakEvent $event){ if ($event->getBlock()->getID() == Item::SIGN || $event->getBlock()->getID() == Item::WALL_SIGN || $event->getBlock()->getID() == Item::SIGN_POST) { $signt = $event->getBlock(); if (($tile = $signt->getLevel()->getTile($signt))){ if($tile instanceof Sign) { if(strtolower(trim($signt->getLevel()->getTile($signt)->getText(0))) == "status" || strtolower(trim($signt->getLevel()->getTile($signt)->getText(0))) == "[status]"){ if ($event->getBlock()->getX() == $this->sign->getNested("sign.x") || $event->getBlock()->getY() == $this->sign->getNested("sign.y") || $event->getBlock()->getZ() == $this->sign->getNested("sign.z")) { if($event->getPlayer()->hasPermission("signstatus.break")) { $this->sign->setNested("sign.x", $event->getBlock()->getX()); $this->sign->setNested("sign.y", $event->getBlock()->getY()); $this->sign->setNested("sign.z", $event->getBlock()->getZ()); $this->sign->setNested("sign.enabled", false); $this->sign->setNested("sign.level", "world"); $this->sign->save(); $this->sign->reload(); $event->getPlayer()->sendMessage($this->prefix.$this->translation->get("sign_destroyed")); }else{ $event->getPlayer()->sendMessage($this->prefix.$this->translation->get("sign_no_perms")); $event->setCancelled(); } } } } } } } It crashes...