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 = new EntityEventPacket();
$pk->eid = $this->getId(); $pk->eid = $this->getId();
$pk->event = 9; $pk->event = EntityEventPacket::USE_ITEM;
$pk->setChannel(Network::CHANNEL_WORLD_EVENTS); $pk->setChannel(Network::CHANNEL_WORLD_EVENTS);
$this->dataPacket($pk); $this->dataPacket($pk);
Server::broadcastPacket($this->getViewers(), $pk); Server::broadcastPacket($this->getViewers(), $pk);
@ -2309,7 +2309,7 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade
$pk = new EntityEventPacket(); $pk = new EntityEventPacket();
$pk->eid = $this->getId(); $pk->eid = $this->getId();
$pk->event = 9; $pk->event = EntityEventPacket::USE_ITEM;
$pk->setChannel(Network::CHANNEL_WORLD_EVENTS); $pk->setChannel(Network::CHANNEL_WORLD_EVENTS);
$this->dataPacket($pk); $this->dataPacket($pk);
Server::broadcastPacket($this->getViewers(), $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){ }elseif($this->getLastDamageCause() === $source and $this->spawned){
$pk = new EntityEventPacket(); $pk = new EntityEventPacket();
$pk->eid = $this->getId(); $pk->eid = $this->getId();
$pk->event = 2; $pk->event = EntityEventPacket::HURT_ANIMATION;
$this->dataPacket($pk->setChannel(Network::CHANNEL_WORLD_EVENTS)); $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"]); $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(){ public function saveNBT(){
parent::saveNBT(); parent::saveNBT();
$this->namedtag->Health = new Short("Health", $this->getHealth()); $this->namedtag->Health = new Short("Health", $this->getHealth());
@ -117,7 +128,7 @@ abstract class Living extends Entity implements Damageable{
$pk = new EntityEventPacket(); $pk = new EntityEventPacket();
$pk->eid = $this->getId(); $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)); Server::broadcastPacket($this->hasSpawned, $pk->setChannel(Network::CHANNEL_WORLD_EVENTS));
$this->attackTime = 10; //0.5 seconds cooldown $this->attackTime = 10; //0.5 seconds cooldown

View File

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

View File

@ -25,6 +25,23 @@ namespace pocketmine\network\protocol;
class EntityEventPacket extends DataPacket{ 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 $pool = [];
public static $next = 0; public static $next = 0;

View File

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