Entities spawn with their motion

This commit is contained in:
Shoghi Cervantes 2013-05-31 12:04:43 +02:00
parent d7f74a6725
commit 3ac4b0af68
3 changed files with 24 additions and 4 deletions

View File

@ -283,7 +283,9 @@ class BlockAPI{
if(($player->gamemode & 0x01) === 0x00 and count($drops) > 0){ if(($player->gamemode & 0x01) === 0x00 and count($drops) > 0){
foreach($drops as $drop){ foreach($drops as $drop){
$this->server->api->entity->drop(new Position($target->x + 0.5, $target->y, $target->z + 0.5, $target->level), BlockAPI::getItem($drop[0] & 0xFFFF, $drop[1] & 0xFFFF, $drop[2] & 0xFF)); for($c = 0; $c < $drop[2]; ++$c){
$this->server->api->entity->drop(new Position($target->x + 0.5, $target->y, $target->z + 0.5, $target->level), BlockAPI::getItem($drop[0] & 0xFFFF, $drop[1] & 0xFFFF, 1));
}
} }
} }
return false; return false;

View File

@ -110,9 +110,9 @@ class EntityAPI{
"x" => $pos->x, "x" => $pos->x,
"y" => $pos->y + 0.19, "y" => $pos->y + 0.19,
"z" => $pos->z, "z" => $pos->z,
"speedX" => mt_rand(-1, 1) / 6, "speedX" => mt_rand(-3, 3) / 8,
"speedY" => mt_rand(5, 8) / 2, "speedY" => mt_rand(5, 8) / 1.5,
"speedZ" => mt_rand(-1, 1) / 6, "speedZ" => mt_rand(-3, 3) / 8,
"item" => $item, "item" => $item,
); );
if($this->server->api->handle("item.drop", $data) !== false){ if($this->server->api->handle("item.drop", $data) !== false){

View File

@ -547,6 +547,12 @@ class Entity extends Position{
"meta" => $this->meta, "meta" => $this->meta,
"stack" => $this->stack, "stack" => $this->stack,
)); ));
$player->dataPacket(MC_SET_ENTITY_MOTION, array(
"eid" => $this->eid,
"speedX" => (int) ($this->speedX * 400),
"speedY" => (int) ($this->speedY * 400),
"speedZ" => (int) ($this->speedZ * 400),
));
break; break;
case ENTITY_MOB: case ENTITY_MOB:
$player->dataPacket(MC_ADD_MOB, array( $player->dataPacket(MC_ADD_MOB, array(
@ -557,6 +563,12 @@ class Entity extends Position{
"z" => $this->z, "z" => $this->z,
"metadata" => $this->getMetadata(), "metadata" => $this->getMetadata(),
)); ));
$player->dataPacket(MC_SET_ENTITY_MOTION, array(
"eid" => $this->eid,
"speedX" => (int) ($this->speedX * 400),
"speedY" => (int) ($this->speedY * 400),
"speedZ" => (int) ($this->speedZ * 400),
));
break; break;
case ENTITY_OBJECT: case ENTITY_OBJECT:
if($this->type === OBJECT_PAINTING){ if($this->type === OBJECT_PAINTING){
@ -579,6 +591,12 @@ class Entity extends Position{
"z" => $this->z, "z" => $this->z,
"did" => -$this->data["Tile"], "did" => -$this->data["Tile"],
)); ));
$player->dataPacket(MC_SET_ENTITY_MOTION, array(
"eid" => $this->eid,
"speedX" => (int) ($this->speedX * 400),
"speedY" => (int) ($this->speedY * 400),
"speedZ" => (int) ($this->speedZ * 400),
));
break; break;
} }
} }