/** * This software is provided under the terms of the Minecraft Forge Public * License v1.0. */ package net.minecraftforge.common; import java.util.Arrays; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; import net.minecraft.stats.Achievement; public class AchievementPage { private String name; private LinkedList<Achievement> achievements; public AchievementPage(String name, Achievement... achievements) { this.name = name; this.achievements = new LinkedList<Achievement>(Arrays.asList(achievements)); } public String getName() { return name; } public List<Achievement> getAchievements() { return achievements; } private static LinkedList<AchievementPage> achievementPages = new LinkedList<AchievementPage>(); /** * Registers an achievement page. * @param page The page. */ public static void registerAchievementPage(AchievementPage page) { if (getAchievementPage(page.getName()) != null) { throw new RuntimeException("Duplicate achievement page name \"" + page.getName() + "\"!"); } achievementPages.add(page); } /** * Will return an achievement page by its index on the list. * @param index The page's index. * @return the achievement page corresponding to the index or null if invalid index */ public static AchievementPage getAchievementPage(int index) { return achievementPages.get(index); } /** * Will return an achievement page by its name. * @param name The page's name. * @return the achievement page with the given name or null if no such page */ public static AchievementPage getAchievementPage(String name) { for (AchievementPage page : achievementPages) { if (page.getName().equals(name)) { return page; } } return null; } /** * Will return the list of achievement pages. * @return the list's size */ public static Set<AchievementPage> getAchievementPages() { return new HashSet<AchievementPage>(achievementPages); } /** * Will return whether an achievement is in any page or not. * @param achievement The achievement. */ public static boolean isAchievementInPages(Achievement achievement) { for (AchievementPage page : achievementPages) { if (page.getAchievements().contains(achievement)) { return true; } } return false; } public static String getTitle(int index) { return index == -1 ? "Minecraft" : getAchievementPage(index).getName(); } }