Item pickup

This commit is contained in:
Shoghi Cervantes Pueyo 2013-01-05 03:16:11 +01:00
parent 57282225d2
commit 518afeae48
2 changed files with 39 additions and 27 deletions

View File

@ -81,6 +81,8 @@ class Entity extends stdClass{
if($player !== true and $player !== false){ if($player !== true and $player !== false){
if($this->server->api->dhandle("player.item.pick", array( if($this->server->api->dhandle("player.item.pick", array(
"eid" => $player["EID"], "eid" => $player["EID"],
"block" => $this->type,
"meta" => $this->meta,
"target" => $this->eid "target" => $this->eid
)) !== false){ )) !== false){
$this->close(); $this->close();
@ -163,6 +165,7 @@ class Entity extends stdClass{
$this->server->query("DELETE FROM entities WHERE EID = ".$this->eid.";"); $this->server->query("DELETE FROM entities WHERE EID = ".$this->eid.";");
$this->server->api->dhandle("entity.remove", $this->eid); $this->server->api->dhandle("entity.remove", $this->eid);
$this->closed = true; $this->closed = true;
unset($this);
} }
} }

View File

@ -114,7 +114,10 @@ class Player{
public function eventHandler($data, $event){ public function eventHandler($data, $event){
switch($event){ switch($event){
case "player.item.pick": case "player.item.pick":
$this->dataPacket(MC_TAKE_ITEM_ENTITY, $data); if($data["eid"] === $this->eid){
$data["eid"] = 0;
}
$this->dataPacket(MC_TAKE_ITEM_ENTITY, $data);
break; break;
case "player.equipment.change": case "player.equipment.change":
if($data["eid"] === $this->eid){ if($data["eid"] === $this->eid){
@ -277,31 +280,37 @@ class Player{
"eid" => 0, "eid" => 0,
)); ));
break; break;
case MC_READY: case MC_READY:
if($this->spawned !== false){ switch($data["status"]){
break; case 1:
} if($this->spawned !== false){
$this->spawned = true; break;
$this->entity = $this->server->api->entity->add(ENTITY_PLAYER, 0, array("player" => $this)); }
$this->eid = $this->entity->eid; $this->spawned = true;
$this->server->query("UPDATE players SET EID = ".$this->eid." WHERE clientID = ".$this->clientID.";"); $this->entity = $this->server->api->entity->add(ENTITY_PLAYER, 0, array("player" => $this));
$this->entity->setName($this->username); $this->eid = $this->entity->eid;
$this->entity->data["clientID"] = $this->clientID; $this->server->query("UPDATE players SET EID = ".$this->eid." WHERE clientID = ".$this->clientID.";");
$this->server->api->entity->spawnAll($this); $this->entity->setName($this->username);
$this->server->api->entity->spawnToAll($this->eid); $this->entity->data["clientID"] = $this->clientID;
$this->evid[] = $this->server->event("server.time.change", array($this, "eventHandler")); $this->server->api->entity->spawnAll($this);
$this->evid[] = $this->server->event("server.chat", array($this, "eventHandler")); $this->server->api->entity->spawnToAll($this->eid);
$this->evid[] = $this->server->event("entity.remove", array($this, "eventHandler")); $this->evid[] = $this->server->event("server.time.change", array($this, "eventHandler"));
$this->evid[] = $this->server->event("entity.move", array($this, "eventHandler")); $this->evid[] = $this->server->event("server.chat", array($this, "eventHandler"));
$this->evid[] = $this->server->event("entity.animate", array($this, "eventHandler")); $this->evid[] = $this->server->event("entity.remove", array($this, "eventHandler"));
$this->evid[] = $this->server->event("player.equipment.change", array($this, "eventHandler")); $this->evid[] = $this->server->event("entity.move", array($this, "eventHandler"));
$this->evid[] = $this->server->event("player.item.pick", array($this, "eventHandler")); $this->evid[] = $this->server->event("entity.animate", array($this, "eventHandler"));
$this->evid[] = $this->server->event("world.block.change", array($this, "eventHandler")); $this->evid[] = $this->server->event("player.equipment.change", array($this, "eventHandler"));
console("[DEBUG] Player with EID ".$this->eid." \"".$this->username."\" spawned!", true, true, 2); $this->evid[] = $this->server->event("player.item.pick", array($this, "eventHandler"));
$this->evid[] = $this->server->event("world.block.change", array($this, "eventHandler"));
$this->eventHandler($this->server->motd, "server.chat"); console("[DEBUG] Player with EID ".$this->eid." \"".$this->username."\" spawned!", true, true, 2);
if($this->MTU <= 548){
$this->eventHandler("Your connection is bad, you may experience lag and slow map loading.", "server.chat"); $this->eventHandler($this->server->motd, "server.chat");
if($this->MTU <= 548){
$this->eventHandler("Your connection is bad, you may experience lag and slow map loading.", "server.chat");
}
break;
case 2://Chunk loaded?
break;
} }
break; break;
case MC_MOVE_PLAYER: case MC_MOVE_PLAYER:
@ -334,7 +343,7 @@ class Player{
break; break;
case MC_USE_ITEM: case MC_USE_ITEM:
$data["eid"] = $this->eid; $data["eid"] = $this->eid;
if(Utils::distance($this->entity->position, $data) > 8){ if(Utils::distance($this->entity->position, $data) > 10){
break; break;
} }
$this->server->handle("player.block.action", $data); $this->server->handle("player.block.action", $data);