PlayerInteractEvent

Discussion in 'Spigot Plugin Help' started by Delta33_YT., Apr 23, 2017.

  1. Hello, I'm a developer from one network and I'm creating new plugins, but I have a problem. The plugin tries to go looking for blocks with particle effects and you have to count 10. As I pity to do, I have made a hashmap and arrays but you can give more than 1 time to that same block, and that is an error xD. HELP!

    Code:
    Code (Text):
    private static HashMap<Player, ArrayList<Block>> blocks = new HashMap<>();
     
        public static HashMap<Player, Integer> cooldown = new HashMap<>();
     
        @SuppressWarnings("deprecation")
        @EventHandler
        public void onInteract(PlayerInteractEvent event)
        {
            Player p = event.getPlayer();
            Material m = event.getClickedBlock().getType();
            Action a = event.getAction();
            if ((Main.get().getConfig().getString("World") != null) &&
                    (p.getWorld().getName().equals(Main.get().getConfig().getString("World")))) {
                if (a.equals(Action.RIGHT_CLICK_BLOCK) && m.equals(Material.SKULL)) {
                    Skull skull = (Skull) event.getClickedBlock().getState();
                    if (skull.hasOwner() && skull.getOwner().equals("CruXXx")) {
                        String playerName = p.getName();
                        ArrayList<Block> block = new ArrayList<>();
                            if(blocks.containsKey(p)){
                                if(block.contains(event.getClickedBlock())){
                                    //blocks.put(event.getClickedBlock().getLocation(), playerName);
                                    Firework fw = event.getClickedBlock().getWorld().spawn(event.getClickedBlock().getLocation(), Firework.class);
                                    FireworkMeta data = fw.getFireworkMeta();
                                    data.addEffects(FireworkEffect.builder().withColor(Color.BLUE, Color.AQUA, Color.NAVY).with(FireworkEffect.Type.BALL).build());
                                    data.setPower(1);
                                    fw.setFireworkMeta(data);
                                    if (Discover.contains(playerName)) {
                                    bloques++;
                                    }
                                    if(bloques < 25) {
                                        p.sendMessage("§aYou found a mistery block! §7(" + ChatColor.GRAY + bloques + "/25)");
                                        p.sendMessage("§eFind all mistery blocks to claim a reward!");
                                    }else if(bloques == 25) {
                                        p.sendMessage("§aCongratulations, you have completed the mistery block hunt!");
                                        p.sendMessage("§6Here ir your reward:");
                                        p.sendMessage("§7- §d5000 Money");
                                        p.playEffect(p.getLocation(), Effect.MOBSPAWNER_FLAMES, 0);
                                        Bukkit.broadcastMessage(playerName + " §ahas completed the challenge §dmistery block");
                                    }
                                }
                            }else{
                                block.add(event.getClickedBlock());
                                blocks.put(p, block);
                                if (((Integer)cooldown.get(event.getPlayer())).intValue() != 0) {
                                    return;
                                }else {
                                    cooldown.put(event.getPlayer(), Integer.valueOf(2));
                                    String message = "§cYou have found this mistery block!";
                                    event.getPlayer().sendMessage(message);
                                }
                            }
                                if(bloques > cant) {
                                    p.sendMessage("§cYou've completed the challenge, you can't do it again!");
                                }
                            else
                            {
                                Discover.add(playerName);
                             
                            }
                    }
                }
            }
        }
     
    #1 Delta33_YT., Apr 23, 2017
    Last edited: Apr 23, 2017