PHPackages                             redtv\_muqsit/simple-packet-handler - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. redtv\_muqsit/simple-packet-handler

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

redtv\_muqsit/simple-packet-handler
===================================

Handle specific data packets (virion for PMMP API 4.0.0)

010PHP

Since Sep 5Pushed 1y ago1 watchersCompare

[ Source](https://github.com/RedTv-Developpement/SimplePacketHandler)[ Packagist](https://packagist.org/packages/redtv_muqsit/simple-packet-handler)[ RSS](/packages/redtv-muqsit-simple-packet-handler/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

SimplePacketHandler
===================

[](#simplepackethandler)

Put an end to the if-elseif instanceof hell.

API Documentation
-----------------

[](#api-documentation)

### Packet Monitor

[](#packet-monitor)

Monitor data packets - use this if you aren't modifying the outcome of the event.
Packet monitor registers DataPacket(Receive/Send)Event(s) at `MONITOR` priority.

Use case:

- Dumping extra data from packets
- Debugging whether a packet was sent / received

```
/** @var Plugin $plugin */
$packet_monitor = SimplePacketHandler::createMonitor($plugin);

$packet_monitor->monitorIncoming(function(LoginPacket $packet, NetworkSession $origin) : void{
	$this->getLogger()->debug("Received LoginPacket from #" . spl_object_id($origin));
});

$packet_monitor->monitorIncoming(function(ServerSettingsResponsePacket $packet, NetworkSession $origin) : void{
	$this->getLogger()->debug("Received server settings response from {$origin->getPlayer()->getName()}");
});

$packet_monitor->monitorOutgoing(function(SetActorDataPacket $packet, NetworkSession $target) : void{
	$this->getLogger()->debug("Sent SetActorDataPacket to #" . spl_object_id($target));
});
```

The `LoginPacket` example above is the equivalent of:

```
/**
 * @param DataPacketReceiveEvent $event
 * @priority MONITOR
 */
public function onDataPacketReceive(DataPacketReceiveEvent $event) : void{
	$packet = $event->getPacket();
	if($packet instanceof LoginPacket){
		$origin = $event->getOrigin();
		$this->getLogger()->debug("Received LoginPacket from #" . spl_object_id($origin));
	}
}
```

The `SetActorDataPacket` example above is the equivalent of:

```
/**
 * @param DataPacketSendEvent $event
 * @priority MONITOR
 */
public function onDataPacketSend(DataPacketSendEvent $event) : void{
	foreach($event->getPackets() as $packet){
		if($packet instanceof SetActorDataPacket){
			foreach($event->getTargets() as $target){
				$this->getLogger()->debug("Sent SetActorDataPacket to #" . spl_object_id($target));
			}
		}
	}
}
```

### Packet Interceptor

[](#packet-interceptor)

Handle data packets - DataPacket(Receive/Send)Event(s) are registered at &lt; `MONITOR` priority.

Use case:

- Blocking pocketmine from handling specific data packets
- Modifying data packets before pocketmine handles them

```
/** @var Plugin $plugin */
$packet_interceptor = SimplePacketHandler::createInterceptor($plugin);

$packet_interceptor->interceptIncoming(function(AdventureSettingsPacket $packet, NetworkSession $origin) : bool{
	if($packet->getFlag(AdventureSettingsPacket::FLYING)){
		return false; // cancels the DataPacketReceiveEvent
	}
	return true; // do nothing
});

$packet_interceptor->interceptOutgoing(function(SetTimePacket $packet, NetworkSession $target) : bool{
	$custom_player = CustomPlayerManager::get($target->getPlayer());
	if($custom_player->getPTime() !== $packet->time){
		$target->sendDataPacket(SetTimePacket::create($custom_player->getPTime()));
		return false;
	}
	return true;
});
```

The `AdventureSettingsPacket` example above is the equivalent of:

```
/**
 * @param DataPacketReceiveEvent $event
 * @priority NORMAL
 */
public function onDataPacketReceive(DataPacketReceiveEvent $event) : void{
	$packet = $event->getPacket();
	if($packet instanceof AdventureSettingsPacket){
		$origin = $event->getOrigin();
		if($packet->getFlag(AdventureSettingsPacket::FLYING)){
			$event->cancel();
		}
	}
}
```

The `SetTimePacket` example above is the equivalent of:

```
/**
 * @param DataPacketSendEvent $event
 * @priority NORMAL
 */
public function onDataPacketSend(DataPacketSendEvent $event) : void{
	foreach($event->getPackets() as $packet){
		if($packet instanceof SetTimePacket){
			$targets = $event->getTargets();
			$new_targets = $targets;
			foreach($new_targets as $index => $target){
				$custom_player = CustomPlayerManager::get($target->getPlayer());
				if($custom_player->getPTime() !== $packet->time){
					$target->sendDataPacket(SetTimePacket::create($custom_player->getPTime()));
					unset($new_targets[$index]);
				}
			}

			if(count($new_targets) !== count($targets)){
				// Cancel the event, try sending the remaining targets the
				// batch of packets again.
				$event->cancel();
				if(count($new_targets) > 0){
					$new_target_players = [];
					foreach($new_targets as $new_target){
						$new_target_players[] = $new_target->getPlayer();
					}
					$this->getServer()->broadcastPackets($new_target_players, $event->getPackets());
				}
				break;
			}
		}
	}
}
```

###  Health Score

15

—

LowBetter than 3% of packages

Maintenance29

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity17

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/11e604ce0482ce1f054258b2026fddba1f1dd31e25da069be6ac919e2d4082f6?d=identicon)[RedTv](/maintainers/RedTv)

---

Top Contributors

[![RedTv-Developpement](https://avatars.githubusercontent.com/u/71102168?v=4)](https://github.com/RedTv-Developpement "RedTv-Developpement (3 commits)")

### Embed Badge

![Health badge](/badges/redtv-muqsit-simple-packet-handler/health.svg)

```
[![Health](https://phpackages.com/badges/redtv-muqsit-simple-packet-handler/health.svg)](https://phpackages.com/packages/redtv-muqsit-simple-packet-handler)
```

###  Alternatives

[sylvainjule/code-editor

Code editor field for Kirby 3, 4 and 5

377.4k](/packages/sylvainjule-code-editor)[runelaenen/sw6-redirects

Redirect plugin for Shopware 6

2511.2k](/packages/runelaenen-sw6-redirects)[jiaxincui/hashid

Laravel ID Encrypt Helper

2410.8k](/packages/jiaxincui-hashid)[bicpi/html-converter

HTML-to-Text converter library

1120.7k1](/packages/bicpi-html-converter)[williarin/cook

Composer plugin to execute recipes embedded in packages

252.1k3](/packages/williarin-cook)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
