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