mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2025-10-14 21:22:49 +00:00
Add packet palettes (#1236)
* Add packet type palette * Fix * test new palette * Fix 1.16.2 palette * Add packet ID dumper * Add document * Update naming * Delete old implementation of packet type * Rename PacketTypeHandler to PacketType18Handler * Fix packet type namespace * Add dump to file method for packet type * Rename packet palette version number * Replace unknown packet type to explicit type name Prevent duplicated key while creating reverse mapping * Include packets ID in packet palette Add packet palette helper class * Remove packet ID dumper methods As packets ID are included in source code now
This commit is contained in:
parent
896cabb6ce
commit
3434d95b81
19 changed files with 1978 additions and 906 deletions
|
|
@ -0,0 +1,134 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace MinecraftClient.Protocol.Handlers.PacketPalettes
|
||||
{
|
||||
public class PacketPalette110 : PacketTypePalette
|
||||
{
|
||||
private Dictionary<int, PacketTypesIn> typeIn = new Dictionary<int, PacketTypesIn>()
|
||||
{
|
||||
{ 0x00, PacketTypesIn.SpawnEntity },
|
||||
{ 0x01, PacketTypesIn.SpawnExperienceOrb },
|
||||
{ 0x02, PacketTypesIn.SpawnWeatherEntity },
|
||||
{ 0x03, PacketTypesIn.SpawnLivingEntity },
|
||||
{ 0x04, PacketTypesIn.SpawnPainting },
|
||||
{ 0x05, PacketTypesIn.SpawnPlayer },
|
||||
{ 0x06, PacketTypesIn.EntityAnimation },
|
||||
{ 0x07, PacketTypesIn.Statistics },
|
||||
{ 0x08, PacketTypesIn.BlockBreakAnimation },
|
||||
{ 0x09, PacketTypesIn.BlockEntityData },
|
||||
{ 0x0A, PacketTypesIn.BlockAction },
|
||||
{ 0x0B, PacketTypesIn.BlockChange },
|
||||
{ 0x0C, PacketTypesIn.BossBar },
|
||||
{ 0x0D, PacketTypesIn.ServerDifficulty },
|
||||
{ 0x0E, PacketTypesIn.TabComplete },
|
||||
{ 0x0F, PacketTypesIn.ChatMessage },
|
||||
{ 0x10, PacketTypesIn.MultiBlockChange },
|
||||
{ 0x11, PacketTypesIn.WindowConfirmation },
|
||||
{ 0x12, PacketTypesIn.CloseWindow },
|
||||
{ 0x13, PacketTypesIn.OpenWindow },
|
||||
{ 0x14, PacketTypesIn.WindowItems },
|
||||
{ 0x15, PacketTypesIn.WindowProperty },
|
||||
{ 0x16, PacketTypesIn.SetSlot },
|
||||
{ 0x17, PacketTypesIn.SetCooldown },
|
||||
{ 0x18, PacketTypesIn.PluginMessage },
|
||||
{ 0x19, PacketTypesIn.NamedSoundEffect },
|
||||
{ 0x1A, PacketTypesIn.Disconnect },
|
||||
{ 0x1B, PacketTypesIn.EntityStatus },
|
||||
{ 0x1C, PacketTypesIn.Explosion },
|
||||
{ 0x1D, PacketTypesIn.UnloadChunk },
|
||||
{ 0x1E, PacketTypesIn.ChangeGameState },
|
||||
{ 0x1F, PacketTypesIn.KeepAlive },
|
||||
{ 0x20, PacketTypesIn.ChunkData },
|
||||
{ 0x21, PacketTypesIn.Effect },
|
||||
{ 0x22, PacketTypesIn.Particle },
|
||||
{ 0x23, PacketTypesIn.JoinGame },
|
||||
{ 0x24, PacketTypesIn.MapData },
|
||||
{ 0x25, PacketTypesIn.EntityPosition },
|
||||
{ 0x26, PacketTypesIn.EntityPositionAndRotation },
|
||||
{ 0x27, PacketTypesIn.EntityRotation },
|
||||
{ 0x28, PacketTypesIn.EntityMovement },
|
||||
{ 0x29, PacketTypesIn.VehicleMove },
|
||||
{ 0x2A, PacketTypesIn.OpenSignEditor },
|
||||
{ 0x2B, PacketTypesIn.PlayerAbilities },
|
||||
{ 0x2C, PacketTypesIn.CombatEvent },
|
||||
{ 0x2D, PacketTypesIn.PlayerInfo },
|
||||
{ 0x2E, PacketTypesIn.PlayerPositionAndLook },
|
||||
{ 0x2F, PacketTypesIn.UseBed },
|
||||
{ 0x30, PacketTypesIn.DestroyEntities },
|
||||
{ 0x31, PacketTypesIn.RemoveEntityEffect },
|
||||
{ 0x32, PacketTypesIn.ResourcePackSend },
|
||||
{ 0x33, PacketTypesIn.Respawn },
|
||||
{ 0x34, PacketTypesIn.EntityHeadLook },
|
||||
{ 0x35, PacketTypesIn.WorldBorder },
|
||||
{ 0x36, PacketTypesIn.Camera },
|
||||
{ 0x37, PacketTypesIn.HeldItemChange },
|
||||
{ 0x38, PacketTypesIn.DisplayScoreboard },
|
||||
{ 0x39, PacketTypesIn.EntityMetadata },
|
||||
{ 0x3A, PacketTypesIn.AttachEntity },
|
||||
{ 0x3B, PacketTypesIn.EntityVelocity },
|
||||
{ 0x3C, PacketTypesIn.EntityEquipment },
|
||||
{ 0x3D, PacketTypesIn.SetExperience },
|
||||
{ 0x3E, PacketTypesIn.UpdateHealth },
|
||||
{ 0x3F, PacketTypesIn.ScoreboardObjective },
|
||||
{ 0x40, PacketTypesIn.SetPassengers },
|
||||
{ 0x41, PacketTypesIn.Teams },
|
||||
{ 0x42, PacketTypesIn.UpdateScore },
|
||||
{ 0x43, PacketTypesIn.SpawnPosition },
|
||||
{ 0x44, PacketTypesIn.TimeUpdate },
|
||||
{ 0x45, PacketTypesIn.Title },
|
||||
{ 0x46, PacketTypesIn.SoundEffect },
|
||||
{ 0x47, PacketTypesIn.PlayerListHeaderAndFooter },
|
||||
{ 0x48, PacketTypesIn.CollectItem },
|
||||
{ 0x49, PacketTypesIn.EntityTeleport },
|
||||
{ 0x4A, PacketTypesIn.EntityProperties },
|
||||
{ 0x4B, PacketTypesIn.EntityEffect },
|
||||
};
|
||||
|
||||
private Dictionary<int, PacketTypesOut> typeOut = new Dictionary<int, PacketTypesOut>()
|
||||
{
|
||||
{ 0x00, PacketTypesOut.TeleportConfirm },
|
||||
{ 0x01, PacketTypesOut.TabComplete },
|
||||
{ 0x02, PacketTypesOut.ChatMessage },
|
||||
{ 0x03, PacketTypesOut.ClientStatus },
|
||||
{ 0x04, PacketTypesOut.ClientSettings },
|
||||
{ 0x05, PacketTypesOut.WindowConfirmation },
|
||||
{ 0x06, PacketTypesOut.EnchantItem },
|
||||
{ 0x07, PacketTypesOut.ClickWindow },
|
||||
{ 0x08, PacketTypesOut.CloseWindow },
|
||||
{ 0x09, PacketTypesOut.PluginMessage },
|
||||
{ 0x0A, PacketTypesOut.InteractEntity },
|
||||
{ 0x0B, PacketTypesOut.KeepAlive },
|
||||
{ 0x0C, PacketTypesOut.PlayerPosition },
|
||||
{ 0x0D, PacketTypesOut.PlayerPositionAndRotation },
|
||||
{ 0x0E, PacketTypesOut.PlayerRotation },
|
||||
{ 0x0F, PacketTypesOut.PlayerMovement },
|
||||
{ 0x10, PacketTypesOut.VehicleMove },
|
||||
{ 0x11, PacketTypesOut.SteerBoat },
|
||||
{ 0x12, PacketTypesOut.PlayerAbilities },
|
||||
{ 0x13, PacketTypesOut.PlayerDigging },
|
||||
{ 0x14, PacketTypesOut.EntityAction },
|
||||
{ 0x15, PacketTypesOut.SteerVehicle },
|
||||
{ 0x16, PacketTypesOut.ResourcePackStatus },
|
||||
{ 0x17, PacketTypesOut.HeldItemChange },
|
||||
{ 0x18, PacketTypesOut.CreativeInventoryAction },
|
||||
{ 0x19, PacketTypesOut.UpdateSign },
|
||||
{ 0x1A, PacketTypesOut.Animation },
|
||||
{ 0x1B, PacketTypesOut.Spectate },
|
||||
{ 0x1C, PacketTypesOut.PlayerBlockPlacement },
|
||||
{ 0x1D, PacketTypesOut.UseItem },
|
||||
};
|
||||
|
||||
protected override Dictionary<int, PacketTypesIn> GetListIn()
|
||||
{
|
||||
return typeIn;
|
||||
}
|
||||
|
||||
protected override Dictionary<int, PacketTypesOut> GetListOut()
|
||||
{
|
||||
return typeOut;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,140 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace MinecraftClient.Protocol.Handlers.PacketPalettes
|
||||
{
|
||||
public class PacketPalette112 : PacketTypePalette
|
||||
{
|
||||
private Dictionary<int, PacketTypesIn> typeIn = new Dictionary<int, PacketTypesIn>()
|
||||
{
|
||||
{ 0x00, PacketTypesIn.SpawnEntity },
|
||||
{ 0x01, PacketTypesIn.SpawnExperienceOrb },
|
||||
{ 0x02, PacketTypesIn.SpawnWeatherEntity },
|
||||
{ 0x03, PacketTypesIn.SpawnLivingEntity },
|
||||
{ 0x04, PacketTypesIn.SpawnPainting },
|
||||
{ 0x05, PacketTypesIn.SpawnPlayer },
|
||||
{ 0x06, PacketTypesIn.EntityAnimation },
|
||||
{ 0x07, PacketTypesIn.Statistics },
|
||||
{ 0x08, PacketTypesIn.BlockBreakAnimation },
|
||||
{ 0x09, PacketTypesIn.BlockEntityData },
|
||||
{ 0x0A, PacketTypesIn.BlockAction },
|
||||
{ 0x0B, PacketTypesIn.BlockChange },
|
||||
{ 0x0C, PacketTypesIn.BossBar },
|
||||
{ 0x0D, PacketTypesIn.ServerDifficulty },
|
||||
{ 0x0E, PacketTypesIn.TabComplete },
|
||||
{ 0x0F, PacketTypesIn.ChatMessage },
|
||||
{ 0x10, PacketTypesIn.MultiBlockChange },
|
||||
{ 0x11, PacketTypesIn.WindowConfirmation },
|
||||
{ 0x12, PacketTypesIn.CloseWindow },
|
||||
{ 0x13, PacketTypesIn.OpenWindow },
|
||||
{ 0x14, PacketTypesIn.WindowItems },
|
||||
{ 0x15, PacketTypesIn.WindowProperty },
|
||||
{ 0x16, PacketTypesIn.SetSlot },
|
||||
{ 0x17, PacketTypesIn.SetCooldown },
|
||||
{ 0x18, PacketTypesIn.PluginMessage },
|
||||
{ 0x19, PacketTypesIn.NamedSoundEffect },
|
||||
{ 0x1A, PacketTypesIn.Disconnect },
|
||||
{ 0x1B, PacketTypesIn.EntityStatus },
|
||||
{ 0x1C, PacketTypesIn.Explosion },
|
||||
{ 0x1D, PacketTypesIn.UnloadChunk },
|
||||
{ 0x1E, PacketTypesIn.ChangeGameState },
|
||||
{ 0x1F, PacketTypesIn.KeepAlive },
|
||||
{ 0x20, PacketTypesIn.ChunkData },
|
||||
{ 0x21, PacketTypesIn.Effect },
|
||||
{ 0x22, PacketTypesIn.Particle },
|
||||
{ 0x23, PacketTypesIn.JoinGame },
|
||||
{ 0x24, PacketTypesIn.MapData },
|
||||
{ 0x25, PacketTypesIn.EntityMovement },
|
||||
{ 0x26, PacketTypesIn.EntityPosition },
|
||||
{ 0x27, PacketTypesIn.EntityPositionAndRotation },
|
||||
{ 0x28, PacketTypesIn.EntityRotation },
|
||||
{ 0x29, PacketTypesIn.VehicleMove },
|
||||
{ 0x2A, PacketTypesIn.OpenSignEditor },
|
||||
{ 0x2B, PacketTypesIn.PlayerAbilities },
|
||||
{ 0x2C, PacketTypesIn.CombatEvent },
|
||||
{ 0x2D, PacketTypesIn.PlayerInfo },
|
||||
{ 0x2E, PacketTypesIn.PlayerPositionAndLook },
|
||||
{ 0x2F, PacketTypesIn.UseBed },
|
||||
{ 0x30, PacketTypesIn.UnlockRecipes },
|
||||
{ 0x31, PacketTypesIn.DestroyEntities },
|
||||
{ 0x32, PacketTypesIn.RemoveEntityEffect },
|
||||
{ 0x33, PacketTypesIn.ResourcePackSend },
|
||||
{ 0x34, PacketTypesIn.Respawn },
|
||||
{ 0x35, PacketTypesIn.EntityHeadLook },
|
||||
{ 0x36, PacketTypesIn.SelectAdvancementTab },
|
||||
{ 0x37, PacketTypesIn.WorldBorder },
|
||||
{ 0x38, PacketTypesIn.Camera },
|
||||
{ 0x39, PacketTypesIn.HeldItemChange },
|
||||
{ 0x3A, PacketTypesIn.DisplayScoreboard },
|
||||
{ 0x3B, PacketTypesIn.EntityMetadata },
|
||||
{ 0x3C, PacketTypesIn.AttachEntity },
|
||||
{ 0x3D, PacketTypesIn.EntityVelocity },
|
||||
{ 0x3E, PacketTypesIn.EntityEquipment },
|
||||
{ 0x3F, PacketTypesIn.SetExperience },
|
||||
{ 0x40, PacketTypesIn.UpdateHealth },
|
||||
{ 0x41, PacketTypesIn.ScoreboardObjective },
|
||||
{ 0x42, PacketTypesIn.SetPassengers },
|
||||
{ 0x43, PacketTypesIn.Teams },
|
||||
{ 0x44, PacketTypesIn.UpdateScore },
|
||||
{ 0x45, PacketTypesIn.SpawnPosition },
|
||||
{ 0x46, PacketTypesIn.TimeUpdate },
|
||||
{ 0x47, PacketTypesIn.Title },
|
||||
{ 0x48, PacketTypesIn.SoundEffect },
|
||||
{ 0x49, PacketTypesIn.PlayerListHeaderAndFooter },
|
||||
{ 0x4A, PacketTypesIn.CollectItem },
|
||||
{ 0x4B, PacketTypesIn.EntityTeleport },
|
||||
{ 0x4C, PacketTypesIn.Advancements },
|
||||
{ 0x4D, PacketTypesIn.EntityProperties },
|
||||
{ 0x4E, PacketTypesIn.EntityEffect },
|
||||
};
|
||||
|
||||
private Dictionary<int, PacketTypesOut> typeOut = new Dictionary<int, PacketTypesOut>()
|
||||
{
|
||||
{ 0x00, PacketTypesOut.TeleportConfirm },
|
||||
{ 0x01, PacketTypesOut.Unknown },
|
||||
{ 0x02, PacketTypesOut.TabComplete },
|
||||
{ 0x03, PacketTypesOut.ChatMessage },
|
||||
{ 0x04, PacketTypesOut.ClientStatus },
|
||||
{ 0x05, PacketTypesOut.ClientSettings },
|
||||
{ 0x06, PacketTypesOut.WindowConfirmation },
|
||||
{ 0x07, PacketTypesOut.EnchantItem },
|
||||
{ 0x08, PacketTypesOut.ClickWindow },
|
||||
{ 0x09, PacketTypesOut.CloseWindow },
|
||||
{ 0x0A, PacketTypesOut.PluginMessage },
|
||||
{ 0x0B, PacketTypesOut.InteractEntity },
|
||||
{ 0x0C, PacketTypesOut.KeepAlive },
|
||||
{ 0x0D, PacketTypesOut.PlayerMovement },
|
||||
{ 0x0E, PacketTypesOut.PlayerPosition },
|
||||
{ 0x0F, PacketTypesOut.PlayerPositionAndRotation },
|
||||
{ 0x10, PacketTypesOut.PlayerRotation },
|
||||
{ 0x11, PacketTypesOut.VehicleMove },
|
||||
{ 0x12, PacketTypesOut.SteerBoat },
|
||||
{ 0x13, PacketTypesOut.PlayerAbilities },
|
||||
{ 0x14, PacketTypesOut.PlayerDigging },
|
||||
{ 0x15, PacketTypesOut.EntityAction },
|
||||
{ 0x16, PacketTypesOut.SteerVehicle },
|
||||
{ 0x17, PacketTypesOut.RecipeBookData },
|
||||
{ 0x18, PacketTypesOut.ResourcePackStatus },
|
||||
{ 0x19, PacketTypesOut.AdvancementTab },
|
||||
{ 0x1A, PacketTypesOut.HeldItemChange },
|
||||
{ 0x1B, PacketTypesOut.CreativeInventoryAction },
|
||||
{ 0x1C, PacketTypesOut.UpdateSign },
|
||||
{ 0x1D, PacketTypesOut.Animation },
|
||||
{ 0x1E, PacketTypesOut.Spectate },
|
||||
{ 0x1F, PacketTypesOut.PlayerBlockPlacement },
|
||||
{ 0x20, PacketTypesOut.UseItem },
|
||||
};
|
||||
|
||||
protected override Dictionary<int, PacketTypesIn> GetListIn()
|
||||
{
|
||||
return typeIn;
|
||||
}
|
||||
|
||||
protected override Dictionary<int, PacketTypesOut> GetListOut()
|
||||
{
|
||||
return typeOut;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,141 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace MinecraftClient.Protocol.Handlers.PacketPalettes
|
||||
{
|
||||
public class PacketPalette1122 : PacketTypePalette
|
||||
{
|
||||
private Dictionary<int, PacketTypesIn> typeIn = new Dictionary<int, PacketTypesIn>()
|
||||
{
|
||||
{ 0x00, PacketTypesIn.SpawnEntity },
|
||||
{ 0x01, PacketTypesIn.SpawnExperienceOrb },
|
||||
{ 0x02, PacketTypesIn.SpawnWeatherEntity },
|
||||
{ 0x03, PacketTypesIn.SpawnLivingEntity },
|
||||
{ 0x04, PacketTypesIn.SpawnPainting },
|
||||
{ 0x05, PacketTypesIn.SpawnPlayer },
|
||||
{ 0x06, PacketTypesIn.EntityAnimation },
|
||||
{ 0x07, PacketTypesIn.Statistics },
|
||||
{ 0x08, PacketTypesIn.BlockBreakAnimation },
|
||||
{ 0x09, PacketTypesIn.BlockEntityData },
|
||||
{ 0x0A, PacketTypesIn.BlockAction },
|
||||
{ 0x0B, PacketTypesIn.BlockChange },
|
||||
{ 0x0C, PacketTypesIn.BossBar },
|
||||
{ 0x0D, PacketTypesIn.ServerDifficulty },
|
||||
{ 0x0E, PacketTypesIn.TabComplete },
|
||||
{ 0x0F, PacketTypesIn.ChatMessage },
|
||||
{ 0x10, PacketTypesIn.MultiBlockChange },
|
||||
{ 0x11, PacketTypesIn.WindowConfirmation },
|
||||
{ 0x12, PacketTypesIn.CloseWindow },
|
||||
{ 0x13, PacketTypesIn.OpenWindow },
|
||||
{ 0x14, PacketTypesIn.WindowItems },
|
||||
{ 0x15, PacketTypesIn.WindowProperty },
|
||||
{ 0x16, PacketTypesIn.SetSlot },
|
||||
{ 0x17, PacketTypesIn.SetCooldown },
|
||||
{ 0x18, PacketTypesIn.PluginMessage },
|
||||
{ 0x19, PacketTypesIn.NamedSoundEffect },
|
||||
{ 0x1A, PacketTypesIn.Disconnect },
|
||||
{ 0x1B, PacketTypesIn.EntityStatus },
|
||||
{ 0x1C, PacketTypesIn.Explosion },
|
||||
{ 0x1D, PacketTypesIn.UnloadChunk },
|
||||
{ 0x1E, PacketTypesIn.ChangeGameState },
|
||||
{ 0x1F, PacketTypesIn.KeepAlive },
|
||||
{ 0x20, PacketTypesIn.ChunkData },
|
||||
{ 0x21, PacketTypesIn.Effect },
|
||||
{ 0x22, PacketTypesIn.Particle },
|
||||
{ 0x23, PacketTypesIn.JoinGame },
|
||||
{ 0x24, PacketTypesIn.MapData },
|
||||
{ 0x25, PacketTypesIn.EntityMovement },
|
||||
{ 0x26, PacketTypesIn.EntityPosition },
|
||||
{ 0x27, PacketTypesIn.EntityPositionAndRotation },
|
||||
{ 0x28, PacketTypesIn.EntityRotation },
|
||||
{ 0x29, PacketTypesIn.VehicleMove },
|
||||
{ 0x2A, PacketTypesIn.OpenSignEditor },
|
||||
{ 0x2B, PacketTypesIn.CraftRecipeResponse },
|
||||
{ 0x2C, PacketTypesIn.PlayerAbilities },
|
||||
{ 0x2D, PacketTypesIn.CombatEvent },
|
||||
{ 0x2E, PacketTypesIn.PlayerInfo },
|
||||
{ 0x2F, PacketTypesIn.PlayerPositionAndLook },
|
||||
{ 0x30, PacketTypesIn.UseBed },
|
||||
{ 0x31, PacketTypesIn.UnlockRecipes },
|
||||
{ 0x32, PacketTypesIn.DestroyEntities },
|
||||
{ 0x33, PacketTypesIn.RemoveEntityEffect },
|
||||
{ 0x34, PacketTypesIn.ResourcePackSend },
|
||||
{ 0x35, PacketTypesIn.Respawn },
|
||||
{ 0x36, PacketTypesIn.EntityHeadLook },
|
||||
{ 0x37, PacketTypesIn.SelectAdvancementTab },
|
||||
{ 0x38, PacketTypesIn.WorldBorder },
|
||||
{ 0x39, PacketTypesIn.Camera },
|
||||
{ 0x3A, PacketTypesIn.HeldItemChange },
|
||||
{ 0x3B, PacketTypesIn.DisplayScoreboard },
|
||||
{ 0x3C, PacketTypesIn.EntityMetadata },
|
||||
{ 0x3D, PacketTypesIn.AttachEntity },
|
||||
{ 0x3E, PacketTypesIn.EntityVelocity },
|
||||
{ 0x3F, PacketTypesIn.EntityEquipment },
|
||||
{ 0x40, PacketTypesIn.SetExperience },
|
||||
{ 0x41, PacketTypesIn.UpdateHealth },
|
||||
{ 0x42, PacketTypesIn.ScoreboardObjective },
|
||||
{ 0x43, PacketTypesIn.SetPassengers },
|
||||
{ 0x44, PacketTypesIn.Teams },
|
||||
{ 0x45, PacketTypesIn.UpdateScore },
|
||||
{ 0x46, PacketTypesIn.SpawnPosition },
|
||||
{ 0x47, PacketTypesIn.TimeUpdate },
|
||||
{ 0x48, PacketTypesIn.Title },
|
||||
{ 0x49, PacketTypesIn.SoundEffect },
|
||||
{ 0x4A, PacketTypesIn.PlayerListHeaderAndFooter },
|
||||
{ 0x4B, PacketTypesIn.CollectItem },
|
||||
{ 0x4C, PacketTypesIn.EntityTeleport },
|
||||
{ 0x4D, PacketTypesIn.Advancements },
|
||||
{ 0x4E, PacketTypesIn.EntityProperties },
|
||||
{ 0x4F, PacketTypesIn.EntityEffect },
|
||||
};
|
||||
|
||||
private Dictionary<int, PacketTypesOut> typeOut = new Dictionary<int, PacketTypesOut>()
|
||||
{
|
||||
{ 0x00, PacketTypesOut.TeleportConfirm },
|
||||
{ 0x01, PacketTypesOut.TabComplete },
|
||||
{ 0x02, PacketTypesOut.ChatMessage },
|
||||
{ 0x03, PacketTypesOut.ClientStatus },
|
||||
{ 0x04, PacketTypesOut.ClientSettings },
|
||||
{ 0x05, PacketTypesOut.WindowConfirmation },
|
||||
{ 0x06, PacketTypesOut.EnchantItem },
|
||||
{ 0x07, PacketTypesOut.ClickWindow },
|
||||
{ 0x08, PacketTypesOut.CloseWindow },
|
||||
{ 0x09, PacketTypesOut.PluginMessage },
|
||||
{ 0x0A, PacketTypesOut.InteractEntity },
|
||||
{ 0x0B, PacketTypesOut.KeepAlive },
|
||||
{ 0x0C, PacketTypesOut.PlayerMovement },
|
||||
{ 0x0D, PacketTypesOut.PlayerPosition },
|
||||
{ 0x0E, PacketTypesOut.PlayerPositionAndRotation },
|
||||
{ 0x0F, PacketTypesOut.PlayerRotation },
|
||||
{ 0x10, PacketTypesOut.VehicleMove },
|
||||
{ 0x11, PacketTypesOut.SteerBoat },
|
||||
{ 0x12, PacketTypesOut.CraftRecipeRequest },
|
||||
{ 0x13, PacketTypesOut.PlayerAbilities },
|
||||
{ 0x14, PacketTypesOut.PlayerDigging },
|
||||
{ 0x15, PacketTypesOut.EntityAction },
|
||||
{ 0x16, PacketTypesOut.SteerVehicle },
|
||||
{ 0x17, PacketTypesOut.RecipeBookData },
|
||||
{ 0x18, PacketTypesOut.ResourcePackStatus },
|
||||
{ 0x19, PacketTypesOut.AdvancementTab },
|
||||
{ 0x1A, PacketTypesOut.HeldItemChange },
|
||||
{ 0x1B, PacketTypesOut.CreativeInventoryAction },
|
||||
{ 0x1C, PacketTypesOut.UpdateSign },
|
||||
{ 0x1D, PacketTypesOut.Animation },
|
||||
{ 0x1E, PacketTypesOut.Spectate },
|
||||
{ 0x1F, PacketTypesOut.PlayerBlockPlacement },
|
||||
{ 0x20, PacketTypesOut.UseItem },
|
||||
};
|
||||
|
||||
protected override Dictionary<int, PacketTypesIn> GetListIn()
|
||||
{
|
||||
return typeIn;
|
||||
}
|
||||
|
||||
protected override Dictionary<int, PacketTypesOut> GetListOut()
|
||||
{
|
||||
return typeOut;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,157 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace MinecraftClient.Protocol.Handlers.PacketPalettes
|
||||
{
|
||||
public class PacketPalette113 : PacketTypePalette
|
||||
{
|
||||
private Dictionary<int, PacketTypesIn> typeIn = new Dictionary<int, PacketTypesIn>()
|
||||
{
|
||||
{ 0x00, PacketTypesIn.SpawnEntity },
|
||||
{ 0x01, PacketTypesIn.SpawnExperienceOrb },
|
||||
{ 0x02, PacketTypesIn.SpawnWeatherEntity },
|
||||
{ 0x03, PacketTypesIn.SpawnLivingEntity },
|
||||
{ 0x04, PacketTypesIn.SpawnPainting },
|
||||
{ 0x05, PacketTypesIn.SpawnPlayer },
|
||||
{ 0x06, PacketTypesIn.EntityAnimation },
|
||||
{ 0x07, PacketTypesIn.Statistics },
|
||||
{ 0x08, PacketTypesIn.BlockBreakAnimation },
|
||||
{ 0x09, PacketTypesIn.BlockEntityData },
|
||||
{ 0x0A, PacketTypesIn.BlockAction },
|
||||
{ 0x0B, PacketTypesIn.BlockChange },
|
||||
{ 0x0C, PacketTypesIn.BossBar },
|
||||
{ 0x0D, PacketTypesIn.ServerDifficulty },
|
||||
{ 0x0E, PacketTypesIn.ChatMessage },
|
||||
{ 0x0F, PacketTypesIn.MultiBlockChange },
|
||||
{ 0x10, PacketTypesIn.TabComplete },
|
||||
{ 0x11, PacketTypesIn.DeclareCommands },
|
||||
{ 0x12, PacketTypesIn.WindowConfirmation },
|
||||
{ 0x13, PacketTypesIn.CloseWindow },
|
||||
{ 0x14, PacketTypesIn.OpenWindow },
|
||||
{ 0x15, PacketTypesIn.WindowItems },
|
||||
{ 0x16, PacketTypesIn.WindowProperty },
|
||||
{ 0x17, PacketTypesIn.SetSlot },
|
||||
{ 0x18, PacketTypesIn.SetCooldown },
|
||||
{ 0x19, PacketTypesIn.PluginMessage },
|
||||
{ 0x1A, PacketTypesIn.NamedSoundEffect },
|
||||
{ 0x1B, PacketTypesIn.Disconnect },
|
||||
{ 0x1C, PacketTypesIn.EntityStatus },
|
||||
{ 0x1D, PacketTypesIn.NBTQueryResponse },
|
||||
{ 0x1E, PacketTypesIn.Explosion },
|
||||
{ 0x1F, PacketTypesIn.UnloadChunk },
|
||||
{ 0x20, PacketTypesIn.ChangeGameState },
|
||||
{ 0x21, PacketTypesIn.KeepAlive },
|
||||
{ 0x22, PacketTypesIn.ChunkData },
|
||||
{ 0x23, PacketTypesIn.Effect },
|
||||
{ 0x24, PacketTypesIn.Particle },
|
||||
{ 0x25, PacketTypesIn.JoinGame },
|
||||
{ 0x26, PacketTypesIn.MapData },
|
||||
{ 0x27, PacketTypesIn.EntityMovement },
|
||||
{ 0x28, PacketTypesIn.EntityPosition },
|
||||
{ 0x29, PacketTypesIn.EntityPositionAndRotation },
|
||||
{ 0x2A, PacketTypesIn.EntityRotation },
|
||||
{ 0x2B, PacketTypesIn.VehicleMove },
|
||||
{ 0x2C, PacketTypesIn.OpenSignEditor },
|
||||
{ 0x2D, PacketTypesIn.CraftRecipeResponse },
|
||||
{ 0x2E, PacketTypesIn.PlayerAbilities },
|
||||
{ 0x2F, PacketTypesIn.CombatEvent },
|
||||
{ 0x30, PacketTypesIn.PlayerInfo },
|
||||
{ 0x31, PacketTypesIn.FacePlayer },
|
||||
{ 0x32, PacketTypesIn.PlayerPositionAndLook },
|
||||
{ 0x33, PacketTypesIn.UseBed },
|
||||
{ 0x34, PacketTypesIn.UnlockRecipes },
|
||||
{ 0x35, PacketTypesIn.DestroyEntities },
|
||||
{ 0x36, PacketTypesIn.RemoveEntityEffect },
|
||||
{ 0x37, PacketTypesIn.ResourcePackSend },
|
||||
{ 0x38, PacketTypesIn.Respawn },
|
||||
{ 0x39, PacketTypesIn.EntityHeadLook },
|
||||
{ 0x3A, PacketTypesIn.SelectAdvancementTab },
|
||||
{ 0x3B, PacketTypesIn.WorldBorder },
|
||||
{ 0x3C, PacketTypesIn.Camera },
|
||||
{ 0x3D, PacketTypesIn.HeldItemChange },
|
||||
{ 0x3E, PacketTypesIn.DisplayScoreboard },
|
||||
{ 0x3F, PacketTypesIn.EntityMetadata },
|
||||
{ 0x40, PacketTypesIn.AttachEntity },
|
||||
{ 0x41, PacketTypesIn.EntityVelocity },
|
||||
{ 0x42, PacketTypesIn.EntityEquipment },
|
||||
{ 0x43, PacketTypesIn.SetExperience },
|
||||
{ 0x44, PacketTypesIn.UpdateHealth },
|
||||
{ 0x45, PacketTypesIn.ScoreboardObjective },
|
||||
{ 0x46, PacketTypesIn.SetPassengers },
|
||||
{ 0x47, PacketTypesIn.Teams },
|
||||
{ 0x48, PacketTypesIn.UpdateScore },
|
||||
{ 0x49, PacketTypesIn.SpawnPosition },
|
||||
{ 0x4A, PacketTypesIn.TimeUpdate },
|
||||
{ 0x4B, PacketTypesIn.Title },
|
||||
{ 0x4C, PacketTypesIn.StopSound },
|
||||
{ 0x4D, PacketTypesIn.SoundEffect },
|
||||
{ 0x4E, PacketTypesIn.PlayerListHeaderAndFooter },
|
||||
{ 0x4F, PacketTypesIn.CollectItem },
|
||||
{ 0x50, PacketTypesIn.EntityTeleport },
|
||||
{ 0x51, PacketTypesIn.Advancements },
|
||||
{ 0x52, PacketTypesIn.EntityProperties },
|
||||
{ 0x53, PacketTypesIn.EntityEffect },
|
||||
{ 0x54, PacketTypesIn.DeclareRecipes },
|
||||
{ 0x55, PacketTypesIn.Tags },
|
||||
};
|
||||
|
||||
private Dictionary<int, PacketTypesOut> typeOut = new Dictionary<int, PacketTypesOut>()
|
||||
{
|
||||
{ 0x00, PacketTypesOut.TeleportConfirm },
|
||||
{ 0x01, PacketTypesOut.QueryBlockNBT },
|
||||
{ 0x02, PacketTypesOut.ChatMessage },
|
||||
{ 0x03, PacketTypesOut.ClientStatus },
|
||||
{ 0x04, PacketTypesOut.ClientSettings },
|
||||
{ 0x05, PacketTypesOut.TabComplete },
|
||||
{ 0x06, PacketTypesOut.WindowConfirmation },
|
||||
{ 0x07, PacketTypesOut.EnchantItem },
|
||||
{ 0x08, PacketTypesOut.ClickWindow },
|
||||
{ 0x09, PacketTypesOut.CloseWindow },
|
||||
{ 0x0A, PacketTypesOut.PluginMessage },
|
||||
{ 0x0B, PacketTypesOut.EditBook },
|
||||
{ 0x0C, PacketTypesOut.EntityNBTRequest },
|
||||
{ 0x0D, PacketTypesOut.InteractEntity },
|
||||
{ 0x0E, PacketTypesOut.KeepAlive },
|
||||
{ 0x0F, PacketTypesOut.PlayerMovement },
|
||||
{ 0x10, PacketTypesOut.PlayerPosition },
|
||||
{ 0x11, PacketTypesOut.PlayerPositionAndRotation },
|
||||
{ 0x12, PacketTypesOut.PlayerPosition },
|
||||
{ 0x13, PacketTypesOut.VehicleMove },
|
||||
{ 0x14, PacketTypesOut.SteerBoat },
|
||||
{ 0x15, PacketTypesOut.PickItem },
|
||||
{ 0x16, PacketTypesOut.CraftRecipeRequest },
|
||||
{ 0x17, PacketTypesOut.PlayerAbilities },
|
||||
{ 0x18, PacketTypesOut.PlayerDigging },
|
||||
{ 0x19, PacketTypesOut.EntityAction },
|
||||
{ 0x1A, PacketTypesOut.SteerVehicle },
|
||||
{ 0x1B, PacketTypesOut.RecipeBookData },
|
||||
{ 0x1C, PacketTypesOut.NameItem },
|
||||
{ 0x1D, PacketTypesOut.ResourcePackStatus },
|
||||
{ 0x1E, PacketTypesOut.AdvancementTab },
|
||||
{ 0x1F, PacketTypesOut.SelectTrade },
|
||||
{ 0x20, PacketTypesOut.SetBeaconEffect },
|
||||
{ 0x21, PacketTypesOut.HeldItemChange },
|
||||
{ 0x22, PacketTypesOut.UpdateCommandBlock },
|
||||
{ 0x23, PacketTypesOut.UpdateCommandBlockMinecart },
|
||||
{ 0x24, PacketTypesOut.CreativeInventoryAction },
|
||||
{ 0x25, PacketTypesOut.UpdateStructureBlock },
|
||||
{ 0x26, PacketTypesOut.UpdateSign },
|
||||
{ 0x27, PacketTypesOut.Animation },
|
||||
{ 0x28, PacketTypesOut.Spectate },
|
||||
{ 0x29, PacketTypesOut.PlayerBlockPlacement },
|
||||
{ 0x2A, PacketTypesOut.UseItem },
|
||||
};
|
||||
|
||||
protected override Dictionary<int, PacketTypesIn> GetListIn()
|
||||
{
|
||||
return typeIn;
|
||||
}
|
||||
|
||||
protected override Dictionary<int, PacketTypesOut> GetListOut()
|
||||
{
|
||||
return typeOut;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,167 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace MinecraftClient.Protocol.Handlers.PacketPalettes
|
||||
{
|
||||
public class PacketPalette114 : PacketTypePalette
|
||||
{
|
||||
private Dictionary<int, PacketTypesIn> typeIn = new Dictionary<int, PacketTypesIn>()
|
||||
{
|
||||
{ 0x00, PacketTypesIn.SpawnEntity },
|
||||
{ 0x01, PacketTypesIn.SpawnExperienceOrb },
|
||||
{ 0x02, PacketTypesIn.SpawnWeatherEntity },
|
||||
{ 0x03, PacketTypesIn.SpawnLivingEntity },
|
||||
{ 0x04, PacketTypesIn.SpawnPainting },
|
||||
{ 0x05, PacketTypesIn.SpawnPlayer },
|
||||
{ 0x06, PacketTypesIn.EntityAnimation },
|
||||
{ 0x07, PacketTypesIn.Statistics },
|
||||
{ 0x08, PacketTypesIn.BlockBreakAnimation },
|
||||
{ 0x09, PacketTypesIn.BlockEntityData },
|
||||
{ 0x0A, PacketTypesIn.BlockAction },
|
||||
{ 0x0B, PacketTypesIn.BlockChange },
|
||||
{ 0x0C, PacketTypesIn.BossBar },
|
||||
{ 0x0D, PacketTypesIn.ServerDifficulty },
|
||||
{ 0x0E, PacketTypesIn.ChatMessage },
|
||||
{ 0x0F, PacketTypesIn.MultiBlockChange },
|
||||
{ 0x10, PacketTypesIn.TabComplete },
|
||||
{ 0x11, PacketTypesIn.DeclareCommands },
|
||||
{ 0x12, PacketTypesIn.WindowConfirmation },
|
||||
{ 0x13, PacketTypesIn.CloseWindow },
|
||||
{ 0x14, PacketTypesIn.WindowItems },
|
||||
{ 0x15, PacketTypesIn.WindowProperty },
|
||||
{ 0x16, PacketTypesIn.SetSlot },
|
||||
{ 0x17, PacketTypesIn.SetCooldown },
|
||||
{ 0x18, PacketTypesIn.PluginMessage },
|
||||
{ 0x19, PacketTypesIn.NamedSoundEffect },
|
||||
{ 0x1A, PacketTypesIn.Disconnect },
|
||||
{ 0x1B, PacketTypesIn.EntityStatus },
|
||||
{ 0x1C, PacketTypesIn.Explosion },
|
||||
{ 0x1D, PacketTypesIn.UnloadChunk },
|
||||
{ 0x1E, PacketTypesIn.ChangeGameState },
|
||||
{ 0x1F, PacketTypesIn.OpenHorseWindow },
|
||||
{ 0x20, PacketTypesIn.KeepAlive },
|
||||
{ 0x21, PacketTypesIn.ChunkData },
|
||||
{ 0x22, PacketTypesIn.Effect },
|
||||
{ 0x23, PacketTypesIn.Particle },
|
||||
{ 0x24, PacketTypesIn.UpdateLight },
|
||||
{ 0x25, PacketTypesIn.JoinGame },
|
||||
{ 0x26, PacketTypesIn.MapData },
|
||||
{ 0x27, PacketTypesIn.TradeList },
|
||||
{ 0x28, PacketTypesIn.EntityPosition },
|
||||
{ 0x29, PacketTypesIn.EntityPositionAndRotation },
|
||||
{ 0x2A, PacketTypesIn.EntityRotation },
|
||||
{ 0x2B, PacketTypesIn.EntityMovement },
|
||||
{ 0x2C, PacketTypesIn.VehicleMove },
|
||||
{ 0x2D, PacketTypesIn.OpenBook },
|
||||
{ 0x2E, PacketTypesIn.OpenWindow },
|
||||
{ 0x2F, PacketTypesIn.OpenSignEditor },
|
||||
{ 0x30, PacketTypesIn.CraftRecipeResponse },
|
||||
{ 0x31, PacketTypesIn.PlayerAbilities },
|
||||
{ 0x32, PacketTypesIn.CombatEvent },
|
||||
{ 0x33, PacketTypesIn.PlayerInfo },
|
||||
{ 0x34, PacketTypesIn.FacePlayer },
|
||||
{ 0x35, PacketTypesIn.PlayerPositionAndLook },
|
||||
{ 0x36, PacketTypesIn.UnlockRecipes },
|
||||
{ 0x37, PacketTypesIn.DestroyEntities },
|
||||
{ 0x38, PacketTypesIn.RemoveEntityEffect },
|
||||
{ 0x39, PacketTypesIn.ResourcePackSend },
|
||||
{ 0x3A, PacketTypesIn.Respawn },
|
||||
{ 0x3B, PacketTypesIn.EntityHeadLook },
|
||||
{ 0x3C, PacketTypesIn.SelectAdvancementTab },
|
||||
{ 0x3D, PacketTypesIn.WorldBorder },
|
||||
{ 0x3E, PacketTypesIn.Camera },
|
||||
{ 0x3F, PacketTypesIn.HeldItemChange },
|
||||
{ 0x40, PacketTypesIn.UpdateViewPosition },
|
||||
{ 0x41, PacketTypesIn.UpdateViewDistance },
|
||||
{ 0x42, PacketTypesIn.DisplayScoreboard },
|
||||
{ 0x43, PacketTypesIn.EntityMetadata },
|
||||
{ 0x44, PacketTypesIn.AttachEntity },
|
||||
{ 0x45, PacketTypesIn.EntityVelocity },
|
||||
{ 0x46, PacketTypesIn.EntityEquipment },
|
||||
{ 0x47, PacketTypesIn.SetExperience },
|
||||
{ 0x48, PacketTypesIn.UpdateHealth },
|
||||
{ 0x49, PacketTypesIn.ScoreboardObjective },
|
||||
{ 0x4A, PacketTypesIn.SetPassengers },
|
||||
{ 0x4B, PacketTypesIn.Teams },
|
||||
{ 0x4C, PacketTypesIn.UpdateScore },
|
||||
{ 0x4D, PacketTypesIn.SpawnPosition },
|
||||
{ 0x4E, PacketTypesIn.TimeUpdate },
|
||||
{ 0x4F, PacketTypesIn.Title },
|
||||
{ 0x50, PacketTypesIn.EntitySoundEffect },
|
||||
{ 0x51, PacketTypesIn.SoundEffect },
|
||||
{ 0x52, PacketTypesIn.StopSound },
|
||||
{ 0x53, PacketTypesIn.PlayerListHeaderAndFooter },
|
||||
{ 0x54, PacketTypesIn.NBTQueryResponse },
|
||||
{ 0x55, PacketTypesIn.CollectItem },
|
||||
{ 0x56, PacketTypesIn.EntityTeleport },
|
||||
{ 0x57, PacketTypesIn.Advancements },
|
||||
{ 0x58, PacketTypesIn.EntityProperties },
|
||||
{ 0x59, PacketTypesIn.EntityEffect },
|
||||
{ 0x5A, PacketTypesIn.DeclareRecipes },
|
||||
{ 0x5B, PacketTypesIn.Tags },
|
||||
{ 0x5C, PacketTypesIn.AcknowledgePlayerDigging },
|
||||
};
|
||||
|
||||
private Dictionary<int, PacketTypesOut> typeOut = new Dictionary<int, PacketTypesOut>()
|
||||
{
|
||||
{ 0x00, PacketTypesOut.TeleportConfirm },
|
||||
{ 0x01, PacketTypesOut.QueryBlockNBT },
|
||||
{ 0x02, PacketTypesOut.SetDifficulty },
|
||||
{ 0x03, PacketTypesOut.ChatMessage },
|
||||
{ 0x04, PacketTypesOut.ClientStatus },
|
||||
{ 0x05, PacketTypesOut.ClientSettings },
|
||||
{ 0x06, PacketTypesOut.TabComplete },
|
||||
{ 0x07, PacketTypesOut.WindowConfirmation },
|
||||
{ 0x08, PacketTypesOut.ClickWindowButton },
|
||||
{ 0x09, PacketTypesOut.ClickWindow },
|
||||
{ 0x0A, PacketTypesOut.CloseWindow },
|
||||
{ 0x0B, PacketTypesOut.PluginMessage },
|
||||
{ 0x0C, PacketTypesOut.EditBook },
|
||||
{ 0x0D, PacketTypesOut.EntityNBTRequest },
|
||||
{ 0x0E, PacketTypesOut.InteractEntity },
|
||||
{ 0x0F, PacketTypesOut.KeepAlive },
|
||||
{ 0x10, PacketTypesOut.LockDifficulty },
|
||||
{ 0x11, PacketTypesOut.PlayerPosition },
|
||||
{ 0x12, PacketTypesOut.PlayerPositionAndRotation },
|
||||
{ 0x13, PacketTypesOut.PlayerRotation },
|
||||
{ 0x14, PacketTypesOut.PlayerMovement },
|
||||
{ 0x15, PacketTypesOut.VehicleMove },
|
||||
{ 0x16, PacketTypesOut.SteerBoat },
|
||||
{ 0x17, PacketTypesOut.PickItem },
|
||||
{ 0x18, PacketTypesOut.CraftRecipeRequest },
|
||||
{ 0x19, PacketTypesOut.PlayerAbilities },
|
||||
{ 0x1A, PacketTypesOut.PlayerDigging },
|
||||
{ 0x1B, PacketTypesOut.EntityAction },
|
||||
{ 0x1C, PacketTypesOut.SteerVehicle },
|
||||
{ 0x1D, PacketTypesOut.RecipeBookData },
|
||||
{ 0x1E, PacketTypesOut.NameItem },
|
||||
{ 0x1F, PacketTypesOut.ResourcePackStatus },
|
||||
{ 0x20, PacketTypesOut.AdvancementTab },
|
||||
{ 0x21, PacketTypesOut.SelectTrade },
|
||||
{ 0x22, PacketTypesOut.SetBeaconEffect },
|
||||
{ 0x23, PacketTypesOut.HeldItemChange },
|
||||
{ 0x24, PacketTypesOut.UpdateCommandBlock },
|
||||
{ 0x25, PacketTypesOut.UpdateCommandBlockMinecart },
|
||||
{ 0x26, PacketTypesOut.CreativeInventoryAction },
|
||||
{ 0x27, PacketTypesOut.UpdateJigsawBlock },
|
||||
{ 0x28, PacketTypesOut.UpdateStructureBlock },
|
||||
{ 0x29, PacketTypesOut.UpdateSign },
|
||||
{ 0x2A, PacketTypesOut.Animation },
|
||||
{ 0x2B, PacketTypesOut.Spectate },
|
||||
{ 0x2C, PacketTypesOut.PlayerBlockPlacement },
|
||||
{ 0x2D, PacketTypesOut.UseItem },
|
||||
};
|
||||
|
||||
protected override Dictionary<int, PacketTypesIn> GetListIn()
|
||||
{
|
||||
return typeIn;
|
||||
}
|
||||
|
||||
protected override Dictionary<int, PacketTypesOut> GetListOut()
|
||||
{
|
||||
return typeOut;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,167 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace MinecraftClient.Protocol.Handlers.PacketPalettes
|
||||
{
|
||||
public class PacketPalette115 : PacketTypePalette
|
||||
{
|
||||
private Dictionary<int, PacketTypesIn> typeIn = new Dictionary<int, PacketTypesIn>()
|
||||
{
|
||||
{ 0x00, PacketTypesIn.SpawnEntity },
|
||||
{ 0x01, PacketTypesIn.SpawnExperienceOrb },
|
||||
{ 0x02, PacketTypesIn.SpawnWeatherEntity },
|
||||
{ 0x03, PacketTypesIn.SpawnLivingEntity },
|
||||
{ 0x04, PacketTypesIn.SpawnPainting },
|
||||
{ 0x05, PacketTypesIn.SpawnPlayer },
|
||||
{ 0x06, PacketTypesIn.EntityAnimation },
|
||||
{ 0x07, PacketTypesIn.Statistics },
|
||||
{ 0x08, PacketTypesIn.AcknowledgePlayerDigging },
|
||||
{ 0x09, PacketTypesIn.BlockBreakAnimation },
|
||||
{ 0x0A, PacketTypesIn.BlockEntityData },
|
||||
{ 0x0B, PacketTypesIn.BlockAction },
|
||||
{ 0x0C, PacketTypesIn.BlockChange },
|
||||
{ 0x0D, PacketTypesIn.BossBar },
|
||||
{ 0x0E, PacketTypesIn.ServerDifficulty },
|
||||
{ 0x0F, PacketTypesIn.ChatMessage },
|
||||
{ 0x10, PacketTypesIn.MultiBlockChange },
|
||||
{ 0x11, PacketTypesIn.TabComplete },
|
||||
{ 0x12, PacketTypesIn.DeclareCommands },
|
||||
{ 0x13, PacketTypesIn.WindowConfirmation },
|
||||
{ 0x14, PacketTypesIn.CloseWindow },
|
||||
{ 0x15, PacketTypesIn.WindowItems },
|
||||
{ 0x16, PacketTypesIn.WindowProperty },
|
||||
{ 0x17, PacketTypesIn.SetSlot },
|
||||
{ 0x18, PacketTypesIn.SetCooldown },
|
||||
{ 0x19, PacketTypesIn.PluginMessage },
|
||||
{ 0x1A, PacketTypesIn.NamedSoundEffect },
|
||||
{ 0x1B, PacketTypesIn.Disconnect },
|
||||
{ 0x1C, PacketTypesIn.EntityStatus },
|
||||
{ 0x1D, PacketTypesIn.Explosion },
|
||||
{ 0x1E, PacketTypesIn.UnloadChunk },
|
||||
{ 0x1F, PacketTypesIn.ChangeGameState },
|
||||
{ 0x20, PacketTypesIn.OpenHorseWindow },
|
||||
{ 0x21, PacketTypesIn.KeepAlive },
|
||||
{ 0x22, PacketTypesIn.ChunkData },
|
||||
{ 0x23, PacketTypesIn.Effect },
|
||||
{ 0x24, PacketTypesIn.Particle },
|
||||
{ 0x25, PacketTypesIn.UpdateLight },
|
||||
{ 0x26, PacketTypesIn.JoinGame },
|
||||
{ 0x27, PacketTypesIn.MapData },
|
||||
{ 0x28, PacketTypesIn.TradeList },
|
||||
{ 0x29, PacketTypesIn.EntityPosition },
|
||||
{ 0x2A, PacketTypesIn.EntityPositionAndRotation },
|
||||
{ 0x2B, PacketTypesIn.EntityRotation },
|
||||
{ 0x2C, PacketTypesIn.EntityMovement },
|
||||
{ 0x2D, PacketTypesIn.VehicleMove },
|
||||
{ 0x2E, PacketTypesIn.OpenBook },
|
||||
{ 0x2F, PacketTypesIn.OpenWindow },
|
||||
{ 0x30, PacketTypesIn.OpenSignEditor },
|
||||
{ 0x31, PacketTypesIn.CraftRecipeResponse },
|
||||
{ 0x32, PacketTypesIn.PlayerAbilities },
|
||||
{ 0x33, PacketTypesIn.CombatEvent },
|
||||
{ 0x34, PacketTypesIn.PlayerInfo },
|
||||
{ 0x35, PacketTypesIn.FacePlayer },
|
||||
{ 0x36, PacketTypesIn.PlayerPositionAndLook },
|
||||
{ 0x37, PacketTypesIn.UnlockRecipes },
|
||||
{ 0x38, PacketTypesIn.DestroyEntities },
|
||||
{ 0x39, PacketTypesIn.RemoveEntityEffect },
|
||||
{ 0x3A, PacketTypesIn.ResourcePackSend },
|
||||
{ 0x3B, PacketTypesIn.Respawn },
|
||||
{ 0x3C, PacketTypesIn.EntityHeadLook },
|
||||
{ 0x3D, PacketTypesIn.SelectAdvancementTab },
|
||||
{ 0x3E, PacketTypesIn.WorldBorder },
|
||||
{ 0x3F, PacketTypesIn.Camera },
|
||||
{ 0x40, PacketTypesIn.HeldItemChange },
|
||||
{ 0x41, PacketTypesIn.UpdateViewPosition },
|
||||
{ 0x42, PacketTypesIn.UpdateViewDistance },
|
||||
{ 0x43, PacketTypesIn.DisplayScoreboard },
|
||||
{ 0x44, PacketTypesIn.EntityMetadata },
|
||||
{ 0x45, PacketTypesIn.AttachEntity },
|
||||
{ 0x46, PacketTypesIn.EntityVelocity },
|
||||
{ 0x47, PacketTypesIn.EntityEquipment },
|
||||
{ 0x48, PacketTypesIn.SetExperience },
|
||||
{ 0x49, PacketTypesIn.UpdateHealth },
|
||||
{ 0x4A, PacketTypesIn.ScoreboardObjective },
|
||||
{ 0x4B, PacketTypesIn.SetPassengers },
|
||||
{ 0x4C, PacketTypesIn.Teams },
|
||||
{ 0x4D, PacketTypesIn.UpdateScore },
|
||||
{ 0x4E, PacketTypesIn.SpawnPosition },
|
||||
{ 0x4F, PacketTypesIn.TimeUpdate },
|
||||
{ 0x50, PacketTypesIn.Title },
|
||||
{ 0x51, PacketTypesIn.EntitySoundEffect },
|
||||
{ 0x52, PacketTypesIn.SoundEffect },
|
||||
{ 0x53, PacketTypesIn.StopSound },
|
||||
{ 0x54, PacketTypesIn.PlayerListHeaderAndFooter },
|
||||
{ 0x55, PacketTypesIn.NBTQueryResponse },
|
||||
{ 0x56, PacketTypesIn.CollectItem },
|
||||
{ 0x57, PacketTypesIn.EntityTeleport },
|
||||
{ 0x58, PacketTypesIn.Advancements },
|
||||
{ 0x59, PacketTypesIn.EntityProperties },
|
||||
{ 0x5A, PacketTypesIn.EntityEffect },
|
||||
{ 0x5B, PacketTypesIn.DeclareRecipes },
|
||||
{ 0x5C, PacketTypesIn.Tags },
|
||||
};
|
||||
|
||||
private Dictionary<int, PacketTypesOut> typeOut = new Dictionary<int, PacketTypesOut>()
|
||||
{
|
||||
{ 0x00, PacketTypesOut.TeleportConfirm },
|
||||
{ 0x01, PacketTypesOut.QueryBlockNBT },
|
||||
{ 0x02, PacketTypesOut.SetDifficulty },
|
||||
{ 0x03, PacketTypesOut.ChatMessage },
|
||||
{ 0x04, PacketTypesOut.ClientStatus },
|
||||
{ 0x05, PacketTypesOut.ClientSettings },
|
||||
{ 0x06, PacketTypesOut.TabComplete },
|
||||
{ 0x07, PacketTypesOut.WindowConfirmation },
|
||||
{ 0x08, PacketTypesOut.ClickWindowButton },
|
||||
{ 0x09, PacketTypesOut.ClickWindow },
|
||||
{ 0x0A, PacketTypesOut.CloseWindow },
|
||||
{ 0x0B, PacketTypesOut.PluginMessage },
|
||||
{ 0x0C, PacketTypesOut.EditBook },
|
||||
{ 0x0D, PacketTypesOut.EntityNBTRequest },
|
||||
{ 0x0E, PacketTypesOut.InteractEntity },
|
||||
{ 0x0F, PacketTypesOut.KeepAlive },
|
||||
{ 0x10, PacketTypesOut.LockDifficulty },
|
||||
{ 0x11, PacketTypesOut.PlayerPosition },
|
||||
{ 0x12, PacketTypesOut.PlayerPositionAndRotation },
|
||||
{ 0x13, PacketTypesOut.PlayerRotation },
|
||||
{ 0x14, PacketTypesOut.PlayerMovement },
|
||||
{ 0x15, PacketTypesOut.VehicleMove },
|
||||
{ 0x16, PacketTypesOut.SteerBoat },
|
||||
{ 0x17, PacketTypesOut.PickItem },
|
||||
{ 0x18, PacketTypesOut.CraftRecipeRequest },
|
||||
{ 0x19, PacketTypesOut.PlayerAbilities },
|
||||
{ 0x1A, PacketTypesOut.PlayerDigging },
|
||||
{ 0x1B, PacketTypesOut.EntityAction },
|
||||
{ 0x1C, PacketTypesOut.SteerVehicle },
|
||||
{ 0x1D, PacketTypesOut.RecipeBookData },
|
||||
{ 0x1E, PacketTypesOut.NameItem },
|
||||
{ 0x1F, PacketTypesOut.ResourcePackStatus },
|
||||
{ 0x20, PacketTypesOut.AdvancementTab },
|
||||
{ 0x21, PacketTypesOut.SelectTrade },
|
||||
{ 0x22, PacketTypesOut.SetBeaconEffect },
|
||||
{ 0x23, PacketTypesOut.HeldItemChange },
|
||||
{ 0x24, PacketTypesOut.UpdateCommandBlock },
|
||||
{ 0x25, PacketTypesOut.UpdateCommandBlockMinecart },
|
||||
{ 0x26, PacketTypesOut.CreativeInventoryAction },
|
||||
{ 0x27, PacketTypesOut.UpdateJigsawBlock },
|
||||
{ 0x28, PacketTypesOut.UpdateStructureBlock },
|
||||
{ 0x29, PacketTypesOut.UpdateSign },
|
||||
{ 0x2A, PacketTypesOut.Animation },
|
||||
{ 0x2B, PacketTypesOut.Spectate },
|
||||
{ 0x2C, PacketTypesOut.PlayerBlockPlacement },
|
||||
{ 0x2D, PacketTypesOut.UseItem },
|
||||
};
|
||||
|
||||
protected override Dictionary<int, PacketTypesIn> GetListIn()
|
||||
{
|
||||
return typeIn;
|
||||
}
|
||||
|
||||
protected override Dictionary<int, PacketTypesOut> GetListOut()
|
||||
{
|
||||
return typeOut;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,167 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace MinecraftClient.Protocol.Handlers.PacketPalettes
|
||||
{
|
||||
public class PacketPalette116 : PacketTypePalette
|
||||
{
|
||||
private Dictionary<int, PacketTypesIn> typeIn = new Dictionary<int, PacketTypesIn>()
|
||||
{
|
||||
{ 0x00, PacketTypesIn.SpawnEntity },
|
||||
{ 0x01, PacketTypesIn.SpawnExperienceOrb },
|
||||
{ 0x02, PacketTypesIn.SpawnLivingEntity },
|
||||
{ 0x03, PacketTypesIn.SpawnPainting },
|
||||
{ 0x04, PacketTypesIn.SpawnPlayer },
|
||||
{ 0x05, PacketTypesIn.EntityAnimation },
|
||||
{ 0x06, PacketTypesIn.Statistics },
|
||||
{ 0x07, PacketTypesIn.AcknowledgePlayerDigging },
|
||||
{ 0x08, PacketTypesIn.BlockBreakAnimation },
|
||||
{ 0x09, PacketTypesIn.BlockEntityData },
|
||||
{ 0x0A, PacketTypesIn.BlockAction },
|
||||
{ 0x0B, PacketTypesIn.BlockChange },
|
||||
{ 0x0C, PacketTypesIn.BossBar },
|
||||
{ 0x0D, PacketTypesIn.ServerDifficulty },
|
||||
{ 0x0E, PacketTypesIn.ChatMessage },
|
||||
{ 0x0F, PacketTypesIn.MultiBlockChange },
|
||||
{ 0x10, PacketTypesIn.TabComplete },
|
||||
{ 0x11, PacketTypesIn.DeclareCommands },
|
||||
{ 0x12, PacketTypesIn.WindowConfirmation },
|
||||
{ 0x13, PacketTypesIn.CloseWindow },
|
||||
{ 0x14, PacketTypesIn.WindowItems },
|
||||
{ 0x15, PacketTypesIn.WindowProperty },
|
||||
{ 0x16, PacketTypesIn.SetSlot },
|
||||
{ 0x17, PacketTypesIn.SetCooldown },
|
||||
{ 0x18, PacketTypesIn.PluginMessage },
|
||||
{ 0x19, PacketTypesIn.NamedSoundEffect },
|
||||
{ 0x1A, PacketTypesIn.Disconnect },
|
||||
{ 0x1B, PacketTypesIn.EntityStatus },
|
||||
{ 0x1C, PacketTypesIn.Explosion },
|
||||
{ 0x1D, PacketTypesIn.UnloadChunk },
|
||||
{ 0x1E, PacketTypesIn.ChangeGameState },
|
||||
{ 0x1F, PacketTypesIn.OpenHorseWindow },
|
||||
{ 0x20, PacketTypesIn.KeepAlive },
|
||||
{ 0x21, PacketTypesIn.ChunkData },
|
||||
{ 0x22, PacketTypesIn.Effect },
|
||||
{ 0x23, PacketTypesIn.Particle },
|
||||
{ 0x24, PacketTypesIn.UpdateLight },
|
||||
{ 0x25, PacketTypesIn.JoinGame },
|
||||
{ 0x26, PacketTypesIn.MapData },
|
||||
{ 0x27, PacketTypesIn.TradeList },
|
||||
{ 0x28, PacketTypesIn.EntityPosition },
|
||||
{ 0x29, PacketTypesIn.EntityPositionAndRotation },
|
||||
{ 0x2A, PacketTypesIn.EntityRotation },
|
||||
{ 0x2B, PacketTypesIn.EntityMovement },
|
||||
{ 0x2C, PacketTypesIn.VehicleMove },
|
||||
{ 0x2D, PacketTypesIn.OpenBook },
|
||||
{ 0x2E, PacketTypesIn.OpenWindow },
|
||||
{ 0x2F, PacketTypesIn.OpenSignEditor },
|
||||
{ 0x30, PacketTypesIn.CraftRecipeResponse },
|
||||
{ 0x31, PacketTypesIn.PlayerAbilities },
|
||||
{ 0x32, PacketTypesIn.CombatEvent },
|
||||
{ 0x33, PacketTypesIn.PlayerInfo },
|
||||
{ 0x34, PacketTypesIn.FacePlayer },
|
||||
{ 0x35, PacketTypesIn.PlayerPositionAndLook },
|
||||
{ 0x36, PacketTypesIn.UnlockRecipes },
|
||||
{ 0x37, PacketTypesIn.DestroyEntities },
|
||||
{ 0x38, PacketTypesIn.RemoveEntityEffect },
|
||||
{ 0x39, PacketTypesIn.ResourcePackSend },
|
||||
{ 0x3A, PacketTypesIn.Respawn },
|
||||
{ 0x3B, PacketTypesIn.EntityHeadLook },
|
||||
{ 0x3C, PacketTypesIn.SelectAdvancementTab },
|
||||
{ 0x3D, PacketTypesIn.WorldBorder },
|
||||
{ 0x3E, PacketTypesIn.Camera },
|
||||
{ 0x3F, PacketTypesIn.HeldItemChange },
|
||||
{ 0x40, PacketTypesIn.UpdateViewPosition },
|
||||
{ 0x41, PacketTypesIn.UpdateViewDistance },
|
||||
{ 0x42, PacketTypesIn.SpawnPosition },
|
||||
{ 0x43, PacketTypesIn.DisplayScoreboard },
|
||||
{ 0x44, PacketTypesIn.EntityMetadata },
|
||||
{ 0x45, PacketTypesIn.AttachEntity },
|
||||
{ 0x46, PacketTypesIn.EntityVelocity },
|
||||
{ 0x47, PacketTypesIn.EntityEquipment },
|
||||
{ 0x48, PacketTypesIn.SetExperience },
|
||||
{ 0x49, PacketTypesIn.UpdateHealth },
|
||||
{ 0x4A, PacketTypesIn.ScoreboardObjective },
|
||||
{ 0x4B, PacketTypesIn.SetPassengers },
|
||||
{ 0x4C, PacketTypesIn.Teams },
|
||||
{ 0x4D, PacketTypesIn.UpdateScore },
|
||||
{ 0x4E, PacketTypesIn.TimeUpdate },
|
||||
{ 0x4F, PacketTypesIn.Title },
|
||||
{ 0x50, PacketTypesIn.EntitySoundEffect },
|
||||
{ 0x51, PacketTypesIn.SoundEffect },
|
||||
{ 0x52, PacketTypesIn.StopSound },
|
||||
{ 0x53, PacketTypesIn.PlayerListHeaderAndFooter },
|
||||
{ 0x54, PacketTypesIn.NBTQueryResponse },
|
||||
{ 0x55, PacketTypesIn.CollectItem },
|
||||
{ 0x56, PacketTypesIn.EntityTeleport },
|
||||
{ 0x57, PacketTypesIn.Advancements },
|
||||
{ 0x58, PacketTypesIn.EntityProperties },
|
||||
{ 0x59, PacketTypesIn.EntityEffect },
|
||||
{ 0x5A, PacketTypesIn.DeclareRecipes },
|
||||
{ 0x5B, PacketTypesIn.Tags },
|
||||
};
|
||||
|
||||
private Dictionary<int, PacketTypesOut> typeOut = new Dictionary<int, PacketTypesOut>()
|
||||
{
|
||||
{ 0x00, PacketTypesOut.TeleportConfirm },
|
||||
{ 0x01, PacketTypesOut.QueryBlockNBT },
|
||||
{ 0x02, PacketTypesOut.SetDifficulty },
|
||||
{ 0x03, PacketTypesOut.ChatMessage },
|
||||
{ 0x04, PacketTypesOut.ClientStatus },
|
||||
{ 0x05, PacketTypesOut.ClientSettings },
|
||||
{ 0x06, PacketTypesOut.TabComplete },
|
||||
{ 0x07, PacketTypesOut.WindowConfirmation },
|
||||
{ 0x08, PacketTypesOut.ClickWindowButton },
|
||||
{ 0x09, PacketTypesOut.ClickWindow },
|
||||
{ 0x0A, PacketTypesOut.CloseWindow },
|
||||
{ 0x0B, PacketTypesOut.PluginMessage },
|
||||
{ 0x0C, PacketTypesOut.EditBook },
|
||||
{ 0x0D, PacketTypesOut.EntityNBTRequest },
|
||||
{ 0x0E, PacketTypesOut.InteractEntity },
|
||||
{ 0x0F, PacketTypesOut.GenerateStructure },
|
||||
{ 0x10, PacketTypesOut.KeepAlive },
|
||||
{ 0x11, PacketTypesOut.LockDifficulty },
|
||||
{ 0x12, PacketTypesOut.PlayerPosition },
|
||||
{ 0x13, PacketTypesOut.PlayerPositionAndRotation },
|
||||
{ 0x14, PacketTypesOut.PlayerRotation },
|
||||
{ 0x15, PacketTypesOut.PlayerMovement },
|
||||
{ 0x16, PacketTypesOut.VehicleMove },
|
||||
{ 0x17, PacketTypesOut.SteerBoat },
|
||||
{ 0x18, PacketTypesOut.PickItem },
|
||||
{ 0x19, PacketTypesOut.CraftRecipeRequest },
|
||||
{ 0x1A, PacketTypesOut.PlayerAbilities },
|
||||
{ 0x1B, PacketTypesOut.PlayerDigging },
|
||||
{ 0x1C, PacketTypesOut.EntityAction },
|
||||
{ 0x1D, PacketTypesOut.SteerVehicle },
|
||||
{ 0x1E, PacketTypesOut.RecipeBookData },
|
||||
{ 0x1F, PacketTypesOut.NameItem },
|
||||
{ 0x20, PacketTypesOut.ResourcePackStatus },
|
||||
{ 0x21, PacketTypesOut.AdvancementTab },
|
||||
{ 0x22, PacketTypesOut.SelectTrade },
|
||||
{ 0x23, PacketTypesOut.SetBeaconEffect },
|
||||
{ 0x24, PacketTypesOut.HeldItemChange },
|
||||
{ 0x25, PacketTypesOut.UpdateCommandBlock },
|
||||
{ 0x26, PacketTypesOut.UpdateCommandBlockMinecart },
|
||||
{ 0x27, PacketTypesOut.CreativeInventoryAction },
|
||||
{ 0x28, PacketTypesOut.UpdateJigsawBlock },
|
||||
{ 0x29, PacketTypesOut.UpdateStructureBlock },
|
||||
{ 0x2A, PacketTypesOut.UpdateSign },
|
||||
{ 0x2B, PacketTypesOut.Animation },
|
||||
{ 0x2C, PacketTypesOut.Spectate },
|
||||
{ 0x2D, PacketTypesOut.PlayerBlockPlacement },
|
||||
{ 0x2E, PacketTypesOut.UseItem },
|
||||
};
|
||||
|
||||
protected override Dictionary<int, PacketTypesIn> GetListIn()
|
||||
{
|
||||
return typeIn;
|
||||
}
|
||||
|
||||
protected override Dictionary<int, PacketTypesOut> GetListOut()
|
||||
{
|
||||
return typeOut;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,168 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace MinecraftClient.Protocol.Handlers.PacketPalettes
|
||||
{
|
||||
public class PacketPalette1162 : PacketTypePalette
|
||||
{
|
||||
private Dictionary<int, PacketTypesIn> typeIn = new Dictionary<int, PacketTypesIn>()
|
||||
{
|
||||
{ 0x00, PacketTypesIn.SpawnEntity },
|
||||
{ 0x01, PacketTypesIn.SpawnExperienceOrb },
|
||||
{ 0x02, PacketTypesIn.SpawnLivingEntity },
|
||||
{ 0x03, PacketTypesIn.SpawnPainting },
|
||||
{ 0x04, PacketTypesIn.SpawnPlayer },
|
||||
{ 0x05, PacketTypesIn.EntityAnimation },
|
||||
{ 0x06, PacketTypesIn.Statistics },
|
||||
{ 0x07, PacketTypesIn.AcknowledgePlayerDigging },
|
||||
{ 0x08, PacketTypesIn.BlockBreakAnimation },
|
||||
{ 0x09, PacketTypesIn.BlockEntityData },
|
||||
{ 0x0A, PacketTypesIn.BlockAction },
|
||||
{ 0x0B, PacketTypesIn.BlockChange },
|
||||
{ 0x0C, PacketTypesIn.BossBar },
|
||||
{ 0x0D, PacketTypesIn.ServerDifficulty },
|
||||
{ 0x0E, PacketTypesIn.ChatMessage },
|
||||
{ 0x0F, PacketTypesIn.TabComplete },
|
||||
{ 0x10, PacketTypesIn.DeclareCommands },
|
||||
{ 0x11, PacketTypesIn.WindowConfirmation },
|
||||
{ 0x12, PacketTypesIn.CloseWindow },
|
||||
{ 0x13, PacketTypesIn.WindowItems },
|
||||
{ 0x14, PacketTypesIn.WindowProperty },
|
||||
{ 0x15, PacketTypesIn.SetSlot },
|
||||
{ 0x16, PacketTypesIn.SetCooldown },
|
||||
{ 0x17, PacketTypesIn.PluginMessage },
|
||||
{ 0x18, PacketTypesIn.NamedSoundEffect },
|
||||
{ 0x19, PacketTypesIn.Disconnect },
|
||||
{ 0x1A, PacketTypesIn.EntityStatus },
|
||||
{ 0x1B, PacketTypesIn.Explosion },
|
||||
{ 0x1C, PacketTypesIn.UnloadChunk },
|
||||
{ 0x1D, PacketTypesIn.ChangeGameState },
|
||||
{ 0x1E, PacketTypesIn.OpenHorseWindow },
|
||||
{ 0x1F, PacketTypesIn.KeepAlive },
|
||||
{ 0x20, PacketTypesIn.ChunkData },
|
||||
{ 0x21, PacketTypesIn.Effect },
|
||||
{ 0x22, PacketTypesIn.Particle },
|
||||
{ 0x23, PacketTypesIn.UpdateLight },
|
||||
{ 0x24, PacketTypesIn.JoinGame },
|
||||
{ 0x25, PacketTypesIn.MapData },
|
||||
{ 0x26, PacketTypesIn.TradeList },
|
||||
{ 0x27, PacketTypesIn.EntityPosition },
|
||||
{ 0x28, PacketTypesIn.EntityPositionAndRotation },
|
||||
{ 0x29, PacketTypesIn.EntityRotation },
|
||||
{ 0x2A, PacketTypesIn.EntityMovement },
|
||||
{ 0x2B, PacketTypesIn.VehicleMove },
|
||||
{ 0x2C, PacketTypesIn.OpenBook },
|
||||
{ 0x2D, PacketTypesIn.OpenWindow },
|
||||
{ 0x2E, PacketTypesIn.OpenSignEditor },
|
||||
{ 0x2F, PacketTypesIn.CraftRecipeResponse },
|
||||
{ 0x30, PacketTypesIn.PlayerAbilities },
|
||||
{ 0x31, PacketTypesIn.CombatEvent },
|
||||
{ 0x32, PacketTypesIn.PlayerInfo },
|
||||
{ 0x33, PacketTypesIn.FacePlayer },
|
||||
{ 0x34, PacketTypesIn.PlayerPositionAndLook },
|
||||
{ 0x35, PacketTypesIn.UnlockRecipes },
|
||||
{ 0x36, PacketTypesIn.DestroyEntities },
|
||||
{ 0x37, PacketTypesIn.RemoveEntityEffect },
|
||||
{ 0x38, PacketTypesIn.ResourcePackSend },
|
||||
{ 0x39, PacketTypesIn.Respawn },
|
||||
{ 0x3A, PacketTypesIn.EntityHeadLook },
|
||||
{ 0x3B, PacketTypesIn.MultiBlockChange },
|
||||
{ 0x3C, PacketTypesIn.SelectAdvancementTab },
|
||||
{ 0x3D, PacketTypesIn.WorldBorder },
|
||||
{ 0x3E, PacketTypesIn.Camera },
|
||||
{ 0x3F, PacketTypesIn.HeldItemChange },
|
||||
{ 0x40, PacketTypesIn.UpdateViewPosition },
|
||||
{ 0x41, PacketTypesIn.UpdateViewDistance },
|
||||
{ 0x42, PacketTypesIn.SpawnPosition },
|
||||
{ 0x43, PacketTypesIn.DisplayScoreboard },
|
||||
{ 0x44, PacketTypesIn.EntityMetadata },
|
||||
{ 0x45, PacketTypesIn.AttachEntity },
|
||||
{ 0x46, PacketTypesIn.EntityVelocity },
|
||||
{ 0x47, PacketTypesIn.EntityEquipment },
|
||||
{ 0x48, PacketTypesIn.SetExperience },
|
||||
{ 0x49, PacketTypesIn.UpdateHealth },
|
||||
{ 0x4A, PacketTypesIn.ScoreboardObjective },
|
||||
{ 0x4B, PacketTypesIn.SetPassengers },
|
||||
{ 0x4C, PacketTypesIn.Teams },
|
||||
{ 0x4D, PacketTypesIn.UpdateScore },
|
||||
{ 0x4E, PacketTypesIn.TimeUpdate },
|
||||
{ 0x4F, PacketTypesIn.Title },
|
||||
{ 0x50, PacketTypesIn.EntitySoundEffect },
|
||||
{ 0x51, PacketTypesIn.SoundEffect },
|
||||
{ 0x52, PacketTypesIn.StopSound },
|
||||
{ 0x53, PacketTypesIn.PlayerListHeaderAndFooter },
|
||||
{ 0x54, PacketTypesIn.NBTQueryResponse },
|
||||
{ 0x55, PacketTypesIn.CollectItem },
|
||||
{ 0x56, PacketTypesIn.EntityTeleport },
|
||||
{ 0x57, PacketTypesIn.Advancements },
|
||||
{ 0x58, PacketTypesIn.EntityProperties },
|
||||
{ 0x59, PacketTypesIn.EntityEffect },
|
||||
{ 0x5A, PacketTypesIn.DeclareRecipes },
|
||||
{ 0x5B, PacketTypesIn.Tags },
|
||||
};
|
||||
|
||||
private Dictionary<int, PacketTypesOut> typeOut = new Dictionary<int, PacketTypesOut>()
|
||||
{
|
||||
{ 0x00, PacketTypesOut.TeleportConfirm },
|
||||
{ 0x01, PacketTypesOut.QueryBlockNBT },
|
||||
{ 0x02, PacketTypesOut.SetDifficulty },
|
||||
{ 0x03, PacketTypesOut.ChatMessage },
|
||||
{ 0x04, PacketTypesOut.ClientStatus },
|
||||
{ 0x05, PacketTypesOut.ClientSettings },
|
||||
{ 0x06, PacketTypesOut.TabComplete },
|
||||
{ 0x07, PacketTypesOut.WindowConfirmation },
|
||||
{ 0x08, PacketTypesOut.ClickWindowButton },
|
||||
{ 0x09, PacketTypesOut.ClickWindow },
|
||||
{ 0x0A, PacketTypesOut.CloseWindow },
|
||||
{ 0x0B, PacketTypesOut.PluginMessage },
|
||||
{ 0x0C, PacketTypesOut.EditBook },
|
||||
{ 0x0D, PacketTypesOut.EntityNBTRequest },
|
||||
{ 0x0E, PacketTypesOut.InteractEntity },
|
||||
{ 0x0F, PacketTypesOut.GenerateStructure },
|
||||
{ 0x10, PacketTypesOut.KeepAlive },
|
||||
{ 0x11, PacketTypesOut.LockDifficulty },
|
||||
{ 0x12, PacketTypesOut.PlayerPosition },
|
||||
{ 0x13, PacketTypesOut.PlayerPositionAndRotation },
|
||||
{ 0x14, PacketTypesOut.PlayerRotation },
|
||||
{ 0x15, PacketTypesOut.PlayerMovement },
|
||||
{ 0x16, PacketTypesOut.VehicleMove },
|
||||
{ 0x17, PacketTypesOut.SteerBoat },
|
||||
{ 0x18, PacketTypesOut.PickItem },
|
||||
{ 0x19, PacketTypesOut.CraftRecipeRequest },
|
||||
{ 0x1A, PacketTypesOut.PlayerAbilities },
|
||||
{ 0x1B, PacketTypesOut.PlayerDigging },
|
||||
{ 0x1C, PacketTypesOut.EntityAction },
|
||||
{ 0x1D, PacketTypesOut.SteerVehicle },
|
||||
{ 0x1E, PacketTypesOut.SetDisplayedRecipe },
|
||||
{ 0x1F, PacketTypesOut.SetRecipeBookState },
|
||||
{ 0x20, PacketTypesOut.NameItem },
|
||||
{ 0x21, PacketTypesOut.ResourcePackStatus },
|
||||
{ 0x22, PacketTypesOut.AdvancementTab },
|
||||
{ 0x23, PacketTypesOut.SelectTrade },
|
||||
{ 0x24, PacketTypesOut.SetBeaconEffect },
|
||||
{ 0x25, PacketTypesOut.HeldItemChange },
|
||||
{ 0x26, PacketTypesOut.UpdateCommandBlock },
|
||||
{ 0x27, PacketTypesOut.UpdateCommandBlockMinecart },
|
||||
{ 0x28, PacketTypesOut.CreativeInventoryAction },
|
||||
{ 0x29, PacketTypesOut.UpdateJigsawBlock },
|
||||
{ 0x2A, PacketTypesOut.UpdateStructureBlock },
|
||||
{ 0x2B, PacketTypesOut.UpdateSign },
|
||||
{ 0x2C, PacketTypesOut.Animation },
|
||||
{ 0x2D, PacketTypesOut.Spectate },
|
||||
{ 0x2E, PacketTypesOut.PlayerBlockPlacement },
|
||||
{ 0x2F, PacketTypesOut.UseItem },
|
||||
};
|
||||
|
||||
protected override Dictionary<int, PacketTypesIn> GetListIn()
|
||||
{
|
||||
return typeIn;
|
||||
}
|
||||
|
||||
protected override Dictionary<int, PacketTypesOut> GetListOut()
|
||||
{
|
||||
return typeOut;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,128 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace MinecraftClient.Protocol.Handlers.PacketPalettes
|
||||
{
|
||||
public class PacketPalette17 : PacketTypePalette
|
||||
{
|
||||
private Dictionary<int, PacketTypesIn> typeIn = new Dictionary<int, PacketTypesIn>()
|
||||
{
|
||||
{ 0x00, PacketTypesIn.KeepAlive },
|
||||
{ 0x01, PacketTypesIn.JoinGame },
|
||||
{ 0x02, PacketTypesIn.ChatMessage },
|
||||
{ 0x03, PacketTypesIn.TimeUpdate },
|
||||
{ 0x04, PacketTypesIn.EntityEquipment },
|
||||
{ 0x05, PacketTypesIn.SpawnPosition },
|
||||
{ 0x06, PacketTypesIn.UpdateHealth },
|
||||
{ 0x07, PacketTypesIn.Respawn },
|
||||
{ 0x08, PacketTypesIn.PlayerPositionAndLook },
|
||||
{ 0x09, PacketTypesIn.HeldItemChange },
|
||||
{ 0x0A, PacketTypesIn.UseBed },
|
||||
{ 0x0B, PacketTypesIn.EntityAnimation },
|
||||
{ 0x0C, PacketTypesIn.SpawnPlayer },
|
||||
{ 0x0D, PacketTypesIn.CollectItem },
|
||||
{ 0x0E, PacketTypesIn.SpawnEntity },
|
||||
{ 0x0F, PacketTypesIn.SpawnLivingEntity },
|
||||
{ 0x10, PacketTypesIn.SpawnPainting },
|
||||
{ 0x11, PacketTypesIn.SpawnExperienceOrb },
|
||||
{ 0x12, PacketTypesIn.EntityVelocity },
|
||||
{ 0x13, PacketTypesIn.DestroyEntities },
|
||||
{ 0x14, PacketTypesIn.EntityMovement },
|
||||
{ 0x15, PacketTypesIn.EntityPosition },
|
||||
{ 0x16, PacketTypesIn.EntityRotation },
|
||||
{ 0x17, PacketTypesIn.EntityPositionAndRotation },
|
||||
{ 0x18, PacketTypesIn.EntityTeleport },
|
||||
{ 0x19, PacketTypesIn.EntityHeadLook },
|
||||
{ 0x1A, PacketTypesIn.EntityStatus },
|
||||
{ 0x1B, PacketTypesIn.AttachEntity },
|
||||
{ 0x1C, PacketTypesIn.EntityMetadata },
|
||||
{ 0x1D, PacketTypesIn.EntityEffect },
|
||||
{ 0x1E, PacketTypesIn.RemoveEntityEffect },
|
||||
{ 0x1F, PacketTypesIn.SetExperience },
|
||||
{ 0x20, PacketTypesIn.EntityProperties },
|
||||
{ 0x21, PacketTypesIn.ChunkData },
|
||||
{ 0x22, PacketTypesIn.MultiBlockChange },
|
||||
{ 0x23, PacketTypesIn.BlockChange },
|
||||
{ 0x24, PacketTypesIn.BlockAction },
|
||||
{ 0x25, PacketTypesIn.BlockBreakAnimation },
|
||||
{ 0x26, PacketTypesIn.MapChunkBulk },
|
||||
{ 0x27, PacketTypesIn.Explosion },
|
||||
{ 0x28, PacketTypesIn.Effect },
|
||||
{ 0x29, PacketTypesIn.SoundEffect },
|
||||
{ 0x2A, PacketTypesIn.Particle },
|
||||
{ 0x2B, PacketTypesIn.ChangeGameState },
|
||||
{ 0x2C, PacketTypesIn.SpawnWeatherEntity },
|
||||
{ 0x2D, PacketTypesIn.OpenWindow },
|
||||
{ 0x2E, PacketTypesIn.CloseWindow },
|
||||
{ 0x2F, PacketTypesIn.SetSlot },
|
||||
{ 0x30, PacketTypesIn.WindowItems },
|
||||
{ 0x31, PacketTypesIn.WindowProperty },
|
||||
{ 0x32, PacketTypesIn.WindowConfirmation },
|
||||
{ 0x33, PacketTypesIn.UpdateSign },
|
||||
{ 0x34, PacketTypesIn.MapData },
|
||||
{ 0x35, PacketTypesIn.BlockEntityData },
|
||||
{ 0x36, PacketTypesIn.OpenSignEditor },
|
||||
{ 0x37, PacketTypesIn.Statistics },
|
||||
{ 0x38, PacketTypesIn.PlayerInfo },
|
||||
{ 0x39, PacketTypesIn.PlayerAbilities },
|
||||
{ 0x3A, PacketTypesIn.TabComplete },
|
||||
{ 0x3B, PacketTypesIn.ScoreboardObjective },
|
||||
{ 0x3C, PacketTypesIn.UpdateScore },
|
||||
{ 0x3D, PacketTypesIn.DisplayScoreboard },
|
||||
{ 0x3E, PacketTypesIn.Teams },
|
||||
{ 0x3F, PacketTypesIn.PluginMessage },
|
||||
{ 0x40, PacketTypesIn.Disconnect },
|
||||
{ 0x41, PacketTypesIn.ServerDifficulty },
|
||||
{ 0x42, PacketTypesIn.CombatEvent },
|
||||
{ 0x43, PacketTypesIn.Camera },
|
||||
{ 0x44, PacketTypesIn.WorldBorder },
|
||||
{ 0x45, PacketTypesIn.Title },
|
||||
{ 0x46, PacketTypesIn.SetCompression },
|
||||
{ 0x47, PacketTypesIn.PlayerListHeaderAndFooter },
|
||||
{ 0x48, PacketTypesIn.ResourcePackSend },
|
||||
{ 0x49, PacketTypesIn.UpdateEntityNBT },
|
||||
};
|
||||
|
||||
private Dictionary<int, PacketTypesOut> typeOut = new Dictionary<int, PacketTypesOut>()
|
||||
{
|
||||
{ 0x00, PacketTypesOut.KeepAlive },
|
||||
{ 0x01, PacketTypesOut.ChatMessage },
|
||||
{ 0x02, PacketTypesOut.InteractEntity },
|
||||
{ 0x03, PacketTypesOut.PlayerMovement },
|
||||
{ 0x04, PacketTypesOut.PlayerPosition },
|
||||
{ 0x05, PacketTypesOut.PlayerRotation },
|
||||
{ 0x06, PacketTypesOut.PlayerPositionAndRotation },
|
||||
{ 0x07, PacketTypesOut.PlayerDigging },
|
||||
{ 0x08, PacketTypesOut.PlayerBlockPlacement },
|
||||
{ 0x09, PacketTypesOut.HeldItemChange },
|
||||
{ 0x0A, PacketTypesOut.Animation },
|
||||
{ 0x0B, PacketTypesOut.EntityAction },
|
||||
{ 0x0C, PacketTypesOut.SteerVehicle },
|
||||
{ 0x0D, PacketTypesOut.CloseWindow },
|
||||
{ 0x0E, PacketTypesOut.ClickWindow },
|
||||
{ 0x0F, PacketTypesOut.WindowConfirmation },
|
||||
{ 0x10, PacketTypesOut.CreativeInventoryAction },
|
||||
{ 0x11, PacketTypesOut.EnchantItem },
|
||||
{ 0x12, PacketTypesOut.UpdateSign },
|
||||
{ 0x13, PacketTypesOut.PlayerAbilities },
|
||||
{ 0x14, PacketTypesOut.TabComplete },
|
||||
{ 0x15, PacketTypesOut.ClientSettings },
|
||||
{ 0x16, PacketTypesOut.ClientStatus },
|
||||
{ 0x17, PacketTypesOut.PluginMessage },
|
||||
{ 0x18, PacketTypesOut.Spectate },
|
||||
{ 0x19, PacketTypesOut.ResourcePackStatus },
|
||||
};
|
||||
|
||||
protected override Dictionary<int, PacketTypesIn> GetListIn()
|
||||
{
|
||||
return typeIn;
|
||||
}
|
||||
|
||||
protected override Dictionary<int, PacketTypesOut> GetListOut()
|
||||
{
|
||||
return typeOut;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,164 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
|
||||
namespace MinecraftClient.Protocol.Handlers.PacketPalettes
|
||||
{
|
||||
public static class PacketPaletteHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// Generate a code snippet of updated IDs from a modified packet palette (usually when you have updated packet item position)
|
||||
/// </summary>
|
||||
/// <example>
|
||||
/// You have inserted a new packet type with ID 0x02 into the copied new packet palette:
|
||||
/// { 0x00, PacketTypesIn.SpawnEntity },
|
||||
/// { 0x01, PacketTypesIn.SpawnExperienceOrb },
|
||||
/// { 0xFF, PacketTypesIn.IamNewPacket }, // use 0xFF because it has conflict with old packet ID, we will correct the IDs now
|
||||
/// { 0x02, PacketTypesIn.SpawnWeatherEntity },
|
||||
/// ...
|
||||
///
|
||||
/// Call this method with your new packet palette:
|
||||
/// UpdatePacketIdByItemPosition(new PacketPaletteXXXX(), "code_snippet.txt");
|
||||
/// And it will generate a Dictionary format with the Packet IDs corrected for you to copy and paste:
|
||||
/// { 0x00, PacketTypesIn.SpawnEntity },
|
||||
/// { 0x01, PacketTypesIn.SpawnExperienceOrb },
|
||||
/// { 0x02, PacketTypesIn.IamNewPacket },
|
||||
/// { 0x03, PacketTypesIn.SpawnWeatherEntity },
|
||||
/// ...
|
||||
/// </example>
|
||||
/// <param name="palette"></param>
|
||||
/// <param name="outputFile"></param>
|
||||
public static void UpdatePacketIdByItemPosition(PacketTypePalette palette, string outputFile)
|
||||
{
|
||||
// I am just too tired to create another full .cs file so... please just copy and paste
|
||||
List<string> lines = new List<string>();
|
||||
lines.Add("=== Inbound Packets ===");
|
||||
int i = 0;
|
||||
foreach(var t in palette.GetMappingIn())
|
||||
{
|
||||
lines.Add(string.Format("{{ 0x{0}, {1} }},", i.ToString("X2"), t.Value));
|
||||
i++;
|
||||
}
|
||||
lines.Add("=== End of Inbound ===");
|
||||
lines.Add("");
|
||||
lines.Add("=== Outbound Packets ===");
|
||||
i = 0;
|
||||
foreach (var t in palette.GetMappingOut())
|
||||
{
|
||||
lines.Add(string.Format("{{ 0x{0}, {1} }},", i.ToString("X2"), t.Value));
|
||||
i++;
|
||||
}
|
||||
lines.Add("=== End of Outbound ===");
|
||||
|
||||
File.WriteAllText(outputFile, string.Join("\r\n", lines));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Generate a code snippet of rearranged order of packet types from a modified packet palette (usually when you have updated packet IDs)
|
||||
/// </summary>
|
||||
/// <example>
|
||||
/// You have changed some packet IDs:
|
||||
/// { 0x00, PacketTypesIn.SpawnEntity },
|
||||
/// { 0x02, PacketTypesIn.SpawnExperienceOrb }, // ID changed from 0x02 -> 0x01
|
||||
/// { 0x01, PacketTypesIn.SpawnWeatherEntity }, // ID changed from 0x01 -> 0x02
|
||||
/// ...
|
||||
///
|
||||
/// Call this method with your new packet palette:
|
||||
/// UpdatePacketPositionToAscending(new PacketPaletteXXXX(), "code_snippet.txt");
|
||||
/// And it will generate a Dictionary format with the ascending order of Packet IDs for you to copy and paste:
|
||||
/// { 0x00, PacketTypesIn.SpawnEntity },
|
||||
/// { 0x01, PacketTypesIn.SpawnWeatherEntity },
|
||||
/// { 0x02, PacketTypesIn.SpawnExperienceOrb },
|
||||
/// ...
|
||||
/// </example>
|
||||
/// <param name="palette"></param>
|
||||
/// <param name="outputFile"></param>
|
||||
public static void UpdatePacketPositionToAscending(PacketTypePalette palette, string outputFile)
|
||||
{
|
||||
// I am just too tired to create another full .cs file so... please just copy and paste
|
||||
List<string> lines = new List<string>();
|
||||
lines.Add("=== Inbound Packets ===");
|
||||
for (int i = 0; i < palette.GetMappingIn().Count; i++)
|
||||
{
|
||||
lines.Add(string.Format("{{ 0x{0}, {1} }},", i.ToString("X2"), palette.GetMappingIn()[i]));
|
||||
}
|
||||
lines.Add("=== End of Inbound ===");
|
||||
lines.Add("");
|
||||
lines.Add("=== Outbound Packets ===");
|
||||
for (int i = 0; i < palette.GetMappingOut().Count; i++)
|
||||
{
|
||||
lines.Add(string.Format("{{ 0x{0}, {1} }},", i.ToString("X2"), palette.GetMappingOut()[i]));
|
||||
}
|
||||
lines.Add("=== End of Outbound ===");
|
||||
|
||||
File.WriteAllText(outputFile, string.Join("\r\n", lines));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Generate PacketPaletteXXX.cs by feeding PacketTypesIn and PacketTypesOut list
|
||||
/// </summary>
|
||||
/// <param name="outputFile">The output file name</param>
|
||||
/// <param name="namespaceToUse">The namespace to use in the generated class</param>
|
||||
/// <param name="className">Class name</param>
|
||||
/// <param name="pIn">List of PacketTypesIn</param>
|
||||
/// <param name="pOut">List of PacketTypesOut</param>
|
||||
/// <example>
|
||||
/// You need to make sure the order of each item are all correct for that MC version
|
||||
/// Example format:
|
||||
/// List<PacketTypesIn> pIn = new List<PacketTypesIn>()
|
||||
/// {
|
||||
/// PacketTypesIn.SpawnEntity, // packet ID of 0x00
|
||||
/// PacketTypesIn.SpawnExperienceOrb, // packet ID of 0x01 and so on
|
||||
/// ...
|
||||
/// }
|
||||
/// </example>
|
||||
public static void GenerateIDsPacketByList(string outputFile, string namespaceToUse, string className, List<PacketTypesIn> pIn, List<PacketTypesOut> pOut)
|
||||
{
|
||||
const string TAB = " ";
|
||||
const string TAB2 = " ";
|
||||
const string TAB3 = " ";
|
||||
List<string> lines = new List<string>();
|
||||
lines.Add("using System;");
|
||||
lines.Add("using System.Collections.Generic;");
|
||||
lines.Add("using System.Linq;");
|
||||
lines.Add("using System.Text;");
|
||||
lines.Add("");
|
||||
lines.Add("namespace " + namespaceToUse);
|
||||
lines.Add("{");
|
||||
lines.Add(TAB + "public class " + className + " : PacketTypePalette");
|
||||
lines.Add(TAB + "{");
|
||||
lines.Add(TAB2 + "private Dictionary<int, PacketTypesIn> typeIn = new Dictionary<int, PacketTypesIn>()");
|
||||
lines.Add(TAB2 + "{");
|
||||
for (int i = 0; i < pIn.Count; i++)
|
||||
{
|
||||
lines.Add(TAB3 + string.Format("{{ 0x{0}, PacketTypesIn.{1} }},", i.ToString("X2"), pIn[i]));
|
||||
}
|
||||
lines.Add(TAB2 + "};");
|
||||
lines.Add("");
|
||||
lines.Add(TAB2 + "private Dictionary<int, PacketTypesOut> typeOut = new Dictionary<int, PacketTypesOut>()");
|
||||
lines.Add(TAB2 + "{");
|
||||
for (int i = 0; i < pOut.Count; i++)
|
||||
{
|
||||
lines.Add(TAB3 + string.Format("{{ 0x{0}, PacketTypesOut.{1} }},", i.ToString("X2"), pOut[i]));
|
||||
}
|
||||
lines.Add(TAB2 + "};");
|
||||
lines.Add("");
|
||||
lines.Add(TAB2 + "protected override Dictionary<int, PacketTypesIn> GetListIn()");
|
||||
lines.Add(TAB2 + "{");
|
||||
lines.Add(TAB3 + "return typeIn;");
|
||||
lines.Add(TAB2 + "}");
|
||||
lines.Add("");
|
||||
lines.Add(TAB2 + "protected override Dictionary<int, PacketTypesOut> GetListOut()");
|
||||
lines.Add(TAB2 + "{");
|
||||
lines.Add(TAB3 + "return typeOut;");
|
||||
lines.Add(TAB2 + "}");
|
||||
lines.Add(TAB + "}");
|
||||
lines.Add("}");
|
||||
lines.Add("");
|
||||
|
||||
File.WriteAllText(outputFile, string.Join("\r\n", lines));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,112 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace MinecraftClient.Protocol.Handlers.PacketPalettes
|
||||
{
|
||||
/// <summary>
|
||||
/// Packet type palette
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Steps for implementing palette for new Minecraft version:
|
||||
/// 1. Check out https://wiki.vg/Pre-release_protocol to see if there is any packet got added/removed
|
||||
/// 2. Add new packet type to PacketTypesIn.cs and PacketTypesOut.cs (if any)
|
||||
/// 3. Create a new PacketPaletteXXX.cs by copying the latest version of existing PacketPaletteXXX.cs (could reduce massive works on writing a brand new one)
|
||||
/// 4. Apply change to the copied PacketPaletteXXX.cs by either:
|
||||
/// - Inserting new packet type to the correct position
|
||||
/// - Removing packet type that got deleted
|
||||
/// OR
|
||||
/// - Changing the packet IDs manually
|
||||
/// 5. Use PacketPaletteHelper to generate a code snippet and copy the generated code snippet back to PacketPaletteXXX.cs
|
||||
/// - Use UpdatePacketPositionToAscending() if you changed the packet IDs manually
|
||||
/// - Use UpdatePacketIdByItemPosition() if you inserted some packet type into the dictionary
|
||||
/// Simply add the method call in Program.cs and run the program once. The code snippet will be generated
|
||||
///
|
||||
///
|
||||
/// The way how Mojang change the packet ID is simple:
|
||||
/// * Either adding/removing a packet from middle and cause packet ID below it get shifted
|
||||
/// * Append a new packet at the end (but this is rare)
|
||||
/// </remarks>
|
||||
public abstract class PacketTypePalette
|
||||
{
|
||||
protected abstract Dictionary<int, PacketTypesIn> GetListIn();
|
||||
protected abstract Dictionary<int, PacketTypesOut> GetListOut();
|
||||
|
||||
private Dictionary<PacketTypesIn, int> reverseMappingIn = new Dictionary<PacketTypesIn, int>();
|
||||
|
||||
private Dictionary<PacketTypesOut, int> reverseMappingOut = new Dictionary<PacketTypesOut, int>();
|
||||
|
||||
public PacketTypePalette()
|
||||
{
|
||||
foreach (var p in GetListIn())
|
||||
{
|
||||
reverseMappingIn.Add(p.Value, p.Key);
|
||||
}
|
||||
foreach (var p in GetListOut())
|
||||
{
|
||||
reverseMappingOut.Add(p.Value, p.Key);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get incomming packet type by packet ID
|
||||
/// </summary>
|
||||
/// <param name="packetId">packet ID</param>
|
||||
/// <returns>Packet type</returns>
|
||||
public PacketTypesIn GetIncommingTypeById(int packetId)
|
||||
{
|
||||
return GetListIn()[packetId];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get incomming packet ID by packet type
|
||||
/// </summary>
|
||||
/// <param name="packetType">Packet type</param>
|
||||
/// <returns>packet ID</returns>
|
||||
public int GetIncommingIdByType(PacketTypesIn packetType)
|
||||
{
|
||||
return reverseMappingIn[packetType];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get outgoing packet type by packet ID
|
||||
/// </summary>
|
||||
/// <param name="packetId">Packet ID</param>
|
||||
/// <returns>Packet type</returns>
|
||||
public PacketTypesOut GetOutgoingTypeById(int packetId)
|
||||
{
|
||||
return GetListOut()[packetId];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get outgoing packet ID by packet type
|
||||
/// </summary>
|
||||
/// <param name="packetType">Packet type</param>
|
||||
/// <returns>Packet ID</returns>
|
||||
public int GetOutgoingIdByType(PacketTypesOut packetType)
|
||||
{
|
||||
return reverseMappingOut[packetType];
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Public method for getting the type mapping
|
||||
/// </summary>
|
||||
/// <returns>PacketTypesIn with packet ID as index</returns>
|
||||
public Dictionary<int, PacketTypesIn> GetMappingIn()
|
||||
{
|
||||
return GetListIn();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Public method for getting the type mapping
|
||||
/// </summary>
|
||||
/// <returns>PacketTypesOut with packet ID as index</returns>
|
||||
public Dictionary<int ,PacketTypesOut> GetMappingOut()
|
||||
{
|
||||
return GetListOut();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue