package codechicken.core; import com.mojang.authlib.GameProfile; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.Container; import net.minecraft.server.MinecraftServer; import net.minecraft.server.management.PlayerProfileCache.ProfileEntry; import net.minecraft.util.IChatComponent; import java.util.ArrayList; import java.util.List; import java.util.Locale; public class ServerUtils extends CommonUtils { public static MinecraftServer mc() { return MinecraftServer.getServer(); } public static EntityPlayerMP getPlayer(String playername) { return mc().getConfigurationManager().getPlayerByUsername(playername); } public static List<EntityPlayerMP> getPlayers() { return mc().getConfigurationManager().playerEntityList; } public static ArrayList<EntityPlayer> getPlayersInDimension(int dimension) { ArrayList<EntityPlayer> players = new ArrayList<EntityPlayer>(); for (EntityPlayer p : getPlayers()) { if (p.dimension == dimension) { players.add(p); } } return players; } public static void openSMPContainer(EntityPlayerMP player, Container container, IGuiPacketSender packetSender) { player.getNextWindowId(); player.closeContainer(); packetSender.sendPacket(player, player.currentWindowId); player.openContainer = container; player.openContainer.windowId = player.currentWindowId; player.openContainer.onCraftGuiOpened(player); } public static GameProfile getGameProfile(String username) { EntityPlayer player = getPlayer(username); if (player != null) { return player.getGameProfile(); } //try and access it in the cache without forcing a save username = username.toLowerCase(Locale.ROOT); ProfileEntry cachedEntry = (ProfileEntry) mc().getPlayerProfileCache().usernameToProfileEntryMap.get(username); if (cachedEntry != null) { return cachedEntry.getGameProfile(); } //load it from the cache return mc().getPlayerProfileCache().getGameProfileForUsername(username); } public static boolean isPlayerOP(String username) { GameProfile prof = getGameProfile(username); return prof != null && mc().getConfigurationManager().canSendCommands(prof); } public static boolean isPlayerOwner(String username) { return mc().isSinglePlayer() && mc().getServerOwner().equalsIgnoreCase(username); } public static void sendChatToAll(IChatComponent msg) { for (EntityPlayer p : getPlayers()) { p.addChatComponentMessage(msg); } } }