1. The forums will be archived and moved to a read only mode in about 2 weeks (mid march).

Solved Random Ore Drops Error

Discussion in 'Help' started by NakiFx, Aug 22, 2020.

  1. NakiFx

    NakiFx Silverfish

    Messages:
    17
    GitHub:
    nakifx
    Hello, I Want to make random ore drops
    Code:
    PHP:
    if($block->getId() == "129"){
                    
    $items = array(
                        
    Item::get(26701)->addEnchantment($sharpness1),
                        
    Item::get(31401)->setCustomName("§eBling Helmet"),
                        
    Item::get(31701)->setCustomName("§eBling Boots"),
                        
    Item::get(31501)->setCustomName("§eBling Chestplate"),
                        
    Item::get(31601)->setCustomName("§eBling Leggings")
                    );
                    
    $itemchance array_rand($items1);
                    
    $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)
     
  2. GodWeedZao

    GodWeedZao Zombie Pigman

    Messages:
    401
    GitHub:
    godweedzao
    read the error
     
  3. NakiFx

    NakiFx Silverfish

    Messages:
    17
    GitHub:
    nakifx
    Can you fix it? I don't know how to fix it
     
  4. GodWeedZao

    GodWeedZao Zombie Pigman

    Messages:
    401
    GitHub:
    godweedzao
  5. GodWeedZao

    GodWeedZao Zombie Pigman

    Messages:
    401
    GitHub:
    godweedzao
    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
     
  6. NakiFx

    NakiFx Silverfish

    Messages:
    17
    GitHub:
    nakifx
    Thank you
     
  7. GodWeedZao

    GodWeedZao Zombie Pigman

    Messages:
    401
    GitHub:
    godweedzao
    just change Snow to what ore block do you want, this code will drop random diamond - redstone and... when you breake snow block :D :p
     
  8. GodWeedZao

    GodWeedZao Zombie Pigman

    Messages:
    401
    GitHub:
    godweedzao
    no problem ;)
     
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.