From 56c301e6078eb8578ba8f8263f752f3018fe69a2 Mon Sep 17 00:00:00 2001 From: SleepSpace9 Date: Sun, 7 Aug 2016 21:42:54 +0200 Subject: [PATCH 1/2] Change LiveSigns task to JSON for working with PHP7 --- LiveSigns/src/aliuly/livesigns/FetchTask.php | 16 +++++++++++++--- LiveSigns/src/aliuly/livesigns/LsCmds.php | 11 ++++++++++- LiveSigns/src/aliuly/livesigns/Main.php | 6 +++++- LiveSigns/src/aliuly/livesigns/TileUpdTask.php | 4 +++- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/LiveSigns/src/aliuly/livesigns/FetchTask.php b/LiveSigns/src/aliuly/livesigns/FetchTask.php index a2f8e25..d51e157 100644 --- a/LiveSigns/src/aliuly/livesigns/FetchTask.php +++ b/LiveSigns/src/aliuly/livesigns/FetchTask.php @@ -14,6 +14,7 @@ class FetchTask extends AsyncTask { public $started; public $owner; + public $re; protected $pkgs; protected $cf; public function __construct($plugin,$cfg,$pkgs) { @@ -56,7 +57,8 @@ private function fetchJob($dat) { } public function onRun() { - $this->setResult(null); + //$this->setResult(null); + $this->re = json_encode(null); $restab = []; foreach ($this->pkgs as $job) { list($id,$dat) = $job; @@ -67,7 +69,8 @@ public function onRun() { $restab[$id] = [ "error" => $res ]; } } - $this->setResult($restab); + //$this->setResult($restab); + $this->re = json_encode($restab); } public function onCompletion(Server $server) { $plugin = $server->getPluginManager()->getPlugin($this->owner); @@ -77,7 +80,14 @@ public function onCompletion(Server $server) { return; } if (!$plugin->isEnabled()) return; - $res = $this->getResult(); + //$res = $this->getResult(); + if(!is_string($this->re)) { + $plugin->getLogger()->error("Error retrieving task results - no array in re"); + return; + } + + + $res = json_decode($this->re, true); if ($res == null) { $plugin->getLogger()->error("Error retrieving task results"); return; diff --git a/LiveSigns/src/aliuly/livesigns/LsCmds.php b/LiveSigns/src/aliuly/livesigns/LsCmds.php index c90aa23..5e888da 100644 --- a/LiveSigns/src/aliuly/livesigns/LsCmds.php +++ b/LiveSigns/src/aliuly/livesigns/LsCmds.php @@ -136,7 +136,16 @@ private function cmdShow(CommandSender $c,array $args){ ++$count; $txt[] = TextFormat::AQUA.mc::_("LiveSign: ").TextFormat::WHITE.$id; foreach ($stx[$id]["text"] as $k) { - $txt[] = TextFormat::AQUA."- -".TextFormat::WHITE.$k; + if(is_array($k)) { + $i = 0; + foreach ($k as $k_line) { + $txt[] = TextFormat::AQUA."- -".TextFormat::WHITE.$k[$i]; + $i++; + } + unset($i,$k_line); + } else { + $txt[] = TextFormat::AQUA."- -".TextFormat::WHITE.$k; + } } if (isset($stx[$id]["datetime"])) { $txt[] = TextFormat::AQUA.mc::_("- tstamp: "). diff --git a/LiveSigns/src/aliuly/livesigns/Main.php b/LiveSigns/src/aliuly/livesigns/Main.php index 3224215..94046d0 100644 --- a/LiveSigns/src/aliuly/livesigns/Main.php +++ b/LiveSigns/src/aliuly/livesigns/Main.php @@ -227,7 +227,11 @@ private function getText($id) { $text = $this->signsTxt[$id]["text"]; } if(isset($this->signsCfg[$id]["no-vars"])) return $text; - return explode("\n",strtr(implode("\n",$text),$this->vars)); + //return explode("\n",strtr(implode("\n",$text),$this->vars)); + if(is_array($text[0])) + return explode("\n",strtr(implode("\n",$text[0]),$this->vars)); + else + return explode("\n",strtr(implode("\n",$text),$this->vars)); } public function getLiveText($id,$opts) { if (!isset($this->signsTxt[$id])) return null; diff --git a/LiveSigns/src/aliuly/livesigns/TileUpdTask.php b/LiveSigns/src/aliuly/livesigns/TileUpdTask.php index 440fa01..cdce86b 100644 --- a/LiveSigns/src/aliuly/livesigns/TileUpdTask.php +++ b/LiveSigns/src/aliuly/livesigns/TileUpdTask.php @@ -4,7 +4,8 @@ use pocketmine\scheduler\PluginTask; use pocketmine\plugin\Plugin; use pocketmine\tile\Sign; -use pocketmine\network\protocol\TileEntityDataPacket; +//use pocketmine\network\protocol\TileEntityDataPacket; +use pocketmine\network\protocol\BlockEntityDataPacket; use pocketmine\nbt\NBT; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\StringTag; @@ -20,6 +21,7 @@ public function onRun($currentTicks){ $this->getOwner()->updateVars(); foreach ($this->getOwner()->getServer()->getLevels() as $lv) { if (count($lv->getPlayers()) == 0) continue; + if ($lv === null) continue; // Skip all if level is not loaded foreach ($lv->getTiles() as $tile) { if (!($tile instanceof Sign)) continue; $sign = $tile->getText(); From e8bac323d3d547057278a3e6929b92116cf3b70e Mon Sep 17 00:00:00 2001 From: SleepSpace9 Date: Fri, 9 Sep 2016 16:18:02 +0200 Subject: [PATCH 2/2] Missed replacing TileEntityDataPacket by BlockEntityDataPacket --- LiveSigns/src/aliuly/livesigns/TileUpdTask.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LiveSigns/src/aliuly/livesigns/TileUpdTask.php b/LiveSigns/src/aliuly/livesigns/TileUpdTask.php index cdce86b..a004e3c 100644 --- a/LiveSigns/src/aliuly/livesigns/TileUpdTask.php +++ b/LiveSigns/src/aliuly/livesigns/TileUpdTask.php @@ -27,7 +27,7 @@ public function onRun($currentTicks){ $sign = $tile->getText(); $text = $this->getOwner()->getLiveSign($sign); if ($text == null) continue; - $pk = new TileEntityDataPacket(); + $pk = new BlockEntityDataPacket(); $data = $tile->getSpawnCompound(); $data->Text1 = new StringTag("Text1",$text[0]); $data->Text2 = new StringTag("Text2",$text[1]);