1.21.60 support
This commit is contained in:
@@ -20,6 +20,10 @@ func init() {
|
||||
for pkId, cur := range packetPoolClient {
|
||||
packetPoolClient[pkId] = convertPacketFunc(pkId, cur)
|
||||
}
|
||||
|
||||
for pkId, cur := range packetPoolServer {
|
||||
packetPoolServer[pkId] = convertPacketFunc(pkId, cur)
|
||||
}
|
||||
}
|
||||
|
||||
func convertPacketFunc(pid uint32, cur func() packet.Packet) func() packet.Packet {
|
||||
@@ -86,6 +90,22 @@ func convertPacketFunc(pid uint32, cur func() packet.Packet) func() packet.Packe
|
||||
return func() packet.Packet { return &legacypacket.StartGame{} }
|
||||
case packet.IDCodeBuilderSource:
|
||||
return func() packet.Packet { return &legacypacket.CodeBuilderSource{} }
|
||||
case packet.IDItemRegistry:
|
||||
return func() packet.Packet { return &legacypacket.ItemRegistry{} }
|
||||
case packet.IDStructureBlockUpdate:
|
||||
return func() packet.Packet { return &legacypacket.StructureBlockUpdate{} }
|
||||
case packet.IDBossEvent:
|
||||
return func() packet.Packet { return &legacypacket.BossEvent{} }
|
||||
case packet.IDCameraAimAssistPresets:
|
||||
return func() packet.Packet { return &legacypacket.CameraAimAssistPresets{} }
|
||||
case packet.IDCommandBlockUpdate:
|
||||
return func() packet.Packet { return &legacypacket.CommandBlockUpdate{} }
|
||||
case packet.IDCreativeContent:
|
||||
return func() packet.Packet { return &legacypacket.CreativeContent{} }
|
||||
case packet.IDUpdateAbilities:
|
||||
return func() packet.Packet { return &legacypacket.UpdateAbilities{} }
|
||||
case packet.IDClientCheatAbility:
|
||||
return func() packet.Packet { return &legacypacket.ClientCheatAbility{} }
|
||||
default:
|
||||
return cur
|
||||
}
|
||||
@@ -309,7 +329,7 @@ func (p *Protocol) downgradePackets(pks []packet.Packet, conn *minecraft.Conn) [
|
||||
GameType: pk.GameType,
|
||||
EntityMetadata: pk.EntityMetadata,
|
||||
EntityProperties: pk.EntityProperties,
|
||||
AbilityData: pk.AbilityData,
|
||||
AbilityData: (&proto.AbilityData{}).FromLatest(pk.AbilityData),
|
||||
EntityLinks: links,
|
||||
DeviceID: pk.DeviceID,
|
||||
BuildPlatform: pk.BuildPlatform,
|
||||
@@ -441,7 +461,15 @@ func (p *Protocol) downgradePackets(pks []packet.Packet, conn *minecraft.Conn) [
|
||||
pk.GameVersion = p.ver
|
||||
pk.BaseGameVersion = p.ver
|
||||
|
||||
items := make([]proto.LegacyItemRegistryEntry, len(conn.GameData().Items))
|
||||
for i, it := range conn.GameData().Items {
|
||||
items[i] = (&proto.LegacyItemRegistryEntry{}).FromLatest(it)
|
||||
}
|
||||
|
||||
items = p.itemTranslator.DowngradeLegacyItemRegistry(items)
|
||||
|
||||
pks[pkIndex] = &legacypacket.StartGame{
|
||||
Items: items,
|
||||
EntityUniqueID: pk.EntityUniqueID,
|
||||
EntityRuntimeID: pk.EntityRuntimeID,
|
||||
PlayerGameMode: pk.PlayerGameMode,
|
||||
@@ -505,7 +533,6 @@ func (p *Protocol) downgradePackets(pks []packet.Packet, conn *minecraft.Conn) [
|
||||
Time: pk.Time,
|
||||
EnchantmentSeed: pk.EnchantmentSeed,
|
||||
Blocks: pk.Blocks,
|
||||
Items: pk.Items,
|
||||
MultiPlayerCorrelationID: pk.MultiPlayerCorrelationID,
|
||||
ServerAuthoritativeInventory: pk.ServerAuthoritativeInventory,
|
||||
GameVersion: pk.GameVersion,
|
||||
@@ -527,6 +554,75 @@ func (p *Protocol) downgradePackets(pks []packet.Packet, conn *minecraft.Conn) [
|
||||
Category: pk.Category,
|
||||
CodeStatus: pk.CodeStatus,
|
||||
}
|
||||
case *packet.ItemRegistry:
|
||||
items := make([]proto.ItemEntry, len(pk.Items))
|
||||
for i, it := range pk.Items {
|
||||
items[i] = (&proto.ItemEntry{}).FromLatest(it)
|
||||
}
|
||||
pks[pkIndex] = &legacypacket.ItemRegistry{
|
||||
Items: items,
|
||||
}
|
||||
case *packet.StructureBlockUpdate:
|
||||
pks[pkIndex] = &legacypacket.StructureBlockUpdate{
|
||||
Position: pk.Position,
|
||||
StructureName: pk.StructureName,
|
||||
FilteredStructureName: pk.FilteredStructureName,
|
||||
DataField: pk.DataField,
|
||||
IncludePlayers: pk.IncludePlayers,
|
||||
ShowBoundingBox: pk.ShowBoundingBox,
|
||||
StructureBlockType: pk.StructureBlockType,
|
||||
Settings: pk.Settings,
|
||||
RedstoneSaveMode: pk.RedstoneSaveMode,
|
||||
ShouldTrigger: pk.ShouldTrigger,
|
||||
Waterlogged: pk.Waterlogged,
|
||||
}
|
||||
case *packet.BossEvent:
|
||||
pks[pkIndex] = &legacypacket.BossEvent{
|
||||
BossEntityUniqueID: pk.BossEntityUniqueID,
|
||||
EventType: pk.EventType,
|
||||
PlayerUniqueID: pk.PlayerUniqueID,
|
||||
BossBarTitle: pk.BossBarTitle,
|
||||
FilteredBossBarTitle: pk.FilteredBossBarTitle,
|
||||
HealthPercentage: pk.HealthPercentage,
|
||||
ScreenDarkening: pk.ScreenDarkening,
|
||||
Colour: pk.Colour,
|
||||
Overlay: pk.Overlay,
|
||||
}
|
||||
case *packet.CameraAimAssistPresets:
|
||||
pks[pkIndex] = &legacypacket.CameraAimAssistPresets{
|
||||
CategoryGroups: pk.CategoryGroups,
|
||||
Presets: pk.Presets,
|
||||
Operation: pk.Operation,
|
||||
}
|
||||
case *packet.CommandBlockUpdate:
|
||||
pks[pkIndex] = &legacypacket.CommandBlockUpdate{
|
||||
Block: pk.Block,
|
||||
Position: pk.Position,
|
||||
Mode: pk.Mode,
|
||||
NeedsRedstone: pk.NeedsRedstone,
|
||||
Conditional: pk.Conditional,
|
||||
MinecartEntityRuntimeID: pk.MinecartEntityRuntimeID,
|
||||
Command: pk.Command,
|
||||
LastOutput: pk.LastOutput,
|
||||
Name: pk.Name,
|
||||
FilteredName: pk.FilteredName,
|
||||
ShouldTrackOutput: pk.ShouldTrackOutput,
|
||||
TickDelay: pk.TickDelay,
|
||||
ExecuteOnFirstTick: pk.ExecuteOnFirstTick,
|
||||
}
|
||||
case *packet.CreativeContent:
|
||||
items := make([]proto.CreativeItem, len(pk.Items))
|
||||
for i, it := range pk.Items {
|
||||
items[i] = (&proto.CreativeItem{}).FromLatest(it)
|
||||
}
|
||||
pks[pkIndex] = &legacypacket.CreativeContent{
|
||||
Groups: pk.Groups,
|
||||
Items: items,
|
||||
}
|
||||
case *packet.UpdateAbilities:
|
||||
pks[pkIndex] = &legacypacket.UpdateAbilities{
|
||||
AbilityData: (&proto.AbilityData{}).FromLatest(pk.AbilityData),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -705,7 +801,7 @@ func (p *Protocol) upgradePackets(pks []packet.Packet, conn *minecraft.Conn) []p
|
||||
GameType: pk.GameType,
|
||||
EntityMetadata: pk.EntityMetadata,
|
||||
EntityProperties: pk.EntityProperties,
|
||||
AbilityData: pk.AbilityData,
|
||||
AbilityData: pk.AbilityData.ToLatest(),
|
||||
EntityLinks: links,
|
||||
DeviceID: pk.DeviceID,
|
||||
BuildPlatform: pk.BuildPlatform,
|
||||
@@ -897,7 +993,6 @@ func (p *Protocol) upgradePackets(pks []packet.Packet, conn *minecraft.Conn) []p
|
||||
Time: pk.Time,
|
||||
EnchantmentSeed: pk.EnchantmentSeed,
|
||||
Blocks: pk.Blocks,
|
||||
Items: pk.Items,
|
||||
MultiPlayerCorrelationID: pk.MultiPlayerCorrelationID,
|
||||
ServerAuthoritativeInventory: pk.ServerAuthoritativeInventory,
|
||||
GameVersion: pk.GameVersion,
|
||||
@@ -919,6 +1014,65 @@ func (p *Protocol) upgradePackets(pks []packet.Packet, conn *minecraft.Conn) []p
|
||||
Category: pk.Category,
|
||||
CodeStatus: pk.CodeStatus,
|
||||
}
|
||||
case *legacypacket.BossEvent:
|
||||
pks[pkIndex] = &packet.BossEvent{
|
||||
BossEntityUniqueID: pk.BossEntityUniqueID,
|
||||
EventType: pk.EventType,
|
||||
PlayerUniqueID: pk.PlayerUniqueID,
|
||||
BossBarTitle: pk.BossBarTitle,
|
||||
FilteredBossBarTitle: pk.FilteredBossBarTitle,
|
||||
HealthPercentage: pk.HealthPercentage,
|
||||
ScreenDarkening: pk.ScreenDarkening,
|
||||
Colour: pk.Colour,
|
||||
Overlay: pk.Overlay,
|
||||
}
|
||||
case *legacypacket.CommandBlockUpdate:
|
||||
pks[pkIndex] = &packet.CommandBlockUpdate{
|
||||
Block: pk.Block,
|
||||
Position: pk.Position,
|
||||
Mode: pk.Mode,
|
||||
NeedsRedstone: pk.NeedsRedstone,
|
||||
Conditional: pk.Conditional,
|
||||
MinecartEntityRuntimeID: pk.MinecartEntityRuntimeID,
|
||||
Command: pk.Command,
|
||||
LastOutput: pk.LastOutput,
|
||||
Name: pk.Name,
|
||||
FilteredName: pk.FilteredName,
|
||||
ShouldTrackOutput: pk.ShouldTrackOutput,
|
||||
TickDelay: pk.TickDelay,
|
||||
ExecuteOnFirstTick: pk.ExecuteOnFirstTick,
|
||||
}
|
||||
case *legacypacket.CreativeContent:
|
||||
items := make([]protocol.CreativeItem, len(pk.Items))
|
||||
for i, it := range pk.Items {
|
||||
items[i] = it.ToLatest()
|
||||
}
|
||||
pks[pkIndex] = &packet.CreativeContent{
|
||||
Groups: pk.Groups,
|
||||
Items: items,
|
||||
}
|
||||
case *legacypacket.ItemRegistry:
|
||||
items := make([]protocol.ItemEntry, len(pk.Items))
|
||||
for i, it := range pk.Items {
|
||||
items[i] = it.ToLatest()
|
||||
}
|
||||
pks[pkIndex] = &packet.ItemRegistry{Items: items}
|
||||
case *legacypacket.StructureBlockUpdate:
|
||||
pks[pkIndex] = &packet.StructureBlockUpdate{
|
||||
Position: pk.Position,
|
||||
StructureName: pk.StructureName,
|
||||
FilteredStructureName: pk.FilteredStructureName,
|
||||
DataField: pk.DataField,
|
||||
IncludePlayers: pk.IncludePlayers,
|
||||
ShowBoundingBox: pk.ShowBoundingBox,
|
||||
StructureBlockType: pk.StructureBlockType,
|
||||
Settings: pk.Settings,
|
||||
RedstoneSaveMode: pk.RedstoneSaveMode,
|
||||
ShouldTrigger: pk.ShouldTrigger,
|
||||
Waterlogged: pk.Waterlogged,
|
||||
}
|
||||
case *legacypacket.UpdateAbilities:
|
||||
pks[pkIndex] = &packet.UpdateAbilities{AbilityData: pk.AbilityData.ToLatest()}
|
||||
}
|
||||
}
|
||||
return pks
|
||||
|
||||
Reference in New Issue
Block a user