/******************************************************************************* * 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.general; import java.util.HashSet; import java.util.Set; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import de.tobiyas.racesandclasses.RacesAndClasses; import de.tobiyas.racesandclasses.APIs.LanguageAPI; import de.tobiyas.racesandclasses.commands.AbstractCommand; import de.tobiyas.racesandclasses.datacontainer.traitholdercontainer.AbstractTraitHolder; import de.tobiyas.racesandclasses.playermanagement.player.RaCPlayer; import de.tobiyas.racesandclasses.playermanagement.player.RaCPlayerManager; import de.tobiyas.racesandclasses.util.consts.PermissionNode; import de.tobiyas.racesandclasses.util.items.ItemUtils.ItemQuality; public class CommandExecutor_PlayerInfo extends AbstractCommand { private RacesAndClasses plugin; public CommandExecutor_PlayerInfo(){ super("playerinfo"); plugin = RacesAndClasses.getPlugin(); } @Override public boolean onInternalCommand(CommandSender sender, Command command, String label, String[] args) { if(!plugin.getPermissionManager().checkPermissions(sender, PermissionNode.playerInfos)) return true; Player player = null; if(args.length == 0){ if(sender instanceof Player){ player = (Player) sender; }else{ sender.sendMessage(ChatColor.RED + LanguageAPI.translateIgnoreError("needs_1_arg") .replace("command", "/playerinfo <playername>") .build()); return true; } }else{ RaCPlayer racPlayer = RaCPlayerManager.get().getPlayerByName(args[0]); player = racPlayer == null ? null : racPlayer.getPlayer(); } if(player == null){ sender.sendMessage(ChatColor.RED + LanguageAPI.translateIgnoreError("player_not_exist") .replace("player", args[0]) .build()); return true; } RaCPlayer racPlayer = RaCPlayerManager.get().getPlayer(player); AbstractTraitHolder raceContainer = racPlayer.getRace(); AbstractTraitHolder classContainer = racPlayer.getclass(); String className = "None"; String raceName = "None"; if(classContainer != null){ className = classContainer.getDisplayName(); } if(raceContainer != null){ raceName = raceContainer.getDisplayName(); } boolean hasPermForLocation = plugin.getPermissionManager().checkPermissionsSilent(sender, PermissionNode.playerInfosLocation); boolean hasPermForOthers = plugin.getPermissionManager().checkPermissionsSilent(sender, PermissionNode.playerInfosOthers); sender.sendMessage(ChatColor.YELLOW + "=====" + ChatColor.RED + "PLAYER: " + ChatColor.AQUA + player.getName() + ChatColor.YELLOW + "====="); sender.sendMessage(ChatColor.YELLOW + "Race: " + ChatColor.RED + raceName); sender.sendMessage(ChatColor.YELLOW + "Class: " + ChatColor.RED + className); if(args.length == 0){ Set<ItemQuality> armorPerms = new HashSet<ItemQuality>(); if(racPlayer.getRace() != null) armorPerms.addAll(racPlayer.getRace().getArmorPerms()); if(racPlayer.getclass() != null) armorPerms.addAll(racPlayer.getclass().getArmorPerms()); String allowed = ""; for(ItemQuality quality : armorPerms){ allowed += ", " + quality.getName(); } if(!allowed.isEmpty()) allowed = allowed.substring(2); if(allowed.isEmpty()) allowed = "None"; sender.sendMessage(ChatColor.YELLOW + "Allowed armor: " + ChatColor.RED + allowed); } if(hasPermForLocation){ sender.sendMessage(ChatColor.YELLOW + "---L--O--C--A--T--I--O--N---"); sender.sendMessage(ChatColor.YELLOW + "World: " + ChatColor.AQUA + player.getWorld().getName()); Location loc = player.getLocation(); sender.sendMessage(ChatColor.YELLOW + "Position - X:" + ChatColor.AQUA + loc.getBlockX() + ChatColor.YELLOW + " Y:" + ChatColor.AQUA + loc.getBlockY() + ChatColor.YELLOW + " Z:" + ChatColor.AQUA + loc.getBlockZ()); } if(hasPermForOthers){ ItemStack inHand = player.getInventory().getItem(player.getInventory().getHeldItemSlot()); sender.sendMessage(ChatColor.YELLOW + "---O--T--H--E--R---"); sender.sendMessage(ChatColor.YELLOW + "Item in Hand: " + ChatColor.AQUA + inHand.getType().toString()); } return true; } }