Muqsit / Tebex

Tebex plugin for PocketMine-MP servers
https://poggit.pmmp.io/ci/Muqsit/Tebex
32 stars 6 forks source link

Implement events #2

Open Muqsit opened 3 years ago

Muqsit commented 3 years ago

Plugin developers may want to cancel processing packages until players have logged in (HereAuth), until custom player data is fetched asynchronously...

public function onTebexOnlinePlayerPurchase(TebexOnlinePlayerPurchaseEvent $event) : void{
    if($this->manager->isLocked($event->getPlayer())){
        // Will keep trying to process this package
        // everytime plugin checks for pending packages
        // until the event isn't cancelled.
        $event->setCancelled();
    }
}

to implement a custom rewarding system that does not rely on tebex's enforced command execution...

public const PACKAGE_RANDOM_LOOT = 1337;

/**
 * @param TebexOnlinePlayerPurchaseEvent $event
 * @priority MONITOR
 * @ignoreCancelled true
 */
public function onTebexOnlinePlayerPurchase(TebexOnlinePlayerPurchaseEvent $event) : void{
    if($event->getPackage()->getId() === self::PACKAGE_RANDOM_LOOT){
        LootTables::getRandom()->reward($event->getPlayer());
    }
}

or simply logging.

/**
 * @param TebexPlayerPurchaseEvent $event
 * @priority MONITOR
 * @ignoreCancelled true
 */
public function onTebexPlayerPurchase(TebexPlayerPurchaseEvent $event) : void{
    $this->logTebexPurchaseToDiscord(
        $event->getPackage(),
        $event->getPlayer(),
        $event->getCommands()
    );
}