Guest User

Untitled

a guest
Aug 27th, 2018
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.30 KB | None | 0 0
  1. package net.minefs.MineStrike.Map;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. import org.bukkit.Location;
  7. import org.bukkit.scheduler.BukkitRunnable;
  8.  
  9. import net.minefs.MineStrike.Main;
  10. import net.minefs.MineStrike.Handler.GameBomb;
  11. import net.minefs.MineStrike.Handler.GameState;
  12. import net.minefs.MineStrike.Handler.GameTeam.Role;
  13. import net.minefs.MineStrike.Modes.DefuseGame;
  14. import net.minefs.MineStrike.Modes.Game;
  15. import net.minefs.MineStrike.Modes.ZombieEscape;
  16. import net.minefs.MineStrike.Utils.GameUtils;
  17.  
  18. public class MapScanner extends BukkitRunnable {
  19.  
  20.     private Main main;
  21.  
  22.     public MapScanner(Main main) {
  23.         this.main = main;
  24.         runTaskTimerAsynchronously(main, 20, 20);
  25.     }
  26.  
  27.     @Override
  28.     public void run() {
  29.         List<Game> games = new ArrayList<Game>(main.getManager().getGames());
  30.         games.forEach(game -> {
  31.             if (game.getState() != GameState.IN_GAME || game.getGameMap() == null)
  32.                 return;
  33.             if (!(game instanceof ZombieEscape)) {
  34.                 // Lọc ra những người chơi team A nằm trong tầm nhìn của ít nhất một người trong team B, thêm vào list phần tử
  35.                 game.getTeamA().getPlayers().stream().filter(
  36.                         p -> !game.getSpectatorsClone().contains(p) && GameUtils.isSeenByTeam(p, game, game.getTeamB()))
  37.                         .forEach(p -> game.getGameMap().getItems().add(new MapItem(MapIcons.ENEMY, p.getLocation(),
  38.                                 System.currentTimeMillis() + 1000, game.getTeamB().getRole())));
  39.                                
  40.                 // Tương tự
  41.                 game.getTeamB().getPlayers().stream().filter(
  42.                         p -> !game.getSpectatorsClone().contains(p) && GameUtils.isSeenByTeam(p, game, game.getTeamA()))
  43.                         .forEach(p -> game.getGameMap().getItems().add(new MapItem(MapIcons.ENEMY, p.getLocation(),
  44.                                 System.currentTimeMillis() + 1000, game.getTeamA().getRole())));
  45.             }
  46.             if (game instanceof DefuseGame) {
  47.                 GameBomb b = ((DefuseGame) game).getBomb();
  48.                 if (b == null)
  49.                     return;
  50.                 Location l = b.getLocation();
  51.                 if (l == null)
  52.                     return;
  53.                 //Nếu C4 nằm trong tầm nhìn của COUNTERTERRORIST thì thêm vào list
  54.                 if (GameUtils.isSeenByTeam(l, game, main.getManager().getTeam(game, Role.COUNTERTERRORIST)))
  55.                     game.getGameMap().getItems()
  56.                             .add(new MapItem(MapIcons.C4, l, System.currentTimeMillis() + 1000, Role.COUNTERTERRORIST));
  57.             }
  58.         });
  59.     }
  60. }
Advertisement
Add Comment
Please, Sign In to add comment