Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Decompiler 192ms, total 422ms, lines 213 */
- package com.gamerforea.tabmod.client.gui;
- import com.gamerforea.tabmod.TabMod;
- import com.gamerforea.tabmod.util.PlayerData;
- import com.google.common.base.Function;
- import com.google.common.base.Strings;
- import com.google.common.collect.ComparisonChain;
- import com.google.common.collect.Lists;
- import com.google.common.collect.Ordering;
- import cpw.mods.fml.relauncher.Side;
- import cpw.mods.fml.relauncher.SideOnly;
- import java.util.Comparator;
- import java.util.Iterator;
- import java.util.List;
- import net.minecraft.client.Minecraft;
- import net.minecraft.client.entity.AbstractClientPlayer;
- import net.minecraft.client.gui.Gui;
- import net.minecraft.client.gui.GuiPlayerInfo;
- import net.minecraft.client.network.NetHandlerPlayClient;
- import net.minecraft.client.renderer.OpenGlHelper;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.scoreboard.Score;
- import net.minecraft.scoreboard.ScoreObjective;
- import net.minecraft.scoreboard.ScorePlayerTeam;
- import net.minecraft.util.EnumChatFormatting;
- import net.minecraft.util.ResourceLocation;
- import org.lwjgl.opengl.GL11;
- @SideOnly(Side.CLIENT)
- public final class GuiPlayerTabOverlay extends Gui {
- private static final boolean FORCE_DRAW_HEADS = true;
- private static final Ordering<GuiPlayerTabOverlay.ExtendedPlayerInfo> ENTRY_ORDERING = Ordering.from(new GuiPlayerTabOverlay.PlayerComparator());
- private final Minecraft mc = Minecraft.func_71410_x();
- public void renderPlayerlist(int width) {
- ScoreObjective scoreObjective = this.mc.field_71441_e.func_96441_U().func_96539_a(0);
- NetHandlerPlayClient handler = this.mc.field_71439_g.field_71174_a;
- List<GuiPlayerTabOverlay.ExtendedPlayerInfo> list = ENTRY_ORDERING.sortedCopy(Lists.transform(handler.field_147303_b, new Function<GuiPlayerInfo, GuiPlayerTabOverlay.ExtendedPlayerInfo>() {
- public GuiPlayerTabOverlay.ExtendedPlayerInfo apply(GuiPlayerInfo playerInfo) {
- return GuiPlayerTabOverlay.this.new ExtendedPlayerInfo(playerInfo);
- }
- // $FF: synthetic method
- // $FF: bridge method
- public Object apply(Object var1) {
- return this.apply((GuiPlayerInfo)var1);
- }
- }));
- int maxPlayers = Math.min(80, Math.min(list.size(), handler.field_147304_c));
- if (list.size() > maxPlayers) {
- list = list.subList(0, maxPlayers);
- }
- int maxNameWidth = 0;
- int maxScoreWidth = 0;
- Iterator var8 = list.iterator();
- int columnWidth;
- while(var8.hasNext()) {
- GuiPlayerTabOverlay.ExtendedPlayerInfo playerInfo = (GuiPlayerTabOverlay.ExtendedPlayerInfo)var8.next();
- int nameWidth = this.mc.field_71466_p.func_78256_a(playerInfo.getDisplayName());
- maxNameWidth = Math.max(maxNameWidth, nameWidth);
- if (scoreObjective != null) {
- columnWidth = this.mc.field_71466_p.func_78256_a(" " + playerInfo.getScore(scoreObjective).func_96652_c());
- maxScoreWidth = Math.max(maxScoreWidth, columnWidth);
- }
- }
- int rows = maxPlayers;
- int columns;
- for(columns = 1; rows > 20; rows = (maxPlayers + columns - 1) / columns) {
- ++columns;
- }
- boolean drawHeads = true;
- columnWidth = Math.min(columns * ((drawHeads ? 9 : 0) + maxNameWidth + maxScoreWidth + 13), width - 50) / columns;
- int left = width / 2 - (columnWidth * columns + (columns - 1) * 5) / 2;
- int border = 10;
- int l1 = columnWidth * columns + (columns - 1) * 5;
- func_73734_a(width / 2 - l1 / 2 - 1, border - 1, width / 2 + l1 / 2 + 1, border + rows * 9, Integer.MIN_VALUE);
- for(int playerIndex = 0; playerIndex < maxPlayers; ++playerIndex) {
- int row = playerIndex / rows;
- int column = playerIndex % rows;
- int x = left + row * columnWidth + row * 5;
- int y = border + column * 9;
- func_73734_a(x, y, x + columnWidth, y + 8, 553648127);
- GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
- GL11.glEnable(3008);
- GL11.glEnable(3042);
- OpenGlHelper.func_148821_a(770, 771, 1, 0);
- GuiPlayerTabOverlay.ExtendedPlayerInfo playerInfo = (GuiPlayerTabOverlay.ExtendedPlayerInfo)list.get(playerIndex);
- if (drawHeads) {
- ResourceLocation locationSkin = this.getLocationSkin(playerInfo);
- if (locationSkin != null) {
- this.mc.func_110434_K().func_110577_a(locationSkin);
- Gui.func_152125_a(x, y, 8.0F, 8.0F, 8, 8, 8, 8, 64.0F, 32.0F);
- x += 9;
- }
- }
- String displayName = playerInfo.getDisplayName();
- this.mc.field_71466_p.func_78261_a(displayName, x, y, -1);
- if (scoreObjective != null) {
- int k5 = x + maxNameWidth + 1;
- int l5 = k5 + maxScoreWidth;
- if (l5 - k5 > 5) {
- this.drawScoreboardValues(scoreObjective, y, displayName, k5, l5, playerInfo);
- }
- }
- this.drawPing(columnWidth, x - (drawHeads ? 9 : 0), y, playerInfo);
- }
- }
- private void drawPing(int p_175245_1_, int p_175245_2_, int p_175245_3_, GuiPlayerTabOverlay.ExtendedPlayerInfo playerInfo) {
- GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
- this.mc.func_110434_K().func_110577_a(Gui.field_110324_m);
- int responseTime = playerInfo.playerInfo.field_78829_b;
- byte index;
- if (responseTime < 0) {
- index = 5;
- } else if (responseTime < 150) {
- index = 0;
- } else if (responseTime < 300) {
- index = 1;
- } else if (responseTime < 600) {
- index = 2;
- } else if (responseTime < 1000) {
- index = 3;
- } else {
- index = 4;
- }
- this.field_73735_i += 100.0F;
- this.func_73729_b(p_175245_2_ + p_175245_1_ - 11, p_175245_3_, 0, 176 + index * 8, 10, 8);
- this.field_73735_i -= 100.0F;
- }
- private void drawScoreboardValues(ScoreObjective scoreObjective, int value, String name, int p_175247_4_, int p_175247_5_, GuiPlayerTabOverlay.ExtendedPlayerInfo info) {
- int points = info.getScore(scoreObjective).func_96652_c();
- String s = EnumChatFormatting.YELLOW.toString() + points;
- this.mc.field_71466_p.func_78261_a(s, p_175247_5_ - this.mc.field_71466_p.func_78256_a(s), value, 16777215);
- }
- private ResourceLocation getLocationSkin(GuiPlayerTabOverlay.ExtendedPlayerInfo playerInfo) {
- if (playerInfo == null) {
- return AbstractClientPlayer.field_110314_b;
- } else {
- String playerName = playerInfo.playerName;
- if (playerName.isEmpty()) {
- return AbstractClientPlayer.field_110314_b;
- } else {
- EntityPlayer player = this.mc.field_71441_e.func_72924_a(playerName);
- return player instanceof AbstractClientPlayer ? ((AbstractClientPlayer)player).func_110306_p() : playerInfo.playerData.getSkinResource();
- }
- }
- }
- @SideOnly(Side.CLIENT)
- private static final class PlayerComparator implements Comparator<GuiPlayerTabOverlay.ExtendedPlayerInfo> {
- private PlayerComparator() {
- }
- public int compare(GuiPlayerTabOverlay.ExtendedPlayerInfo a, GuiPlayerTabOverlay.ExtendedPlayerInfo b) {
- return ComparisonChain.start().compare(a.index, b.index).compare(a.playerName, b.playerName).compare(a.playerInfo.field_78831_a, b.playerInfo.field_78831_a).result();
- }
- // $FF: synthetic method
- // $FF: bridge method
- public int compare(Object var1, Object var2) {
- return this.compare((GuiPlayerTabOverlay.ExtendedPlayerInfo)var1, (GuiPlayerTabOverlay.ExtendedPlayerInfo)var2);
- }
- // $FF: synthetic method
- PlayerComparator(Object x0) {
- this();
- }
- }
- @SideOnly(Side.CLIENT)
- private final class ExtendedPlayerInfo {
- public final GuiPlayerInfo playerInfo;
- public final PlayerData playerData;
- public final String playerName;
- private final int index;
- private String displayName;
- private Score score;
- public ExtendedPlayerInfo(GuiPlayerInfo playerInfo) {
- this.playerInfo = playerInfo;
- this.playerData = (PlayerData)TabMod.instance.playerDataMap.get(playerInfo.field_78831_a);
- this.playerName = this.playerData == null ? "" : Strings.nullToEmpty(this.playerData.gameProfile.getName());
- this.index = this.playerData == null ? -1 : this.playerData.index;
- }
- public String getDisplayName() {
- if (this.displayName != null) {
- return this.displayName;
- } else {
- ScorePlayerTeam team = GuiPlayerTabOverlay.this.mc.field_71441_e.func_96441_U().func_96509_i(this.playerInfo.field_78831_a);
- return this.displayName = ScorePlayerTeam.func_96667_a(team, this.playerInfo.field_78831_a);
- }
- }
- public Score getScore(ScoreObjective scoreObjective) {
- return this.score != null ? this.score : (this.score = scoreObjective.func_96682_a().func_96529_a(this.playerInfo.field_78831_a, scoreObjective));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment