Remove tab display name experiment (not working)

- Tab display names should hold display name but...
 - Server sends <UUID, name, null> x Player count
 - TabListPlus sends <SlotID, ???tab#01, SlotText> x Slot Count
 - So we don't have player display names, only worthless slots
 - So the whole feature was useless, reverting to name only.
This commit is contained in:
ORelio 2016-08-27 15:46:34 +02:00
parent 61ce935c63
commit 2a07fbbae6
9 changed files with 18 additions and 141 deletions

View file

@ -160,7 +160,7 @@ namespace MinecraftClient.Protocol.Handlers
case 0xC9:
string name = readNextString(); bool online = readNextByte() != 0x00; readData(2);
Guid FakeUUID = new Guid(MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(name)).Take(16).ToArray());
if (online) { handler.OnPlayerJoin(new PlayerInfo(FakeUUID, name)); } else { handler.OnPlayerLeave(FakeUUID); }
if (online) { handler.OnPlayerJoin(FakeUUID, name); } else { handler.OnPlayerLeave(FakeUUID); }
break;
case 0xCA: if (protocolversion >= 72) { readData(9); } else readData(3); break;
case 0xCB: autocomplete_result = readNextString(); autocomplete_received = true; break;

View file

@ -437,27 +437,17 @@ namespace MinecraftClient.Protocol.Handlers
}
readNextVarInt(packetData);
readNextVarInt(packetData);
string displayName = name;
if (readNextBool(packetData))
displayName = readNextString(packetData);
handler.OnPlayerJoin(new PlayerInfo(uuid, name, displayName));
readNextString(packetData);
handler.OnPlayerJoin(uuid, name);
break;
case 0x01: //Update gamemode
case 0x02: //Update latency
readNextVarInt(packetData);
break;
case 0x03: //Update display name
bool hasDisplayName = readNextBool(packetData);
string newDisplayName = null;
if (hasDisplayName)
newDisplayName = readNextString(packetData);
PlayerInfo player = handler.GetPlayer(uuid);
if (player != null)
{
if (hasDisplayName)
player.DisplayName = newDisplayName;
else player.DisplayName = player.Name;
}
if (readNextBool(packetData))
readNextString(packetData);
break;
case 0x04: //Player Leave
handler.OnPlayerLeave(uuid);
@ -475,7 +465,7 @@ namespace MinecraftClient.Protocol.Handlers
short ping = readNextShort(packetData);
Guid FakeUUID = new Guid(MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(name)).Take(16).ToArray());
if (online)
handler.OnPlayerJoin(new PlayerInfo(FakeUUID, name));
handler.OnPlayerJoin(FakeUUID, name);
else handler.OnPlayerLeave(FakeUUID);
}
break;

View file

@ -22,8 +22,7 @@ namespace MinecraftClient.Protocol
string GetUsername();
string GetUserUUID();
string GetSessionID();
PlayerInfo[] GetOnlinePlayers();
PlayerInfo GetPlayer(Guid uuid);
string[] GetOnlinePlayers();
Location GetCurrentLocation();
World GetWorld();
@ -41,8 +40,8 @@ namespace MinecraftClient.Protocol
/// This method is called when a new player joins the game
/// </summary>
/// <param name="uuid">UUID of the player</param>
/// <param name="info">Info about this player</param>
void OnPlayerJoin(PlayerInfo info);
/// <param name="name">Name of the player</param>
void OnPlayerJoin(Guid uuid, string name);
/// <summary>
/// This method is called when a player has left the game

View file

@ -1,85 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MinecraftClient.Protocol
{
/// <summary>
/// Information about a player (player tab list item)
/// </summary>
public class PlayerInfo : IComparable<PlayerInfo>
{
private Guid _uuid;
private string _name;
public Guid UUID { get { return _uuid; } }
public string Name { get { return _name; } }
public string DisplayName { get; set; }
/// <summary>
/// Create a new PlayerInfo structure
/// </summary>
/// <param name="uuid">Player Id</param>
/// <param name="name">Player Name</param>
public PlayerInfo(Guid uuid, string name)
{
_uuid = uuid;
_name = name;
DisplayName = name;
}
/// <summary>
/// Create a new PlayerInfo structure
/// </summary>
/// <param name="uuid">Player Id</param>
/// <param name="name">Player Name</param>
/// <param name="displayName">Player Display Name</param>
public PlayerInfo(Guid uuid, string name, string displayName)
: this(uuid, name)
{
DisplayName = displayName;
}
/// <summary>
/// String representation of the player
/// </summary>
/// <returns>Player display name</returns>
public override string ToString()
{
return DisplayName;
}
/// <summary>
/// Compare a player to another player
/// </summary>
/// <param name="obj">Other player</param>
/// <returns>TRUE if same player Id</returns>
public override bool Equals(object obj)
{
if (obj is PlayerInfo)
return UUID.Equals(((PlayerInfo)obj).UUID);
return base.Equals(obj);
}
/// <summary>
/// Basic hash function for player, from Player Id
/// </summary>
/// <returns>Interger hash</returns>
/// <remarks>Required when overriding Equals()</remarks>
public override int GetHashCode()
{
return UUID.GetHashCode();
}
/// <summary>
/// Allows sorting players by name
/// </summary>
/// <param name="obj">Other player to compare to</param>
/// <returns>Comparition with the player's name</returns>
int IComparable<PlayerInfo>.CompareTo(PlayerInfo obj)
{
return Name.CompareTo(obj.Name);
}
}
}

View file

@ -24,7 +24,6 @@ namespace MinecraftClient.Protocol
/// <param name="serverPort">Server Port to ping</param>
/// <param name="protocolversion">Will contain protocol version, if ping successful</param>
/// <returns>TRUE if ping was successful</returns>
public static bool GetServerInfo(string serverIP, ushort serverPort, ref int protocolversion, ref ForgeInfo forgeInfo)
{
bool success = false;
@ -65,7 +64,6 @@ namespace MinecraftClient.Protocol
/// <param name="ProtocolVersion">Protocol version to handle</param>
/// <param name="Handler">Handler with the appropriate callbacks</param>
/// <returns></returns>
public static IMinecraftCom getProtocolHandler(TcpClient Client, int ProtocolVersion, ForgeInfo forgeInfo, IMinecraftComHandler Handler)
{
int[] supportedVersions_Protocol16 = { 51, 60, 61, 72, 73, 74, 78 };
@ -82,7 +80,6 @@ namespace MinecraftClient.Protocol
/// </summary>
/// <param name="MCVersion">The Minecraft version number</param>
/// <returns>The protocol version number or 0 if could not determine protocol version: error, unknown, not supported</returns>
public static int MCVer2ProtocolVersion(string MCVersion)
{
if (MCVersion.Contains('.'))
@ -170,7 +167,6 @@ namespace MinecraftClient.Protocol
/// <param name="clienttoken">Will contain the client token generated before sending to Minecraft.net</param>
/// <param name="uuid">Will contain the player's PlayerID, needed for multiplayer</param>
/// <returns>Returns the status of the login (Success, Failure, etc.)</returns>
public static LoginResult GetLogin(string user, string pass, out SessionToken session)
{
session = new SessionToken() { ClientID = Guid.NewGuid().ToString().Replace("-", "") };