MoneyConnector
簡単に複数の経済APIに対応させる
ライセンス: GNU General Public License v3.0
ソースコード: PJZ9n/MoneyConnector (GitHub)
現時点で対応している経済API
導入方法
使用出来る関数に関しては、こちらのinterfaceをご確認ください。
基本的にonebone氏のEconomyAPIに準拠していて、同じような感覚で使用できます。
使用例
簡単に複数の経済APIに対応させる
ライセンス: GNU General Public License v3.0
ソースコード: PJZ9n/MoneyConnector (GitHub)
現時点で対応している経済API
- onebone/EconomyAPI
- mixpowder/MixCoinSystem
- metowa1227/MoneySystem
導入方法
- MoneyConnectorPlugin.pharのプラグインを導入する
- MoneyConnector.pharのVirionライブラリをあなたのプラグインに注入する(方法については公式ドキュメンテーションを参照)
使用出来る関数に関しては、こちらのinterfaceをご確認ください。
基本的にonebone氏のEconomyAPIに準拠していて、同じような感覚で使用できます。
使用例
- このライブラリを使用したプラグイン(PJZ9n/GiveMoney)を参照
- Poggit CIを使用したVirionライプラリの注入例
YAML:
--- # Poggit-CI Manifest. Open the CI at https://poggit.pmmp.io/ci/...
build-by-default: true
branches:
- master
projects:
RepoName:
libs:
- src: PJZ9n/MoneyConnector/MoneyConnector
version: 1.1.0
...
- 具体的な使用例
PHP:
<?php
declare(strict_types=1);
namespace Example;
use PJZ9n\MoneyConnector\Connectors\EconomyAPI;
use PJZ9n\MoneyConnector\Connectors\MixCoinSystem;
use PJZ9n\MoneyConnector\Connectors\MoneySystem;
use PJZ9n\MoneyConnector\MoneyConnector;
use pocketmine\event\block\BlockBreakEvent;
use pocketmine\event\block\BlockPlaceEvent;
use pocketmine\event\Listener;
use pocketmine\event\player\PlayerInteractEvent;
use pocketmine\plugin\PluginBase;
use pocketmine\utils\Config;
use RuntimeException;
class Main extends PluginBase implements Listener
{
/** @var MoneyConnector */
private $connector;
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 onBlockBreak(BlockBreakEvent $event): void
{
$player = $event->getPlayer();
$this->connector->addMoney($player, 1000);//プレイヤーがブロックを破壊するたびに、1000増やす
}
public function onBlockPlace(BlockPlaceEvent $event): void
{
$player = $event->getPlayer();
$this->connector->reduceMoney($player, 1000);//プレイヤーがブロックを設置するたびに、1000減らす
}
public function onPlayerInteract(PlayerInteractEvent $event): void
{
if ($event->getAction() !== PlayerInteractEvent::LEFT_CLICK_BLOCK) return;
$player = $event->getPlayer();
$money = $this->connector->myMoney($player);//プレイヤーの所持金
$unit = $this->connector->getMonetaryUnit();//単位
$player->sendMessage("あなたの所持金は、{$unit}{$money}です!");
}
}