Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.usubzero.meepachievements.achievements;
- import com.usubzero.meepachievements.MeepAchievements;
- import com.usubzero.meepachievements.exceptions.*;
- import com.usubzero.meepachievements.storage.MySQL;
- import com.usubzero.meepachievements.util.ItemBuilder;
- import com.usubzero.meepachievements.util.Util;
- import org.bukkit.entity.Player;
- import org.bukkit.inventory.ItemStack;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Set;
- /**
- * Created by ethanfine on 6/25/15.
- */
- public class AchievementHandler {
- public static List<Achievement> achievements = new ArrayList<>();
- /**
- *
- * @return list of all enabled servers
- */
- public static Set<String> getServers() {
- return MeepAchievements.get().getConfig()
- .getConfigurationSection("Servers").getKeys(false);
- }
- /**
- *
- * @param player
- * @return list of all acquired achievements for a player
- */
- public static List<Achievement> getAchievements(Player player) {
- return Util.listAchievements(
- Util.serializeAchievements(MySQL.getAchievements(player.getName())));
- }
- /**
- *
- * @param server
- * @return list of all registered achievements for a specific server
- */
- public static List<Achievement> getAchievements(String server) {
- List<Achievement> serverAchievements = new ArrayList<>();
- for(Achievement achievement : achievements) {
- if(achievement.getServer().equals(server)) {
- serverAchievements.add(achievement);
- }
- }
- return serverAchievements;
- }
- /**
- *
- * @param player
- * @param server
- * @return list of all acquired achievements for a player on a specific server
- * @throws ServerNotFoundException
- */
- public static List<Achievement> getAchievements(Player player, String server)
- throws ServerNotFoundException {
- if(!getServers().contains(server)) {
- throw new ServerNotFoundException("Server '" + server +"' is not associated with MeepAchievements.");
- }
- List<Achievement> playerAchievements = new ArrayList<>();
- for(Achievement achievement : getAchievements(player)) {
- if(achievement.getServer().equalsIgnoreCase(server)) {
- playerAchievements.add(achievement);
- }
- }
- return playerAchievements;
- }
- /**
- *
- * @param id
- * @return an achievement by it's id
- * @throws AchievementNotFoundException
- */
- public static Achievement getAchievement(int id)
- throws AchievementNotFoundException {
- for(Achievement achievement : achievements) {
- if(achievement.getId() == id) {
- return achievement;
- }
- }
- throw new AchievementNotFoundException("Could not find achievement with ID '" + id +"'.");
- }
- /**
- *
- * @param achievementName
- * @return an achievement by it's name
- * @throws AchievementNotFoundException
- */
- public static Achievement getAchievement(String achievementName)
- throws AchievementNotFoundException {
- for(Achievement achievement : achievements) {
- if(achievement.getName().equalsIgnoreCase(achievementName)) {
- return achievement;
- }
- }
- throw new AchievementNotFoundException("Could not find achievement '" + achievementName +"'.");
- }
- /**
- * Register an achievement as accomplished for a player
- * @param player
- * @param achievementName
- * @param message
- * @param reward
- * @throws AchievementAccomplishedException
- * @throws AchievementNotFoundException
- */
- public static void achieve(Player player, String achievementName, boolean message, double reward)
- throws AchievementAccomplishedException, AchievementNotFoundException {
- if(getAchievement(achievementName) == null) {
- throw new AchievementNotFoundException("Could not find achievement '" + achievementName +"'.");
- }
- if(MySQL.hasAchievement(player.getName(), achievementName)) {
- throw new AchievementAccomplishedException (
- player.getName() +" has already met the '" + achievementName +"' achievement.");
- }
- MySQL.addAchievement(player.getName(), achievementName);
- MeepAchievements.getEconomy().depositPlayer(player, reward);
- if(message) {
- Util.sendMessage("&c" + player.getName() + " &fhas met the &c'" + achievementName + "' &fachievement!" +
- ((reward == 0) ? "" : " Reward: &c" + reward + " meebles"));
- }
- }
- /**
- * Unregister an achievement from a player
- * @param player
- * @param achievementName
- * @throws AchievementNotAccomplishedException
- * @throws AchievementNotFoundException
- */
- public static void unachieve(Player player, String achievementName)
- throws AchievementNotAccomplishedException, AchievementNotFoundException {
- if(getAchievement(achievementName) == null) {
- throw new AchievementNotFoundException("Could not find achievement '" + achievementName +"'.");
- }
- if(!MySQL.hasAchievement(player.getName(), achievementName)) {
- throw new AchievementNotAccomplishedException(
- player.getName() +" has not accomplished the '" + achievementName +"' achievement.");
- }
- MySQL.removeAchievement(player.getName(), achievementName);
- }
- /**
- * Create a new achievement
- * @param achievementName
- * @param server
- * @param description
- * @param itemStack
- * @throws AchievementExistsException
- * @throws ServerNotFoundException
- */
- public static void createAchievement(String achievementName, String server, String description, ItemStack itemStack)
- throws AchievementExistsException, ServerNotFoundException {
- if(!getServers().contains(server)) {
- throw new ServerNotFoundException("Server '" + server +"' is not associated with MeepAchievements.");
- }
- try {
- getAchievement(achievementName);
- throw new AchievementExistsException("Achievement '" + achievementName +"' already exists.");
- } catch (AchievementNotFoundException exception) {
- MySQL.createAchievement(achievementName, server, description, new ItemBuilder(itemStack));
- }
- }
- /**
- * Delete an existing achievement
- * @param achievementName
- * @throws AchievementNotFoundException
- */
- public static void deleteAchievement(String achievementName)
- throws AchievementNotFoundException {
- Achievement achievement = getAchievement(achievementName);
- if(achievement == null) {
- throw new AchievementNotFoundException("Could not find achievement '" + achievementName +"'.");
- }
- MySQL.deleteAchievement(achievementName);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment