コード例 #1
0
  public static void restoreInventory(Player player) {
    player.getInventory().clear();
    player.teleport((Location) locations.get(player.getName()));
    for (PotionEffect effect : player.getActivePotionEffects()) {
      player.removePotionEffect(effect.getType());
    }
    player.getInventory().setContents((ItemStack[]) inventoryContents.get(player.getName()));
    player.getInventory().setArmorContents((ItemStack[]) armourContents.get(player.getName()));
    player.setExp(((Float) xp.get(player.getName())).floatValue());
    player.setLevel(((Integer) xpLevel.get(player.getName())).intValue());
    player.setGameMode((GameMode) gameModes.get(player.getName()));
    player.addPotionEffects((Collection<PotionEffect>) potions.get(player.getName()));
    player.setFoodLevel(((Integer) foodLevel.get(player.getName())).intValue());
    player.setHealth(((Double) Health.get(player.getName())).doubleValue());
    player.setAllowFlight(((Boolean) flight.get(player.getName())).booleanValue());

    flight.remove(player.getName());
    Health.remove(player.getName());
    foodLevel.remove(player.getName());
    potions.remove(player.getName());
    xpLevel.remove(player.getName());
    xp.remove(player.getName());
    locations.remove(player.getName());
    armourContents.remove(player.getName());
    inventoryContents.remove(player.getName());
    gameModes.remove(player.getName());
  }
コード例 #2
0
  public void run() {
    if (gm.isBomb()) {
      int timer = gm.getBombTimer();

      if (timer != 0) {
        timer--;
        gm.setLobbyTimer(timer);

        for (Player p : gm.getArenaPlayers()) {
          p.setLevel(timer);
        }
      } else {
        gm.removePlayer(gm.getPotatoCarrier());

        for (Player p : gm.getArenaPlayers()) {
          p.setLevel(0);
          p.setExp(0);
          p.playSound(p.getLocation(), Sound.LEVEL_UP, 1, 10);
        }

        plugin.getServer().getScheduler().cancelTask(gm.getBomb());
        gm.setBombTimer(-1);
      }
    }
  }
コード例 #3
0
	@SuppressWarnings("deprecation")
	public void restoreState() {
		if (state == null) {
			return;
		}
		
		bukkitPlayer.getInventory().setContents(state.getContents());
		bukkitPlayer.getInventory().setHelmet(state.getHelmet());
		bukkitPlayer.getInventory().setChestplate(state.getChestplate());
		bukkitPlayer.getInventory().setLeggings(state.getLeggings());
		bukkitPlayer.getInventory().setBoots(state.getBoots());
		
		bukkitPlayer.setExhaustion(state.getExhaustion());
		bukkitPlayer.setSaturation(state.getSaturation());
		
		bukkitPlayer.setFoodLevel(state.getFoodLevel());
		bukkitPlayer.setHealth(state.getHealth());
		
		bukkitPlayer.addPotionEffects(state.getPotioneffects());
		
		bukkitPlayer.setLevel(state.getLevel());
		bukkitPlayer.setExp(state.getExp());
		bukkitPlayer.setAllowFlight(state.isFly());
		
		sendMessage(I18N._("stateRestored"));
		bukkitPlayer.updateInventory();
		state = null;
	}
コード例 #4
0
 private PlayerInventory getInventory(Player p) {
   String group = getWorldGroup(p.getWorld());
   if (group == null) return null;
   PlayerConfiguration pcm = PlayerConfigurationManager.getConfiguration(p);
   if (!pcm.exists()) pcm.createFile();
   Integer invSize = pcm.getInt("inventory." + group + ".size");
   final PlayerInventory i = p.getInventory();
   i.clear();
   if (pcm.get("inventory." + group + ".slot") == null) return i;
   for (int slot = 0; slot < invSize; slot++) {
     ItemStack is = pcm.getItemStack("inventory." + group + ".slot." + slot);
     if (is == null) continue;
     i.setItem(slot, is);
   }
   i.setHelmet(pcm.getItemStack("inventory." + group + ".slot.helm"));
   i.setChestplate(pcm.getItemStack("inventory." + group + ".slot.chestplate"));
   i.setLeggings(pcm.getItemStack("inventory." + group + ".slot.leggings"));
   i.setBoots(pcm.getItemStack("inventory." + group + ".slot.boots"));
   if (Config.separateXP) {
     Float xp = pcm.getFloat("inventory." + group + ".xp");
     Integer xpLevel = pcm.getInt("inventory." + group + ".xplevel");
     p.setExp(xp);
     p.setLevel(xpLevel);
   }
   return i;
 }
コード例 #5
0
ファイル: Players.java プロジェクト: xyJo/CardinalPGM
 public static void resetPlayer(Player player) {
   player.setHealth(player.getMaxHealth());
   player.setFoodLevel(20);
   player.setSaturation(20);
   player.getInventory().clear();
   player
       .getInventory()
       .setArmorContents(
           new ItemStack[] {
             new ItemStack(Material.AIR),
             new ItemStack(Material.AIR),
             new ItemStack(Material.AIR),
             new ItemStack(Material.AIR)
           });
   for (PotionEffect effect : player.getActivePotionEffects()) {
     try {
       player.removePotionEffect(effect.getType());
     } catch (NullPointerException ignored) {
     }
   }
   player.setTotalExperience(0);
   player.setExp(0);
   player.setPotionParticles(true);
   player.setWalkSpeed(0.2F);
   player.setFlySpeed(0.2F);
 }
コード例 #6
0
ファイル: GamePlayer.java プロジェクト: Noraaron1/HotPotato
 public void removePlayer() {
   player.teleport(spawnBack);
   if (gm.getPlugin().getConfigHandler().isSaveHealth()) {
     player.setHealth(health);
     player.setFoodLevel(hunger);
   }
   player.getInventory().clear();
   player.getInventory().setContents(inventory);
   player.setGameMode(gamemode);
   player.setExp(xpAmount);
 }
コード例 #7
0
ファイル: xpconverter.java プロジェクト: mobsi09/xpconverter
 private void xpstuff(Player player, Integer leftoverxp, Integer bottleamount) {
   HashMap<Integer, ItemStack> leftOver = new HashMap<Integer, ItemStack>();
   player.setTotalExperience(0);
   player.setExp(0);
   player.setLevel(0);
   player.giveExp(leftoverxp);
   ItemStack bottleoenchant = new ItemStack(384, bottleamount);
   leftOver.putAll(player.getInventory().addItem(new ItemStack(bottleoenchant)));
   if (!leftOver.isEmpty()) {
     Location loc = player.getLocation();
     player.getWorld().dropItem(loc, new ItemStack(384, leftOver.get(0).getAmount()));
   }
 }
コード例 #8
0
 public static void fullReset(final Arena arena, final Player player) {
   playersetHealth(player, arena.getArenaConfig().getInt(CFG.PLAYER_HEALTH));
   player.setFireTicks(0);
   player.setFallDistance(0);
   player.setVelocity(new Vector());
   player.setFoodLevel(arena.getArenaConfig().getInt(CFG.PLAYER_FOODLEVEL));
   player.setSaturation(arena.getArenaConfig().getInt(CFG.PLAYER_SATURATION));
   player.setExhaustion((float) arena.getArenaConfig().getDouble(CFG.PLAYER_EXHAUSTION));
   player.setLevel(0);
   player.setExp(0);
   player.setGameMode(GameMode.getByValue(arena.getArenaConfig().getInt(CFG.GENERAL_GAMEMODE)));
   PlayerState.removeEffects(player);
 }
コード例 #9
0
  private void setExp(int base, int amt) {
    int xp = base + amt;
    if (xp < 0) xp = 0;

    Player player = getPlayer();
    int curLvl = player.getLevel();
    int newLvl = getLevelForExp(xp);
    if (curLvl != newLvl) {
      player.setLevel(newLvl);
    }

    float pct = ((float) (xp - getXpForLevel(newLvl)) / (float) xpRequiredForNextLevel[newLvl]);
    player.setExp(pct);
  }
コード例 #10
0
  private void commandDeposit(CommandSender sender, String[] args) {
    if (!(sender instanceof Player)) {
      sender.sendMessage(ChatColor.RED + "The console does not have an XP bank account.");
      return;
    }
    if (args.length < 2) {
      sender.sendMessage(ChatColor.RED + "Usage: /xpbank deposit <amount>");
      return;
    }

    Player p = (Player) sender;

    Integer depositAmount;

    if (args[1].equals("all")) {
      depositAmount = MinebotXPBank.calculateXP(p);
    } else {
      try {
        depositAmount = Integer.parseInt(args[1]);
      } catch (NumberFormatException e) {
        sender.sendMessage(
            ChatColor.RED + "Please provide a valid number amount of XP to deposit!");
        return;
      }
    }

    Integer currentBalance = MinebotXPBank.getBalance(p.getName());
    if (currentBalance == null) {
      MinebotXPBank.initAccount(p.getName());
      currentBalance = 0;
    }

    int oldExp = MinebotXPBank.calculateXP(p);
    if (depositAmount > oldExp) {
      sender.sendMessage(ChatColor.RED + "You don't have that many XP to deposit.");
    } else {
      int newBalance = currentBalance + depositAmount;
      MinebotXPBank.setBalance(p.getName(), newBalance);
      sender.sendMessage(depositAmount.toString() + " XP " + ChatColor.GREEN + "deposited.");
      sender.sendMessage(ChatColor.GREEN + "New balance: " + ChatColor.WHITE + newBalance + " XP");

      p.setLevel(0);
      p.setExp(0);
      p.giveExp(oldExp - depositAmount);
    }
  }
コード例 #11
0
  /** Check win * */
  private void checkWin() {
    for (Player p : Bukkit.getOnlinePlayers()) {
      if (points.containsKey(p.getName())) {
        if (points.get(p.getName()) == 15) {
          /** Clear inventories * */
          for (Player t : Bukkit.getOnlinePlayers()) {
            t.getInventory().clear();

            t.setLevel(0);
            p.setExp(0f);
          }

          /** Bukkit task * */
          runnable.cancel();

          /** Remove chickens * */
          for (Entity e : chickens) {
            if (!e.isDead()) e.remove();
          }

          /** Broadcast * */
          Bukkit.broadcastMessage(MTP.PREFIX + "" + p.getName() + " �at gewonnen!");

          /** Sounds * */
          for (Player tp : Bukkit.getOnlinePlayers()) {
            if (tp == p) {
              /** Points * */
              MTP.points.put(p.getName(), MTP.points.get(p.getName()) + 1);

              tp.playSound(tp.getLocation(), "win", 1, 1);
            } else tp.playSound(tp.getLocation(), "lose", 1, 1);
          }

          /** Runnable * */
          new BukkitRunnable() {
            public void run() {
              end();
            }
          }.runTaskLater(MTP.getPlugin(), 10 * 20L);

          /** Break * */
          break;
        }
      }
    }
  }
コード例 #12
0
	@SuppressWarnings("deprecation")
	public void saveState() {
		bukkitPlayer.setGameMode(GameMode.SURVIVAL);//Set to survival
		
		//Define player states variables
		ItemStack[] contents = bukkitPlayer.getInventory().getContents();
		
		ItemStack helmet = bukkitPlayer.getInventory().getHelmet();
		ItemStack chestplate = bukkitPlayer.getInventory().getChestplate();
		ItemStack leggings = bukkitPlayer.getInventory().getLeggings();
		ItemStack boots = bukkitPlayer.getInventory().getBoots();
		
		float exhaustion = bukkitPlayer.getExhaustion();
		float saturation = bukkitPlayer.getSaturation();
		
		int foodLevel = bukkitPlayer.getFoodLevel();
		double health = bukkitPlayer.getHealth();
		
		GameMode gm = bukkitPlayer.getGameMode();
		Collection<PotionEffect> potionEffects = bukkitPlayer.getActivePotionEffects();
		
		float exp = bukkitPlayer.getExp();
		int level = bukkitPlayer.getLevel();
		
		boolean fly = bukkitPlayer.getAllowFlight();
		
		//Save state
		state = new PlayerState(contents, helmet, chestplate, leggings, boots, exhaustion, saturation, foodLevel, health, gm, potionEffects, exp, level, fly);
		
		//Set to default state
		bukkitPlayer.setFoodLevel(20);
		bukkitPlayer.setHealth(20.0);
		bukkitPlayer.setAllowFlight(false);//Disable fly mode (Essentials etc.)
		bukkitPlayer.setFireTicks(0);
		bukkitPlayer.getInventory().clear();
		bukkitPlayer.getInventory().setArmorContents(new ItemStack[4]);
		bukkitPlayer.setLevel(0);
		bukkitPlayer.setExp(0);
		
		for (PotionEffect effect : bukkitPlayer.getActivePotionEffects()) {
			bukkitPlayer.removePotionEffect(effect.getType());
		}
		
		bukkitPlayer.sendMessage(I18N._("stateSaved"));
		bukkitPlayer.updateInventory();
	}
コード例 #13
0
 public static void clearupperson(Player p) {
   p.setAllowFlight(false);
   p.setLevel(0);
   p.setExp(0);
   p.setFoodLevel(20);
   p.setSaturation(10);
   p.setHealth(20D);
   PlayerInventory pi = p.getInventory();
   pi.clear();
   pi.setHeldItemSlot(0);
   ItemStack Air = new ItemStack(Material.AIR);
   pi.setHelmet(Air);
   pi.setChestplate(Air);
   pi.setLeggings(Air);
   pi.setBoots(Air);
   for (PotionEffect effect : p.getActivePotionEffects()) p.removePotionEffect(effect.getType());
 }
コード例 #14
0
  public void restore(Player player) {
    if (!player.isOnline()) {
      plugin.logDebug("Player " + player.getName() + " is offline. Skipping restore...");
      return;
    }

    Restoration restoration = getRestoration(player);

    if (restoration.enabled) {
      player.getInventory().clear();

      player.getInventory().setContents(restoration.inventory);
      player.getInventory().setArmorContents(restoration.armour);
      if (plugin.isMc19or110()) {
        player.getInventory().setItemInOffHand(restoration.offHand);
      }
      if (player.hasPermission(PERM_LEVEL)
          || !plugin.config.permsEnabled()
          || (player.isOp() && plugin.config.opsAllPerms())) {
        plugin.logDebug("Player " + player.getName() + " does have " + PERM_LEVEL + " permission.");
        player.setLevel(restoration.level);
        plugin.logDebug("Player " + player.getName() + " gets " + restoration.level + " level.");
      } else {
        plugin.logDebug(
            "Player " + player.getName() + " does NOT have " + PERM_LEVEL + " permission.");
      }
      if (player.hasPermission(PERM_EXP)
          || !plugin.config.permsEnabled()
          || (player.isOp() && plugin.config.opsAllPerms())) {
        plugin.logDebug("Player " + player.getName() + " does have " + PERM_EXP + " permission.");
        player.setExp(restoration.exp);
        plugin.logDebug("Player " + player.getName() + " gets " + restoration.exp + " XP.");
      } else {
        plugin.logDebug(
            "Player " + player.getName() + " does NOT have " + PERM_EXP + " permission.");
      }
      if (plugin.config.shouldNotify()) {
        plugin.message(player, plugin.config.msgRecovered());
      }
      removeRestoration(player);
      if (hasRestoration(player)) {
        plugin.message(player, "Restore exists!!!");
      }
    }
  }
コード例 #15
0
  private void commandWithdraw(CommandSender sender, String[] args) {
    if (!(sender instanceof Player)) {
      sender.sendMessage(ChatColor.RED + "The console does not have an XP bank account.");
      return;
    }
    if (args.length < 2) {
      sender.sendMessage(ChatColor.RED + "Usage: /xpbank withdraw <amount>");
      return;
    }

    Player p = (Player) sender;
    Integer currentBalance = MinebotXPBank.getBalance(p.getName());
    if (currentBalance == null) {
      MinebotXPBank.initAccount(p.getName());
      currentBalance = 0;
    }

    Integer withdrawAmount;

    if (args[1].equals("all")) {
      withdrawAmount = currentBalance;
    } else {
      try {
        withdrawAmount = Integer.parseInt(args[1]);
      } catch (NumberFormatException e) {
        sender.sendMessage(ChatColor.RED + "Please provide a valid number amount to withdraw!");
        return;
      }
    }

    int newBalance = currentBalance - withdrawAmount;
    if (newBalance < 0) {
      sender.sendMessage(ChatColor.RED + "You don't have that many XP to withdraw.");
    } else {
      MinebotXPBank.setBalance(p.getName(), newBalance);
      sender.sendMessage(withdrawAmount.toString() + " XP " + ChatColor.GREEN + "withdrawn.");
      sender.sendMessage(
          ChatColor.GREEN + "Remaining balance: " + ChatColor.WHITE + newBalance + " XP");

      int oldExp = MinebotXPBank.calculateXP(p);
      p.setLevel(0);
      p.setExp(0);
      p.giveExp(oldExp + withdrawAmount);
    }
  }
コード例 #16
0
 public void cmdRestore(Player player) {
   if (player.hasPermission(PERM_RESTORE_INV)) {
     if (hasRestoration(player)) {
       Restoration restoration = getRestoration(player);
       player.getInventory().clear();
       player.getInventory().setContents(restoration.inventory);
       player.getInventory().setArmorContents(restoration.armour);
       if (plugin.isMc19or110()) {
         player.getInventory().setItemInOffHand(restoration.offHand);
       }
       player.setLevel(restoration.level);
       player.setExp(restoration.exp);
       removeRestoration(player);
     } else {
       plugin.message(player, "Nothing to restore.");
     }
   } else {
     plugin.message(player, plugin.config.msgNoPerm());
   }
 }
コード例 #17
0
ファイル: GamePlayer.java プロジェクト: Noraaron1/HotPotato
  public void addPlayer() {
    spawnBack = player.getLocation().clone().add(0.5D, 0.5D, 0.5D);
    health = player.getHealth();
    hunger = player.getFoodLevel();
    setInventory(player.getInventory().getContents());
    gamemode = player.getGameMode();
    xpAmount = player.getExp();

    /** Clear all of this * */
    player.setHealth(20.0);
    player.setFoodLevel(20);
    player.getInventory().clear();
    player.getInventory().setHelmet(null);
    player.getInventory().setChestplate(null);
    player.getInventory().setLeggings(null);
    player.getInventory().setBoots(null);
    player.setGameMode(GameMode.SURVIVAL);
    player.setExp(0);
    player.setLevel(0);
  }
コード例 #18
0
ファイル: LobbyManager.java プロジェクト: Cryices/GameAPI
 public static void changeLobby(Player p, int i, boolean teleport) {
   LobbyList.put(p.getUniqueId(), i);
   for (Player o : Bukkit.getOnlinePlayers()) {
     p.showPlayer(o);
     if (LobbyList.containsKey(o.getUniqueId())) {
       if (LobbyList.get(o.getUniqueId()) != i) {
         p.hidePlayer(o);
         o.hidePlayer(p);
       } else {
         o.showPlayer(p);
       }
     } else {
       p.hidePlayer(o);
       o.hidePlayer(p);
     }
   }
   p.setExp(0);
   p.setLevel(getLobby(p));
   if (teleport) {
     p.teleport(GameAPI.getSpawnLocation());
     p.getWorld().playEffect(p.getLocation(), Effect.MOBSPAWNER_FLAMES, 7);
   }
 }
コード例 #19
0
 public void cmdCollect(Player player) {
   if (player.hasPermission(PERM_SAVE_INV)) {
     if (plugin.config.shouldNotify()) {
       plugin.message(player, plugin.config.msgSaving());
     }
     Restoration restoration = new Restoration();
     restoration.enabled = false;
     restoration.inventory = Arrays.copyOfRange(player.getInventory().getContents(), 0, 36);
     restoration.armour = player.getInventory().getArmorContents();
     if (plugin.isMc19or110()) {
       restoration.offHand = player.getInventory().getItemInOffHand();
     }
     restoration.playerName = player.getDisplayName();
     restoration.level = player.getLevel();
     restoration.exp = player.getExp();
     player.setLevel(0);
     player.setExp(0f);
     player.getInventory().clear();
     addRestoration(player, restoration);
   } else {
     plugin.message(player, plugin.config.msgNoPerm());
   }
 }
コード例 #20
0
  public static void saveInventory(Player player) {
    armourContents.put(player.getName(), player.getInventory().getArmorContents());
    inventoryContents.put(player.getName(), player.getInventory().getContents());
    locations.put(player.getName(), player.getLocation());
    xp.put(player.getName(), Float.valueOf(player.getExp()));
    xpLevel.put(player.getName(), Integer.valueOf(player.getLevel()));
    gameModes.put(player.getName(), player.getGameMode());
    potions.put(player.getName(), player.getActivePotionEffects());
    foodLevel.put(player.getName(), Integer.valueOf(player.getFoodLevel()));
    Health.put(player.getName(), Double.valueOf(player.getHealth()));
    flight.put(player.getName(), Boolean.valueOf(player.getAllowFlight()));

    player.setAllowFlight(false);
    player.setHealth(20.0D);
    player.setFoodLevel(20);
    for (PotionEffect effect : player.getActivePotionEffects()) {
      player.removePotionEffect(effect.getType());
    }
    player.getInventory().clear();
    player.setLevel(0);
    player.setExp(0.0F);
    player.setGameMode(GameMode.SURVIVAL);
  }
コード例 #21
0
  @EventHandler(priority = EventPriority.HIGHEST)
  public void onPlayerJoinEvent(PlayerJoinEvent e) {
    e.setJoinMessage("");
    Player p = e.getPlayer();
    Game.players.add(p.getUniqueId());
    p.setHealth(20.0);
    p.setExp(0);
    ChatUtilities.broadcast(e.getPlayer().getDisplayName() + " has joined!");
    p.removePotionEffect(PotionEffectType.INVISIBILITY);
    p.setGameMode(GameMode.ADVENTURE);
    p.getInventory().clear();
    p.getInventory().setHelmet(null);
    Game.setCanStart(Bukkit.getOnlinePlayers().size() >= 2);
    LocationUtilities.teleportToLobby(p);

    CraftPlayer craftplayer = (CraftPlayer) p;
    PlayerConnection connection = craftplayer.getHandle().playerConnection;
    IChatBaseComponent header = ChatSerializer.a("{\"text\": \"   §3Villager Hunt   \"}");
    IChatBaseComponent footer = ChatSerializer.a("{\"text\": \"   §4Development Test   \"}");
    PacketPlayOutPlayerListHeaderFooter packet = new PacketPlayOutPlayerListHeaderFooter();

    try {
      Field headerField = packet.getClass().getDeclaredField("a");
      headerField.setAccessible(true);
      headerField.set(packet, header);
      headerField.setAccessible(!headerField.isAccessible());

      Field footerField = packet.getClass().getDeclaredField("b");
      footerField.setAccessible(true);
      footerField.set(packet, footer);
      footerField.setAccessible(!footerField.isAccessible());
    } catch (Exception ex) {
      ex.printStackTrace();
    }

    connection.sendPacket(packet);
  }
コード例 #22
0
  /** Damage * */
  @EventHandler
  public void onDamageByEntity(EntityDamageByEntityEvent e) {
    if (e.getEntity() instanceof Chicken) {
      if (e.getDamager() instanceof Arrow) {
        /** Arrow * */
        Arrow a = (Arrow) e.getDamager();

        if (a.getShooter() instanceof Player) {
          /** Player * */
          Player p = (Player) a.getShooter();

          /** Remove from list * */
          if (chickens.contains(e.getEntity())) chickens.remove(e.getEntity());

          /** Remove * */
          e.getEntity().remove();

          /** Give player point * */
          points.put(p.getName(), points.get(p.getName()) + 1);

          /** Play sound * */
          p.playSound(p.getLocation(), Sound.NOTE_PLING, 1, 3);

          /** Title * */
          Util.sendTitle(p, 5, 10, 5, "", "Getroffen!");

          /** Level and exp * */
          p.setLevel(points.get(p.getName()));
          p.setExp((1f / 15) * points.get(p.getName()));

          /** Check win * */
          checkWin();
        }
      }
    }
  }
コード例 #23
0
 public boolean setPlayerExperience(String player, float level) {
   Player p = getPlayerExact(player);
   p.setExp(level);
   p.saveData();
   return true;
 }
コード例 #24
0
 public void manageDeath(PlayerKilledEvent event) {
   Gamer killed = event.getKilled();
   final Player p = killed.getPlayer();
   p.setHealth(20);
   if (event.isCancelled()) return;
   for (HumanEntity human : p.getInventory().getViewers()) human.closeInventory();
   p.leaveVehicle();
   p.eject();
   p.setLevel(0);
   p.setExp(0F);
   if (event.getDeathMessage().equals(ChatColor.stripColor(event.getDeathMessage())))
     event.setDeathMessage(ChatColor.DARK_RED + event.getDeathMessage());
   event.setDeathMessage(
       this.formatDeathMessage(
           event.getDeathMessage().replace("%Remaining%", "" + (getAliveGamers().size() - 1)), p));
   if (event.getKillerPlayer() != null) {
     event.getKillerPlayer().addKill();
     event.setDeathMessage(
         this.formatDeathMessage(event.getDeathMessage(), event.getKillerPlayer().getPlayer()));
   }
   Bukkit.broadcastMessage(event.getDeathMessage());
   int reward = hg.getPrize(getAliveGamers().size());
   if (reward > 0) killed.addBalance(reward);
   hg.cannon();
   killed.clearInventory();
   World world = p.getWorld();
   for (ItemStack item : event.getDrops()) {
     if (item == null
         || item.getType() == Material.AIR
         || item.containsEnchantment(EnchantmentManager.UNLOOTABLE)) continue;
     else if (item.hasItemMeta())
       world
           .dropItemNaturally(event.getDropsLocation(), item.clone())
           .getItemStack()
           .setItemMeta(item.getItemMeta());
     else world.dropItemNaturally(event.getDropsLocation(), item);
   }
   setSpectator(killed);
   ScoreboardManager.makeScore(
       "Main", DisplaySlot.SIDEBAR, cm.getScoreboardPlayersLength(), getAliveGamers().size());
   hg.checkWinner();
   p.setVelocity(new Vector());
   for (PotionEffect effect : p.getActivePotionEffects()) p.removePotionEffect(effect.getType());
   p.teleport(p.getWorld().getHighestBlockAt(p.getLocation()).getLocation().clone().add(0, 10, 0));
   p.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 40, 9), true);
   p.sendBlockChange(p.getLocation(), Material.PORTAL.getId(), (byte) 0);
   p.sendBlockChange(p.getLocation(), Material.AIR.getId(), (byte) 0);
   for (Entity entity : p.getWorld().getEntities()) {
     if (entity instanceof Tameable
         && ((Tameable) entity).isTamed()
         && ((Tameable) entity).getOwner().getName().equals(p.getName())) {
       if (entity instanceof Wolf) ((Wolf) entity).setSitting(true);
       else if (entity instanceof Ocelot) ((Ocelot) entity).setSitting(true);
       else entity.remove();
     }
     if (entity instanceof Creature && ((Creature) entity).getTarget() == p)
       ((Creature) entity).setTarget(null);
   }
   if (HungergamesApi.getConfigManager().getMainConfig().isKickOnDeath()
       && !p.hasPermission("hungergames.spectate"))
     p.kickPlayer(String.format(cm.getKickDeathMessage(), event.getDeathMessage()));
   HungergamesApi.getAbilityManager().unregisterPlayer(p);
   HungergamesApi.getInventoryManager().updateSpectatorHeads();
 }
コード例 #25
0
ファイル: PlayerWrapper.java プロジェクト: Zarius/OtherBounds
 @Override
 public void setExp(float exp) {
   caller.setExp(exp);
 }
コード例 #26
0
ファイル: ArenaHandler.java プロジェクト: TigerHix/BlockHunt
  public static void playerJoinArena(Player player, String arenaname) {
    boolean found = false;
    boolean alreadyJoined = false;
    for (Arena arena : W.arenaList) {
      if (arena.playersInArena != null) {
        if (arena.playersInArena.contains(player)) {
          alreadyJoined = true;
        }
      }
    }

    if (!alreadyJoined) {
      for (Arena arena : W.arenaList) {
        if (arena.arenaName.equalsIgnoreCase(arenaname)) {
          found = true;
          if (arena.disguiseBlocks.isEmpty()) {
            MessageM.sendFMessage(player, ConfigC.error_joinNoBlocksSet, true);
          } else {
            LocationSerializable zero =
                new LocationSerializable(Bukkit.getWorld("world"), 0, 0, 0, 0, 0);
            if (arena.lobbyWarp != null && arena.hidersWarp != null && arena.seekersWarp != null) {
              if (!arena.lobbyWarp.equals(zero)
                  && !arena.hidersWarp.equals(zero)
                  && !arena.seekersWarp.equals(zero)) {
                if (arena.gameState == ArenaState.WAITING
                    || arena.gameState == ArenaState.STARTING) {
                  if (arena.playersInArena.size() >= arena.maxPlayers) {
                    if (!PlayerM.hasPerm(player, PermsC.joinfull, false)) {
                      MessageM.sendFMessage(player, ConfigC.error_joinFull, true);
                      return;
                    }
                  }
                  arena.playersInArena.add(player);

                  W.pLocation.put(player, player.getLocation());
                  W.pGameMode.put(player, player.getGameMode());

                  player.teleport(arena.lobbyWarp);
                  player.setGameMode(GameMode.SURVIVAL);

                  W.pInventory.put(player, player.getInventory().getContents());
                  player.getInventory().clear();
                  player.updateInventory();
                  W.pArmor.put(player, player.getInventory().getArmorContents());
                  player.getInventory().setHelmet(new ItemStack(Material.AIR));
                  player.getInventory().setChestplate(new ItemStack(Material.AIR));
                  player.getInventory().setLeggings(new ItemStack(Material.AIR));
                  player.getInventory().setBoots(new ItemStack(Material.AIR));
                  W.pEXP.put(player, player.getExp());
                  player.setExp(0);
                  W.pEXPL.put(player, player.getLevel());
                  player.setLevel(0);
                  W.pHealth.put(player, player.getHealth());
                  player.setHealth(20);
                  W.pFood.put(player, player.getFoodLevel());
                  player.setFoodLevel(20);

                  ArenaHandler.sendFMessage(
                      arena,
                      ConfigC.normal_joinJoinedArena,
                      true,
                      "playername-" + player.getName(),
                      "1-" + arena.playersInArena.size(),
                      "2-" + arena.maxPlayers);
                  if (arena.playersInArena.size() < arena.minPlayers) {
                    ArenaHandler.sendFMessage(
                        arena, ConfigC.warning_lobbyNeedAtleast, true, "1-" + arena.minPlayers);
                  }
                } else {
                  MessageM.sendFMessage(player, ConfigC.error_joinArenaIngame, true);
                }
              } else {
                MessageM.sendFMessage(player, ConfigC.error_joinWarpsNotSet, true);
              }
            } else {
              MessageM.sendFMessage(player, ConfigC.error_joinWarpsNotSet, true);
            }
          }
        }
      }
    } else {
      MessageM.sendFMessage(player, ConfigC.error_joinAlreadyJoined, true);
      return;
    }

    if (!found) {
      MessageM.sendFMessage(player, ConfigC.error_noArena, true, "name-" + arenaname);
    }

    SignsHandler.updateSigns();
  }
コード例 #27
0
ファイル: ArenaHandler.java プロジェクト: TigerHix/BlockHunt
  public static void playerLeaveArena(Player player, boolean message, boolean cleanup) {
    Arena arena = null;
    for (Arena arena2 : W.arenaList) {
      if (arena2.playersInArena != null) {
        if (arena2.playersInArena.contains(player)) {
          arena = arena2;
        }
      }
    }

    if (arena != null) {
      if (cleanup) {
        arena.playersInArena.remove(player);
        if (arena.seekers.contains(player)) {
          arena.seekers.remove(player);
        }
        if (arena.playersInArena.size() <= arena.minPlayers) {
          if (arena.gameState.equals(ArenaState.STARTING)) {
            arena.gameState = ArenaState.WAITING;
            arena.timer = 0;

            ArenaHandler.sendFMessage(
                arena, ConfigC.warning_lobbyNeedAtleast, true, "1-" + arena.minPlayers);
          } else {
            ArenaHandler.seekersWin(arena);
          }
        } else if (arena.seekers.size() <= 0 && arena.gameState == ArenaState.INGAME) {
          Player seeker = arena.playersInArena.get(W.random.nextInt(arena.playersInArena.size()));
          ArenaHandler.sendFMessage(
              arena, ConfigC.warning_ingameNEWSeekerChoosen, true, "seeker-" + seeker.getName());
          ArenaHandler.sendFMessage(
              arena, ConfigC.normal_ingameSeekerChoosen, true, "seeker-" + seeker.getName());
          W.dcAPI.undisguisePlayer(seeker);
          seeker.getInventory().clear();
          arena.seekers.add(seeker);
          seeker.teleport(arena.seekersWarp);
          W.seekertime.put(seeker, arena.waitingTimeSeeker);
        }
      }

      player.getInventory().clear();
      player.getInventory().setContents(W.pInventory.get(player));
      player.updateInventory();
      W.pInventory.remove(player);
      player.getInventory().setArmorContents(W.pArmor.get(player));
      W.pArmor.remove(player);
      player.setExp(W.pEXP.get(player));
      W.pEXP.remove(player);
      player.setLevel(W.pEXPL.get(player));
      W.pEXPL.remove(player);
      player.setHealth(W.pHealth.get(player));
      W.pHealth.remove(player);
      player.setFoodLevel(W.pFood.get(player));
      W.pFood.remove(player);
      W.pBlock.remove(player);

      player.teleport(W.pLocation.get(player));

      player.setGameMode(W.pGameMode.get(player));
      W.pGameMode.remove(player);
      W.pLocation.remove(player);

      for (Player pl : Bukkit.getOnlinePlayers()) {
        pl.showPlayer(player);
        if (W.hiddenLoc.get(player) != null) {
          Block pBlock = W.hiddenLoc.get(player).getBlock();
          pl.sendBlockChange(pBlock.getLocation(), Material.AIR, (byte) 0);
        }

        if (W.dcAPI.isDisguised(player)) {
          W.dcAPI.undisguisePlayer(player);
        }
      }

      ScoreboardHandler.removeScoreboard(player);

      MessageM.sendFMessage(player, ConfigC.normal_leaveYouLeft, true);
      if (message) {
        ArenaHandler.sendFMessage(
            arena,
            ConfigC.normal_leaveLeftArena,
            true,
            "playername-" + player.getName(),
            "1-" + arena.playersInArena.size(),
            "2-" + arena.maxPlayers);
      }
    } else {
      if (message) {
        MessageM.sendFMessage(player, ConfigC.error_leaveNotInArena, true);
      }
      return;
    }

    SignsHandler.updateSigns();
  }
コード例 #28
0
  public void unload() {
    final Player player = Bukkit.getPlayerExact(name);

    if (player == null) {
      final ArenaPlayer aPlayer = ArenaPlayer.parsePlayer(name);
      PVPArena.instance.getAgm().disconnect(aPlayer.getArena(), aPlayer);
      return;
    }
    debug.i("restoring PlayerState of " + name, player);

    player.setFireTicks(fireticks);
    player.setFoodLevel(foodlevel);
    player.setGameMode(GameMode.getByValue(gamemode));

    final ArenaPlayer aPlayer = ArenaPlayer.parsePlayer(player.getName());
    player.setFoodLevel(foodlevel);
    if (player.getMaxHealth() != maxhealth) {
      final double newHealth = player.getMaxHealth() * health / maxhealth;
      if (newHealth > player.getMaxHealth()) {
        player.setHealth(player.getMaxHealth());
      } else {
        player.setHealth(newHealth);
      }

    } else {
      player.setHealth(health);
    }
    player.setSaturation(saturation);
    player.setGameMode(GameMode.getByValue(gamemode));
    player.setLevel(explevel);
    player.setExp(experience);
    player.setExhaustion(exhaustion);
    player.setFallDistance(0);
    player.setVelocity(new Vector());
    if (aPlayer.getArena() != null
        && aPlayer.getArena().getArenaConfig().getBoolean(CFG.CHAT_COLORNICK)) {
      player.setDisplayName(displayname);
    }

    if (aPlayer.getArena() != null) {

      ArenaModuleManager.unload(aPlayer.getArena(), player);
      PVPArena.instance.getAgm().unload(aPlayer.getArena(), player);
    }

    removeEffects(player);
    player.addPotionEffects(potionEffects);

    aPlayer.setTelePass(false);
    player.setFireTicks(fireticks);

    if (aPlayer.getArena() != null) {
      player.setNoDamageTicks(
          aPlayer.getArena().getArenaConfig().getInt(CFG.TIME_TELEPORTPROTECT) * 20);
    }
    player.resetPlayerTime();
    if (flying && !player.getAllowFlight()) {
      player.setAllowFlight(true);
    }
    player.setFlying(flying);
  }
コード例 #29
0
ファイル: Duel.java プロジェクト: PFacheris/BukkitDuel
  public void endDuel(BukkitDuel plugin, boolean initiatorWins) {
    this.isActive = false;
    this.arena.setInUse(false);
    this.initiator.teleport(initiatorOriginalPosition);
    this.challengee.teleport(challengeeOriginalPosition);

    this.initiator.setHealth(20);
    this.initiator.setFoodLevel(20);
    this.challengee.setHealth(20);
    this.challengee.setFoodLevel(20);

    if (initiatorWins) {
      initiator.sendMessage(ChatColor.GREEN + "You have won the duel! Winnings are listed below:");
      if (stakesChallengee.getWagerMoneyAmount() > 0 && BukkitDuel.economy.isEnabled()) {
        BukkitDuel.economy.bankDeposit(initiator.getName(), stakesChallengee.getWagerMoneyAmount());
        initiator.sendMessage("Money: " + stakesChallengee.getWagerMoneyAmount() + " Dollars");
      }
      if (stakesChallengee.getWagerExperienceAmount() > 0) {
        // adjust for levels rather than exp amount
        initiator.setExp(initiator.getExp() + stakesChallengee.getWagerExperienceAmount());
        initiator.sendMessage("Experience: " + stakesChallengee.getWagerExperienceAmount());
        if (challengee.isOnline())
          challengee.setExp(initiator.getExp() - stakesChallengee.getWagerExperienceAmount());
      }
      if (stakesInitiator.getWagerItems().getSize() > 0) {
        for (ItemStack items : stakesInitiator.getWagerItems().getContents()) {
          initiator.getInventory().addItem(items);
        }
      }
      if (stakesChallengee.getWagerItems().getSize() > 0) {
        for (ItemStack items : stakesChallengee.getWagerItems().getContents()) {
          initiator.getInventory().addItem(items);
          initiator.sendMessage("Item: " + items.getType() + "x " + items.getAmount());
        }
      }
      if (stakesChallengee.getWagerPowerAmount() > 0) {
        // Do faction power handling here.
      }

      if (challengee.isOnline())
        challengee.sendMessage(ChatColor.GREEN + "You have lost the duel, tough luck!");
    } else {
      challengee.sendMessage(ChatColor.GREEN + "You have won the duel! Winnings are listed below:");

      if (stakesInitiator.getWagerMoneyAmount() > 0 && BukkitDuel.economy.isEnabled()) {
        BukkitDuel.economy.bankDeposit(challengee.getName(), stakesInitiator.getWagerMoneyAmount());
        challengee.sendMessage("Money: " + stakesChallengee.getWagerMoneyAmount() + " Dollars");
      }
      if (stakesInitiator.getWagerExperienceAmount() > 0) {
        // adjust for levels rather than exp amount
        challengee.setExp(initiator.getExp() + stakesInitiator.getWagerExperienceAmount());
        challengee.sendMessage("Experience: " + stakesChallengee.getWagerExperienceAmount());
        if (initiator.isOnline())
          initiator.setExp(initiator.getExp() - stakesInitiator.getWagerExperienceAmount());
      }
      if (stakesChallengee.getWagerItems().getSize() > 0) {
        for (ItemStack items : stakesChallengee.getWagerItems().getContents()) {
          challengee.getInventory().addItem(items);
        }
      }
      if (stakesInitiator.getWagerItems().getSize() > 0) {
        for (ItemStack items : stakesInitiator.getWagerItems()) {
          challengee.getInventory().addItem(items);
          challengee.sendMessage("Item: " + items.getType() + "x " + items.getAmount());
        }
      }
      if (stakesInitiator.getWagerPowerAmount() > 0) {
        // Do faction power handling here.
      }

      if (initiator.isOnline())
        initiator.sendMessage(ChatColor.GREEN + "You have lost the duel, tough luck!");
    }
  }