Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class PlayerInteractListener implements Listener {
- private List<Player> lastuse = new ArrayList<>();
- private HashMap<Player, Integer> cooldown = new HashMap<>();
- ArrayList<Player> playerFromInteract = new ArrayList<Player>();
- @EventHandler
- public void playerInteractEvent(PlayerInteractEvent event) {
- if ((event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) &&
- event.getItem() != null && event.getItem().getType() == Material.COMPASS) {
- final Player player = event.getPlayer();
- Player nearest = null;
- for (Entity entity : event.getPlayer().getNearbyEntities(VampireTracks.getInstance().getConfig().getInt("RANGE"), VampireTracks.getInstance().getConfig().getInt("RANGE"), VampireTracks.getInstance().getConfig().getInt("RANGE"))) {
- if (entity instanceof Player)
- nearest = (Player)entity;
- }
- if (nearest != null) {
- if (!this.cooldown.containsKey(player)) {
- int distance = (int)player.getLocation().distance(nearest.getLocation());
- player.setCompassTarget(nearest.getLocation());
- playerFromInteract.add(player);
- player.sendMessage(ChatColor.translateAlternateColorCodes('&', ((String)Objects.<String>requireNonNull(VampireTracks.getInstance().getConfig().getString("USE-MESSAGE"))).replace("{Nearest}", nearest.getName()).replace("{Distance}", distance + "")));
- if (this.lastuse.contains(player)) {
- player.getInventory().setItemInHand(new ItemStack(Material.AIR));
- this.lastuse.remove(player);
- } else {
- this.lastuse.add(player);
- }
- this.cooldown.put(player, Integer.valueOf(VampireTracks.getInstance().getConfig().getInt("COOLDOWN")));
- final int[] i = { VampireTracks.getInstance().getConfig().getInt("COOLDOWN") };
- (new BukkitRunnable() {
- public void run() {
- i[0] = i[0] - 1;
- if (i[0] == 0)
- PlayerInteractListener.this.cooldown.remove(player);
- }
- }).runTaskTimer((Plugin)VampireTracks.getInstance(), 0L, 20L);
- } else {
- int cooldownTime = 10;
- long secondsLeft = ((cooldown.get(player.getName())/1000)+cooldownTime) - (System.currentTimeMillis()/1000);
- player.sendMessage(ChatColor.RED + "You can't use it for " + secondsLeft + " seconds!");
- }
- } else {
- player.sendMessage(ChatColor.translateAlternateColorCodes('&', Objects.<String>requireNonNull(VampireTracks.getInstance().getConfig().getString("NO-PLAYERS-IN-RANGE"))));
- }
- }
- }
- @EventHandler
- public void onPlayerQuit(PlayerQuitEvent event) {
- Location loc = playerFromInteract.get(1).getWorld().getSpawnLocation();
- playerFromInteract.get(1).setCompassTarget(loc);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement