protocol 27, added player spawn events after death from new protocol, added EntityEvent constants

This commit is contained in:
Shoghi Cervantes 2015-05-28 14:19:00 +02:00
parent 51062940c5
commit 9a2170d296
5 changed files with 34 additions and 6 deletions

View File

@ -2016,7 +2016,7 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade
$pk = new EntityEventPacket();
$pk->eid = $this->getId();
$pk->event = 9;
$pk->event = EntityEventPacket::USE_ITEM;
$pk->setChannel(Network::CHANNEL_WORLD_EVENTS);
$this->dataPacket($pk);
Server::broadcastPacket($this->getViewers(), $pk);
@ -2309,7 +2309,7 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade
$pk = new EntityEventPacket();
$pk->eid = $this->getId();
$pk->event = 9;
$pk->event = EntityEventPacket::USE_ITEM;
$pk->setChannel(Network::CHANNEL_WORLD_EVENTS);
$this->dataPacket($pk);
Server::broadcastPacket($this->getViewers(), $pk);
@ -3020,7 +3020,7 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade
}elseif($this->getLastDamageCause() === $source and $this->spawned){
$pk = new EntityEventPacket();
$pk->eid = $this->getId();
$pk->event = 2;
$pk->event = EntityEventPacket::HURT_ANIMATION;
$this->dataPacket($pk->setChannel(Network::CHANNEL_WORLD_EVENTS));
}
}

View File

@ -62,6 +62,17 @@ abstract class Living extends Entity implements Damageable{
$this->setHealth($this->namedtag["Health"]);
}
public function setHealth($amount){
$wasAlive = $this->isAlive();
parent::setHealth($amount);
if($this->isAlive() and !$wasAlive){
$pk = new EntityEventPacket();
$pk->eid = $this->getId();
$pk->event = EntityEventPacket::RESPAWN;
Server::broadcastPacket($this->hasSpawned, $pk->setChannel(Network::CHANNEL_WORLD_EVENTS));
}
}
public function saveNBT(){
parent::saveNBT();
$this->namedtag->Health = new Short("Health", $this->getHealth());
@ -117,7 +128,7 @@ abstract class Living extends Entity implements Damageable{
$pk = new EntityEventPacket();
$pk->eid = $this->getId();
$pk->event = $this->getHealth() <= 0 ? 3 : 2; //Ouch!
$pk->event = $this->getHealth() <= 0 ? EntityEventPacket::DEATH_ANIMATION : EntityEventPacket::HURT_ANIMATION; //Ouch!
Server::broadcastPacket($this->hasSpawned, $pk->setChannel(Network::CHANNEL_WORLD_EVENTS));
$this->attackTime = 10; //0.5 seconds cooldown

View File

@ -67,7 +67,7 @@ class Squid extends WaterAnimal implements Ageable{
$pk = new EntityEventPacket();
$pk->eid = $this->getId();
$pk->event = 15;
$pk->event = EntityEventPacket::SQUID_INK_CLOUD;
Server::broadcastPacket($this->hasSpawned, $pk->setChannel(Network::CHANNEL_WORLD_EVENTS));
}
}

View File

@ -25,6 +25,23 @@ namespace pocketmine\network\protocol;
class EntityEventPacket extends DataPacket{
const HURT_ANIMATION = 2;
const DEATH_ANIMATION = 3;
const TAME_FAIL = 6;
const TAME_SUCCESS = 7;
const SHAKE_WET = 8;
const USE_ITEM = 9;
const EAT_GRASS_ANIMATION = 10;
const FISH_HOOK_BUBBLE = 11;
const FISH_HOOK_POSITION = 12;
const FISH_HOOK_HOOK = 13;
const FISH_HOOK_TEASE = 14;
const SQUID_INK_CLOUD = 15;
const AMBIENT_SOUND = 16;
const RESPAWN = 17;
public static $pool = [];
public static $next = 0;

View File

@ -30,7 +30,7 @@ interface Info{
/**
* Actual Minecraft: PE protocol version
*/
const CURRENT_PROTOCOL = 26;
const CURRENT_PROTOCOL = 27;
const LOGIN_PACKET = 0x82;
const PLAY_STATUS_PACKET = 0x83;