/******************************************************************************* * Copyright 2014 Tobias Welther * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package de.tobiyas.racesandclasses.playermanagement.leveling.manager; import org.bukkit.Bukkit; import com.sucy.skill.SkillAPI; import com.sucy.skill.api.player.PlayerClass; import com.sucy.skill.api.player.PlayerData; import de.tobiyas.racesandclasses.playermanagement.player.RaCPlayer; import de.tobiyas.racesandclasses.saving.PlayerSavingData; public class SkillAPILevelManager extends AbstractPlayerLevelingSystem { /** * Sets up the Plugin. */ public SkillAPILevelManager(RaCPlayer player, PlayerSavingData data) { super(player, data); } @Override public int getCurrentLevel() { if(!isSkillAPIPresent()) return 1; PlayerData data = SkillAPI.getPlayerData(player.getPlayer()); int level = 0; for(PlayerClass clazz : data.getClasses()) level += clazz.getLevel(); return level; } @Override public int getCurrentExpOfLevel() { if(!isSkillAPIPresent()) return 1; return 0; //return getSkillAPI().getPlayer(player.getName()).getExp(); } @Override public void setCurrentLevel(int level) { //not supported by Skill API } @Override public void setCurrentExpOfLevel(int currentExpOfLevel) { //not supported by Skill API } @Override public boolean addExp(int exp) { if(!isSkillAPIPresent()) return false; //getSkillAPI().getPlayer(player.getName()).giveExp(exp); return false; } @Override public boolean removeExp(int exp) { if(!isSkillAPIPresent()) return false; //getSkillAPI().getPlayer(player.getName()).loseExp(exp); return false; } @Override public void checkLevelChanged() { //nothing to do. } @Override public boolean canRemove(int toRemove) { return true; } /** * Checks if the Skill API is present. * * @return true if is present, false if not. */ private boolean isSkillAPIPresent(){ try{ SkillAPI skillAPI = getSkillAPI(); if(skillAPI == null) return false; return skillAPI.isEnabled(); }catch(Throwable exp){ return false; } } /** * Returns the Skill API class. * * @return the Skill API class or Null. */ private SkillAPI getSkillAPI(){ try{ return (SkillAPI) Bukkit.getPluginManager().getPlugin("SkillAPI"); }catch(Throwable exp){ return null; } } @Override public void addLevel(int value) { //getSkillAPI().getPlayer(player.getPlayer()).levelUp(value); } @Override public void removeLevel(int value) { //TODO don't know how... :( //getSkillAPI().getPlayer(player.getPlayer()).levelUp(-1); } @Override public int getMaxEXPToNextLevel() { //PlayerSkills skills = getSkillAPI().getPlayer(player.getPlayer()); //return skills.getExp() + skills.getExpToNextLevel(); return 1; } }