I have coded a simple rates plugin, and it receives no errors when blocks are broken, but it doesn't work. Main: PHP: <?phpnamespace Rates;use pocketmine\event\block\BlockBreakEvent as Breaker;use pocketmine\plugin\PluginBase as P;use pocketmine\event\Listener as L;use pocketmine\item\Item;class Main extends P implements L { /** * @param Breaker $event */ public function onBreak(Breaker $event){ $block = $event->getBlock()->getId(); if($block === Item::get(Item::LEAVES) or $block === Item::get(Item::LEAVES2)){ $rand = rand(1, 2); switch($rand){ case 1: $event->setDrops([Item::get(Item::APPLE, 0, 1)]); break; } } elseif($block === Item::get(Item::GRAVEL)){ $rand = rand(1, 2); switch($rand){ case 1: $event->setDrops([Item::get(Item::FLINT, 0, 1)]); break; } } }} plugin.yml: Code: name: Rates+ author: Irish version: 1.0.0 api: -1.0.0 -2.0.0 main: Rates\main
Here is an updated version with different ways. PHP: <?phpnamespace Rates;use pocketmine\event\block\BlockBreakEvent as Breaker;use pocketmine\plugin\PluginBase as P;use pocketmine\event\Listener as L;use pocketmine\item\Item;class Main extends P implements L { public function onEnable() { $this->getLogger()->info('Rates+ has been enabled on the server!'); $this->getServer()->getPluginManager()->registerEvents($this, $this); } /** * @param Breaker $event */ public function onBreak(Breaker $event){ $block = $event->getBlock()->getId(); $random = rand(1, 2); switch($block){ case 18: if($random === 1) { $event->setDrops(array(Item::get(Item::APPLE, 0, 1))); } break; case 161: if($random === 1) { $event->setDrops(array(Item::get(Item::APPLE, 0, 1))); } break; case 13: if($random === 1) { $event->setDrops(array(Item::get(Item::FLINT, 0, 1))); } break; } switch($random){ case 1: if($block === 18){ $event->setDrops(array(Item::get(Item::APPLE, 0, 1))); } if($block === 161){ $event->setDrops(array(Item::get(Item::APPLE, 0, 1))); } if($block === 13){ $event->setDrops(array(Item::get(Item::FLINT, 0, 1))); } break; } }}
Tip: PHP: $random = mt_rand(0, 1) # 0 - represents false and 1 - trueif($random){ # ON} else { # OFF} That's how computers are working. And are you sure that you want the chance of getting those items so big? Currently the chance are 50/50 PHP: if(!mt_rand(0, 10)){} Example above the chance is 10/100 Make sure that event is actually fired by outputting something. PHP: public function(\pocketmine\event\block\BlockBreakEvent $e){ echo "Block {$e->getBlock()->__toString()} breaked. \n"}