mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-09-08 02:42:58 +00:00
Add restrictions on packet send directions with interfaces
This prevents plugins sending wrong packets at the compiler level (or would, if we had a compiler). It's more robust than a getter for client/server and throwing an exception since a static analysis tool can detect faults created by sending wrong packets from the server. This is also used to deny service to dodgy clients which send wrong packets to the server to attack it.
This commit is contained in:
@ -25,7 +25,7 @@ namespace pocketmine\event\server;
|
||||
|
||||
use pocketmine\event\Cancellable;
|
||||
use pocketmine\event\CancellableTrait;
|
||||
use pocketmine\network\mcpe\protocol\Packet;
|
||||
use pocketmine\network\mcpe\protocol\ClientboundPacket;
|
||||
use pocketmine\Player;
|
||||
|
||||
/**
|
||||
@ -36,12 +36,12 @@ class DataPacketBroadcastEvent extends ServerEvent implements Cancellable{
|
||||
|
||||
/** @var Player[] */
|
||||
private $players;
|
||||
/** @var Packet[] */
|
||||
/** @var ClientboundPacket[] */
|
||||
private $packets;
|
||||
|
||||
/**
|
||||
* @param Player[] $players
|
||||
* @param Packet[] $packets
|
||||
* @param Player[] $players
|
||||
* @param ClientboundPacket[] $packets
|
||||
*/
|
||||
public function __construct(array $players, array $packets){
|
||||
$this->players = $players;
|
||||
@ -63,14 +63,14 @@ class DataPacketBroadcastEvent extends ServerEvent implements Cancellable{
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Packet[]
|
||||
* @return ClientboundPacket[]
|
||||
*/
|
||||
public function getPackets() : array{
|
||||
return $this->packets;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Packet[] $packets
|
||||
* @param ClientboundPacket[] $packets
|
||||
*/
|
||||
public function setPackets(array $packets) : void{
|
||||
$this->packets = $packets;
|
||||
|
@ -25,30 +25,30 @@ namespace pocketmine\event\server;
|
||||
|
||||
use pocketmine\event\Cancellable;
|
||||
use pocketmine\event\CancellableTrait;
|
||||
use pocketmine\network\mcpe\protocol\Packet;
|
||||
use pocketmine\network\mcpe\protocol\ServerboundPacket;
|
||||
use pocketmine\Player;
|
||||
|
||||
class DataPacketReceiveEvent extends ServerEvent implements Cancellable{
|
||||
use CancellableTrait;
|
||||
|
||||
/** @var Packet */
|
||||
/** @var ServerboundPacket */
|
||||
private $packet;
|
||||
/** @var Player */
|
||||
private $player;
|
||||
|
||||
/**
|
||||
* @param Player $player
|
||||
* @param Packet $packet
|
||||
* @param Player $player
|
||||
* @param ServerboundPacket $packet
|
||||
*/
|
||||
public function __construct(Player $player, Packet $packet){
|
||||
public function __construct(Player $player, ServerboundPacket $packet){
|
||||
$this->packet = $packet;
|
||||
$this->player = $player;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Packet
|
||||
* @return ServerboundPacket
|
||||
*/
|
||||
public function getPacket() : Packet{
|
||||
public function getPacket() : ServerboundPacket{
|
||||
return $this->packet;
|
||||
}
|
||||
|
||||
|
@ -25,30 +25,30 @@ namespace pocketmine\event\server;
|
||||
|
||||
use pocketmine\event\Cancellable;
|
||||
use pocketmine\event\CancellableTrait;
|
||||
use pocketmine\network\mcpe\protocol\Packet;
|
||||
use pocketmine\network\mcpe\protocol\ClientboundPacket;
|
||||
use pocketmine\Player;
|
||||
|
||||
class DataPacketSendEvent extends ServerEvent implements Cancellable{
|
||||
use CancellableTrait;
|
||||
|
||||
/** @var Packet */
|
||||
/** @var ClientboundPacket */
|
||||
private $packet;
|
||||
/** @var Player */
|
||||
private $player;
|
||||
|
||||
/**
|
||||
* @param Player $player
|
||||
* @param Packet $packet
|
||||
* @param Player $player
|
||||
* @param ClientboundPacket $packet
|
||||
*/
|
||||
public function __construct(Player $player, Packet $packet){
|
||||
public function __construct(Player $player, ClientboundPacket $packet){
|
||||
$this->packet = $packet;
|
||||
$this->player = $player;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Packet
|
||||
* @return ClientboundPacket
|
||||
*/
|
||||
public function getPacket() : Packet{
|
||||
public function getPacket() : ClientboundPacket{
|
||||
return $this->packet;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user