Add support for dimension ranges and network hashes

This commit is contained in:
Javier León
2026-01-03 05:33:35 -03:00
parent 2ad86d772f
commit 7a4d57fa6a
10 changed files with 372 additions and 82 deletions

View File

@@ -31,6 +31,8 @@ func init() {
func convertPacketFunc(pid uint32, cur func() packet.Packet) func() packet.Packet {
switch pid {
case packet.IDDimensionData:
return func() packet.Packet { return &legacypacket.DimensionData{} }
case packet.IDCameraAimAssist:
return func() packet.Packet { return &legacypacket.CameraAimAssist{} }
case packet.IDCameraPresets:
@@ -190,8 +192,14 @@ func (p *Protocol) ConvertFromLatest(pk packet.Packet, conn *minecraft.Conn) []p
}
func (p *Protocol) downgradePackets(pks []packet.Packet, conn *minecraft.Conn) []packet.Packet {
translator, ok := p.blockTranslator.(*DefaultBlockTranslator)
if !ok {
return pks
}
for pkIndex, pk := range pks {
switch pk := pk.(type) {
case *packet.DimensionData:
translator.dimensionDefinitions = pk.Definitions
case *packet.ClientCacheStatus:
// pk.Enabled = false // TODO: enable when chunk translation is not broken
case *packet.SetActorMotion:
@@ -414,6 +422,7 @@ func (p *Protocol) downgradePackets(pks []packet.Packet, conn *minecraft.Conn) [
DetachFromEntity: pk.DetachFromEntity,
}
case *packet.ChangeDimension:
translator.currentDimension = pk.Dimension
pks[pkIndex] = &legacypacket.ChangeDimension{
Dimension: pk.Dimension,
Position: pk.Position,
@@ -519,6 +528,7 @@ func (p *Protocol) downgradePackets(pks []packet.Packet, conn *minecraft.Conn) [
ClearRecipes: pk.ClearRecipes,
}
case *packet.StartGame:
translator.currentDimension = pk.Dimension
// Adjust game version
pk.GameVersion = p.ver
pk.BaseGameVersion = p.ver