Hello, I Want to make random ore drops Code: PHP: if($block->getId() == "129"){ $items = array( Item::get(267, 0, 1)->addEnchantment($sharpness1), Item::get(314, 0, 1)->setCustomName("§eBling Helmet"), Item::get(317, 0, 1)->setCustomName("§eBling Boots"), Item::get(315, 0, 1)->setCustomName("§eBling Chestplate"), Item::get(316, 0, 1)->setCustomName("§eBling Leggings") ); $itemchance = array_rand($items, 1); $drops = ($items[$itemchance]); $event->setDrops(array($drops)); $event->setXpDropAmount(0); } Error : Code: 10:43:33 Server|CRITICAL > TypeError: "Argument 1 passed to pocketmine\event\block\BlockBreakEvent::setDropsVariadic() must be an instance of pocketmine\item\Item, null given, called in phar:///storage/emulated/0/PocketMine-MP/PocketMine-MP.phar/src/pocketmine/event/block/BlockBreakEvent.php on line 98" (EXCEPTION) in "src/pocketmine/event/block/BlockBreakEvent" at line 106 10:43:33 Server|CRITICAL > #0 src/pocketmine/event/block/BlockBreakEvent(98): pocketmine\event\block\BlockBreakEvent->setDropsVariadic(NULL ) 10:43:33 Server|CRITICAL > #1 plugins/SkywRsProHWDW/src/vixikhd/skywars/arena/Arena(574): pocketmine\event\block\BlockBreakEvent->setDrops(array[1]) 10:43:33 Server|CRITICAL > #2 src/pocketmine/plugin/MethodEventExecutor(42): vixikhd\skywars\arena\Arena->onBreak(object pocketmine\event\block\BlockBreakEvent) 10:43:33 Server|CRITICAL > #3 src/pocketmine/plugin/RegisteredListener(80): pocketmine\plugin\MethodEventExecutor->execute(object vixikhd\skywars\arena\Arena, object pocketmine\event\block\BlockBreakEvent) 10:43:33 Server|CRITICAL > #4 src/pocketmine/event/Event(88): pocketmine\plugin\RegisteredListener->callEvent(object pocketmine\event\block\BlockBreakEvent) 10:43:33 Server|CRITICAL > #5 src/pocketmine/level/Level(1939): pocketmine\event\Event->call() 10:43:33 Server|CRITICAL > #6 src/pocketmine/Player(2674): pocketmine\level\Level->useBreakOn(object pocketmine\math\Vector3, object pocketmine\item\Pickaxe, object pocketmine\Player, boolean 1) 10:43:33 Server|CRITICAL > #7 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(167): pocketmine\Player->handleInventoryTransaction(object pocketmine\network\mcpe\protocol\InventoryTransactionPacket) 10:43:33 Server|CRITICAL > #8 src/pocketmine/network/mcpe/protocol/InventoryTransactionPacket(173): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleInventoryTransaction(object pocketmine\network\mcpe\protocol\InventoryTransactionPacket) 10:43:33 Server|CRITICAL > #9 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(127): pocketmine\network\mcpe\protocol\InventoryTransactionPacket->handle(object pocketmine\network\mcpe\PlayerNetworkSessionAdapter) 10:43:33 Server|CRITICAL > #10 src/pocketmine/network/mcpe/protocol/BatchPacket(130): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(object pocketmine\network\mcpe\protocol\InventoryTransactionPacket) 10:43:33 Server|CRITICAL > #11 src/pocketmine/network/mcpe/PlayerNetworkSessionAdapter(127): pocketmine\network\mcpe\protocol\BatchPacket->handle(object pocketmine\network\mcpe\PlayerNetworkSessionAdapter) 10:43:33 Server|CRITICAL > #12 src/pocketmine/Player(3497): pocketmine\network\mcpe\PlayerNetworkSessionAdapter->handleDataPacket(object pocketmine\network\mcpe\protocol\BatchPacket) 10:43:33 Server|CRITICAL > #13 src/pocketmine/network/mcpe/RakLibInterface(169): pocketmine\Player->handleDataPacket(object pocketmine\network\mcpe\protocol\BatchPacket) 10:43:33 Server|CRITICAL > #14 vendor/pocketmine/raklib/src/server/ServerHandler(99): pocketmine\network\mcpe\RakLibInterface->handleEncapsulated(string[15] 127.0.0.1 48538, object raklib\protocol\EncapsulatedPacket, integer 0) 10:43:33 Server|CRITICAL > #15 src/pocketmine/network/mcpe/RakLibInterface(109): raklib\server\ServerHandler->handlePacket() 10:43:33 Server|CRITICAL > #16 src/pocketmine/network/mcpe/RakLibInterface(99): pocketmine\network\mcpe\RakLibInterface->process() 10:43:33 Server|CRITICAL > #17 vendor/pocketmine/snooze/src/SleeperHandler(123): pocketmine\network\mcpe\RakLibInterface->pocketmine\network\mcpe\{closure}() 10:43:33 Server|CRITICAL > #18 vendor/pocketmine/snooze/src/SleeperHandler(85): pocketmine\snooze\SleeperHandler->processNotifications() 10:43:33 Server|CRITICAL > #19 src/pocketmine/Server(2264): pocketmine\snooze\SleeperHandler->sleepUntil(double 1598093013.0972) 10:43:33 Server|CRITICAL > #20 src/pocketmine/Server(2104): pocketmine\Server->tickProcessor() 10:43:33 Server|CRITICAL > #21 src/pocketmine/Server(1691): pocketmine\Server->start() 10:43:33 Server|CRITICAL > #22 src/pocketmine/PocketMine(273): pocketmine\Server->__construct(object BaseClassLoader, object pocketmine\utils\MainLogger, string[34] /storage/emulated/0/PocketMine-MP/, string[42] /storage/emulated/0/PocketMine-MP/plugins/) 10:43:33 Server|CRITICAL > #23 src/pocketmine/PocketMine(304): pocketmine\server() 10:43:33 Server|CRITICAL > #24 (11): require(string[89] phar:///storage/emulated/0/PocketMine-MP/PocketMine-MP.phar/src/pocketmine/Pocke)
PHP: /*** @return mixed*/public function DropRandom() { //drop random stuff $diamond = Item::get(Item::DIAMOND); $redStone = Item::get(Item::REDSTONE_DUST); //you can add more here $array = array($redStone, $diamond); return $array[array_rand($array)];}/*** @param BlockBreakEvent $event*/public function onBreak(BlockBreakEvent $event) { $player = $event->getPlayer(); $item = $event->getDrops(); switch ($event->getBlock()->getId()) { case Block::SNOW: $event->setDrops([$this->DropRandom()]); break; }} set prefixto solved
just change Snow to what ore block do you want, this code will drop random diamond - redstone and... when you breake snow block