Created
March 20, 2012 14:38
-
-
Save khobbits/2136285 to your computer and use it in GitHub Desktop.
listcmd
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.earth2me.essentials.commands; | |
import static com.earth2me.essentials.I18n._; | |
import com.earth2me.essentials.User; | |
import com.earth2me.essentials.Util; | |
import java.util.*; | |
import org.bukkit.Server; | |
import org.bukkit.command.CommandSender; | |
import org.bukkit.entity.Player; | |
public class Commandlist extends EssentialsCommand | |
{ | |
public Commandlist() | |
{ | |
super("list"); | |
} | |
@Override | |
public void run(final Server server, final CommandSender sender, final String commandLabel, final String[] args) throws Exception | |
{ | |
boolean showhidden = false; | |
if (sender instanceof Player) | |
{ | |
if (ess.getUser(sender).isAuthorized("essentials.list.hidden")) | |
{ | |
showhidden = true; | |
} | |
} | |
else | |
{ | |
showhidden = true; | |
} | |
int playerHidden = 0; | |
for (Player onlinePlayer : server.getOnlinePlayers()) | |
{ | |
if (ess.getUser(onlinePlayer).isHidden()) | |
{ | |
playerHidden++; | |
} | |
} | |
String online; | |
if (showhidden && playerHidden > 0) | |
{ | |
online = _("listAmountHidden", server.getOnlinePlayers().length - playerHidden, playerHidden, server.getMaxPlayers()); | |
} | |
else | |
{ | |
online = _("listAmount", server.getOnlinePlayers().length - playerHidden, server.getMaxPlayers()); | |
} | |
sender.sendMessage(online); | |
if (ess.getSettings().getSortListByGroups()) | |
{ | |
listByGroup(server, sender, args, showhidden); | |
} | |
else | |
{ | |
listUnsorted(server, sender, args, showhidden); | |
} | |
} | |
private void listByGroup(final Server server, final CommandSender sender, final String[] args, final boolean showhidden) | |
{ | |
Map<String, List<User>> sort = new HashMap<String, List<User>>(); | |
for (Player OnlinePlayer : server.getOnlinePlayers()) | |
{ | |
final User player = ess.getUser(OnlinePlayer); | |
if (player.isHidden() && !showhidden) | |
{ | |
continue; | |
} | |
final String group = player.getGroup(); | |
List<User> list = sort.get(group); | |
if (list == null) | |
{ | |
list = new ArrayList<User>(); | |
sort.put(group, list); | |
} | |
list.add(player); | |
} | |
final String[] groups = sort.keySet().toArray(new String[0]); | |
Arrays.sort(groups, String.CASE_INSENSITIVE_ORDER); | |
for (String group : groups) | |
{ | |
final StringBuilder groupString = new StringBuilder(); | |
groupString.append(_("listGroupTag", Util.replaceColor(group))); | |
final List<User> users = sort.get(group); | |
Collections.sort(users); | |
boolean first = true; | |
for (User user : users) | |
{ | |
if (!first) | |
{ | |
groupString.append(", "); | |
} | |
else | |
{ | |
first = false; | |
} | |
if (user.isAfk()) | |
{ | |
groupString.append(_("listAfkTag")); | |
} | |
if (user.isHidden()) | |
{ | |
groupString.append(_("listHiddenTag")); | |
} | |
groupString.append(user.getDisplayName()); | |
groupString.append("§f"); | |
} | |
sender.sendMessage(groupString.toString()); | |
} | |
} | |
private void listUnsorted(final Server server, final CommandSender sender, final String[] args, final boolean showhidden) | |
{ | |
final List<User> users = new ArrayList<User>(); | |
for (Player OnlinePlayer : server.getOnlinePlayers()) | |
{ | |
final User player = ess.getUser(OnlinePlayer); | |
if (player.isHidden() && !showhidden) | |
{ | |
continue; | |
} | |
users.add(player); | |
} | |
Collections.sort(users); | |
final StringBuilder onlineUsers = new StringBuilder(); | |
onlineUsers.append(_("connectedPlayers")); | |
boolean first = true; | |
for (User user : users) | |
{ | |
if (!first) | |
{ | |
onlineUsers.append(", "); | |
} | |
else | |
{ | |
first = false; | |
} | |
if (user.isAfk()) | |
{ | |
onlineUsers.append(_("listAfkTag")); | |
} | |
if (user.isHidden()) | |
{ | |
onlineUsers.append(_("listHiddenTag")); | |
} | |
onlineUsers.append(user.getDisplayName()); | |
onlineUsers.append("§f"); | |
} | |
sender.sendMessage(onlineUsers.toString()); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment