@EventHandler(priority = EventPriority.HIGHEST)
 public void onEntityDamageEvent(EntityDamageEvent event) {
   if (event.isCancelled()) {
     return;
   }
   if (!(event.getEntity() instanceof Player)) {
     return;
   }
   Player p = (Player) event.getEntity();
   ItemStack iimh = p.getEquipment().getItemInMainHand();
   Tier t = iimh != null ? TierUtil.getTierFromItemStack(iimh) : null;
   if (t != null && t.isInfiniteDurability()) {
     p.getEquipment().getItemInMainHand().setDurability((short) 0);
   }
   for (ItemStack is : p.getEquipment().getArmorContents()) {
     if (is == null || is.getType() == Material.AIR) {
       continue;
     }
     t = TierUtil.getTierFromItemStack(is);
     if (t == null) {
       continue;
     }
     if (t.isInfiniteDurability()) {
       is.setDurability((short) 0);
     }
   }
 }
Beispiel #2
0
 @Override
 public void equip(Player player) {
   player.getInventory().setItem(0, new ItemStack(Material.BOW));
   player.getInventory().setItem(1, new ItemStack(Material.ARROW));
   player.getInventory().setItem(2, new ItemStack(Material.STONE_SWORD));
   player.getEquipment().setHelmet(new ItemStack(Material.LEATHER_HELMET));
   player.getEquipment().setChestplate(new ItemStack(Material.LEATHER_CHESTPLATE));
   player.getEquipment().setLeggings(new ItemStack(Material.LEATHER_LEGGINGS));
   player.getEquipment().setBoots(new ItemStack(Material.LEATHER_BOOTS));
 }
Beispiel #3
0
 public void RemoveArmor(Player player) {
   player.getEquipment().clear();
   player.getInventory().clear();
   player.getInventory().setHelmet(null);
   player.getInventory().setChestplate(null);
   player.getInventory().setLeggings(null);
   player.getInventory().setBoots(null);
 }
 @EventHandler(priority = EventPriority.HIGHEST)
 public void onEntityShootBowEvent(EntityShootBowEvent event) {
   if (event.isCancelled()) {
     return;
   }
   if (!(event.getEntity() instanceof Player)) {
     return;
   }
   Player p = (Player) event.getEntity();
   ItemStack iimh = p.getEquipment().getItemInMainHand();
   Tier t = iimh != null ? TierUtil.getTierFromItemStack(iimh) : null;
   if (t != null && t.isInfiniteDurability()) {
     iimh.setDurability((short) 0);
   }
 }
  @EventHandler
  public void poll(EffectPollingEvent event) {
    Player p = event.getPlayer();
    // System.out.println(Hand.toString());
    ItemStack[] Armors = p.getEquipment().getArmorContents();
    // for(ItemStack i:Armors)
    // System.out.println(i.toString());
    ArrayList<ItemStack> stuff = new ArrayList<>();

    for (ItemStack a : Armors) {
      if (a != null && a.getItemMeta() != null) {
        stuff.add(a); // Keep only the non null armor objects
      }
    }

    if (!stuff.isEmpty()) {
      for (ItemStack a : stuff) {
        // TODO Constant Effects go here
        HashMap<String, Integer> effects = EffectAPI.getEffectsFromItem(a);
        for (Entry<String, Integer> effect : effects.entrySet()) {
          switch (effect.getKey()) {
            case "Velocity":
              p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 666, effect.getValue()));
              break;
            case "Vaulting":
              p.addPotionEffect(new PotionEffect(PotionEffectType.JUMP, 666, effect.getValue()));
              break;
            case "Healing":
              for (Entity e :
                  p.getNearbyEntities(effect.getValue(), effect.getValue(), effect.getValue()))
                if (e.getType().equals(EntityType.PLAYER))
                  ((Player) e)
                      .addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, 666, 1));
                else if (e.getType().equals(EntityType.WOLF) && ((Wolf) e).isTamed())
                  ((Wolf) e)
                      .addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, 666, 1));
              break;
            case "Damage":
              for (Entity e :
                  p.getNearbyEntities(effect.getValue(), effect.getValue(), effect.getValue()))
                if (e.getType().equals(EntityType.PLAYER))
                  ((Player) e)
                      .addPotionEffect(new PotionEffect(PotionEffectType.INCREASE_DAMAGE, 666, 1));
                else if (e.getType().equals(EntityType.WOLF) && ((Wolf) e).isTamed())
                  ((Wolf) e)
                      .addPotionEffect(new PotionEffect(PotionEffectType.INCREASE_DAMAGE, 666, 1));

              break;
            case "Resistance":
              for (Entity e :
                  p.getNearbyEntities(effect.getValue(), effect.getValue(), effect.getValue()))
                if (e.getType().equals(EntityType.PLAYER))
                  ((Player) e)
                      .addPotionEffect(
                          new PotionEffect(PotionEffectType.DAMAGE_RESISTANCE, 666, 1));
                else if (e.getType().equals(EntityType.WOLF) && ((Wolf) e).isTamed())
                  ((Wolf) e)
                      .addPotionEffect(
                          new PotionEffect(PotionEffectType.DAMAGE_RESISTANCE, 666, 1));
              break;
            case "Speed":
              for (Entity e :
                  p.getNearbyEntities(effect.getValue(), effect.getValue(), effect.getValue()))
                if (e.getType().equals(EntityType.PLAYER))
                  ((Player) e).addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 666, 1));
                else if (e.getType().equals(EntityType.WOLF) && ((Wolf) e).isTamed())
                  ((Wolf) e).addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 666, 1));
              break;
            case "Taunting":
              for (Entity e :
                  p.getNearbyEntities(
                      effect.getValue() * 2.5 + 5.0,
                      effect.getValue() * 2.5 + 5.0,
                      effect.getValue() * 2.5 + 5.0))
                if (Hostiles.contains(e.getType())) {
                  e.setMetadata("Targeting", (MetadataValue) p);
                }
              break;
          }
        }
      }
    }
    /*if (p.getInventory().getItem(event.getPreviousSlot()).getItemMeta().getLore().get(1).equals("Strength")) {
    	System.out.println("Removing effect");

    	p.removePotionEffect(PotionEffectType.INCREASE_DAMAGE);
    }*/

  }
Beispiel #6
0
  @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;
  }