From d733eb6b4ae83dc5320d57f5ef40de0c6282c236 Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Pueyo Date: Sat, 12 Jan 2013 17:01:20 +0100 Subject: [PATCH] Added more Events and Handlers --- src/API/BlockAPI.php | 2 +- src/API/EntityAPI.php | 1 + src/API/LevelAPI.php | 2 +- src/classes/Entity.class.php | 2 +- src/classes/Player.class.php | 14 ++++++++++---- 5 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/API/BlockAPI.php b/src/API/BlockAPI.php index 56c2763bf..f69098ffa 100644 --- a/src/API/BlockAPI.php +++ b/src/API/BlockAPI.php @@ -576,7 +576,7 @@ class BlockAPI{ } public function updateBlockRemote($data, $event){ - if($event !== "world.block.update"){ + if($event !== "block.update"){ return; } $this->updateBlock($data["x"], $data["y"], $data["z"], isset($data["type"]) ? $data["type"]:BLOCK_UPDATE_RANDOM); diff --git a/src/API/EntityAPI.php b/src/API/EntityAPI.php index 767791975..54f14f37c 100644 --- a/src/API/EntityAPI.php +++ b/src/API/EntityAPI.php @@ -61,6 +61,7 @@ class EntityAPI{ public function add($class, $type = 0, $data = array()){ $eid = $this->server->eidCnt++; $this->server->entities[$eid] = new Entity($this->server, $eid, $class, $type, $data); + $this->server->handle("entity.add", $this->server->entities[$eid]); return $this->server->entities[$eid]; } diff --git a/src/API/LevelAPI.php b/src/API/LevelAPI.php index 264162723..f314a6b58 100644 --- a/src/API/LevelAPI.php +++ b/src/API/LevelAPI.php @@ -88,7 +88,7 @@ class LevelAPI{ public function setBlock($x, $y, $z, $block, $meta = 0, $update = true){ $this->map->setBlock($x, $y, $z, $block, $meta); $this->heightMap[$z][$x] = $this->map->getFloor($x, $z); - if($this->server->api->dhandle("world.block.change", array( + if($this->server->api->dhandle("block.change", array( "x" => $x, "y" => $y, "z" => $z, diff --git a/src/classes/Entity.class.php b/src/classes/Entity.class.php index 62b289f80..31290593b 100644 --- a/src/classes/Entity.class.php +++ b/src/classes/Entity.class.php @@ -83,7 +83,7 @@ class Entity extends stdClass{ $this->server->api->dhandle("entity.move", $this); $player = $this->server->query("SELECT EID FROM entities WHERE class == ".ENTITY_PLAYER." AND abs(x - {$this->x}) <= 1.5 AND abs(y - {$this->y}) <= 1.5 AND abs(z - {$this->z}) <= 1.5 LIMIT 1;", true); if($player !== true and $player !== false){ - if($this->server->api->dhandle("player.item.pick", array( + if($this->server->api->dhandle("player.pickup", array( "eid" => $player["EID"], "block" => $this->type, "meta" => $this->meta, diff --git a/src/classes/Player.class.php b/src/classes/Player.class.php index d34bf3546..2a6351b85 100644 --- a/src/classes/Player.class.php +++ b/src/classes/Player.class.php @@ -92,6 +92,7 @@ class Player{ public function close($reason = "", $msg = true){ if($this->connected === true){ + $this->server->dhandle("player.quit", $this); $reason = $reason == "" ? "server stop":$reason; $this->save(); $this->eventHandler(new Container("You have been kicked. Reason: ".$reason), "server.chat"); @@ -344,6 +345,7 @@ class Player{ case MC_MOVE_PLAYER: if(is_object($this->entity)){ $this->entity->setPosition($data["x"], $data["y"], $data["z"], $data["yaw"], $data["pitch"]); + $this->server->dhandle("player.move", $this->entity); } break; case MC_PLAYER_EQUIPMENT: @@ -384,9 +386,11 @@ class Player{ break; case MC_INTERACT: if(isset($this->server->entities[$data["target"]]) and Utils::distance($this->entity->position, $this->server->entities[$data["target"]]->position) <= 8){ - console("[DEBUG] EID ".$this->eid." attacked EID ".$data["target"], true, true, 2); - if($this->server->gamemode !== 1 and $this->server->difficulty > 0){ - $this->server->api->entity->harm($data["target"], $this->server->difficulty, $this->eid); + if($this->handle("player.interact", $data) !== false){ + console("[DEBUG] EID ".$this->eid." attacked EID ".$data["target"], true, true, 2); + if($this->server->gamemode !== 1 and $this->server->difficulty > 0){ + $this->server->api->entity->harm($data["target"], $this->server->difficulty, $this->eid); + } } } break; @@ -406,7 +410,9 @@ class Player{ //$this->entity->setHealth($data["health"], "client"); break; case MC_DROP_ITEM: - $this->server->api->block->drop($this->entity->x, $this->entity->y, $this->entity->z, $data["block"], $data["meta"], $data["stack"]); + if($this->server->handle("player.drop", $data) !== false){ + $this->server->api->block->drop($this->entity->x, $this->entity->y, $this->entity->z, $data["block"], $data["meta"], $data["stack"]); + } break; default: console("[DEBUG] Unhandled 0x".dechex($data["id"])." Data Packet for Client ID ".$this->clientID.": ".print_r($data, true), true, true, 2);