From 7e4a19159339b2c68a3ac4e45cfaac438f39b276 Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Sat, 16 Aug 2014 12:58:16 +0200 Subject: [PATCH 1/4] Added SignChangeEvent --- src/pocketmine/Player.php | 27 +++++-- src/pocketmine/event/block/BlockEvent.php | 8 ++ .../event/block/SignChangeEvent.php | 81 +++++++++++++++++++ 3 files changed, 108 insertions(+), 8 deletions(-) create mode 100644 src/pocketmine/event/block/SignChangeEvent.php diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index e98e5e9ce..b6005a3db 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -27,6 +27,7 @@ use pocketmine\entity\DroppedItem; use pocketmine\entity\Entity; use pocketmine\entity\Human; use pocketmine\entity\Living; +use pocketmine\event\block\SignChangeEvent; use pocketmine\event\entity\EntityDamageByEntityEvent; use pocketmine\event\entity\EntityDamageEvent; use pocketmine\event\inventory\InventoryCloseEvent; @@ -2016,18 +2017,28 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ } $this->craftingType = 0; - $t = $this->getLevel()->getTile(new Vector3($packet->x, $packet->y, $packet->z)); + $t = $this->getLevel()->getTile($v = new Vector3($packet->x, $packet->y, $packet->z)); if($t instanceof Sign){ - if(!isset($t->namedtag->Creator) or $t->namedtag["Creator"] !== $this->username){ + $nbt = new NBT(NBT::LITTLE_ENDIAN); + $nbt->read($packet->namedtag); + $nbt = $nbt->getData(); + if($nbt["id"] !== Tile::SIGN){ $t->spawnTo($this); }else{ - $nbt = new NBT(NBT::LITTLE_ENDIAN); - $nbt->read($packet->namedtag); - $nbt = $nbt->getData(); - if($nbt["id"] !== Tile::SIGN){ - $t->spawnTo($this); + $ev = new SignChangeEvent($this->getLevel()->getBlock($v), $this, [ + $nbt["Text1"], $nbt["Text2"], $nbt["Text3"], $nbt["Text4"] + ]); + + if(!isset($t->namedtag->Creator) or $t->namedtag["Creator"] !== $this->username){ + $ev->setCancelled(true); + } + + $this->server->getPluginManager()->callEvent($ev); + + if(!$ev->isCancelled()){ + $t->setText($ev->getLine(0), $ev->getLine(1), $ev->getLine(2), $ev->getLine(3)); }else{ - $t->setText($nbt["Text1"], $nbt["Text2"], $nbt["Text3"], $nbt["Text4"]); + $t->spawnTo($this); } } } diff --git a/src/pocketmine/event/block/BlockEvent.php b/src/pocketmine/event/block/BlockEvent.php index e5bb1eb61..e40e05f33 100644 --- a/src/pocketmine/event/block/BlockEvent.php +++ b/src/pocketmine/event/block/BlockEvent.php @@ -24,12 +24,20 @@ */ namespace pocketmine\event\block; +use pocketmine\block\Block; use pocketmine\event\Event; abstract class BlockEvent extends Event{ /** @var \pocketmine\block\Block */ protected $block; + /** + * @param Block $block + */ + protected function __construct(Block $block){ + $this->block = $block; + } + public function getBlock(){ return $this->block; } diff --git a/src/pocketmine/event/block/SignChangeEvent.php b/src/pocketmine/event/block/SignChangeEvent.php new file mode 100644 index 000000000..a434965e6 --- /dev/null +++ b/src/pocketmine/event/block/SignChangeEvent.php @@ -0,0 +1,81 @@ +player = $thePlayer; + $this->lines = $theLines; + } + + /** + * @return Player + */ + public function getPlayer(){ + return $this->player; + } + + /** + * @return string[] + */ + public function getLines(){ + return $this->lines; + } + + /** + * @param int $index 0-3 + * + * @return string + */ + public function getLine($index){ + return $this->lines[$index]; + } + + /** + * @param int $index 0-3 + * @param string $line + */ + public function setLine($index, $line){ + $this->lines[$index] = $line; + } +} \ No newline at end of file From eee0eb545847c22094bbbeecf7d3ef312d4118af Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Sat, 16 Aug 2014 13:05:20 +0200 Subject: [PATCH 2/4] Added RemoteServerCommandEvent --- src/pocketmine/Server.php | 5 +-- .../event/server/RemoteServerCommandEvent.php | 40 +++++++++++++++++++ src/pocketmine/network/rcon/RCON.php | 12 +++++- 3 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 src/pocketmine/event/server/RemoteServerCommandEvent.php diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index 73db652dc..218c6174f 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -1661,10 +1661,9 @@ class Server{ Timings::$serverCommandTimer->startTiming(); if(($line = $this->console->getLine()) !== null){ $this->pluginManager->callEvent($ev = new ServerCommandEvent($this->consoleSender, $line)); - if($ev->isCancelled()){ - return; + if(!$ev->isCancelled()){ + $this->dispatchCommand($ev->getSender(), $ev->getCommand()); } - $this->dispatchCommand($this->consoleSender, $ev->getCommand()); } Timings::$serverCommandTimer->stopTiming(); } diff --git a/src/pocketmine/event/server/RemoteServerCommandEvent.php b/src/pocketmine/event/server/RemoteServerCommandEvent.php new file mode 100644 index 000000000..412c992c8 --- /dev/null +++ b/src/pocketmine/event/server/RemoteServerCommandEvent.php @@ -0,0 +1,40 @@ +notify(); }, $this->workers[$n]); }else{ - $this->server->dispatchCommand($response = new RemoteConsoleCommandSender(), $this->workers[$n]->cmd); + + $response = new RemoteConsoleCommandSender(); + $command = $this->workers[$n]->cmd; + + $this->server->getPluginManager()->callEvent($ev = new RemoteServerCommandEvent($response, $command)); + + if(!$ev->isCancelled()){ + $this->server->dispatchCommand($ev->getSender(), $ev->getCommand()); + } + $this->workers[$n]->response = TextFormat::clean($response->getMessage()); $this->workers[$n]->synchronized(function(RCONInstance $thread){ $thread->notify(); From 8455e897849f0473a1e2824863e2f62c199642cd Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Sat, 16 Aug 2014 13:08:46 +0200 Subject: [PATCH 3/4] Bump API version to 1.3.0 --- src/pocketmine/PocketMine.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pocketmine/PocketMine.php b/src/pocketmine/PocketMine.php index a28337368..7c36a43da 100644 --- a/src/pocketmine/PocketMine.php +++ b/src/pocketmine/PocketMine.php @@ -74,7 +74,7 @@ namespace pocketmine { use raklib\RakLib; const VERSION = "Alpha_1.4dev"; - const API_VERSION = "1.2.1"; + const API_VERSION = "1.3.0"; const CODENAME = "絶好(Zekkou)ケーキ(Cake)"; const MINECRAFT_VERSION = "v0.9.5 alpha"; const PHP_VERSION = "5.5"; From 6f30cd8a223d925c7dddd375970db5aa4aea1513 Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Sat, 16 Aug 2014 13:17:05 +0200 Subject: [PATCH 4/4] Removed PHP_VERSION constant on pocketmine namespace --- src/pocketmine/PocketMine.php | 1 - src/pocketmine/Server.php | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pocketmine/PocketMine.php b/src/pocketmine/PocketMine.php index 7c36a43da..426d27c60 100644 --- a/src/pocketmine/PocketMine.php +++ b/src/pocketmine/PocketMine.php @@ -77,7 +77,6 @@ namespace pocketmine { const API_VERSION = "1.3.0"; const CODENAME = "絶好(Zekkou)ケーキ(Cake)"; const MINECRAFT_VERSION = "v0.9.5 alpha"; - const PHP_VERSION = "5.5"; if(\Phar::running(true) !== ""){ @define("pocketmine\\PATH", \Phar::running(true) . "/"); diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index 218c6174f..8445efd25 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -1994,7 +1994,7 @@ class Server{ "os" => Utils::getOS(), "memory_total" => $this->getConfigString("memory-limit"), "memory_usage" => memory_get_usage(), - "php_version" => \pocketmine\PHP_VERSION, + "php_version" => PHP_VERSION, "version" => $version->get(false), "build" => $version->getBuild(), "mc_version" => \pocketmine\MINECRAFT_VERSION,