Add 1.21.2 & 1.21.0 support
This commit is contained in:
46
legacyver/legacypacket/change_dimension.go
Normal file
46
legacyver/legacypacket/change_dimension.go
Normal file
@@ -0,0 +1,46 @@
|
||||
package legacypacket
|
||||
|
||||
import (
|
||||
"github.com/akmalfairuz/legacy-version/legacyver/proto"
|
||||
"github.com/go-gl/mathgl/mgl32"
|
||||
"github.com/sandertv/gophertunnel/minecraft/protocol"
|
||||
"github.com/sandertv/gophertunnel/minecraft/protocol/packet"
|
||||
)
|
||||
|
||||
// ChangeDimension is sent by the server to the client to send a dimension change screen client-side. Once the
|
||||
// screen is cleared client-side, the client will send a PlayerAction packet with
|
||||
// PlayerActionDimensionChangeDone.
|
||||
type ChangeDimension struct {
|
||||
// Dimension is the dimension that the client should be changed to. The fog colour will change depending
|
||||
// on the type of dimension, which is one of the constants above.
|
||||
// Note that Dimension MUST be a different dimension than the one that the player is currently in. Sending
|
||||
// a ChangeDimension packet with a Dimension that the player is currently in will result in a never-ending
|
||||
// dimension change screen.
|
||||
Dimension int32
|
||||
// Position is the position in the new dimension that the player is spawned in.
|
||||
Position mgl32.Vec3
|
||||
// Respawn specifies if the dimension change was respawn based, meaning that the player died in one
|
||||
// dimension and got respawned into another. The client will send a PlayerAction packet with
|
||||
// PlayerActionDimensionChangeRequest if it dies in another dimension, indicating that it needs a
|
||||
// DimensionChange packet with Respawn set to true.
|
||||
Respawn bool
|
||||
// LoadingScreenID is a unique ID for the loading screen that the player is currently in. The client will
|
||||
// update the server on its state through the ServerBoundLoadingScreen packet, and it can be used to not
|
||||
// send specific packets to the client if it is changing dimensions. This field should be unique for every
|
||||
//ChangeDimension packet sent.
|
||||
LoadingScreenID protocol.Optional[uint32]
|
||||
}
|
||||
|
||||
// ID ...
|
||||
func (*ChangeDimension) ID() uint32 {
|
||||
return packet.IDChangeDimension
|
||||
}
|
||||
|
||||
func (pk *ChangeDimension) Marshal(io protocol.IO) {
|
||||
io.Varint32(&pk.Dimension)
|
||||
io.Vec3(&pk.Position)
|
||||
io.Bool(&pk.Respawn)
|
||||
if proto.IsProtoGTE(io, proto.ID712) {
|
||||
protocol.OptionalFunc(io, &pk.LoadingScreenID, io.Uint32)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user