ItemStackRequest translation fixes

This commit is contained in:
AkmalFairuz
2025-01-10 19:51:42 +07:00
parent 407a89c8d8
commit 5ce8357386

View File

@@ -42,6 +42,36 @@ func (x *ItemStackRequest) FromLatest(y protocol.ItemStackRequest) ItemStackRequ
x.RequestID = y.RequestID x.RequestID = y.RequestID
x.Actions = make([]protocol.StackRequestAction, len(y.Actions)) x.Actions = make([]protocol.StackRequestAction, len(y.Actions))
for i, v := range y.Actions { for i, v := range y.Actions {
if z, ok := v.(*protocol.TakeStackRequestAction); ok {
x.Actions[i] = (&TakeStackRequestAction{}).FromLatest(z)
continue
}
if z, ok := v.(*protocol.PlaceStackRequestAction); ok {
x.Actions[i] = (&PlaceStackRequestAction{}).FromLatest(z)
continue
}
if z, ok := v.(*protocol.SwapStackRequestAction); ok {
x.Actions[i] = (&SwapStackRequestAction{}).FromLatest(z)
continue
}
if z, ok := v.(*protocol.DropStackRequestAction); ok {
x.Actions[i] = (&DropStackRequestAction{}).FromLatest(z)
continue
}
if z, ok := v.(*protocol.DestroyStackRequestAction); ok {
x.Actions[i] = (&DestroyStackRequestAction{}).FromLatest(z)
continue
}
if z, ok := v.(*protocol.ConsumeStackRequestAction); ok {
x.Actions[i] = (&ConsumeStackRequestAction{}).FromLatest(z)
continue
}
if z, ok := v.(*protocol.CraftRecipeStackRequestAction); ok { if z, ok := v.(*protocol.CraftRecipeStackRequestAction); ok {
x.Actions[i] = (&CraftRecipeStackRequestAction{}).FromLatest(z) x.Actions[i] = (&CraftRecipeStackRequestAction{}).FromLatest(z)
continue continue
@@ -82,29 +112,10 @@ func (x *ItemStackRequest) ToLatest() protocol.ItemStackRequest {
FilterCause: x.FilterCause, FilterCause: x.FilterCause,
} }
for i, v := range x.Actions { for i, v := range x.Actions {
if z, ok := v.(*CraftRecipeStackRequestAction); ok { if z, ok := v.(interface {
ToLatest() protocol.StackRequestAction
}); ok {
ret.Actions[i] = z.ToLatest() ret.Actions[i] = z.ToLatest()
continue
}
if z, ok := v.(*AutoCraftRecipeStackRequestAction); ok {
ret.Actions[i] = z.ToLatest()
continue
}
if z, ok := v.(*CraftCreativeStackRequestAction); ok {
ret.Actions[i] = z.ToLatest()
continue
}
if z, ok := v.(*CraftGrindstoneRecipeStackRequestAction); ok {
ret.Actions[i] = z.ToLatest()
continue
}
if z, ok := v.(*CraftLoomRecipeStackRequestAction); ok {
ret.Actions[i] = z.ToLatest()
continue
} }
ret.Actions[i] = v ret.Actions[i] = v
@@ -125,17 +136,17 @@ func (x *ItemStackRequest) Marshal(r protocol.IO) {
// lookupStackRequestActionType looks up the ID of a StackRequestAction. // lookupStackRequestActionType looks up the ID of a StackRequestAction.
func lookupStackRequestActionType(x StackRequestAction, id *uint8) bool { func lookupStackRequestActionType(x StackRequestAction, id *uint8) bool {
switch x.(type) { switch x.(type) {
case *protocol.TakeStackRequestAction: case *TakeStackRequestAction:
*id = protocol.StackRequestActionTake *id = protocol.StackRequestActionTake
case *protocol.PlaceStackRequestAction: case *PlaceStackRequestAction:
*id = protocol.StackRequestActionPlace *id = protocol.StackRequestActionPlace
case *protocol.SwapStackRequestAction: case *SwapStackRequestAction:
*id = protocol.StackRequestActionSwap *id = protocol.StackRequestActionSwap
case *protocol.DropStackRequestAction: case *DropStackRequestAction:
*id = protocol.StackRequestActionDrop *id = protocol.StackRequestActionDrop
case *protocol.DestroyStackRequestAction: case *DestroyStackRequestAction:
*id = protocol.StackRequestActionDestroy *id = protocol.StackRequestActionDestroy
case *protocol.ConsumeStackRequestAction: case *ConsumeStackRequestAction:
*id = protocol.StackRequestActionConsume *id = protocol.StackRequestActionConsume
case *protocol.CreateStackRequestAction: case *protocol.CreateStackRequestAction:
*id = protocol.StackRequestActionCreate *id = protocol.StackRequestActionCreate
@@ -171,17 +182,17 @@ func lookupStackRequestActionType(x StackRequestAction, id *uint8) bool {
func lookupStackRequestAction(id uint8, x *protocol.StackRequestAction) bool { func lookupStackRequestAction(id uint8, x *protocol.StackRequestAction) bool {
switch id { switch id {
case protocol.StackRequestActionTake: case protocol.StackRequestActionTake:
*x = &protocol.TakeStackRequestAction{} *x = &TakeStackRequestAction{}
case protocol.StackRequestActionPlace: case protocol.StackRequestActionPlace:
*x = &protocol.PlaceStackRequestAction{} *x = &PlaceStackRequestAction{}
case protocol.StackRequestActionSwap: case protocol.StackRequestActionSwap:
*x = &protocol.SwapStackRequestAction{} *x = &SwapStackRequestAction{}
case protocol.StackRequestActionDrop: case protocol.StackRequestActionDrop:
*x = &protocol.DropStackRequestAction{} *x = &DropStackRequestAction{}
case protocol.StackRequestActionDestroy: case protocol.StackRequestActionDestroy:
*x = &protocol.DestroyStackRequestAction{} *x = &DestroyStackRequestAction{}
case protocol.StackRequestActionConsume: case protocol.StackRequestActionConsume:
*x = &protocol.ConsumeStackRequestAction{} *x = &ConsumeStackRequestAction{}
case protocol.StackRequestActionCreate: case protocol.StackRequestActionCreate:
*x = &protocol.CreateStackRequestAction{} *x = &protocol.CreateStackRequestAction{}
case protocol.StackRequestActionPlaceInContainer: case protocol.StackRequestActionPlaceInContainer:
@@ -468,6 +479,23 @@ type TakeStackRequestAction struct {
transferStackRequestAction transferStackRequestAction
} }
// ToLatest ...
func (a *TakeStackRequestAction) ToLatest() *protocol.TakeStackRequestAction {
ret := &protocol.TakeStackRequestAction{}
ret.Count = a.Count
ret.Source = a.Source.ToLatest()
ret.Destination = a.Destination.ToLatest()
return ret
}
// FromLatest ...
func (a *TakeStackRequestAction) FromLatest(v *protocol.TakeStackRequestAction) *TakeStackRequestAction {
a.Count = v.Count
a.Source = (&StackRequestSlotInfo{}).FromLatest(v.Source)
a.Destination = (&StackRequestSlotInfo{}).FromLatest(v.Destination)
return a
}
// PlaceStackRequestAction is sent by the client to the server to place x amount of items from one slot into // PlaceStackRequestAction is sent by the client to the server to place x amount of items from one slot into
// another slot, such as when shift clicking an item in the inventory to move it around or when moving an item // another slot, such as when shift clicking an item in the inventory to move it around or when moving an item
// in the cursor into a slot. // in the cursor into a slot.
@@ -475,6 +503,23 @@ type PlaceStackRequestAction struct {
transferStackRequestAction transferStackRequestAction
} }
// ToLatest ...
func (a *PlaceStackRequestAction) ToLatest() *protocol.PlaceStackRequestAction {
ret := &protocol.PlaceStackRequestAction{}
ret.Count = a.Count
ret.Source = a.Source.ToLatest()
ret.Destination = a.Destination.ToLatest()
return ret
}
// FromLatest ...
func (a *PlaceStackRequestAction) FromLatest(v *protocol.PlaceStackRequestAction) *PlaceStackRequestAction {
a.Count = v.Count
a.Source = (&StackRequestSlotInfo{}).FromLatest(v.Source)
a.Destination = (&StackRequestSlotInfo{}).FromLatest(v.Destination)
return a
}
// SwapStackRequestAction is sent by the client to swap the item in its cursor with an item present in another // SwapStackRequestAction is sent by the client to swap the item in its cursor with an item present in another
// container. The two item stacks swap places. // container. The two item stacks swap places.
type SwapStackRequestAction struct { type SwapStackRequestAction struct {
@@ -483,6 +528,21 @@ type SwapStackRequestAction struct {
Source, Destination StackRequestSlotInfo Source, Destination StackRequestSlotInfo
} }
// ToLatest ...
func (a *SwapStackRequestAction) ToLatest() *protocol.SwapStackRequestAction {
ret := &protocol.SwapStackRequestAction{}
ret.Source = a.Source.ToLatest()
ret.Destination = a.Destination.ToLatest()
return ret
}
// FromLatest ...
func (a *SwapStackRequestAction) FromLatest(v *protocol.SwapStackRequestAction) *SwapStackRequestAction {
a.Source = (&StackRequestSlotInfo{}).FromLatest(v.Source)
a.Destination = (&StackRequestSlotInfo{}).FromLatest(v.Destination)
return a
}
// Marshal ... // Marshal ...
func (a *SwapStackRequestAction) Marshal(r protocol.IO) { func (a *SwapStackRequestAction) Marshal(r protocol.IO) {
StackReqSlotInfo(r, &a.Source) StackReqSlotInfo(r, &a.Source)
@@ -503,6 +563,23 @@ type DropStackRequestAction struct {
Randomly bool Randomly bool
} }
// ToLatest ...
func (a *DropStackRequestAction) ToLatest() *protocol.DropStackRequestAction {
ret := &protocol.DropStackRequestAction{}
ret.Count = a.Count
ret.Source = a.Source.ToLatest()
ret.Randomly = a.Randomly
return ret
}
// FromLatest ...
func (a *DropStackRequestAction) FromLatest(v *protocol.DropStackRequestAction) *DropStackRequestAction {
a.Count = v.Count
a.Source = (&StackRequestSlotInfo{}).FromLatest(v.Source)
a.Randomly = v.Randomly
return a
}
// Marshal ... // Marshal ...
func (a *DropStackRequestAction) Marshal(r protocol.IO) { func (a *DropStackRequestAction) Marshal(r protocol.IO) {
r.Uint8(&a.Count) r.Uint8(&a.Count)
@@ -520,6 +597,21 @@ type DestroyStackRequestAction struct {
Source StackRequestSlotInfo Source StackRequestSlotInfo
} }
// ToLatest ...
func (a *DestroyStackRequestAction) ToLatest() *protocol.DestroyStackRequestAction {
ret := &protocol.DestroyStackRequestAction{}
ret.Count = a.Count
ret.Source = a.Source.ToLatest()
return ret
}
// FromLatest ...
func (a *DestroyStackRequestAction) FromLatest(v *protocol.DestroyStackRequestAction) *DestroyStackRequestAction {
a.Count = v.Count
a.Source = (&StackRequestSlotInfo{}).FromLatest(v.Source)
return a
}
// Marshal ... // Marshal ...
func (a *DestroyStackRequestAction) Marshal(r protocol.IO) { func (a *DestroyStackRequestAction) Marshal(r protocol.IO) {
r.Uint8(&a.Count) r.Uint8(&a.Count)
@@ -532,6 +624,21 @@ type ConsumeStackRequestAction struct {
DestroyStackRequestAction DestroyStackRequestAction
} }
// ToLatest ...
func (a *ConsumeStackRequestAction) ToLatest() *protocol.ConsumeStackRequestAction {
ret := &protocol.ConsumeStackRequestAction{}
ret.DestroyStackRequestAction.Source = a.Source.ToLatest()
ret.DestroyStackRequestAction.Count = a.Count
return ret
}
// FromLatest ...
func (a *ConsumeStackRequestAction) FromLatest(v *protocol.ConsumeStackRequestAction) *ConsumeStackRequestAction {
a.Source = (&StackRequestSlotInfo{}).FromLatest(v.DestroyStackRequestAction.Source)
a.Count = v.DestroyStackRequestAction.Count
return a
}
// CreateStackRequestAction is sent by the client when an item is created through being used as part of a // CreateStackRequestAction is sent by the client when an item is created through being used as part of a
// recipe. For example, when milk is used to craft a cake, the buckets are leftover. The buckets are moved to // recipe. For example, when milk is used to craft a cake, the buckets are leftover. The buckets are moved to
// the slot sent by the client here. // the slot sent by the client here.
@@ -554,11 +661,45 @@ type PlaceInContainerStackRequestAction struct {
transferStackRequestAction transferStackRequestAction
} }
// ToLatest ...
func (a *PlaceInContainerStackRequestAction) ToLatest() *protocol.PlaceInContainerStackRequestAction {
ret := &protocol.PlaceInContainerStackRequestAction{}
ret.Count = a.Count
ret.Source = a.Source.ToLatest()
ret.Destination = a.Destination.ToLatest()
return ret
}
// FromLatest ...
func (a *PlaceInContainerStackRequestAction) FromLatest(y *protocol.PlaceInContainerStackRequestAction) *PlaceInContainerStackRequestAction {
a.Count = y.Count
a.Source = (&StackRequestSlotInfo{}).FromLatest(y.Source)
a.Destination = (&StackRequestSlotInfo{}).FromLatest(y.Destination)
return a
}
// TakeOutContainerStackRequestAction currently has no known purpose. // TakeOutContainerStackRequestAction currently has no known purpose.
type TakeOutContainerStackRequestAction struct { type TakeOutContainerStackRequestAction struct {
transferStackRequestAction transferStackRequestAction
} }
// ToLatest ...
func (a *TakeOutContainerStackRequestAction) ToLatest() *protocol.TakeOutContainerStackRequestAction {
ret := &protocol.TakeOutContainerStackRequestAction{}
ret.Count = a.Count
ret.Source = a.Source.ToLatest()
ret.Destination = a.Destination.ToLatest()
return ret
}
// FromLatest ...
func (a *TakeOutContainerStackRequestAction) FromLatest(y *protocol.TakeOutContainerStackRequestAction) *TakeOutContainerStackRequestAction {
a.Count = y.Count
a.Source = (&StackRequestSlotInfo{}).FromLatest(y.Source)
a.Destination = (&StackRequestSlotInfo{}).FromLatest(y.Destination)
return a
}
// LabTableCombineStackRequestAction is sent by the client when it uses a lab table to combine item stacks. // LabTableCombineStackRequestAction is sent by the client when it uses a lab table to combine item stacks.
type LabTableCombineStackRequestAction struct{} type LabTableCombineStackRequestAction struct{}
@@ -835,6 +976,23 @@ type StackRequestSlotInfo struct {
StackNetworkID int32 StackNetworkID int32
} }
// ToLatest ...
func (x *StackRequestSlotInfo) ToLatest() protocol.StackRequestSlotInfo {
return protocol.StackRequestSlotInfo{
Container: x.Container.ToLatest(),
Slot: x.Slot,
StackNetworkID: x.StackNetworkID,
}
}
// FromLatest ...
func (x *StackRequestSlotInfo) FromLatest(y protocol.StackRequestSlotInfo) StackRequestSlotInfo {
x.Container = (&FullContainerName{}).FromLatest(y.Container)
x.Slot = y.Slot
x.StackNetworkID = y.StackNetworkID
return *x
}
// StackReqSlotInfo reads/writes a StackRequestSlotInfo x using IO r. // StackReqSlotInfo reads/writes a StackRequestSlotInfo x using IO r.
func StackReqSlotInfo(r protocol.IO, x *StackRequestSlotInfo) { func StackReqSlotInfo(r protocol.IO, x *StackRequestSlotInfo) {
if IsProtoGTE(r, ID712) { if IsProtoGTE(r, ID712) {