@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(); } }
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); } }