mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-21 08:17:34 +00:00
Two packet event types ;)
This commit is contained in:
parent
a2ec9d6688
commit
0bf74d4139
@ -1253,6 +1253,11 @@ class Player{
|
||||
if($this->connected === false){
|
||||
return;
|
||||
}
|
||||
|
||||
if(EventHandler::callEvent(new DataPacketReceiveEvent($this, $packet)) === BaseEvent::DENY){
|
||||
return;
|
||||
}
|
||||
|
||||
switch($packet->pid()){
|
||||
case 0x01:
|
||||
break;
|
||||
@ -2315,7 +2320,7 @@ class Player{
|
||||
$this->nextBuffer = microtime(true) + 0.1;
|
||||
}
|
||||
|
||||
public function directBigRawPacket(RakNetDataPacket $packet){
|
||||
private function directBigRawPacket(RakNetDataPacket $packet){
|
||||
if($this->connected === false){
|
||||
return false;
|
||||
}
|
||||
@ -2355,6 +2360,11 @@ class Player{
|
||||
if($this->connected === false){
|
||||
return false;
|
||||
}
|
||||
|
||||
if(EventHandler::callEvent(new DataPacketSendEvent($this, $packet)) === BaseEvent::DENY){
|
||||
return array();
|
||||
}
|
||||
|
||||
$packet->encode();
|
||||
$pk = new RakNetPacket(RakNetInfo::DATA_PACKET_0);
|
||||
$pk->data[] = $packet;
|
||||
@ -2378,6 +2388,11 @@ class Player{
|
||||
if($this->connected === false){
|
||||
return false;
|
||||
}
|
||||
|
||||
if(EventHandler::callEvent(new DataPacketSendEvent($this, $packet)) === BaseEvent::DENY){
|
||||
return;
|
||||
}
|
||||
|
||||
$packet->encode();
|
||||
$len = strlen($packet->buffer) + 1;
|
||||
$MTU = $this->MTU - 24;
|
||||
|
@ -19,18 +19,22 @@
|
||||
*
|
||||
*/
|
||||
|
||||
class RakNetPacketSendEvent extends ServerEvent implements CancellableEvent{
|
||||
class DataPacketReceiveEvent extends ServerEvent implements CancellableEvent{
|
||||
public static $handlers;
|
||||
public static $handlerPriority;
|
||||
|
||||
private $packet;
|
||||
private $player;
|
||||
|
||||
|
||||
public function __construct(RakNetPacket $packet){
|
||||
public function __construct(Player $player, RakNetDataPacket $packet){
|
||||
$this->packet = $packet;
|
||||
}
|
||||
|
||||
public function getPacket(){
|
||||
return $this->packet;
|
||||
}
|
||||
|
||||
public function getPlayer(){
|
||||
return $this->player;
|
||||
}
|
||||
}
|
@ -19,18 +19,22 @@
|
||||
*
|
||||
*/
|
||||
|
||||
class RakNetPacketReceiveEvent extends ServerEvent implements CancellableEvent{
|
||||
class DataPacketSendEvent extends ServerEvent implements CancellableEvent{
|
||||
public static $handlers;
|
||||
public static $handlerPriority;
|
||||
|
||||
private $packet;
|
||||
private $player;
|
||||
|
||||
|
||||
public function __construct(RakNetPacket $packet){
|
||||
public function __construct(Player $player, RakNetDataPacket $packet){
|
||||
$this->packet = $packet;
|
||||
}
|
||||
|
||||
public function getPacket(){
|
||||
return $this->packet;
|
||||
}
|
||||
|
||||
public function getPlayer(){
|
||||
return $this->player;
|
||||
}
|
||||
}
|
@ -19,7 +19,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
class UnknownPacketSendEvent extends ServerEvent implements CancellableEvent{
|
||||
class PacketReceiveEvent extends ServerEvent implements CancellableEvent{
|
||||
public static $handlers;
|
||||
public static $handlerPriority;
|
||||
|
@ -19,7 +19,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
class UnknownPacketReceiveEvent extends ServerEvent implements CancellableEvent{
|
||||
class PacketSendEvent extends ServerEvent implements CancellableEvent{
|
||||
public static $handlers;
|
||||
public static $handlerPriority;
|
||||
|
@ -55,14 +55,16 @@ class MinecraftInterface{
|
||||
|
||||
private function parsePacket($buffer, $source, $port){
|
||||
$pid = ord($buffer{0});
|
||||
|
||||
if(RakNetInfo::isValid($pid)){
|
||||
$parser = new RakNetParser($buffer);
|
||||
if($parser->packet !== false){
|
||||
$parser->packet->ip = $source;
|
||||
$parser->packet->port = $port;
|
||||
if(EventHandler::callEvent(new RakNetPacketReceiveEvent($parser->packet)) !== BaseEvent::DENY){
|
||||
return $parser->packet;
|
||||
if(EventHandler::callEvent(new PacketReceiveEvent($parser->packet)) === BaseEvent::DENY){
|
||||
return false;
|
||||
}
|
||||
return $parser->packet;
|
||||
}
|
||||
return false;
|
||||
}elseif($pid === 0xfe and $buffer{1} === "\xfd" and ServerAPI::request()->api->query instanceof QueryHandler){
|
||||
@ -70,29 +72,25 @@ class MinecraftInterface{
|
||||
$packet->ip = $source;
|
||||
$packet->port = $port;
|
||||
$packet->buffer = $buffer;
|
||||
if(EventHandler::callEvent(new PacketReceiveEvent($packet)) === BaseEvent::DENY){
|
||||
return false;
|
||||
}
|
||||
ServerAPI::request()->api->query->handle($packet);
|
||||
}else{
|
||||
$packet = new Packet();
|
||||
$packet->ip = $source;
|
||||
$packet->port = $port;
|
||||
$packet->buffer = $buffer;
|
||||
EventHandler::callEvent(new UnknownPacketReceiveEvent($packet));
|
||||
EventHandler::callEvent(new PacketReceiveEvent($packet));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public function writePacket(Packet $packet){
|
||||
if($packet instanceof RakNetPacket){
|
||||
if(EventHandler::callEvent(new RakNetPacketSendEvent($packet)) === BaseEvent::DENY){
|
||||
return 0;
|
||||
}
|
||||
if(EventHandler::callEvent(new PacketSendEvent($packet)) === BaseEvent::DENY){
|
||||
return 0;
|
||||
}elseif($packet instanceof RakNetPacket){
|
||||
$codec = new RakNetCodec($packet);
|
||||
}elseif($packet instanceof QueryPacket){
|
||||
|
||||
}else{
|
||||
if(EventHandler::callEvent(new UnknownPacketSendEvent($packet)) === BaseEvent::DENY){
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
$write = $this->socket->write($packet->buffer, $packet->ip, $packet->port);
|
||||
$this->bandwidth[1] += $write;
|
||||
|
Loading…
x
Reference in New Issue
Block a user