mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2025-10-14 21:22:49 +00:00
Clean up entity metadata palette
This commit is contained in:
parent
c36dec435d
commit
750295b1e3
10 changed files with 67 additions and 139 deletions
|
|
@ -11,24 +11,63 @@ public enum EntityMetaDataType
|
||||||
OptionalChat,
|
OptionalChat,
|
||||||
Slot,
|
Slot,
|
||||||
Boolean,
|
Boolean,
|
||||||
|
/// <summary>
|
||||||
|
/// Float x3
|
||||||
|
/// </summary>
|
||||||
Rotation,
|
Rotation,
|
||||||
Position,
|
Position,
|
||||||
OptionalPosition,
|
OptionalPosition,
|
||||||
|
/// <summary>
|
||||||
|
/// VarInt
|
||||||
|
/// </summary>
|
||||||
Direction,
|
Direction,
|
||||||
OptionalUuid,
|
OptionalUuid,
|
||||||
|
/// <summary>
|
||||||
|
/// VarInt
|
||||||
|
/// </summary>
|
||||||
BlockId,
|
BlockId,
|
||||||
|
/// <summary>
|
||||||
|
/// VarInt (0 for absent)
|
||||||
|
/// </summary>
|
||||||
OptionalBlockId,
|
OptionalBlockId,
|
||||||
Nbt,
|
Nbt,
|
||||||
Particle,
|
Particle,
|
||||||
|
/// <summary>
|
||||||
|
/// VarInt x3
|
||||||
|
/// </summary>
|
||||||
VillagerData,
|
VillagerData,
|
||||||
OptionalVarInt,
|
OptionalVarInt,
|
||||||
|
/// <summary>
|
||||||
|
/// VarInt
|
||||||
|
/// </summary>
|
||||||
Pose,
|
Pose,
|
||||||
|
/// <summary>
|
||||||
|
/// VarInt
|
||||||
|
/// </summary>
|
||||||
CatVariant,
|
CatVariant,
|
||||||
FrogVariant,
|
FrogVariant,
|
||||||
|
/// <summary>
|
||||||
|
/// String + Position
|
||||||
|
/// </summary>
|
||||||
GlobalPosition,
|
GlobalPosition,
|
||||||
|
/// <summary>
|
||||||
|
/// Boolean + String + Position
|
||||||
|
/// </summary>
|
||||||
OptionalGlobalPosition,
|
OptionalGlobalPosition,
|
||||||
|
/// <summary>
|
||||||
|
/// VarInt
|
||||||
|
/// </summary>
|
||||||
PaintingVariant,
|
PaintingVariant,
|
||||||
|
/// <summary>
|
||||||
|
/// VarInt
|
||||||
|
/// </summary>
|
||||||
SnifferState,
|
SnifferState,
|
||||||
|
/// <summary>
|
||||||
|
/// Float x3
|
||||||
|
/// </summary>
|
||||||
Vector3,
|
Vector3,
|
||||||
|
/// <summary>
|
||||||
|
/// Float x4
|
||||||
|
/// </summary>
|
||||||
Quaternion
|
Quaternion
|
||||||
}
|
}
|
||||||
|
|
@ -16,20 +16,16 @@ public abstract class EntityMetadataPalette
|
||||||
|
|
||||||
public static EntityMetadataPalette GetPalette(int protocolVersion)
|
public static EntityMetadataPalette GetPalette(int protocolVersion)
|
||||||
{
|
{
|
||||||
if (protocolVersion < Protocol18Handler.MC_1_9_1_Version)
|
if (protocolVersion < Protocol18Handler.MC_1_9_Version)
|
||||||
return new EntityMetadataPalette19();
|
throw new NotImplementedException();
|
||||||
else if (protocolVersion <= Protocol18Handler.MC_1_11_2_Version)
|
else if (protocolVersion <= Protocol18Handler.MC_1_12_2_Version)
|
||||||
return new EntityMetadataPalette111();
|
return new EntityMetadataPalette1122(); // 1.9 - 1.12.2
|
||||||
else if (protocolVersion <= Protocol18Handler.MC_1_13_2_Version)
|
|
||||||
return new EntityMetadataPalette113();
|
|
||||||
else if (protocolVersion <= Protocol18Handler.MC_1_14_Version)
|
|
||||||
return new EntityMetadataPalette114();
|
|
||||||
else if (protocolVersion <= Protocol18Handler.MC_1_19_2_Version)
|
else if (protocolVersion <= Protocol18Handler.MC_1_19_2_Version)
|
||||||
return new EntityMetadataPalette1191();
|
return new EntityMetadataPalette1191(); // 1.13 - 1.19.2
|
||||||
else if (protocolVersion <= Protocol18Handler.MC_1_19_3_Version)
|
else if (protocolVersion <= Protocol18Handler.MC_1_19_3_Version)
|
||||||
return new EntityMetadataPalette1193();
|
return new EntityMetadataPalette1193(); // 1.19.3
|
||||||
else if (protocolVersion <= Protocol18Handler.MC_1_19_4_Version)
|
else if (protocolVersion <= Protocol18Handler.MC_1_19_4_Version)
|
||||||
return new EntityMetadataPalette1194();
|
return new EntityMetadataPalette1194(); // 1.19.4
|
||||||
else
|
else
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,9 @@ using System.Collections.Generic;
|
||||||
|
|
||||||
namespace MinecraftClient.Mapping.EntityMetadataPalettes;
|
namespace MinecraftClient.Mapping.EntityMetadataPalettes;
|
||||||
|
|
||||||
public class EntityMetadataPalette111 : EntityMetadataPalette
|
public class EntityMetadataPalette1122 : EntityMetadataPalette
|
||||||
{
|
{
|
||||||
// 1.11 : https://wiki.vg/index.php?title=Entity_metadata&oldid=8269
|
// 1.9 - 1.12.2
|
||||||
private readonly Dictionary<int, EntityMetaDataType> entityMetadataMappings = new()
|
private readonly Dictionary<int, EntityMetaDataType> entityMetadataMappings = new()
|
||||||
{
|
{
|
||||||
{ 0, EntityMetaDataType.Byte },
|
{ 0, EntityMetaDataType.Byte },
|
||||||
|
|
@ -19,7 +19,8 @@ public class EntityMetadataPalette111 : EntityMetadataPalette
|
||||||
{ 9, EntityMetaDataType.OptionalPosition },
|
{ 9, EntityMetaDataType.OptionalPosition },
|
||||||
{ 10, EntityMetaDataType.Direction },
|
{ 10, EntityMetaDataType.Direction },
|
||||||
{ 11, EntityMetaDataType.OptionalUuid },
|
{ 11, EntityMetaDataType.OptionalUuid },
|
||||||
{ 12, EntityMetaDataType.OptionalBlockId }
|
{ 12, EntityMetaDataType.OptionalBlockId },
|
||||||
|
{ 13, EntityMetaDataType.Nbt },
|
||||||
};
|
};
|
||||||
|
|
||||||
public override Dictionary<int, EntityMetaDataType> GetEntityMetadataMappingsList()
|
public override Dictionary<int, EntityMetaDataType> GetEntityMetadataMappingsList()
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace MinecraftClient.Mapping.EntityMetadataPalettes;
|
|
||||||
|
|
||||||
public class EntityMetadataPalette113 : EntityMetadataPalette
|
|
||||||
{
|
|
||||||
// 1.13 : https://wiki.vg/index.php?title=Entity_metadata&oldid=14539
|
|
||||||
private readonly Dictionary<int, EntityMetaDataType> entityMetadataMappings = new()
|
|
||||||
{
|
|
||||||
{ 0, EntityMetaDataType.Byte },
|
|
||||||
{ 1, EntityMetaDataType.VarInt },
|
|
||||||
{ 2, EntityMetaDataType.Float },
|
|
||||||
{ 3, EntityMetaDataType.String },
|
|
||||||
{ 4, EntityMetaDataType.Chat },
|
|
||||||
{ 5, EntityMetaDataType.OptionalChat },
|
|
||||||
{ 6, EntityMetaDataType.Slot },
|
|
||||||
{ 7, EntityMetaDataType.Boolean },
|
|
||||||
{ 8, EntityMetaDataType.Rotation },
|
|
||||||
{ 9, EntityMetaDataType.Position },
|
|
||||||
{ 10, EntityMetaDataType.OptionalPosition },
|
|
||||||
{ 11, EntityMetaDataType.Direction },
|
|
||||||
{ 12, EntityMetaDataType.OptionalUuid },
|
|
||||||
{ 13, EntityMetaDataType.OptionalBlockId },
|
|
||||||
{ 14, EntityMetaDataType.Nbt },
|
|
||||||
{ 15, EntityMetaDataType.Particle }
|
|
||||||
};
|
|
||||||
|
|
||||||
public override Dictionary<int, EntityMetaDataType> GetEntityMetadataMappingsList()
|
|
||||||
{
|
|
||||||
return entityMetadataMappings;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,34 +0,0 @@
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace MinecraftClient.Mapping.EntityMetadataPalettes;
|
|
||||||
|
|
||||||
public class EntityMetadataPalette114 : EntityMetadataPalette
|
|
||||||
{
|
|
||||||
private readonly Dictionary<int, EntityMetaDataType> entityMetadataMappings = new()
|
|
||||||
{
|
|
||||||
{ 0, EntityMetaDataType.Byte },
|
|
||||||
{ 1, EntityMetaDataType.VarInt },
|
|
||||||
{ 2, EntityMetaDataType.Float },
|
|
||||||
{ 3, EntityMetaDataType.String },
|
|
||||||
{ 4, EntityMetaDataType.Chat },
|
|
||||||
{ 5, EntityMetaDataType.OptionalChat },
|
|
||||||
{ 6, EntityMetaDataType.Slot },
|
|
||||||
{ 7, EntityMetaDataType.Boolean },
|
|
||||||
{ 8, EntityMetaDataType.Rotation },
|
|
||||||
{ 9, EntityMetaDataType.Position },
|
|
||||||
{ 10, EntityMetaDataType.OptionalPosition },
|
|
||||||
{ 11, EntityMetaDataType.Direction },
|
|
||||||
{ 12, EntityMetaDataType.OptionalUuid },
|
|
||||||
{ 13, EntityMetaDataType.OptionalBlockId },
|
|
||||||
{ 14, EntityMetaDataType.Nbt },
|
|
||||||
{ 15, EntityMetaDataType.Particle },
|
|
||||||
{ 16, EntityMetaDataType.VillagerData },
|
|
||||||
{ 17, EntityMetaDataType.OptionalVarInt },
|
|
||||||
{ 18, EntityMetaDataType.Pose }
|
|
||||||
};
|
|
||||||
|
|
||||||
public override Dictionary<int, EntityMetaDataType> GetEntityMetadataMappingsList()
|
|
||||||
{
|
|
||||||
return entityMetadataMappings;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -2,6 +2,9 @@ using System.Collections.Generic;
|
||||||
|
|
||||||
namespace MinecraftClient.Mapping.EntityMetadataPalettes;
|
namespace MinecraftClient.Mapping.EntityMetadataPalettes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 1.13 - 1.19.2
|
||||||
|
/// </summary>
|
||||||
public class EntityMetadataPalette1191 : EntityMetadataPalette
|
public class EntityMetadataPalette1191 : EntityMetadataPalette
|
||||||
{
|
{
|
||||||
private readonly Dictionary<int, EntityMetaDataType> entityMetadataMappings = new()
|
private readonly Dictionary<int, EntityMetaDataType> entityMetadataMappings = new()
|
||||||
|
|
@ -27,7 +30,7 @@ public class EntityMetadataPalette1191 : EntityMetadataPalette
|
||||||
{ 18, EntityMetaDataType.Pose },
|
{ 18, EntityMetaDataType.Pose },
|
||||||
{ 19, EntityMetaDataType.CatVariant },
|
{ 19, EntityMetaDataType.CatVariant },
|
||||||
{ 20, EntityMetaDataType.FrogVariant },
|
{ 20, EntityMetaDataType.FrogVariant },
|
||||||
{ 21, EntityMetaDataType.GlobalPosition },
|
{ 21, EntityMetaDataType.OptionalGlobalPosition },
|
||||||
{ 22, EntityMetaDataType.PaintingVariant }
|
{ 22, EntityMetaDataType.PaintingVariant }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,9 @@ using System.Collections.Generic;
|
||||||
|
|
||||||
namespace MinecraftClient.Mapping.EntityMetadataPalettes;
|
namespace MinecraftClient.Mapping.EntityMetadataPalettes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// For 1.19.3
|
||||||
|
/// </summary>
|
||||||
public class EntityMetadataPalette1193 : EntityMetadataPalette
|
public class EntityMetadataPalette1193 : EntityMetadataPalette
|
||||||
{
|
{
|
||||||
private readonly Dictionary<int, EntityMetaDataType> entityMetadataMappings = new()
|
private readonly Dictionary<int, EntityMetaDataType> entityMetadataMappings = new()
|
||||||
|
|
@ -28,7 +31,7 @@ public class EntityMetadataPalette1193 : EntityMetadataPalette
|
||||||
{ 19, EntityMetaDataType.Pose },
|
{ 19, EntityMetaDataType.Pose },
|
||||||
{ 20, EntityMetaDataType.CatVariant },
|
{ 20, EntityMetaDataType.CatVariant },
|
||||||
{ 21, EntityMetaDataType.FrogVariant },
|
{ 21, EntityMetaDataType.FrogVariant },
|
||||||
{ 22, EntityMetaDataType.GlobalPosition },
|
{ 22, EntityMetaDataType.OptionalGlobalPosition },
|
||||||
{ 23, EntityMetaDataType.PaintingVariant }
|
{ 23, EntityMetaDataType.PaintingVariant }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,9 @@ using System.Collections.Generic;
|
||||||
|
|
||||||
namespace MinecraftClient.Mapping.EntityMetadataPalettes;
|
namespace MinecraftClient.Mapping.EntityMetadataPalettes;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// For 1.19.4
|
||||||
|
/// </summary>
|
||||||
public class EntityMetadataPalette1194 : EntityMetadataPalette
|
public class EntityMetadataPalette1194 : EntityMetadataPalette
|
||||||
{
|
{
|
||||||
private readonly Dictionary<int, EntityMetaDataType> entityMetadataMappings = new()
|
private readonly Dictionary<int, EntityMetaDataType> entityMetadataMappings = new()
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ using System.Collections.Generic;
|
||||||
|
|
||||||
namespace MinecraftClient.Mapping.EntityMetadataPalettes;
|
namespace MinecraftClient.Mapping.EntityMetadataPalettes;
|
||||||
|
|
||||||
|
// TODO: Use this for 1.8
|
||||||
public class EntityMetadataPalette19 : EntityMetadataPalette
|
public class EntityMetadataPalette19 : EntityMetadataPalette
|
||||||
{
|
{
|
||||||
// 1.8 : https://wiki.vg/index.php?title=Entity_metadata&oldid=6220 (Requires a different algorithm)
|
// 1.8 : https://wiki.vg/index.php?title=Entity_metadata&oldid=6220 (Requires a different algorithm)
|
||||||
|
|
|
||||||
|
|
@ -681,62 +681,8 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
value = ReadNextNbt(cache);
|
value = ReadNextNbt(cache);
|
||||||
break;
|
break;
|
||||||
case EntityMetaDataType.Particle: // Particle
|
case EntityMetaDataType.Particle: // Particle
|
||||||
// Currently not handled. Reading data only
|
// Skip data only, not used
|
||||||
int ParticleID = ReadNextVarInt(cache);
|
ReadParticleData(cache, itemPalette);
|
||||||
// TODO: Go through wiki history and write for every version
|
|
||||||
// 1.19.3 - https://wiki.vg/index.php?title=Data_types&oldid=17986
|
|
||||||
// 1.18 - https://wiki.vg/index.php?title=Data_types&oldid=17180
|
|
||||||
// 1.17 - https://wiki.vg/index.php?title=Data_types&oldid=16740
|
|
||||||
// 1.15 - https://wiki.vg/index.php?title=Data_types&oldid=15338
|
|
||||||
// 1.13 - https://wiki.vg/index.php?title=Data_types&oldid=14271
|
|
||||||
switch (ParticleID)
|
|
||||||
{
|
|
||||||
case 2:
|
|
||||||
ReadNextVarInt(cache);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
ReadNextVarInt(cache);
|
|
||||||
break;
|
|
||||||
case 14:
|
|
||||||
ReadNextFloat(cache);
|
|
||||||
ReadNextFloat(cache);
|
|
||||||
ReadNextFloat(cache);
|
|
||||||
ReadNextFloat(cache);
|
|
||||||
break;
|
|
||||||
case 15:
|
|
||||||
ReadNextFloat(cache);
|
|
||||||
ReadNextFloat(cache);
|
|
||||||
ReadNextFloat(cache);
|
|
||||||
ReadNextFloat(cache);
|
|
||||||
ReadNextFloat(cache);
|
|
||||||
ReadNextFloat(cache);
|
|
||||||
ReadNextFloat(cache);
|
|
||||||
break;
|
|
||||||
case 25:
|
|
||||||
ReadNextVarInt(cache);
|
|
||||||
break;
|
|
||||||
case 30:
|
|
||||||
ReadNextFloat(cache);
|
|
||||||
break;
|
|
||||||
case 39:
|
|
||||||
ReadNextItemSlot(cache, itemPalette);
|
|
||||||
break;
|
|
||||||
case 40:
|
|
||||||
string positionSourceType = ReadNextString(cache);
|
|
||||||
if (positionSourceType == "minecraft:block")
|
|
||||||
{
|
|
||||||
ReadNextLocation(cache);
|
|
||||||
}
|
|
||||||
else if (positionSourceType == "minecraft:entity")
|
|
||||||
{
|
|
||||||
ReadNextVarInt(cache);
|
|
||||||
ReadNextFloat(cache);
|
|
||||||
}
|
|
||||||
|
|
||||||
ReadNextVarInt(cache);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case EntityMetaDataType.VillagerData: // Villager Data (3x VarInt)
|
case EntityMetaDataType.VillagerData: // Villager Data (3x VarInt)
|
||||||
value = new List<int>
|
value = new List<int>
|
||||||
|
|
@ -766,8 +712,11 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
value = new Tuple<string, Location>(ReadNextString(cache), ReadNextLocation(cache));
|
value = new Tuple<string, Location>(ReadNextString(cache), ReadNextLocation(cache));
|
||||||
break;
|
break;
|
||||||
case EntityMetaDataType.OptionalGlobalPosition:
|
case EntityMetaDataType.OptionalGlobalPosition:
|
||||||
|
// FIXME: wiki.vg is bool + string + location
|
||||||
|
// but minecraft-data is bool + string
|
||||||
if (ReadNextBool(cache))
|
if (ReadNextBool(cache))
|
||||||
{
|
{
|
||||||
|
// Dimension and blockPos, currently not in use
|
||||||
value = new Tuple<string, Location>(ReadNextString(cache), ReadNextLocation(cache));
|
value = new Tuple<string, Location>(ReadNextString(cache), ReadNextLocation(cache));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -799,7 +748,6 @@ namespace MinecraftClient.Protocol.Handlers
|
||||||
data[key] = value;
|
data[key] = value;
|
||||||
key = ReadNextByte(cache);
|
key = ReadNextByte(cache);
|
||||||
}
|
}
|
||||||
ConsoleIO.WriteLine($"Entity MetaData finished {data.Count}");
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue