diff --git a/src/MyPlot/MyPlot.php b/src/MyPlot/MyPlot.php index 173fb56e..88123f0d 100644 --- a/src/MyPlot/MyPlot.php +++ b/src/MyPlot/MyPlot.php @@ -1,7 +1,9 @@ <?php namespace MyPlot; +use EssentialsPE\Loader; use MyPlot\provider\EconomySProvider; +use MyPlot\provider\EssentialsPEProvider; use MyPlot\provider\PocketMoneyProvider; use MyPlot\provider\YAMLDataProvider; use MyPlot\task\ClearPlotTask; @@ -9,6 +11,7 @@ use MyPlot\provider\SQLiteDataProvider; use MyPlot\provider\EconomyProvider; +use onebone\economyapi\EconomyAPI; use pocketmine\block\Air; use pocketmine\event\level\LevelLoadEvent; use pocketmine\lang\BaseLang; @@ -21,6 +24,7 @@ use pocketmine\Player; use pocketmine\level\Level; use pocketmine\utils\TextFormat as TF; +use PocketMoney\PocketMoney; class MyPlot extends PluginBase { @@ -500,10 +504,18 @@ public function onEnable() { // Initialize EconomyProvider if ($this->getConfig()->get("UseEconomy") == true) { - if ($this->getServer()->getPluginManager()->getPlugin("EconomyAPI") !== null) { - $this->economyProvider = new EconomySProvider(); + if (($plugin = $this->getServer()->getPluginManager()->getPlugin("EconomyAPI")) !== null) { + if($plugin instanceof EconomyAPI) { + $this->economyProvider = new EconomySProvider($plugin); + } + } elseif (($plugin = $this->getServer()->getPluginManager()->getPlugin("EssentialsPE")) !== null) { + if($plugin instanceof Loader) { + $this->economyProvider = new EssentialsPEProvider($plugin); + } } elseif (($plugin = $this->getServer()->getPluginManager()->getPlugin("PocketMoney")) !== null) { - $this->economyProvider = new PocketMoneyProvider($plugin); + if($plugin instanceof PocketMoney) { + $this->economyProvider = new PocketMoneyProvider($plugin); + } } } diff --git a/src/MyPlot/provider/EconomyProvider.php b/src/MyPlot/provider/EconomyProvider.php index 9ceed2da..4ba2eb8c 100644 --- a/src/MyPlot/provider/EconomyProvider.php +++ b/src/MyPlot/provider/EconomyProvider.php @@ -3,12 +3,6 @@ use pocketmine\Player; -interface EconomyProvider -{ - /** - * @param Player $player - * @param int $amount - * @return bool - */ - public function reduceMoney(Player $player, $amount); +interface EconomyProvider{ + public function reduceMoney(Player $player, $amount); } \ No newline at end of file diff --git a/src/MyPlot/provider/EconomySProvider.php b/src/MyPlot/provider/EconomySProvider.php index 49a638c7..9528f048 100644 --- a/src/MyPlot/provider/EconomySProvider.php +++ b/src/MyPlot/provider/EconomySProvider.php @@ -6,15 +6,21 @@ class EconomySProvider implements EconomyProvider { - public function reduceMoney(Player $player, $amount) { + /** @var EconomyAPI */ + private $plugin; + + public function __construct(EconomyAPI $plugin) { + $this->plugin = $plugin; + } + + public function reduceMoney(Player $player, $amount) { if ($amount == 0) { return true; } elseif ($amount < 0) { - $ret = EconomyAPI::getInstance()->addMoney($player, $amount, true); + $ret = $this->plugin->addMoney($player, $amount, true); } else { - $ret = EconomyAPI::getInstance()->reduceMoney($player, $amount, true); + $ret = $this->plugin->reduceMoney($player, $amount, true); } - - return ($ret === EconomyAPI::RET_SUCCESS); + return ($ret == 1); } } \ No newline at end of file diff --git a/src/MyPlot/provider/EssentialsPEProvider.php b/src/MyPlot/provider/EssentialsPEProvider.php new file mode 100644 index 00000000..346afa19 --- /dev/null +++ b/src/MyPlot/provider/EssentialsPEProvider.php @@ -0,0 +1,30 @@ +<?php +namespace MyPlot\provider; + +use EssentialsPE\Loader; +use pocketmine\Player; + +class EssentialsPEProvider implements EconomyProvider { + /** @var Loader */ + private $plugin; + + public function __construct(Loader $plugin) { + $this->plugin = $plugin; + } + + public function reduceMoney(Player $player, $amount) { + if ($amount == 0) { + return true; + } elseif ($amount < 0) { + $pre = $this->plugin->getAPI()->getPlayerBalance($player); + $this->plugin->getAPI()->addToPlayerBalance($player, $amount); + } else { + $pre = $this->plugin->getAPI()->getPlayerBalance($player); + $this->plugin->getAPI()->addToPlayerBalance($player, -$amount); + } + if($this->plugin->getAPI()->getPlayerBalance($player) == $pre - $amount) { + return true; + } + return false; + } +} \ No newline at end of file diff --git a/src/MyPlot/provider/PocketMoneyProvider.php b/src/MyPlot/provider/PocketMoneyProvider.php index 9c715370..64bcbdd3 100644 --- a/src/MyPlot/provider/PocketMoneyProvider.php +++ b/src/MyPlot/provider/PocketMoneyProvider.php @@ -6,6 +6,7 @@ class PocketMoneyProvider implements EconomyProvider { + /** @var PocketMoney */ private $plugin; public function __construct(PocketMoney $plugin) {