예제 #1
0
  @EventHandler(priority = EventPriority.HIGH)
  public void enterSnitchProximity(PlayerMoveEvent event) {
    Location from = event.getFrom();
    Location to = event.getTo();

    if (from.getBlockX() == to.getBlockX()
        && from.getBlockY() == to.getBlockY()
        && from.getBlockZ() == to.getBlockZ()
        && from.getWorld().equals(to.getWorld())) {
      // Player didn't move by at least one block.
      return;
    }
    Player player = event.getPlayer();
    if (vanishNoPacket.isPlayerInvisible(player)) {
      return;
    }
    String playerName = player.getName();
    Location location = player.getLocation();
    World world = location.getWorld();
    Set<Snitch> inList = playersInSnitches.get(playerName);
    if (inList == null) {
      inList = new TreeSet<Snitch>();
      playersInSnitches.put(player.getName(), inList);
    }
    Set<Snitch> snitches = snitchManager.findSnitches(world, location);
    for (Snitch snitch : snitches) {
      if (!isOnSnitch(snitch, playerName) && doesSnitchExist(snitch, true) || isDebugging()) {
        if (!inList.contains(snitch)) {
          inList.add(snitch);
          for (Player remoteplayer : playerManager.getPlayers()) {
            String remoteName = remoteplayer.getName();
            if (isOnSnitch(snitch, remoteName)) {
              remoteplayer.sendMessage(
                  ChatColor.AQUA
                      + " * "
                      + playerName
                      + " entered snitch at "
                      + snitch.getName()
                      + " ["
                      + snitch.getX()
                      + " "
                      + snitch.getY()
                      + " "
                      + snitch.getZ()
                      + "]");
            }
          }
          plugin.getJaLogger().logSnitchEntry(snitch, location, player);
        }
      }
    }
    Set<Snitch> rmList = new TreeSet<Snitch>();
    for (Snitch snitch : inList) {
      if (snitches.contains(snitch)) {
        continue;
      }
      rmList.add(snitch);
    }
    inList.removeAll(rmList);
  }
예제 #2
0
 public static boolean doesSnitchExist(Snitch snitch, boolean shouldCleanup) {
   Location loc = snitch.getLoc();
   World world = loc.getWorld();
   int x = loc.getBlockX();
   int y = loc.getBlockY();
   int z = loc.getBlockZ();
   int type_id = world.getBlockAt(x, y, z).getType().getId();
   boolean exists = (type_id == 84 || type_id == 25);
   if (!exists && shouldCleanup) {
     System.out.println(
         "Removing ghost snitch '" + snitch.getName() + "' at x:" + x + " y:" + y + " z:" + z);
     JukeAlert.getInstance().getSnitchManager().removeSnitch(snitch);
     JukeAlert.getInstance().getJaLogger().logSnitchBreak(world.getName(), x, y, z);
   }
   return exists;
 }
예제 #3
0
  @EventHandler(priority = EventPriority.HIGHEST)
  public void playerJoinEvent(PlayerJoinEvent event) {
    Player player = event.getPlayer();
    if (vanishNoPacket.isPlayerInvisible(player)) {
      return;
    }
    String playerName = player.getName();
    Set<Snitch> inList = new TreeSet<Snitch>();
    playersInSnitches.put(player.getName(), inList);

    Location location = player.getLocation();
    World world = location.getWorld();
    Set<Snitch> snitches = snitchManager.findSnitches(world, location);
    for (Snitch snitch : snitches) {
      if (!isOnSnitch(snitch, playerName)) {
        inList.add(snitch);
        for (Player remoteplayer : playerManager.getPlayers()) {
          String remoteName = remoteplayer.getName();
          if (isOnSnitch(snitch, remoteName)) {
            remoteplayer.sendMessage(
                ChatColor.AQUA
                    + " * "
                    + playerName
                    + " logged in to snitch at "
                    + snitch.getName()
                    + " ["
                    + snitch.getX()
                    + " "
                    + snitch.getY()
                    + " "
                    + snitch.getZ()
                    + "]");
          }
        }
        plugin.getJaLogger().logSnitchLogin(snitch, location, player);
      }
    }
  }
예제 #4
0
  public void handlePlayerExit(PlayerEvent event) {
    Player player = event.getPlayer();
    if (vanishNoPacket.isPlayerInvisible(player)) {
      return;
    }
    String playerName = player.getName();
    playersInSnitches.remove(playerName);

    Location location = player.getLocation();
    World world = location.getWorld();
    Set<Snitch> snitches = snitchManager.findSnitches(world, location);
    for (Snitch snitch : snitches) {
      if (!isOnSnitch(snitch, playerName)) {
        for (Player remoteplayer : playerManager.getPlayers()) {
          if (snitch.getGroup().isMember(remoteplayer.getName())
              || snitch.getGroup().isFounder(remoteplayer.getName())
              || snitch.getGroup().isModerator(remoteplayer.getName())) {
            remoteplayer.sendMessage(
                ChatColor.AQUA
                    + " * "
                    + playerName
                    + " logged out in snitch at "
                    + snitch.getName()
                    + " ["
                    + snitch.getX()
                    + " "
                    + snitch.getY()
                    + " "
                    + snitch.getZ()
                    + "]");
          }
        }
        plugin.getJaLogger().logSnitchLogout(snitch, location, player);
      }
    }
  }