Package org.mcsg.survivalgames.events

Source Code of org.mcsg.survivalgames.events.ChestReplaceEvent

package org.mcsg.survivalgames.events;

import java.util.HashSet;
import java.util.Random;

import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.Chest;
import org.bukkit.block.DoubleChest;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.mcsg.survivalgames.Game;
import org.mcsg.survivalgames.GameManager;
import org.mcsg.survivalgames.Game.GameMode;
import org.mcsg.survivalgames.SurvivalGames;
import org.mcsg.survivalgames.util.ChestRatioStorage;



public class ChestReplaceEvent implements Listener{

  private Random rand = new Random();
 
    @EventHandler(priority = EventPriority.HIGHEST)
    public void ChestListener(PlayerInteractEvent e){
      if(e.getAction() == Action.RIGHT_CLICK_BLOCK){
        BlockState clicked = e.getClickedBlock().getState();
        if(clicked instanceof Chest || clicked instanceof DoubleChest){
          int gameid = GameManager.getInstance().getPlayerGameId(e.getPlayer());
          if(gameid != -1){
            Game game = GameManager.getInstance().getGame(gameid);
            if(game.getMode() == GameMode.INGAME){
              HashSet<Block>openedChest = GameManager.openedChest.get(gameid);
              openedChest = (openedChest == null)? new HashSet<Block>() : openedChest;
              if(!openedChest.contains(e.getClickedBlock())){
                Inventory[] invs = ((clicked instanceof Chest))? new Inventory[] {((Chest) clicked).getBlockInventory()}
                : new Inventory[] {((DoubleChest)clicked).getLeftSide().getInventory(), ((DoubleChest)clicked).getRightSide().getInventory()};
                ItemStack item = invs[0].getItem(0);
                int level = (item != null && item.getType() == Material.WOOL)? item.getData().getData() + 1 : 1;
                level = ChestRatioStorage.getInstance().getLevel(level);
                SurvivalGames.debug(invs +" "+level);
                for(Inventory inv : invs){
                  inv.setContents(new ItemStack[inv.getContents().length]);
                        for(ItemStack i: ChestRatioStorage.getInstance().getItems(level)){
                            int l = rand.nextInt(26);
                            while(inv.getItem(l) != null)
                                l = rand.nextInt(26);
                            inv.setItem(l, i);
                        }
                }
              }
              openedChest.add(e.getClickedBlock());
              GameManager.openedChest.put(gameid, openedChest);
            } else {
              e.setCancelled(true);
              return;
            }
          }
        }
      }
    }
     
     
     
     
     
     
     
      /*
       *
       * OLD CRAP CODE
     
        try{
         
            HashSet<Block>openedChest3 = new HashSet<Block>();

            if(!(e.getAction()==Action.RIGHT_CLICK_BLOCK)) return;

            Block clickedBlock = e.getClickedBlock();
            int gameid = GameManager.getInstance().getPlayerGameId(e.getPlayer());
            if(gameid == -1) return;
            GameManager gm = GameManager.getInstance();
           
            if(!gm.isPlayerActive(e.getPlayer())){
                return;
            }
       
            if(gm.getGame(gameid).getMode() != GameMode.INGAME){
              e.setCancelled(true);
                return;
            }
           
            if(GameManager.openedChest.get(gameid) !=null){
                openedChest3.addAll(GameManager.openedChest.get(gameid));
            }
           
            if(openedChest3.contains(clickedBlock)){
                return;
            }
           
            Inventory inv;
            int size = 0;
           
            if (clickedBlock.getState() instanceof Chest) {
                size = 1;
                inv  = ((Chest) clickedBlock.getState()).getInventory();

            }
            else if(clickedBlock.getState() instanceof DoubleChest){
                size = 2;
                inv = ((DoubleChest) clickedBlock.getState()).getInventory();

            }
            else return;

            inv.clear();
            Random r = new Random();

            for(ItemStack i: ChestRatioStorageOLD.getInstance().getItems()){
                int l = r.nextInt(26 * size);

                while(inv.getItem(l) != null)
                    l = r.nextInt(26 * size);
                inv.setItem(l, i);


            }
            openedChest3.add(clickedBlock);
            GameManager.openedChest.put(gameid, openedChest3);
        }
        catch(Exception e5){}*/



}
 
TOP

Related Classes of org.mcsg.survivalgames.events.ChestReplaceEvent

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.