/******************************************************************************* * 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.commands.skilltree; import static de.tobiyas.racesandclasses.translation.languages.Keys.only_players; import java.util.Collection; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import de.tobiyas.racesandclasses.RacesAndClasses; import de.tobiyas.racesandclasses.APIs.LanguageAPI; import de.tobiyas.racesandclasses.commands.AbstractCommand; import de.tobiyas.racesandclasses.datacontainer.traitholdercontainer.TraitHolderCombinder; import de.tobiyas.racesandclasses.datacontainer.traitholdercontainer.gui.SkillTreeGui; import de.tobiyas.racesandclasses.playermanagement.player.RaCPlayer; import de.tobiyas.racesandclasses.playermanagement.player.RaCPlayerManager; import de.tobiyas.racesandclasses.traitcontainer.interfaces.markerinterfaces.Trait; import de.tobiyas.racesandclasses.translation.languages.Keys; import de.tobiyas.racesandclasses.util.consts.PermissionNode; public class CommandExecutor_SkillTree extends AbstractCommand { private RacesAndClasses plugin; public CommandExecutor_SkillTree(){ super("skilltree", new String[]{"skt"}); plugin = RacesAndClasses.getPlugin(); this.description = "Opens the SkillTree GUI"; } @Override public boolean onInternalCommand(CommandSender sender, Command command, String label, String[] args) { //Clears the Points: if(args.length == 2 && args[0].equals("clear") && sender.hasPermission(PermissionNode.skillTreeClear)){ RaCPlayer player = RaCPlayerManager.get().getPlayerByName(args[1]); if(player == null){ LanguageAPI.sendTranslatedMessage(sender, Keys.player_not_exist, "player", args[1]); return true; } //Clear and rescan! player.getSkillTreeManager().clearSkills(); player.getSpellManager().rescan(); player.getArrowManager().rescanPlayer(); sender.sendMessage(ChatColor.GREEN + "Cleared."); return true; } //If no player -> return. if(!(sender instanceof Player)){ sender.sendMessage(LanguageAPI.translateIgnoreError(only_players).build()); return true; } //If disabled -> send message! if(!plugin.getConfigManager().getGeneralConfig().isConfig_useSkillSystem()){ LanguageAPI.sendTranslatedMessage(sender, Keys.something_disabled, "value", "SkillTree"); return true; } Player player = (Player) sender; RaCPlayer racPlayer = RaCPlayerManager.get().getPlayer(player); Collection<Trait> traits = TraitHolderCombinder.getAllTraitsOfPlayer(racPlayer); boolean hasAnySkillable = false; for(Trait trait : traits){ if(!trait.isPermanentSkill() && trait.isVisible() && trait.getSkillPointCost(1) > 0) { hasAnySkillable = true; } } //Open gui or send error message: if(hasAnySkillable) player.openInventory(new SkillTreeGui(player)); else LanguageAPI.sendTranslatedMessage(sender, Keys.no_traits); return true; } }