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,
|
||||
Slot,
|
||||
Boolean,
|
||||
/// <summary>
|
||||
/// Float x3
|
||||
/// </summary>
|
||||
Rotation,
|
||||
Position,
|
||||
OptionalPosition,
|
||||
/// <summary>
|
||||
/// VarInt
|
||||
/// </summary>
|
||||
Direction,
|
||||
OptionalUuid,
|
||||
/// <summary>
|
||||
/// VarInt
|
||||
/// </summary>
|
||||
BlockId,
|
||||
/// <summary>
|
||||
/// VarInt (0 for absent)
|
||||
/// </summary>
|
||||
OptionalBlockId,
|
||||
Nbt,
|
||||
Particle,
|
||||
/// <summary>
|
||||
/// VarInt x3
|
||||
/// </summary>
|
||||
VillagerData,
|
||||
OptionalVarInt,
|
||||
/// <summary>
|
||||
/// VarInt
|
||||
/// </summary>
|
||||
Pose,
|
||||
/// <summary>
|
||||
/// VarInt
|
||||
/// </summary>
|
||||
CatVariant,
|
||||
FrogVariant,
|
||||
/// <summary>
|
||||
/// String + Position
|
||||
/// </summary>
|
||||
GlobalPosition,
|
||||
/// <summary>
|
||||
/// Boolean + String + Position
|
||||
/// </summary>
|
||||
OptionalGlobalPosition,
|
||||
/// <summary>
|
||||
/// VarInt
|
||||
/// </summary>
|
||||
PaintingVariant,
|
||||
/// <summary>
|
||||
/// VarInt
|
||||
/// </summary>
|
||||
SnifferState,
|
||||
/// <summary>
|
||||
/// Float x3
|
||||
/// </summary>
|
||||
Vector3,
|
||||
/// <summary>
|
||||
/// Float x4
|
||||
/// </summary>
|
||||
Quaternion
|
||||
}
|
||||
|
|
@ -16,20 +16,16 @@ public abstract class EntityMetadataPalette
|
|||
|
||||
public static EntityMetadataPalette GetPalette(int protocolVersion)
|
||||
{
|
||||
if (protocolVersion < Protocol18Handler.MC_1_9_1_Version)
|
||||
return new EntityMetadataPalette19();
|
||||
else if (protocolVersion <= Protocol18Handler.MC_1_11_2_Version)
|
||||
return new EntityMetadataPalette111();
|
||||
else if (protocolVersion <= Protocol18Handler.MC_1_13_2_Version)
|
||||
return new EntityMetadataPalette113();
|
||||
else if (protocolVersion <= Protocol18Handler.MC_1_14_Version)
|
||||
return new EntityMetadataPalette114();
|
||||
if (protocolVersion < Protocol18Handler.MC_1_9_Version)
|
||||
throw new NotImplementedException();
|
||||
else if (protocolVersion <= Protocol18Handler.MC_1_12_2_Version)
|
||||
return new EntityMetadataPalette1122(); // 1.9 - 1.12.2
|
||||
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)
|
||||
return new EntityMetadataPalette1193();
|
||||
return new EntityMetadataPalette1193(); // 1.19.3
|
||||
else if (protocolVersion <= Protocol18Handler.MC_1_19_4_Version)
|
||||
return new EntityMetadataPalette1194();
|
||||
return new EntityMetadataPalette1194(); // 1.19.4
|
||||
else
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@ using System.Collections.Generic;
|
|||
|
||||
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()
|
||||
{
|
||||
{ 0, EntityMetaDataType.Byte },
|
||||
|
|
@ -19,7 +19,8 @@ public class EntityMetadataPalette111 : EntityMetadataPalette
|
|||
{ 9, EntityMetaDataType.OptionalPosition },
|
||||
{ 10, EntityMetaDataType.Direction },
|
||||
{ 11, EntityMetaDataType.OptionalUuid },
|
||||
{ 12, EntityMetaDataType.OptionalBlockId }
|
||||
{ 12, EntityMetaDataType.OptionalBlockId },
|
||||
{ 13, EntityMetaDataType.Nbt },
|
||||
};
|
||||
|
||||
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;
|
||||
|
||||
/// <summary>
|
||||
/// 1.13 - 1.19.2
|
||||
/// </summary>
|
||||
public class EntityMetadataPalette1191 : EntityMetadataPalette
|
||||
{
|
||||
private readonly Dictionary<int, EntityMetaDataType> entityMetadataMappings = new()
|
||||
|
|
@ -27,7 +30,7 @@ public class EntityMetadataPalette1191 : EntityMetadataPalette
|
|||
{ 18, EntityMetaDataType.Pose },
|
||||
{ 19, EntityMetaDataType.CatVariant },
|
||||
{ 20, EntityMetaDataType.FrogVariant },
|
||||
{ 21, EntityMetaDataType.GlobalPosition },
|
||||
{ 21, EntityMetaDataType.OptionalGlobalPosition },
|
||||
{ 22, EntityMetaDataType.PaintingVariant }
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,9 @@ using System.Collections.Generic;
|
|||
|
||||
namespace MinecraftClient.Mapping.EntityMetadataPalettes;
|
||||
|
||||
/// <summary>
|
||||
/// For 1.19.3
|
||||
/// </summary>
|
||||
public class EntityMetadataPalette1193 : EntityMetadataPalette
|
||||
{
|
||||
private readonly Dictionary<int, EntityMetaDataType> entityMetadataMappings = new()
|
||||
|
|
@ -28,7 +31,7 @@ public class EntityMetadataPalette1193 : EntityMetadataPalette
|
|||
{ 19, EntityMetaDataType.Pose },
|
||||
{ 20, EntityMetaDataType.CatVariant },
|
||||
{ 21, EntityMetaDataType.FrogVariant },
|
||||
{ 22, EntityMetaDataType.GlobalPosition },
|
||||
{ 22, EntityMetaDataType.OptionalGlobalPosition },
|
||||
{ 23, EntityMetaDataType.PaintingVariant }
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,9 @@ using System.Collections.Generic;
|
|||
|
||||
namespace MinecraftClient.Mapping.EntityMetadataPalettes;
|
||||
|
||||
/// <summary>
|
||||
/// For 1.19.4
|
||||
/// </summary>
|
||||
public class EntityMetadataPalette1194 : EntityMetadataPalette
|
||||
{
|
||||
private readonly Dictionary<int, EntityMetaDataType> entityMetadataMappings = new()
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ using System.Collections.Generic;
|
|||
|
||||
namespace MinecraftClient.Mapping.EntityMetadataPalettes;
|
||||
|
||||
// TODO: Use this for 1.8
|
||||
public class EntityMetadataPalette19 : EntityMetadataPalette
|
||||
{
|
||||
// 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);
|
||||
break;
|
||||
case EntityMetaDataType.Particle: // Particle
|
||||
// Currently not handled. Reading data only
|
||||
int ParticleID = ReadNextVarInt(cache);
|
||||
// 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;
|
||||
}
|
||||
|
||||
// Skip data only, not used
|
||||
ReadParticleData(cache, itemPalette);
|
||||
break;
|
||||
case EntityMetaDataType.VillagerData: // Villager Data (3x VarInt)
|
||||
value = new List<int>
|
||||
|
|
@ -766,8 +712,11 @@ namespace MinecraftClient.Protocol.Handlers
|
|||
value = new Tuple<string, Location>(ReadNextString(cache), ReadNextLocation(cache));
|
||||
break;
|
||||
case EntityMetaDataType.OptionalGlobalPosition:
|
||||
// FIXME: wiki.vg is bool + string + location
|
||||
// but minecraft-data is bool + string
|
||||
if (ReadNextBool(cache))
|
||||
{
|
||||
// Dimension and blockPos, currently not in use
|
||||
value = new Tuple<string, Location>(ReadNextString(cache), ReadNextLocation(cache));
|
||||
}
|
||||
break;
|
||||
|
|
@ -799,7 +748,6 @@ namespace MinecraftClient.Protocol.Handlers
|
|||
data[key] = value;
|
||||
key = ReadNextByte(cache);
|
||||
}
|
||||
ConsoleIO.WriteLine($"Entity MetaData finished {data.Count}");
|
||||
return data;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue