package com.nicewuerfel.blockown.command; import com.google.common.base.Optional; import com.nicewuerfel.blockown.InvalidWorldNameException; import com.nicewuerfel.blockown.Message; import com.nicewuerfel.blockown.OwnedBlock; import com.nicewuerfel.blockown.Setting; import com.nicewuerfel.blockown.User; import com.nicewuerfel.blockown.WaitType; import com.nicewuerfel.blockown.database.Database; import com.nicewuerfel.blockown.protection.Protection; import org.bukkit.block.Block; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import java.util.Set; public class CE_ShowOwner extends CommandExecutor { private static final String PARAM_ENTITY = "e"; private static final String PARAM_BLOCK = "b"; public CE_ShowOwner(Setting setting, Database database, Protection protection) { super(setting, database, protection); } @Override public boolean onCommand(CommandSender sender, Command cmd, String cmdName, String[] args) { if (!isPlayer(sender)) { return true; } Player player = (Player) sender; if (!setting.isEnabledIn(player.getWorld())) { player.sendMessage(Message.COMMAND_DISABLED_IN_WORLD.getMessage()); return true; } User user = User.getInstance(player.getUniqueId()); if (args.length == 1) { if (args[0].equalsIgnoreCase(PARAM_ENTITY)) { if (setting.isWaiting(user, WaitType.SHOW_OWNER_ENTITY)) { setting.removeWaiting(user); player.sendMessage(Message.COMMAND_NO_MORE_CLICK_WAITING.getMessage()); } else { setting.addWaiting(user, WaitType.SHOW_OWNER_ENTITY); player.sendMessage(Message.COMMAND_SHOWOWNER_CLICK_ENTITY.getMessage()); } return true; } if (args[0].equalsIgnoreCase(PARAM_BLOCK)) { if (setting.isWaiting(user, WaitType.SHOW_OWNER_BLOCK)) { setting.removeWaiting(user); player.sendMessage(Message.COMMAND_NO_MORE_CLICK_WAITING.getMessage()); } else { setting.addWaiting(user, WaitType.SHOW_OWNER_BLOCK); player.sendMessage(Message.COMMAND_SHOWOWNER_CLICK_BLOCK.getMessage()); } return true; } } Block block = player.getTargetBlock((Set<org.bukkit.Material>) null, 20); if (block != null) { OwnedBlock ownedBlock = OwnedBlock.newInstance(block); Optional<User> owner = database.getOwner(ownedBlock); try { if (!owner.isPresent()) { player.sendMessage(Message.COMMAND_SHOWOWNER_BLOCK_UNOWNED .getMessage(ownedBlock.getMaterial().getName())); } else { player.sendMessage(Message.COMMAND_SHOWOWNER_BLOCK_FOUND.getMessage(owner.get().getName(), ownedBlock.getMaterial().getName())); } return true; } catch (InvalidWorldNameException e) { // Should never happen getOutput().printException( "Exception that shouldn't happen happened in " + getClass().getName(), e); return false; } } else { player.sendMessage(Message.COMMAND_NOTARGET.getMessage()); return false; } } }