Beispiel #1
0
  @EventHandler
  public void move(PlayerMoveEvent event) {
    if (worldGuard == null) return;

    Player player = event.getPlayer();

    if (!regionsVisited.containsKey(player.getUniqueId()))
      regionsVisited.put(player.getUniqueId(), new ArrayList<>());

    RegionContainer container = worldGuard.getWorldGuard().getRegionContainer();
    RegionManager manager = container.get(player.getWorld());
    if (manager == null) return;

    ApplicableRegionSet regions = manager.getApplicableRegions(event.getTo());
    List<ProtectedRegion> visited = regionsVisited.get(player.getUniqueId());

    try {
      for (ProtectedRegion region : regions.getRegions()) {
        if (!visited.contains(region)) {
          // i've never seen this place before in my life... or maybe in 30 seconds
          visited.add(region);
          Bukkit.getScheduler()
              .runTaskLaterAsynchronously(
                  JavaPlugin.getPlugin(Tyrant.class), () -> enter(player, region), 1);
        }
      }

      Bukkit.getScheduler()
          .runTaskLater(
              JavaPlugin.getPlugin(Tyrant.class),
              () -> {
                for (ProtectedRegion region2 : visited) {
                  if (!regions.getRegions().contains(region2)) {
                    // leaving the tavern
                    visited.remove(region2);
                    Bukkit.getScheduler()
                        .runTaskLaterAsynchronously(
                            JavaPlugin.getPlugin(Tyrant.class), () -> exit(player), 1);
                  }
                }
              },
              1);
    } catch (ConcurrentModificationException e) {
      e.printStackTrace();
    }
  }
Beispiel #2
0
  void drawObjects(
      Graphics g,
      java.util.List<DrawObject> points,
      java.util.List<DrawObject> lines,
      java.util.List<DrawObject> ovals,
      java.util.List<DrawObject> rectangles,
      java.util.List<DrawObject> images,
      java.util.List<DrawObject> labels,
      java.util.List<DrawObject> eqnLines) {
    try {
      // Images
      synchronized (images) {
        for (DrawObject I : images) {
          drawImage(g, I);
        }
      }

      // Labels
      synchronized (labels) {
        for (DrawObject L : labels) {
          drawLabel(g, L);
        }
      }

      // Eqn Lines
      synchronized (eqnLines) {
        for (DrawObject L : eqnLines) {
          g.setColor(L.color);
          drawEqnLine(g, L);
        }
      }

      // Lines
      synchronized (lines) {
        for (DrawObject L : lines) {
          g.setColor(L.color);
          drawLine(g, L);
        }
      }

      // Rectangles
      synchronized (rectangles) {
        for (DrawObject R : rectangles) {
          g.setColor(R.color);
          drawOvalOrRectangle(g, R, true);
        }
      }

      // Ovals
      synchronized (ovals) {
        for (DrawObject R : ovals) {
          g.setColor(R.color);
          drawOvalOrRectangle(g, R, false);
        }
      }

      // Points.
      synchronized (points) {
        for (DrawObject p : points) {
          g.setColor(p.color);
          drawPoint(g, p);
        }
      }
    } catch (ConcurrentModificationException e) {
      e.printStackTrace();
      System.exit(0);
    }
  }