Advertisement
KinoZuke

main

Jun 22nd, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 9.77 KB | None | 0 0
  1. <?php
  2. namespace CrateKey;
  3.  
  4. use pocketmine\event\Listener;
  5. use pocketmine\level\Level;
  6. use pocketmine\plugin\PluginBase;
  7. use pocketmine\utils\Config;
  8. use pocketmine\level\Position;
  9. use pocketmine\event\player\PlayerInteractEvent;
  10. use pocketmine\block\Block;
  11. use pocketmine\item\Item;
  12. use pocketmine\inventory;
  13. use pocketmine\inventory\PlayerInventory;
  14. use pocketmine\inventory\BaseInventory;
  15. use pocketmine\utils\TextFormat;
  16. use pocketmine\nbt\tag\Compound;
  17.  
  18. class Main extends PluginBase implements Listener {
  19.     private $item = [];
  20.     private $tag = TextFormat::BLUE."[RandomDropper] ".TextFormat::WHITE;
  21.     private $setup;
  22.  
  23.     public function onEnable(){
  24.         $dataResources = $this->getDataFolder()."/Config/";
  25.         if(!file_exists($this->getDataFolder()))
  26.             @mkdir($this->getDataFolder(), 0755, true);
  27.         if(!file_exists($dataResources))
  28.             @mkdir($dataResources, 0755, true);
  29.        
  30.         $this->setup = new Config($dataResources. "config.yml", Config::YAML, [
  31.                 "item1" => ["1"],
  32.                 "item2" => ["1"],
  33.                 "item3" => ["1"],
  34.                 "item4" => ["1"],
  35.                 "item5" => ["1"],
  36.                 "item6" => ["1"],
  37.                 "item7" => ["1"],
  38.                 "item8" => ["1"],
  39.                 "item9" => ["1"],
  40.                 "item10" => ["1"]]);
  41.  
  42.         $this->setup->save();
  43.  
  44.  
  45.         foreach($this->setup->get("item1") as $id){
  46.             $e = explode(":", $id);
  47.             $id = $e[0];
  48.             $damage = 0;
  49.             if(count($e) > 1){
  50.                 $damage = $e[1];
  51.             }
  52.             $this->item[] = ["id" => $id, "damage" => $damage];
  53.         }
  54.         foreach($this->setup->get("item2") as $id){
  55.             $e = explode(":", $id);
  56.             $id = $e[0];
  57.             $damage = 0;
  58.             if(count($e) > 1){
  59.                 $damage = $e[1];
  60.             }
  61.             $this->item[] = ["id" => $id, "damage" => $damage];
  62.         }
  63.         foreach($this->setup->get("item3") as $id){
  64.             $e = explode(":", $id);
  65.             $id = $e[0];
  66.             $damage = 0;
  67.             if(count($e) > 1){
  68.                 $damage = $e[1];
  69.             }
  70.             $this->item[] = ["id" => $id, "damage" => $damage];
  71.         }
  72.         foreach($this->setup->get("item4") as $id){
  73.             $e = explode(":", $id);
  74.             $id = $e[0];
  75.             $damage = 0;
  76.             if(count($e) > 1){
  77.                 $damage = $e[1];
  78.             }
  79.             $this->item[] = ["id" => $id, "damage" => $damage];
  80.         }
  81.         foreach($this->setup->get("item5") as $id){
  82.             $e = explode(":", $id);
  83.             $id = $e[0];
  84.             $damage = 0;
  85.             if(count($e) > 1){
  86.                 $damage = $e[1];
  87.             }
  88.             $this->item[] = ["id" => $id, "damage" => $damage];
  89.         }
  90.         foreach($this->setup->get("item6") as $id){
  91.             $e = explode(":", $id);
  92.             $id = $e[0];
  93.             $damage = 0;
  94.             if(count($e) > 1){
  95.                 $damage = $e[1];
  96.             }
  97.             $this->item[] = ["id" => $id, "damage" => $damage];
  98.         }
  99.         foreach($this->setup->get("item7") as $id){
  100.             $e = explode(":", $id);
  101.             $id = $e[0];
  102.             $damage = 0;
  103.             if(count($e) > 1){
  104.                 $damage = $e[1];
  105.             }
  106.             $this->item[] = ["id" => $id, "damage" => $damage];
  107.         }
  108.         foreach($this->setup->get("item8") as $id){
  109.             $e = explode(":", $id);
  110.             $id = $e[0];
  111.             $damage = 0;
  112.             if(count($e) > 1){
  113.                 $damage = $e[1];
  114.             }
  115.             $this->item[] = ["id" => $id, "damage" => $damage];
  116.         }
  117.         foreach($this->setup->get("item9") as $id){
  118.             $e = explode(":", $id);
  119.             $id = $e[0];
  120.             $damage = 0;
  121.             if(count($e) > 1){
  122.                 $damage = $e[1];
  123.             }
  124.             $this->item[] = ["id" => $id, "damage" => $damage];
  125.         }
  126.         foreach($this->setup->get("item10") as $id){
  127.             $e = explode(":", $id);
  128.             $id = $e[0];
  129.             $damage = 0;
  130.             if(count($e) > 1){
  131.                 $damage = $e[1];
  132.             }
  133.             $this->item[] = ["id" => $id, "damage" => $damage];
  134.         }
  135.  
  136.         $this->getServer()->getPluginManager()->registerEvents($this, $this);
  137.     }
  138.  
  139.  
  140.     public function onTouch(PlayerInteractEvent $event){
  141.         $block = $event->getBlock();
  142.         $player = $event->getPlayer();
  143.         $inventory = $player->getInventory();
  144.        
  145.         if($block->getId() === Block::CHEST){
  146.            
  147.         if($inventory->contains(new \pocketmine\item\Emerald(0,1))) {
  148.            
  149.             $event->setCancelled();
  150.            
  151.             switch(mt_rand(1, 10)){
  152.                    case 1:
  153.                     if(count($this->item) > 0){
  154.                         $r = mt_rand(0, count($this->item)-1);
  155.                         $item = $this->item[$r];
  156.                         $player->getLevel()->dropItem($block, new Item($item["id"], $item["damage"], 1));
  157.                         $player->sendMessage("Used CrateKey");
  158.                         $inventory->removeItem(new \pocketmine\item\Emerald(0,1));
  159.                         break;                     
  160.                     }
  161.                     break;
  162.                 case 2:
  163.                     if(count($this->item) > 0){
  164.                         $r = mt_rand(0, count($this->item)-1);
  165.                         $item = $this->item[$r];
  166.                         $player->getLevel()->dropItem($block, new Item($item["id"], $item["damage"], 1));
  167.                         $player->sendMessage("Used CrateKey");
  168.                         $inventory->removeItem(new \pocketmine\item\Emerald(0,1));
  169.                          break;
  170.                     }
  171.                     break;
  172.                    
  173.                 case 3:
  174.                     if(count($this->item) > 0){
  175.                         $r = mt_rand(0, count($this->item)-1);
  176.                         $item = $this->item[$r];
  177.                         $player->getLevel()->dropItem($block, new Item($item["id"], $item["damage"], 1));
  178.                         $player->sendMessage("Used CrateKey");
  179.                         $inventory->removeItem(new \pocketmine\item\Emerald(0,1));  
  180.                          break;
  181.                     }
  182.                     break;
  183.                
  184.                     case 4:
  185.                     if(count($this->item) > 0){
  186.                         $r = mt_rand(0, count($this->item)-1);
  187.                         $item = $this->item[$r];
  188.                         $player->getLevel()->dropItem($block, new Item($item["id"], $item["damage"], 1));        
  189.                         $player->sendMessage("Used CrateKey");
  190.                         $inventory->removeItem(new \pocketmine\item\Emerald(0,1));         
  191.                         break;                     
  192.                     }
  193.                     break;
  194.  
  195.                     case 5:
  196.                     if(count($this->item) > 0){
  197.                         $r = mt_rand(0, count($this->item)-1);
  198.                         $item = $this->item[$r];
  199.                         $player->getLevel()->dropItem($block, new Item($item["id"], $item["damage"], 1));
  200.                         $player->sendMessage("Used CrateKey");
  201.                         $inventory->removeItem(new \pocketmine\item\Emerald(0,1));     
  202.                         break;                     
  203.                     }
  204.                     break;
  205.                    
  206.                     case 6:
  207.                     if(count($this->item) > 0){
  208.                         $r = mt_rand(0, count($this->item)-1);
  209.                         $item = $this->item[$r];
  210.                         $player->getLevel()->dropItem($block, new Item($item["id"], $item["damage"], 1));
  211.                         $player->sendMessage("Used CrateKey");
  212.                         $inventory->removeItem(new \pocketmine\item\Emerald(0,1));
  213.                         break;                     
  214.                     }
  215.                     break;
  216.                    
  217.                     case 7:
  218.                     if(count($this->item) > 0){
  219.                         $r = mt_rand(0, count($this->item)-1);
  220.                         $item = $this->item[$r];
  221.                         $player->getLevel()->dropItem($block, new Item($item["id"], $item["damage"], 1));
  222.                         $player->sendMessage("Used CrateKey");
  223.                         $inventory->removeItem(new \pocketmine\item\Emerald(0,1));
  224.                          break;
  225.                     }
  226.                     break;
  227.                    
  228.                     case 8:
  229.                     if(count($this->item) > 0){
  230.                         $r = mt_rand(0, count($this->item)-1);
  231.                         $item = $this->item[$r];
  232.                         $player->getLevel()->dropItem($block, new Item($item["id"], $item["damage"], 1));
  233.                         $player->sendMessage("Used CrateKey");
  234.                         $inventory->removeItem(new \pocketmine\item\Emerald(0,1));  
  235.                          break;
  236.                     }
  237.                     break;
  238.                
  239.                     case 9:
  240.                     if(count($this->item) > 0){
  241.                         $r = mt_rand(0, count($this->item)-1);
  242.                         $item = $this->item[$r];
  243.                         $player->getLevel()->dropItem($block, new Item($item["id"], $item["damage"], 1));        
  244.                         $player->sendMessage("Used CrateKey");
  245.                         $inventory->removeItem(new \pocketmine\item\Emerald(0,1));         
  246.                         break;                     
  247.                     }
  248.                     break;
  249.  
  250.                     case 10:
  251.                     if(count($this->item) > 0){
  252.                         $r = mt_rand(0, count($this->item)-1);
  253.                         $item = $this->item[$r];
  254.                         $player->getLevel()->dropItem($block, new Item($item["id"], $item["damage"], 1));
  255.                         $player->sendMessage("Used CrateKey");
  256.                         $inventory->removeItem(new \pocketmine\item\Emerald(0,1));     
  257.                         break;                     
  258.                     }
  259.                     break;
  260.             }
  261.             }
  262.             $player->getLevel()->save();            
  263.         }    
  264.     }
  265. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement