Skip to content

PJZ9n/MoneyConnector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MoneyConnector

Library for connecting multiple economical APIs.

Supported APIs

  • onebone/EconomyAPI
  • mixpowder/MixCoinSystem
  • metowa1227/MoneySystem

Using Plugin

How to use

Preparing to use this library

Example

Use auto detect (Very Simple)

<?php

/**
 * @name Example
 * @version 1.0.0
 * @main Example\Example\Main
 * @api 3.0.0
 * @description Every time you login to the server, player will be granted 1000 money.
 */

declare(strict_types=1);

namespace Example\Example;

use PJZ9n\MoneyConnector\MoneyConnectorUtils;
use pocketmine\event\Listener;
use pocketmine\event\player\PlayerJoinEvent;
use pocketmine\plugin\PluginBase;
use RuntimeException;

class Main extends PluginBase implements Listener
{
    public function onEnable(): void
    {
        if (!MoneyConnectorUtils::isExistsSupportedAPI()) {        
            throw new RuntimeException("API is not supported");
        }
        $name = MoneyConnectorUtils::getConnectorByDetect()->getName();
        $this->getLogger()->info("Using API: " . $name);
        $this->getServer()->getPluginManager()->registerEvents($this, $this);
    }
    
    public function onPlayerJoin(PlayerJoinEvent $event): void
    {
        $player = $event->getPlayer();
        MoneyConnectorUtils::getConnectorByDetect()->addMoney($player, 1000);
    }
}

Not use auto detect

<?php

/**
 * @name Example
 * @version 1.0.0
 * @main Example\Example\Main
 * @api 3.0.0
 * @description Every time you login to the server, player will be granted 1000 money.
 */

declare(strict_types=1);

namespace Example\Example;

use PJZ9n\MoneyConnector\MoneyConnectorUtils;
use pocketmine\event\Listener;
use pocketmine\event\player\PlayerJoinEvent;
use pocketmine\plugin\PluginBase;
use PJZ9n\MoneyConnector\MoneyConnector;
use pocketmine\utils\Config;
use RuntimeException;

class Main extends PluginBase implements Listener
{
    /** @var MoneyConnector */
    private $moneyConnector;
    
    public function onEnable(): void
    {
        $settings = new Config($this->getDataFolder() . "settings.yml", Config::YAML, [
            "moneyapi" => "EconomyAPI",
        ]);
        $moneyAPI = $settings->get("moneyapi");
        $this->moneyConnector = MoneyConnectorUtils::getConnectorByName((string)$moneyAPI);
        if (!($this->moneyConnector instanceof MoneyConnector)) {        
            throw new RuntimeException("API \"{$moneyAPI}\" is not supported");
        }
        $this->getServer()->getPluginManager()->registerEvents($this, $this);
    }
    
    public function onPlayerJoin(PlayerJoinEvent $event): void
    {
        $player = $event->getPlayer();
        $this->moneyConnector->addMoney($player, 1000);
    }
}

Basic

<?php

/**
 * @name Example
 * @version 1.0.0
 * @main Example\Example\Main
 * @api 3.0.0
 * @description Every time you login to the server, player will be granted 1000 money.
 */

declare(strict_types=1);

namespace Example\Example;

use PJZ9n\MoneyConnector\Connectors\EconomyAPI;
use PJZ9n\MoneyConnector\Connectors\MixCoinSystem;
use PJZ9n\MoneyConnector\Connectors\MoneySystem;
use pocketmine\event\Listener;
use pocketmine\event\player\PlayerJoinEvent;
use pocketmine\plugin\PluginBase;
use PJZ9n\MoneyConnector\MoneyConnector;
use pocketmine\utils\Config;
use RuntimeException;

class Main extends PluginBase implements Listener
{
    /** @var MoneyConnector */
    private $moneyConnector;
    
    public function onEnable(): void
    {
        $settings = new Config($this->getDataFolder() . "settings.yml", Config::YAML, [
            "moneyapi" => "EconomyAPI",
        ]);
        $moneyAPI = $settings->get("moneyapi");
        switch ($moneyAPI) {
            case "EconomyAPI":
                $this->moneyConnector = new EconomyAPI();
                break;
            case "MixCoinSystem":
                $this->moneyConnector = new MixCoinSystem();
                break;
            case "MoneySystem":
                $this->moneyConnector = new MoneySystem();
                break;
            default:
                throw new RuntimeException("API \"{$moneyAPI}\" is not supported");
        }
        
        $this->getServer()->getPluginManager()->registerEvents($this, $this);
    }
    
    public function onPlayerJoin(PlayerJoinEvent $event): void
    {
        $player = $event->getPlayer();
        $this->moneyConnector->addMoney($player, 1000);
    }
}