Search in sources :

Example 21 with Objective

use of org.bukkit.scoreboard.Objective in project Bukkit by Bukkit.

the class ScoreboardCommand method getCurrentObjectives.

private List<String> getCurrentObjectives() {
    List<String> list = new ArrayList<String>();
    for (Objective objective : Bukkit.getScoreboardManager().getMainScoreboard().getObjectives()) {
        list.add(objective.getName());
    }
    Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
    return list;
}
Also used : Objective(org.bukkit.scoreboard.Objective) ArrayList(java.util.ArrayList)

Example 22 with Objective

use of org.bukkit.scoreboard.Objective in project Bukkit by Bukkit.

the class ScoreboardCommand method execute.

@Override
public boolean execute(CommandSender sender, String currentAlias, String[] args) {
    if (!testPermission(sender))
        return true;
    if (args.length < 1 || args[0].length() == 0) {
        sender.sendMessage(ChatColor.RED + "Usage: /scoreboard <objectives|players|teams>");
        return false;
    }
    final Scoreboard mainScoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
    if (args[0].equalsIgnoreCase("objectives")) {
        if (args.length == 1) {
            sender.sendMessage(ChatColor.RED + "Usage: /scoreboard objectives <list|add|remove|setdisplay>");
            return false;
        }
        if (args[1].equalsIgnoreCase("list")) {
            Set<Objective> objectives = mainScoreboard.getObjectives();
            if (objectives.isEmpty()) {
                sender.sendMessage(ChatColor.RED + "There are no objectives on the scoreboard");
                return false;
            }
            sender.sendMessage(ChatColor.DARK_GREEN + "Showing " + objectives.size() + " objective(s) on scoreboard");
            for (Objective objective : objectives) {
                sender.sendMessage("- " + objective.getName() + ": displays as '" + objective.getDisplayName() + "' and is type '" + objective.getCriteria() + "'");
            }
        } else if (args[1].equalsIgnoreCase("add")) {
            if (args.length < 4) {
                sender.sendMessage(ChatColor.RED + "/scoreboard objectives add <name> <criteriaType> [display name ...]");
                return false;
            }
            String name = args[2];
            String criteria = args[3];
            if (criteria == null) {
                sender.sendMessage(ChatColor.RED + "Invalid objective criteria type. Valid types are: " + stringCollectionToString(OBJECTIVES_CRITERIA));
            } else if (name.length() > 16) {
                sender.sendMessage(ChatColor.RED + "The name '" + name + "' is too long for an objective, it can be at most 16 characters long");
            } else if (mainScoreboard.getObjective(name) != null) {
                sender.sendMessage(ChatColor.RED + "An objective with the name '" + name + "' already exists");
            } else {
                String displayName = null;
                if (args.length > 4) {
                    displayName = StringUtils.join(ArrayUtils.subarray(args, 4, args.length), ' ');
                    if (displayName.length() > 32) {
                        sender.sendMessage(ChatColor.RED + "The name '" + displayName + "' is too long for an objective, it can be at most 32 characters long");
                        return false;
                    }
                }
                Objective objective = mainScoreboard.registerNewObjective(name, criteria);
                if (displayName != null && displayName.length() > 0) {
                    objective.setDisplayName(displayName);
                }
                sender.sendMessage("Added new objective '" + name + "' successfully");
            }
        } else if (args[1].equalsIgnoreCase("remove")) {
            if (args.length != 3) {
                sender.sendMessage(ChatColor.RED + "/scoreboard objectives remove <name>");
                return false;
            }
            String name = args[2];
            Objective objective = mainScoreboard.getObjective(name);
            if (objective == null) {
                sender.sendMessage(ChatColor.RED + "No objective was found by the name '" + name + "'");
            } else {
                objective.unregister();
                sender.sendMessage("Removed objective '" + name + "' successfully");
            }
        } else if (args[1].equalsIgnoreCase("setdisplay")) {
            if (args.length != 3 && args.length != 4) {
                sender.sendMessage(ChatColor.RED + "/scoreboard objectives setdisplay <slot> [objective]");
                return false;
            }
            String slotName = args[2];
            DisplaySlot slot = OBJECTIVES_DISPLAYSLOT.get(slotName);
            if (slot == null) {
                sender.sendMessage(ChatColor.RED + "No such display slot '" + slotName + "'");
            } else {
                if (args.length == 4) {
                    String objectiveName = args[3];
                    Objective objective = mainScoreboard.getObjective(objectiveName);
                    if (objective == null) {
                        sender.sendMessage(ChatColor.RED + "No objective was found by the name '" + objectiveName + "'");
                        return false;
                    }
                    objective.setDisplaySlot(slot);
                    sender.sendMessage("Set the display objective in slot '" + slotName + "' to '" + objective.getName() + "'");
                } else {
                    Objective objective = mainScoreboard.getObjective(slot);
                    if (objective != null) {
                        objective.setDisplaySlot(null);
                    }
                    sender.sendMessage("Cleared objective display slot '" + slotName + "'");
                }
            }
        }
    } else if (args[0].equalsIgnoreCase("players")) {
        if (args.length == 1) {
            sender.sendMessage(ChatColor.RED + "/scoreboard players <set|add|remove|reset|list>");
            return false;
        }
        if (args[1].equalsIgnoreCase("set") || args[1].equalsIgnoreCase("add") || args[1].equalsIgnoreCase("remove")) {
            if (args.length != 5) {
                if (args[1].equalsIgnoreCase("set")) {
                    sender.sendMessage(ChatColor.RED + "/scoreboard players set <player> <objective> <score>");
                } else if (args[1].equalsIgnoreCase("add")) {
                    sender.sendMessage(ChatColor.RED + "/scoreboard players add <player> <objective> <count>");
                } else {
                    sender.sendMessage(ChatColor.RED + "/scoreboard players remove <player> <objective> <count>");
                }
                return false;
            }
            String objectiveName = args[3];
            Objective objective = mainScoreboard.getObjective(objectiveName);
            if (objective == null) {
                sender.sendMessage(ChatColor.RED + "No objective was found by the name '" + objectiveName + "'");
                return false;
            } else if (!objective.isModifiable()) {
                sender.sendMessage(ChatColor.RED + "The objective '" + objectiveName + "' is read-only and cannot be set");
                return false;
            }
            String valueString = args[4];
            int value;
            try {
                value = Integer.parseInt(valueString);
            } catch (NumberFormatException e) {
                sender.sendMessage(ChatColor.RED + "'" + valueString + "' is not a valid number");
                return false;
            }
            if (value < 1 && !args[1].equalsIgnoreCase("set")) {
                sender.sendMessage(ChatColor.RED + "The number you have entered (" + value + ") is too small, it must be at least 1");
                return false;
            }
            String playerName = args[2];
            if (playerName.length() > 16) {
                sender.sendMessage(ChatColor.RED + "'" + playerName + "' is too long for a player name");
                return false;
            }
            Score score = objective.getScore(playerName);
            int newScore;
            if (args[1].equalsIgnoreCase("set")) {
                newScore = value;
            } else if (args[1].equalsIgnoreCase("add")) {
                newScore = score.getScore() + value;
            } else {
                newScore = score.getScore() - value;
            }
            score.setScore(newScore);
            sender.sendMessage("Set score of " + objectiveName + " for player " + playerName + " to " + newScore);
        } else if (args[1].equalsIgnoreCase("reset")) {
            if (args.length != 3) {
                sender.sendMessage(ChatColor.RED + "/scoreboard players reset <player>");
                return false;
            }
            String playerName = args[2];
            if (playerName.length() > 16) {
                sender.sendMessage(ChatColor.RED + "'" + playerName + "' is too long for a player name");
                return false;
            }
            mainScoreboard.resetScores(playerName);
            sender.sendMessage("Reset all scores of player " + playerName);
        } else if (args[1].equalsIgnoreCase("list")) {
            if (args.length > 3) {
                sender.sendMessage(ChatColor.RED + "/scoreboard players list <player>");
                return false;
            }
            if (args.length == 2) {
                Set<String> entries = mainScoreboard.getEntries();
                if (entries.isEmpty()) {
                    sender.sendMessage(ChatColor.RED + "There are no tracked players on the scoreboard");
                } else {
                    sender.sendMessage(ChatColor.DARK_GREEN + "Showing " + entries.size() + " tracked players on the scoreboard");
                    sender.sendMessage(stringCollectionToString(entries));
                }
            } else {
                String playerName = args[2];
                if (playerName.length() > 16) {
                    sender.sendMessage(ChatColor.RED + "'" + playerName + "' is too long for a player name");
                    return false;
                }
                Set<Score> scores = mainScoreboard.getScores(playerName);
                if (scores.isEmpty()) {
                    sender.sendMessage(ChatColor.RED + "Player " + playerName + " has no scores recorded");
                } else {
                    sender.sendMessage(ChatColor.DARK_GREEN + "Showing " + scores.size() + " tracked objective(s) for " + playerName);
                    for (Score score : scores) {
                        sender.sendMessage("- " + score.getObjective().getDisplayName() + ": " + score.getScore() + " (" + score.getObjective().getName() + ")");
                    }
                }
            }
        }
    } else if (args[0].equalsIgnoreCase("teams")) {
        if (args.length == 1) {
            sender.sendMessage(ChatColor.RED + "/scoreboard teams <list|add|remove|empty|join|leave|option>");
            return false;
        }
        if (args[1].equalsIgnoreCase("list")) {
            if (args.length == 2) {
                Set<Team> teams = mainScoreboard.getTeams();
                if (teams.isEmpty()) {
                    sender.sendMessage(ChatColor.RED + "There are no teams registered on the scoreboard");
                } else {
                    sender.sendMessage(ChatColor.DARK_GREEN + "Showing " + teams.size() + " teams on the scoreboard");
                    for (Team team : teams) {
                        sender.sendMessage("- " + team.getName() + ": '" + team.getDisplayName() + "' has " + team.getSize() + " players");
                    }
                }
            } else if (args.length == 3) {
                String teamName = args[2];
                Team team = mainScoreboard.getTeam(teamName);
                if (team == null) {
                    sender.sendMessage(ChatColor.RED + "No team was found by the name '" + teamName + "'");
                } else {
                    Set<OfflinePlayer> players = team.getPlayers();
                    if (players.isEmpty()) {
                        sender.sendMessage(ChatColor.RED + "Team " + team.getName() + " has no players");
                    } else {
                        sender.sendMessage(ChatColor.DARK_GREEN + "Showing " + players.size() + " player(s) in team " + team.getName());
                        sender.sendMessage(offlinePlayerSetToString(players));
                    }
                }
            } else {
                sender.sendMessage(ChatColor.RED + "/scoreboard teams list [name]");
                return false;
            }
        } else if (args[1].equalsIgnoreCase("add")) {
            if (args.length < 3) {
                sender.sendMessage(ChatColor.RED + "/scoreboard teams add <name> [display name ...]");
                return false;
            }
            String name = args[2];
            if (name.length() > 16) {
                sender.sendMessage(ChatColor.RED + "The name '" + name + "' is too long for a team, it can be at most 16 characters long");
            } else if (mainScoreboard.getTeam(name) != null) {
                sender.sendMessage(ChatColor.RED + "A team with the name '" + name + "' already exists");
            } else {
                String displayName = null;
                if (args.length > 3) {
                    displayName = StringUtils.join(ArrayUtils.subarray(args, 3, args.length), ' ');
                    if (displayName.length() > 32) {
                        sender.sendMessage(ChatColor.RED + "The display name '" + displayName + "' is too long for a team, it can be at most 32 characters long");
                        return false;
                    }
                }
                Team team = mainScoreboard.registerNewTeam(name);
                if (displayName != null && displayName.length() > 0) {
                    team.setDisplayName(displayName);
                }
                sender.sendMessage("Added new team '" + team.getName() + "' successfully");
            }
        } else if (args[1].equalsIgnoreCase("remove")) {
            if (args.length != 3) {
                sender.sendMessage(ChatColor.RED + "/scoreboard teams remove <name>");
                return false;
            }
            String name = args[2];
            Team team = mainScoreboard.getTeam(name);
            if (team == null) {
                sender.sendMessage(ChatColor.RED + "No team was found by the name '" + name + "'");
            } else {
                team.unregister();
                sender.sendMessage("Removed team " + name);
            }
        } else if (args[1].equalsIgnoreCase("empty")) {
            if (args.length != 3) {
                sender.sendMessage(ChatColor.RED + "/scoreboard teams clear <name>");
                return false;
            }
            String name = args[2];
            Team team = mainScoreboard.getTeam(name);
            if (team == null) {
                sender.sendMessage(ChatColor.RED + "No team was found by the name '" + name + "'");
            } else {
                Set<OfflinePlayer> players = team.getPlayers();
                if (players.isEmpty()) {
                    sender.sendMessage(ChatColor.RED + "Team " + team.getName() + " is already empty, cannot remove nonexistant players");
                } else {
                    for (OfflinePlayer player : players) {
                        team.removePlayer(player);
                    }
                    sender.sendMessage("Removed all " + players.size() + " player(s) from team " + team.getName());
                }
            }
        } else if (args[1].equalsIgnoreCase("join")) {
            if ((sender instanceof Player) ? args.length < 3 : args.length < 4) {
                sender.sendMessage(ChatColor.RED + "/scoreboard teams join <team> [player...]");
                return false;
            }
            String teamName = args[2];
            Team team = mainScoreboard.getTeam(teamName);
            if (team == null) {
                sender.sendMessage(ChatColor.RED + "No team was found by the name '" + teamName + "'");
            } else {
                Set<String> addedPlayers = new HashSet<String>();
                if ((sender instanceof Player) && args.length == 3) {
                    team.addPlayer((Player) sender);
                    addedPlayers.add(sender.getName());
                } else {
                    for (int i = 3; i < args.length; i++) {
                        String playerName = args[i];
                        OfflinePlayer offlinePlayer;
                        Player player = Bukkit.getPlayerExact(playerName);
                        if (player != null) {
                            offlinePlayer = player;
                        } else {
                            offlinePlayer = Bukkit.getOfflinePlayer(playerName);
                        }
                        team.addPlayer(offlinePlayer);
                        addedPlayers.add(offlinePlayer.getName());
                    }
                }
                sender.sendMessage("Added " + addedPlayers.size() + " player(s) to team " + team.getName() + ": " + stringCollectionToString(addedPlayers));
            }
        } else if (args[1].equalsIgnoreCase("leave")) {
            if (!(sender instanceof Player) && args.length < 3) {
                sender.sendMessage(ChatColor.RED + "/scoreboard teams leave [player...]");
                return false;
            }
            Set<String> left = new HashSet<String>();
            Set<String> noTeam = new HashSet<String>();
            if ((sender instanceof Player) && args.length == 2) {
                Team team = mainScoreboard.getPlayerTeam((Player) sender);
                if (team != null) {
                    team.removePlayer((Player) sender);
                    left.add(sender.getName());
                } else {
                    noTeam.add(sender.getName());
                }
            } else {
                for (int i = 2; i < args.length; i++) {
                    String playerName = args[i];
                    OfflinePlayer offlinePlayer;
                    Player player = Bukkit.getPlayerExact(playerName);
                    if (player != null) {
                        offlinePlayer = player;
                    } else {
                        offlinePlayer = Bukkit.getOfflinePlayer(playerName);
                    }
                    Team team = mainScoreboard.getPlayerTeam(offlinePlayer);
                    if (team != null) {
                        team.removePlayer(offlinePlayer);
                        left.add(offlinePlayer.getName());
                    } else {
                        noTeam.add(offlinePlayer.getName());
                    }
                }
            }
            if (!left.isEmpty()) {
                sender.sendMessage("Removed " + left.size() + " player(s) from their teams: " + stringCollectionToString(left));
            }
            if (!noTeam.isEmpty()) {
                sender.sendMessage("Could not remove " + noTeam.size() + " player(s) from their teams: " + stringCollectionToString(noTeam));
            }
        } else if (args[1].equalsIgnoreCase("option")) {
            if (args.length != 4 && args.length != 5) {
                sender.sendMessage(ChatColor.RED + "/scoreboard teams option <team> <friendlyfire|color|seefriendlyinvisibles> <value>");
                return false;
            }
            String teamName = args[2];
            Team team = mainScoreboard.getTeam(teamName);
            if (team == null) {
                sender.sendMessage(ChatColor.RED + "No team was found by the name '" + teamName + "'");
                return false;
            }
            String option = args[3].toLowerCase();
            if (!option.equals("friendlyfire") && !option.equals("color") && !option.equals("seefriendlyinvisibles")) {
                sender.sendMessage(ChatColor.RED + "/scoreboard teams option <team> <friendlyfire|color|seefriendlyinvisibles> <value>");
                return false;
            }
            if (args.length == 4) {
                if (option.equals("color")) {
                    sender.sendMessage(ChatColor.RED + "Valid values for option color are: " + stringCollectionToString(TEAMS_OPTION_COLOR.keySet()));
                } else {
                    sender.sendMessage(ChatColor.RED + "Valid values for option " + option + " are: true and false");
                }
            } else {
                String value = args[4].toLowerCase();
                if (option.equals("color")) {
                    ChatColor color = TEAMS_OPTION_COLOR.get(value);
                    if (color == null) {
                        sender.sendMessage(ChatColor.RED + "Valid values for option color are: " + stringCollectionToString(TEAMS_OPTION_COLOR.keySet()));
                        return false;
                    }
                    team.setPrefix(color.toString());
                    team.setSuffix(ChatColor.RESET.toString());
                } else {
                    if (!value.equals("true") && !value.equals("false")) {
                        sender.sendMessage(ChatColor.RED + "Valid values for option " + option + " are: true and false");
                        return false;
                    }
                    if (option.equals("friendlyfire")) {
                        team.setAllowFriendlyFire(value.equals("true"));
                    } else {
                        team.setCanSeeFriendlyInvisibles(value.equals("true"));
                    }
                }
                sender.sendMessage("Set option " + option + " for team " + team.getName() + " to " + value);
            }
        }
    } else {
        sender.sendMessage(ChatColor.RED + "Usage: /scoreboard <objectives|players|teams>");
        return false;
    }
    return true;
}
Also used : Player(org.bukkit.entity.Player) OfflinePlayer(org.bukkit.OfflinePlayer) Set(java.util.Set) HashSet(java.util.HashSet) Objective(org.bukkit.scoreboard.Objective) Score(org.bukkit.scoreboard.Score) Scoreboard(org.bukkit.scoreboard.Scoreboard) DisplaySlot(org.bukkit.scoreboard.DisplaySlot) OfflinePlayer(org.bukkit.OfflinePlayer) Team(org.bukkit.scoreboard.Team) ChatColor(org.bukkit.ChatColor) HashSet(java.util.HashSet)

Example 23 with Objective

use of org.bukkit.scoreboard.Objective in project EliteMobs by MagmaGuy.

the class SimpleScoreboard method lazyScoreboard.

public static Scoreboard lazyScoreboard(Player player, String displayName, List<String> scoreboardContents) {
    Scoreboard scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
    int lineCount = Math.min(scoreboardContents.size(), 15);
    Objective objective = scoreboard.registerNewObjective("test", "dummy", displayName);
    objective.setDisplaySlot(DisplaySlot.SIDEBAR);
    for (int i = 0; i < lineCount; i++) {
        String scoreString = scoreboardContents.get(i);
        if (scoreString.length() > 40)
            scoreString = scoreString.substring(0, 39);
        Score score = objective.getScore(scoreString);
        score.setScore(i);
    }
    player.setScoreboard(scoreboard);
    return scoreboard;
}
Also used : Objective(org.bukkit.scoreboard.Objective) Score(org.bukkit.scoreboard.Score) Scoreboard(org.bukkit.scoreboard.Scoreboard)

Example 24 with Objective

use of org.bukkit.scoreboard.Objective in project Glowstone by GlowstoneMC.

the class GlowLivingEntity method setHealth.

// //////////////////////////////////////////////////////////////////////////
// Health
@Override
public void setHealth(double health) {
    if (health < 0) {
        health = 0;
    }
    if (health > getMaxHealth()) {
        health = getMaxHealth();
    }
    this.health = health;
    metadata.set(MetadataIndex.HEALTH, (float) health);
    for (Objective objective : getServer().getScoreboardManager().getMainScoreboard().getObjectivesByCriteria(Criterias.HEALTH)) {
        objective.getScore(getName()).setScore((int) health);
    }
    if (health > 0) {
        return;
    }
    if (this.tryUseTotem()) {
        return;
    }
    // Killed
    active = false;
    Sound deathSound = getDeathSound();
    if (deathSound != null && !isSilent()) {
        world.playSound(location, deathSound, getSoundVolume(), getSoundPitch());
    }
    playEffectKnownAndSelf(EntityEffect.DEATH);
    if (this instanceof GlowPlayer) {
        GlowPlayer player = (GlowPlayer) this;
        List<ItemStack> items = null;
        boolean dropInventory = !world.getGameRuleMap().getBoolean(GameRules.KEEP_INVENTORY);
        if (dropInventory) {
            items = Arrays.stream(player.getInventory().getContents()).filter(stack -> !InventoryUtil.isEmpty(stack)).collect(Collectors.toList());
            player.getInventory().clear();
        }
        PlayerDeathEvent event = new PlayerDeathEvent(player, items, 0, player.getDisplayName() + " died.");
        EventFactory.getInstance().callEvent(event);
        server.broadcastMessage(event.getDeathMessage());
        if (dropInventory) {
            for (ItemStack item : items) {
                world.dropItemNaturally(getLocation(), item);
            }
        }
        player.setShoulderEntityRight(null);
        player.setShoulderEntityLeft(null);
        player.incrementStatistic(Statistic.DEATHS);
    } else {
        EntityDeathEvent deathEvent = new EntityDeathEvent(this, new ArrayList<>());
        if (world.getGameRuleMap().getBoolean(GameRules.DO_MOB_LOOT)) {
            LootData data = LootingManager.generate(this);
            deathEvent.getDrops().addAll(data.getItems());
            // Only drop experience when hit by a player within 5 seconds (100 game ticks)
            if (ticksLived - playerDamageTick <= 100 && data.getExperience() > 0) {
                ThreadLocalRandom random = ThreadLocalRandom.current();
                ExperienceSplitter.forEachCut(data.getExperience(), exp -> {
                    double modX = random.nextDouble() - 0.5;
                    double modZ = random.nextDouble() - 0.5;
                    Location xpLocation = new Location(world, location.getBlockX() + 0.5 + modX, location.getY(), location.getBlockZ() + 0.5 + modZ);
                    GlowExperienceOrb orb = (GlowExperienceOrb) world.spawnEntity(xpLocation, EntityType.EXPERIENCE_ORB);
                    orb.setExperience(exp);
                    orb.setSourceEntityId(this.getUniqueId());
                    if (getLastDamager() != null) {
                        orb.setTriggerEntityId(getLastDamager().getUniqueId());
                    }
                });
            }
        }
        deathEvent = EventFactory.getInstance().callEvent(deathEvent);
        for (ItemStack item : deathEvent.getDrops()) {
            world.dropItemNaturally(getLocation(), item);
        }
    }
    // to help keep code maintainable
    if (this instanceof GlowSlime) {
        GlowSlime slime = (GlowSlime) this;
        int size = slime.getSize();
        if (size > 1) {
            int count = 2 + ThreadLocalRandom.current().nextInt(3);
            SlimeSplitEvent event = EventFactory.getInstance().callEvent(new SlimeSplitEvent(slime, count));
            if (event.isCancelled() || event.getCount() <= 0) {
                return;
            }
            count = event.getCount();
            for (int i = 0; i < count; ++i) {
                Location spawnLoc = getLocation().clone();
                spawnLoc.add(ThreadLocalRandom.current().nextDouble(0.5, 3), 0, ThreadLocalRandom.current().nextDouble(0.5, 3));
                GlowSlime splitSlime = (GlowSlime) world.spawnEntity(spawnLoc, EntityType.SLIME);
                // Make the split slime the same name as the killed slime.
                if (getCustomName() != null && !getCustomName().isEmpty()) {
                    splitSlime.setCustomName(getCustomName());
                }
                splitSlime.setSize(size / 2);
            }
        }
    }
}
Also used : EntityDeathEvent(org.bukkit.event.entity.EntityDeathEvent) GlowExperienceOrb(net.glowstone.entity.objects.GlowExperienceOrb) Sound(org.bukkit.Sound) PlayerDeathEvent(org.bukkit.event.entity.PlayerDeathEvent) LootData(net.glowstone.util.loot.LootData) Objective(org.bukkit.scoreboard.Objective) ThreadLocalRandom(java.util.concurrent.ThreadLocalRandom) GlowSlime(net.glowstone.entity.monster.GlowSlime) SlimeSplitEvent(org.bukkit.event.entity.SlimeSplitEvent) ItemStack(org.bukkit.inventory.ItemStack) Location(org.bukkit.Location)

Example 25 with Objective

use of org.bukkit.scoreboard.Objective in project Glowstone by GlowstoneMC.

the class GlowArmorStand method setHealth.

private void setHealth(double health, boolean drop) {
    if (health < 0) {
        health = 0;
    }
    if (health > getMaxHealth()) {
        health = getMaxHealth();
    }
    this.health = health;
    metadata.set(MetadataIndex.HEALTH, (float) health);
    for (Objective objective : getServer().getScoreboardManager().getMainScoreboard().getObjectivesByCriteria(Criterias.HEALTH)) {
        objective.getScore(getName()).setScore((int) health);
    }
    if (health == 0) {
        kill(drop);
    }
}
Also used : Objective(org.bukkit.scoreboard.Objective)

Aggregations

Objective (org.bukkit.scoreboard.Objective)27 Scoreboard (org.bukkit.scoreboard.Scoreboard)10 Team (org.bukkit.scoreboard.Team)8 Player (org.bukkit.entity.Player)6 Score (org.bukkit.scoreboard.Score)4 CoreStateInitException (com.solinia.solinia.Exceptions.CoreStateInitException)2 ISoliniaPlayer (com.solinia.solinia.Interfaces.ISoliniaPlayer)2 List (java.util.List)2 Denizen (com.denizenscript.denizen.Denizen)1 BukkitScriptEvent (com.denizenscript.denizen.events.BukkitScriptEvent)1 NMSHandler (com.denizenscript.denizen.nms.NMSHandler)1 AssignmentTrait (com.denizenscript.denizen.npc.traits.AssignmentTrait)1 com.denizenscript.denizen.objects (com.denizenscript.denizen.objects)1 PlayerTag (com.denizenscript.denizen.objects.PlayerTag)1 BossBarCommand (com.denizenscript.denizen.scripts.commands.server.BossBarCommand)1 AssignmentScriptContainer (com.denizenscript.denizen.scripts.containers.core.AssignmentScriptContainer)1 CommandScriptHelper (com.denizenscript.denizen.scripts.containers.core.CommandScriptHelper)1 BukkitTagContext (com.denizenscript.denizen.tags.BukkitTagContext)1 ScoreboardHelper (com.denizenscript.denizen.utilities.ScoreboardHelper)1 Settings (com.denizenscript.denizen.utilities.Settings)1