コード例 #1
0
    public void run() {
      datafolder = p.getDataFolder();

      PluginManager pm = getServer().getPluginManager();
      setCommands();

      SettingsManager.getInstance().setup(p);
      MessageManager.getInstance().setup();
      GameManager.getInstance().setup(p);

      try { // try loading everything that uses SQL.
        FileConfiguration c = SettingsManager.getInstance().getConfig();
        if (c.getBoolean("stats.enabled")) DatabaseManager.getInstance().setup(p);
        QueueManager.getInstance().setup();
        StatsManager.getInstance().setup(p, c.getBoolean("stats.enabled"));
        dbcon = true;
      } catch (Exception e) {
        dbcon = false;
        e.printStackTrace();
        logger.severe(
            "!!!Failed to connect to the database. Please check the settings and try again!!!");
        return;
      } finally {
        LobbyManager.getInstance().setup(p);
      }

      ChestRatioStorage.getInstance().setup();
      HookManager.getInstance().setup();
      pm.registerEvents(new PlaceEvent(), p);
      pm.registerEvents(new BreakEvent(), p);
      pm.registerEvents(new DeathEvent(), p);
      pm.registerEvents(new MoveEvent(), p);
      pm.registerEvents(new CommandCatch(), p);
      pm.registerEvents(new SignClickEvent(), p);
      pm.registerEvents(new ChestReplaceEvent(), p);
      pm.registerEvents(new LogoutEvent(), p);
      pm.registerEvents(new JoinEvent(p), p);
      pm.registerEvents(new TeleportEvent(), p);
      pm.registerEvents(LoggingManager.getInstance(), p);
      pm.registerEvents(new SpectatorEvents(), p);
      pm.registerEvents(new BandageUse(), p);
      pm.registerEvents(new KitEvents(), p);

      for (Player p : Bukkit.getOnlinePlayers()) {
        if (GameManager.getInstance().getBlockGameId(p.getLocation()) != -1) {
          p.teleport(SettingsManager.getInstance().getLobbySpawn());
        }
      }

      //   new Webserver().start();
    }
コード例 #2
0
 public void setLobbySignsFromSelection(Player pl, int a) {
   FileConfiguration c = SettingsManager.getInstance().getSystemConfig();
   SettingsManager s = SettingsManager.getInstance();
   if (!c.getBoolean("walls-system.lobby.sign.set", false)) {
     c.set("walls-system.lobby.sign.set", true);
     s.saveSystemConfig();
   }
   WorldEditPlugin we = GameManager.getInstance().getWorldEdit();
   Selection sel = we.getSelection(pl);
   if (sel == null) {
     pl.sendMessage(ChatColor.RED + "You must make a WorldEdit Selection first");
     return;
   }
   if ((sel.getNativeMaximumPoint().getBlockX() - sel.getNativeMinimumPoint().getBlockX()) != 0
       && (sel.getNativeMinimumPoint().getBlockZ() - sel.getNativeMaximumPoint().getBlockZ()
           != 0)) {
     pl.sendMessage(ChatColor.RED + " Must be in a straight line!");
     return;
   }
   Vector max = sel.getNativeMaximumPoint();
   Vector min = sel.getNativeMinimumPoint();
   int i = c.getInt("walls-system.lobby.signno", 0) + 1;
   c.set("walls-system.lobby.signno", i);
   c.set("walls-system.lobby.signs." + i + ".id", a);
   c.set("walls-system.lobby.signs." + i + ".world", pl.getWorld().getName());
   c.set("walls-system.lobby.signs." + i + ".x1", max.getBlockX());
   c.set("walls-system.lobby.signs." + i + ".y1", max.getBlockY());
   c.set("walls-system.lobby.signs." + i + ".z1", max.getBlockZ());
   c.set("walls-system.lobby.signs." + i + ".x2", min.getBlockX());
   c.set("walls-system.lobby.signs." + i + ".y2", min.getBlockY());
   c.set("walls-system.lobby.signs." + i + ".z2", min.getBlockZ());
   pl.sendMessage(ChatColor.GREEN + "Added Lobby Wall"); // TODO
   s.saveSystemConfig();
   loadSign(i);
 }
コード例 #3
0
ファイル: Game.java プロジェクト: razilioxtre/Survival-Games
  public void showMenu(Player p) {
    GameManager.getInstance().openKitMenu(p);
    Inventory i =
        Bukkit.getServer()
            .createInventory(p, 45, ChatColor.RED + "" + ChatColor.BOLD + "Please select a kit:");

    int a = 0;
    int b = 0;

    ArrayList<Kit> kits = GameManager.getInstance().getKits(p);
    if (kits == null
        || kits.size() == 0
        || !SettingsManager.getInstance().getKits().getBoolean("enabled")) {
      GameManager.getInstance().leaveKitMenu(p);
      return;
    }

    for (Kit k : kits) {
      ItemStack i1 = k.getIcon();
      ItemMeta im = i1.getItemMeta();

      im.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD + k.getName());
      i1.setItemMeta(im);
      i.setItem((9 * a) + b, i1);
      a = 2;

      for (ItemStack s2 : k.getContents()) {
        if (s2 != null) {
          i.setItem((9 * a) + b, s2);
          a++;
        }
      }

      a = 0;
      b++;
    }
    p.openInventory(i);
    debug("Showing kit menu for: " + p.getName());
  }
コード例 #4
0
ファイル: Game.java プロジェクト: razilioxtre/Survival-Games
  public void addSpectator(final Player p) {
    if (mode != GameMode.INGAME) {
      msgmgr.sendMessage(PrefixType.WARNING, "You can only spectate running games!", p);
      return;
    }

    p.teleport(SettingsManager.getInstance().getSpawnPoint(gameID, 1).add(0, 10, 0));

    HookManager.getInstance().runHook("PLAYER_SPECTATE", "player-" + p.getName());

    for (Player pl : Bukkit.getOnlinePlayers()) {
      pl.hidePlayer(p);
    }

    Bukkit.getServer()
        .getScheduler()
        .scheduleSyncDelayedTask(
            GameManager.getInstance().getPlugin(),
            new Runnable() {
              @SuppressWarnings("deprecation")
              public void run() {
                p.setFlying(false);
                p.setAllowFlight(false);
                p.setWalkSpeed(0.2F);
                p.setFireTicks(0);

                p.getInventory().clear();
                p.getEquipment().setArmorContents(null);
                p.updateInventory();
                showMenu(p);

                for (PotionEffect effect : p.getActivePotionEffects()) {
                  p.removePotionEffect(effect.getType());
                }
              }
            },
            1L);

    spectators.add(p.getName());
    msgmgr.sendMessage(
        PrefixType.INFO,
        "You are now spectating! Use /sg spectate again to return to the lobby.",
        p);
    msgmgr.sendMessage(
        PrefixType.INFO,
        "Right click while holding shift to teleport to the next ingame player, left click to go back.",
        p);
    nextspec.put(p, 0);
  }
コード例 #5
0
ファイル: Game.java プロジェクト: razilioxtre/Survival-Games
  /*
   *
   * ################################################
   *
   * 				RESET
   *
   * ################################################
   *
   *
   */
  public void resetArena() {

    for (Integer i : tasks) {
      Bukkit.getScheduler().cancelTask(i);
    }

    tasks.clear();
    vote = 0;
    voted.clear();

    mode = GameMode.RESETING;
    endgameRunning = false;

    Bukkit.getScheduler().cancelTask(endgameTaskID);
    GameManager.getInstance().gameEndCallBack(gameID);
    QueueManager.getInstance().rollback(gameID, false);
    LobbyManager.getInstance().updateWall(gameID);

    scoreBoard.reset();
  }
コード例 #6
0
ファイル: Game.java プロジェクト: razilioxtre/Survival-Games
  public void playerLeave(final Player p, boolean teleport) {
    msgFall(PrefixType.INFO, "game.playerleavegame", "player-" + p.getName());
    if (teleport) {
      p.teleport(SettingsManager.getInstance().getLobbySpawn());
    }
    // Remove any potion/fire effects
    for (PotionEffect effect : p.getActivePotionEffects()) {
      p.removePotionEffect(effect.getType());
    }
    if (p.getFireTicks() > 0) {
      p.setFireTicks(0);
    }

    sm.removePlayer(p, gameID);
    scoreBoard.removePlayer(p);
    activePlayers.remove(p);
    inactivePlayers.remove(p);
    voted.remove(p);

    for (Object in : spawns.keySet().toArray()) {
      if (spawns.get(in) == p) spawns.remove(in);
    }

    HookManager.getInstance().runHook("PLAYER_REMOVED", "player-" + p.getName());
    LobbyManager.getInstance().updateWall(gameID);

    if (activePlayers.size() < 2 && mode == GameMode.INGAME) {
      mode = GameMode.FINISHING;
      tasks.add(
          Bukkit.getScheduler()
              .scheduleSyncDelayedTask(
                  GameManager.getInstance().getPlugin(),
                  new Runnable() {
                    public void run() {
                      playerWin(p);
                      endGame();
                    }
                  },
                  1L));
    }
  }
コード例 #7
0
  public void onDisable() {
    disabling = false;
    PluginDescriptionFile pdfFile = p.getDescription();
    SettingsManager.getInstance().saveSpawns();
    SettingsManager.getInstance().saveSystemConfig();
    for (Game g : GameManager.getInstance().getGames()) {
      try {
        g.disable();
      } catch (Exception e) {
        // will throw useless "tried to register task blah blah error." Use the method below to
        // reset the arena without a task.
      }
      QueueManager.getInstance().rollback(g.getID(), true);
    }

    logger.info(
        pdfFile.getName()
            + " version "
            + pdfFile.getVersion()
            + " has now been disabled and reset");
  }
コード例 #8
0
ファイル: LevelSelector.java プロジェクト: LegendOfOguh/game
    @Override
    public boolean onAreaTouched(
        TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) {

      /* If the LevelSelector is not hidden, proceed to execute the touch event */
      if (!LevelSelector.this.mHidden) {

        /* If a level tile is initially pressed down on */
        if (pSceneTouchEvent.isActionDown()) {
          /* If this level tile is locked... */
          if (!this.mIsLocked) {
            LevelSelector.this.hide();
            GameManager.getInstance().getSaveHandler().setCurrentFase(this.mLevelNumber);
            // !!!!!!!!!!! Depois colocar para carregar cada fase espec�fica
            SceneManager.getInstance().loadGameSceneFromSelector();
            ResourceManager.Mmenu.pause();
            ResourceManager.Mmenu.seekTo(0);
          }
          return true;
        }
      }
      return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY);
    }
コード例 #9
0
ファイル: Game.java プロジェクト: razilioxtre/Survival-Games
  public void countdown(int time) {
    // Bukkit.broadcastMessage(""+time);
    MessageManager.getInstance()
        .broadcastFMessage(
            PrefixType.INFO, "broadcast.gamestarting", "arena-" + gameID, "t-" + time);
    countdownRunning = true;
    count = time;
    Bukkit.getScheduler().cancelTask(tid);

    if (mode == GameMode.WAITING || mode == GameMode.STARTING) {
      mode = GameMode.STARTING;
      tid =
          Bukkit.getScheduler()
              .scheduleSyncRepeatingTask(
                  (Plugin) GameManager.getInstance().getPlugin(),
                  new Runnable() {
                    public void run() {
                      if (count > 0) {
                        if (count % 10 == 0) {
                          msgFall(PrefixType.INFO, "game.countdown", "t-" + count);
                        }
                        if (count < 6) {
                          msgFall(PrefixType.INFO, "game.countdown", "t-" + count);
                        }
                        count--;
                        LobbyManager.getInstance().updateWall(gameID);
                      } else {
                        startGame();
                        Bukkit.getScheduler().cancelTask(tid);
                        countdownRunning = false;
                      }
                    }
                  },
                  0,
                  20);
    }
  }
コード例 #10
0
ファイル: LobbyWall.java プロジェクト: Th3Hermit/malHG
  public void update() {
    // System.out.println(gameid);
    if (msgqueue.size() > 0) {
      display();
      Bukkit.getScheduler()
          .scheduleSyncDelayedTask(
              GameManager.getInstance().getPlugin(),
              new Runnable() {
                @Override
                public void run() {
                  display();
                  update();
                }
              },
              20L);
      return;
    }
    clear();
    final Game game = GameManager.getInstance().getGame(gameid);
    final Sign s0 = signs.get(0);
    final Sign s1 = signs.get(1);

    // sign 0
    s0.setLine(0, "[HungerGames]");
    s0.setLine(1, "Click to join");
    s0.setLine(2, "Arena " + gameid);

    // sign 1
    s1.setLine(0, game.getName());
    s1.setLine(1, game.getMode() + "");
    s1.setLine(
        2,
        game.getActivePlayers()
            + "/"
            + ChatColor.GRAY
            + game.getInactivePlayers()
            + ChatColor.BLACK
            + "/"
            + SettingsManager.getInstance().getSpawnCount(game.getID()));

    // live update line s1
    if (game.getMode() == Game.GameMode.STARTING) {
      s1.setLine(3, game.getCountdownTime() + "");
    } else if (game.getMode() == Game.GameMode.RESETING
        || game.getMode() == Game.GameMode.FINISHING) {
      s1.setLine(3, game.getRBStatus());
      if (game.getRBPercent() > 100) {
        s1.setLine(1, "Saving Queue");
        s1.setLine(3, (int) game.getRBPercent() + " left");
      } else s1.setLine(3, (int) game.getRBPercent() + "%");
    } else {
      s1.setLine(3, "");
    }

    // live player data
    final ArrayList<String> display = new ArrayList<String>();
    for (final Player p : game.getAllPlayers()) {
      display.add((game.isPlayerActive(p) ? ChatColor.BLACK : ChatColor.GRAY) + p.getName());
    }

    try {
      int no = 2;
      int line = 0;
      for (final String s : display) {
        signs.get(no).setLine(line, s);
        line++;
        if (line >= 4) {
          line = 0;
          no++;
        }
      }
    } catch (final Exception e) {
    }
    for (final Sign s : signs) {
      s.update();
    }
  }
コード例 #11
0
/* $Header: /Users/blentz/rails_rcs/cvs/18xx/rails/game/TileManager.java,v 1.17 2010/05/29 09:38:58 stefanfrey Exp $ */
コード例 #12
0
ファイル: Game.java プロジェクト: razilioxtre/Survival-Games
  /*
   *
   * ################################################
   *
   * 			   HANDLE PLAYER DEATH
   *
   *  PLAYERS DIE A REAL DEATH WHICH IS HANDLED HERE
   *
   * ################################################
   *
   *
   */
  public void playerDeath(PlayerDeathEvent e) {
    final Player p = e.getEntity();
    if (!activePlayers.contains(p)) return;

    sm.playerDied(p, activePlayers.size(), gameID, new Date().getTime() - startTime);
    scoreBoard.playerDead(p);
    activePlayers.remove(p);
    inactivePlayers.add(p);
    for (Object in : spawns.keySet().toArray()) {
      if (spawns.get(in) == p) spawns.remove(in);
    }

    PlayerKilledEvent pk = null;
    if (mode != GameMode.WAITING
        && p.getLastDamageCause() != null
        && p.getLastDamageCause().getCause() != null) {
      DamageCause cause = p.getLastDamageCause().getCause();
      switch (cause) {
        case ENTITY_ATTACK:
          if (p.getLastDamageCause().getEntityType() == EntityType.PLAYER) {
            EntityType enttype = p.getLastDamageCause().getEntityType();
            Player killer = p.getKiller();
            String killername = "Unknown";

            if (killer != null) {
              killername = killer.getName();
            }

            String itemname = "Unknown Item";
            if (killer != null) {
              itemname = ItemReader.getFriendlyItemName(killer.getItemInHand().getType());
            }

            msgFall(
                PrefixType.INFO,
                "death." + enttype,
                "player-" + p.getName(),
                "killer-" + killername,
                "item-" + itemname);

            if (killer != null && p != null) {
              sm.addKill(killer, p, gameID);
              scoreBoard.incScore(killer);
            }
            pk = new PlayerKilledEvent(p, this, killer, cause);
          } else {
            msgFall(
                PrefixType.INFO,
                "death." + p.getLastDamageCause().getEntityType(),
                "player-" + p.getName(),
                "killer-" + p.getLastDamageCause().getEntityType());
            pk = new PlayerKilledEvent(p, this, null, cause);
          }
          break;
        default:
          msgFall(
              PrefixType.INFO, "death." + cause.name(), "player-" + p.getName(), "killer-" + cause);
          pk = new PlayerKilledEvent(p, this, null, cause);

          break;
      }
      Bukkit.getServer().getPluginManager().callEvent(pk);

      if (getActivePlayers() > 1) {
        for (Player pl : getAllPlayers()) {
          msgmgr.sendMessage(
              PrefixType.INFO,
              ChatColor.DARK_AQUA
                  + "There are "
                  + ChatColor.YELLOW
                  + ""
                  + getActivePlayers()
                  + ChatColor.DARK_AQUA
                  + " players remaining!",
              pl);
        }
      }
    }

    for (Player pe : activePlayers) {
      Location l = pe.getLocation();
      l.setY(l.getWorld().getMaxHeight());
      l.getWorld().strikeLightningEffect(l);
    }

    if (getActivePlayers() <= config.getInt("endgame.players")
        && config.getBoolean("endgame.fire-lighting.enabled")
        && !endgameRunning) {

      tasks.add(
          Bukkit.getScheduler()
              .scheduleSyncRepeatingTask(
                  GameManager.getInstance().getPlugin(),
                  new EndgameManager(),
                  0,
                  config.getInt("endgame.fire-lighting.interval") * 20));
    }

    if (activePlayers.size() < 2 && mode == GameMode.INGAME) {
      mode = GameMode.FINISHING;
      LobbyManager.getInstance().updateWall(gameID);
      tasks.add(
          Bukkit.getScheduler()
              .scheduleSyncDelayedTask(
                  GameManager.getInstance().getPlugin(),
                  new Runnable() {
                    public void run() {
                      playerWin(p);
                      endGame();
                    }
                  },
                  10L));
    }
    LobbyManager.getInstance().updateWall(gameID);
  }
コード例 #13
0
ファイル: Game.java プロジェクト: razilioxtre/Survival-Games
  /*
   *
   * ################################################
   *
   * 				START GAME
   *
   * ################################################
   *
   *
   */
  public void startGame() {
    if (mode == GameMode.INGAME) {
      return;
    }

    if (activePlayers.size() <= 0) {
      for (Player pl : activePlayers) {
        msgmgr.sendMessage(PrefixType.WARNING, "Not enough players!", pl);
        mode = GameMode.WAITING;
        LobbyManager.getInstance().updateWall(gameID);
      }
      return;
    } else {
      // Remove all entities in the world
      for (Entity entity : this.arena.getMax().getWorld().getEntities()) {
        if (entity instanceof Player) continue;
        entity.remove();
      }
      startTime = new Date().getTime();
      for (Player pl : activePlayers) {
        pl.setHealth(pl.getMaxHealth());
        msgmgr.sendFMessage(PrefixType.INFO, "game.goodluck", pl);
        scoreBoard.playerLiving(pl);
      }
      if (config.getBoolean("restock-chest")) {
        SettingsManager.getGameWorld(gameID).setTime(0);
        gcount++;
        tasks.add(
            Bukkit.getScheduler()
                .scheduleSyncDelayedTask(
                    GameManager.getInstance().getPlugin(), new NightChecker(), 14400));
      }
      if (config.getInt("grace-period") != 0) {
        for (Player play : activePlayers) {
          msgmgr.sendMessage(
              PrefixType.INFO,
              "You have a " + config.getInt("grace-period") + " second grace period!",
              play);
        }
        Bukkit.getServer()
            .getScheduler()
            .scheduleSyncDelayedTask(
                GameManager.getInstance().getPlugin(),
                new Runnable() {
                  public void run() {
                    for (Player play : activePlayers) {
                      msgmgr.sendMessage(PrefixType.INFO, "Grace period has ended!", play);
                    }
                  }
                },
                config.getInt("grace-period") * 20);
      }
      if (config.getBoolean("deathmatch.enabled")) {
        SurvivalGames.$("Launching deathmatch timer...");
        dmTaskID =
            Bukkit.getScheduler()
                .scheduleSyncRepeatingTask(
                    GameManager.getInstance().getPlugin(), new DeathMatchTimer(), 40L, 20L);
        tasks.add(dmTaskID);
      }
    }

    mode = GameMode.INGAME;
    LobbyManager.getInstance().updateWall(gameID);
    MessageManager.getInstance()
        .broadcastFMessage(PrefixType.INFO, "broadcast.gamestarted", "arena-" + gameID);
  }
コード例 #14
0
ファイル: Game.java プロジェクト: razilioxtre/Survival-Games
  @SuppressWarnings("deprecation")
  public boolean addPlayer(final Player p) {
    if (SettingsManager.getInstance().getLobbySpawn() == null) {
      msgmgr.sendFMessage(PrefixType.WARNING, "error.nolobbyspawn", p);
      return false;
    }
    if (!p.hasPermission("sg.arena.join." + gameID)) {
      debug("permission needed to join arena: " + "sg.arena.join." + gameID);
      msgmgr.sendFMessage(PrefixType.WARNING, "game.nopermission", p, "arena-" + gameID);
      return false;
    }
    HookManager.getInstance()
        .runHook(
            "GAME_PRE_ADDPLAYER",
            "arena-" + gameID,
            "player-" + p.getName(),
            "maxplayers-" + spawns.size(),
            "players-" + activePlayers.size());

    GameManager.getInstance().removeFromOtherQueues(p, gameID);

    if (GameManager.getInstance().getPlayerGameId(p) != -1) {
      if (GameManager.getInstance().isPlayerActive(p)) {
        msgmgr.sendMessage(PrefixType.ERROR, "Cannot join multiple games!", p);
        return false;
      }
    }
    if (p.isInsideVehicle()) {
      p.leaveVehicle();
    }
    if (spectators.contains(p)) removeSpectator(p);
    if (mode == GameMode.WAITING || mode == GameMode.STARTING) {
      if (activePlayers.size() < SettingsManager.getInstance().getSpawnCount(gameID)) {
        msgmgr.sendMessage(PrefixType.INFO, "Joining Arena '" + name + "'", p);
        PlayerJoinArenaEvent joinarena =
            new PlayerJoinArenaEvent(p, GameManager.getInstance().getGame(gameID));
        Bukkit.getServer().getPluginManager().callEvent(joinarena);
        if (joinarena.isCancelled()) return false;
        boolean placed = false;
        int spawnCount = SettingsManager.getInstance().getSpawnCount(gameID);

        for (int a = 1; a <= spawnCount; a++) {
          if (spawns.get(a) == null) {
            placed = true;
            spawns.put(a, p);
            p.setGameMode(org.bukkit.GameMode.SURVIVAL);

            // p.teleport(SettingsManager.getInstance().getLobbySpawn());
            p.teleport(SettingsManager.getInstance().getSpawnPoint(gameID, a));

            p.setHealth(p.getMaxHealth());
            p.setFoodLevel(20);
            p.getInventory().clear();
            p.getEquipment().setArmorContents(null);
            p.updateInventory();

            p.setFlying(false);
            p.setAllowFlight(false);
            p.setWalkSpeed(0.2F);
            p.setFireTicks(0);

            activePlayers.add(p);
            sm.addPlayer(p, gameID);

            scoreBoard.addPlayer(p);

            hookvars.put("activeplayers", activePlayers.size() + "");
            LobbyManager.getInstance().updateWall(gameID);
            HookManager.getInstance()
                .runHook("GAME_POST_ADDPLAYER", "activePlayers-" + activePlayers.size());

            if (spawnCount == activePlayers.size()) {
              countdown(5);
            }

            Bukkit.getServer()
                .getScheduler()
                .scheduleSyncDelayedTask(
                    GameManager.getInstance().getPlugin(),
                    new Runnable() {
                      public void run() {
                        p.setFlying(false);
                        p.setAllowFlight(false);
                        p.setWalkSpeed(0.2F);
                        p.setFireTicks(0);

                        p.getInventory().clear();
                        p.getEquipment().setArmorContents(null);
                        p.updateInventory();
                        showMenu(p);

                        for (PotionEffect effect : p.getActivePotionEffects()) {
                          p.removePotionEffect(effect.getType());
                        }
                      }
                    },
                    1L);

            break;
          }
        }
        if (!placed) {
          msgmgr.sendFMessage(PrefixType.ERROR, "error.gamefull", p, "arena-" + gameID);
          return false;
        }

      } else if (SettingsManager.getInstance().getSpawnCount(gameID) == 0) {
        msgmgr.sendMessage(PrefixType.WARNING, "No spawns set for Arena " + gameID + "!", p);
        return false;
      } else {
        msgmgr.sendFMessage(PrefixType.WARNING, "error.gamefull", p, "arena-" + gameID);
        return false;
      }
      msgFall(
          PrefixType.INFO,
          "game.playerjoingame",
          "player-" + p.getName(),
          "activeplayers-" + getActivePlayers(),
          "maxplayers-" + SettingsManager.getInstance().getSpawnCount(gameID));
      if (activePlayers.size() >= config.getInt("auto-start-players") && !countdownRunning)
        countdown(config.getInt("auto-start-time"));
      return true;
    } else {
      if (config.getBoolean("enable-player-queue")) {
        if (!queue.contains(p)) {
          queue.add(p);
          msgmgr.sendFMessage(
              PrefixType.INFO, "game.playerjoinqueue", p, "queuesize-" + queue.size());
        }
        int a = 1;
        for (Player qp : queue) {
          if (qp == p) {
            msgmgr.sendFMessage(PrefixType.INFO, "game.playercheckqueue", p, "queuepos-" + a);
            break;
          }
          a++;
        }
      }
    }
    if (mode == GameMode.INGAME) msgmgr.sendFMessage(PrefixType.WARNING, "error.alreadyingame", p);
    else if (mode == GameMode.DISABLED)
      msgmgr.sendFMessage(PrefixType.WARNING, "error.gamedisabled", p, "arena-" + gameID);
    else if (mode == GameMode.RESETING)
      msgmgr.sendFMessage(PrefixType.WARNING, "error.gamereseting", p);
    else msgmgr.sendMessage(PrefixType.INFO, "Cannot join game!", p);
    LobbyManager.getInstance().updateWall(gameID);
    return false;
  }
コード例 #15
0
ファイル: Game.java プロジェクト: razilioxtre/Survival-Games
    public void run() {
      int now = (int) (new Date().getTime() / 1000);
      long length = config.getInt("deathmatch.time") * 60;
      long remaining = (length - (now - (startTime / 1000)));
      // SurvivalGames.$("Remaining: " + remaining + " (" + now + " / " + length + " / " +
      // (startTime / 1000) + ")");

      // Every 3 minutes or every minute in the last 3 minutes
      if (((remaining % 180) == 0) || (((remaining % 60) == 0) && (remaining <= 180))) {
        if (remaining > 0) {
          msgFall(PrefixType.INFO, "game.deathmatchwarning", "t-" + (remaining / 60));
        }
      }

      // Death match time!!
      if (remaining > 0) return;
      debug("DeathMatch mode starting!");

      Bukkit.getScheduler().cancelTask(dmTaskID);
      if (!tasks.remove((Integer) dmTaskID)) {
        SurvivalGames.$("WARNING: DeathMatch task NOT removed!");
      }

      // Teleport everyone to their original spawn point
      for (Map.Entry<Integer, Player> entry : spawns.entrySet()) {
        Player p = entry.getValue();
        Integer a = entry.getKey();
        if (activePlayers.contains(p) && p.isOnline() && !p.isDead()) {
          debug("Teleporting " + p.getName() + " (spawn " + a + ")");
          p.teleport(SettingsManager.getInstance().getSpawnPoint(gameID, a).add(0, 1.5, 0));
          p.sendMessage(ChatColor.RED + "DeathMatch mode has begun!! Attack!!");
        }
      }

      tasks.add(
          Bukkit.getScheduler()
              .scheduleSyncRepeatingTask(
                  GameManager.getInstance().getPlugin(),
                  new Runnable() {
                    public void run() {
                      // Game could end (or players die) while inside this loop
                      // This must be carefully handled so we dont CME or damage a player that has
                      // already left the game
                      ArrayList<Player> players = new ArrayList<Player>(activePlayers);
                      for (Player p : players) {
                        // Verify they are still "alive" and still in the game
                        if ((mode == GameMode.INGAME)
                            && (p != null)
                            && (!p.isDead())
                            && (activePlayers.contains(p))) {
                          // Player out of arena or too high (towering to avoid players)
                          int ydiff = Math.abs(dmspawn.getBlockY() - p.getLocation().getBlockY());
                          double dist = dmspawn.distance(p.getLocation());
                          if ((dist > dmradius) || (ydiff > 4)) {
                            p.sendMessage(ChatColor.RED + "Return to the death match area!");
                            p.getLocation().getWorld().strikeLightningEffect(p.getLocation());
                            p.damage(5);
                            p.setFireTicks(60);
                          }
                        }
                      }
                    }
                  },
                  10 * 20L,
                  config.getInt("deathmatch.killtime") * 20));
    }
コード例 #16
0
ファイル: GamesRoomImpl.java プロジェクト: skyler91/mage
  private void update() {
    ArrayList<TableView> tableList = new ArrayList<>();
    ArrayList<MatchView> matchList = new ArrayList<>();
    List<Table> allTables = new ArrayList<>(tables.values());
    Collections.sort(allTables, new TableListSorter());
    for (Table table : allTables) {
      if (table.getState() != TableState.FINISHED) {
        tableList.add(new TableView(table));
      } else if (matchList.size() < 50) {
        matchList.add(new MatchView(table));
      } else {
        // more since 50 matches finished since this match so remove it
        if (table.isTournament()) {
          TournamentManager.getInstance().removeTournament(table.getTournament().getId());
        }
        this.removeTable(table.getId());
      }
    }
    tableView = tableList;
    matchView = matchList;
    List<UsersView> users = new ArrayList<>();
    for (User user : UserManager.getInstance().getUsers()) {
      try {
        users.add(
            new UsersView(
                user.getUserData().getFlagName(),
                user.getName(),
                user.getMatchHistory(),
                user.getMatchQuitRatio(),
                user.getTourneyHistory(),
                user.getTourneyQuitRatio(),
                user.getGameInfo(),
                user.getPingInfo()));
      } catch (Exception ex) {
        logger.fatal("User update exception: " + user.getName() + " - " + ex.toString(), ex);
        users.add(
            new UsersView(
                (user.getUserData() != null && user.getUserData().getFlagName() != null)
                    ? user.getUserData().getFlagName()
                    : "world",
                user.getName() != null ? user.getName() : "<no name>",
                user.getMatchHistory() != null ? user.getMatchHistory() : "<no match history>",
                user.getMatchQuitRatio(),
                user.getTourneyHistory() != null
                    ? user.getTourneyHistory()
                    : "<no tourney history>",
                user.getTourneyQuitRatio(),
                "[exception]",
                user.getPingInfo() != null ? user.getPingInfo() : "<no ping>"));
      }
    }

    Collections.sort(users, new UserNameSorter());
    List<RoomUsersView> roomUserInfo = new ArrayList<>();
    roomUserInfo.add(
        new RoomUsersView(
            users,
            GameManager.getInstance().getNumberActiveGames(),
            ThreadExecutor.getInstance()
                .getActiveThreads(ThreadExecutor.getInstance().getGameExecutor()),
            ConfigSettings.getInstance().getMaxGameThreads()));
    roomUsersView = roomUserInfo;
  }