Packet translation fixes & improvements (#2)
* Add 1.20.80 * Fix Recipe IO * Add 671 to example proxy * Translate CodeBuilderSource * Fix item version 671 * Fix TextPacket * Fix Block States * Fix ContainerClose * Fix ItemStackRequest
This commit is contained in:
@@ -44,6 +44,27 @@ func (x *ItemStackRequest) FromLatest(y protocol.ItemStackRequest) ItemStackRequ
|
|||||||
for i, v := range y.Actions {
|
for i, v := range y.Actions {
|
||||||
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
|
||||||
|
}
|
||||||
|
|
||||||
|
if z, ok := v.(*protocol.AutoCraftRecipeStackRequestAction); ok {
|
||||||
|
x.Actions[i] = (&AutoCraftRecipeStackRequestAction{}).FromLatest(z)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if z, ok := v.(*protocol.CraftCreativeStackRequestAction); ok {
|
||||||
|
x.Actions[i] = (&CraftCreativeStackRequestAction{}).FromLatest(z)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if z, ok := v.(*protocol.CraftGrindstoneRecipeStackRequestAction); ok {
|
||||||
|
x.Actions[i] = (&CraftGrindstoneRecipeStackRequestAction{}).FromLatest(z)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if z, ok := v.(*protocol.CraftLoomRecipeStackRequestAction); ok {
|
||||||
|
x.Actions[i] = (&CraftLoomRecipeStackRequestAction{}).FromLatest(z)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
x.FilterStrings = y.FilterStrings
|
x.FilterStrings = y.FilterStrings
|
||||||
@@ -61,6 +82,27 @@ func (x *ItemStackRequest) ToLatest() protocol.ItemStackRequest {
|
|||||||
for i, v := range x.Actions {
|
for i, v := range x.Actions {
|
||||||
if z, ok := v.(*CraftRecipeStackRequestAction); ok {
|
if z, ok := v.(*CraftRecipeStackRequestAction); 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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ret
|
return ret
|
||||||
@@ -101,15 +143,15 @@ func lookupStackRequestActionType(x StackRequestAction, id *uint8) bool {
|
|||||||
*id = protocol.StackRequestActionMineBlock
|
*id = protocol.StackRequestActionMineBlock
|
||||||
case *CraftRecipeStackRequestAction:
|
case *CraftRecipeStackRequestAction:
|
||||||
*id = protocol.StackRequestActionCraftRecipe
|
*id = protocol.StackRequestActionCraftRecipe
|
||||||
case *protocol.AutoCraftRecipeStackRequestAction:
|
case *AutoCraftRecipeStackRequestAction:
|
||||||
*id = protocol.StackRequestActionCraftRecipeAuto
|
*id = protocol.StackRequestActionCraftRecipeAuto
|
||||||
case *protocol.CraftCreativeStackRequestAction:
|
case *CraftCreativeStackRequestAction:
|
||||||
*id = protocol.StackRequestActionCraftCreative
|
*id = protocol.StackRequestActionCraftCreative
|
||||||
case *protocol.CraftRecipeOptionalStackRequestAction:
|
case *protocol.CraftRecipeOptionalStackRequestAction:
|
||||||
*id = protocol.StackRequestActionCraftRecipeOptional
|
*id = protocol.StackRequestActionCraftRecipeOptional
|
||||||
case *protocol.CraftGrindstoneRecipeStackRequestAction:
|
case *CraftGrindstoneRecipeStackRequestAction:
|
||||||
*id = protocol.StackRequestActionCraftGrindstone
|
*id = protocol.StackRequestActionCraftGrindstone
|
||||||
case *protocol.CraftLoomRecipeStackRequestAction:
|
case *CraftLoomRecipeStackRequestAction:
|
||||||
*id = protocol.StackRequestActionCraftLoom
|
*id = protocol.StackRequestActionCraftLoom
|
||||||
case *protocol.CraftNonImplementedStackRequestAction:
|
case *protocol.CraftNonImplementedStackRequestAction:
|
||||||
*id = protocol.StackRequestActionCraftNonImplementedDeprecated
|
*id = protocol.StackRequestActionCraftNonImplementedDeprecated
|
||||||
@@ -151,15 +193,15 @@ func lookupStackRequestAction(id uint8, x *protocol.StackRequestAction) bool {
|
|||||||
case protocol.StackRequestActionCraftRecipe:
|
case protocol.StackRequestActionCraftRecipe:
|
||||||
*x = &CraftRecipeStackRequestAction{}
|
*x = &CraftRecipeStackRequestAction{}
|
||||||
case protocol.StackRequestActionCraftRecipeAuto:
|
case protocol.StackRequestActionCraftRecipeAuto:
|
||||||
*x = &protocol.AutoCraftRecipeStackRequestAction{}
|
*x = &AutoCraftRecipeStackRequestAction{}
|
||||||
case protocol.StackRequestActionCraftCreative:
|
case protocol.StackRequestActionCraftCreative:
|
||||||
*x = &protocol.CraftCreativeStackRequestAction{}
|
*x = &CraftCreativeStackRequestAction{}
|
||||||
case protocol.StackRequestActionCraftRecipeOptional:
|
case protocol.StackRequestActionCraftRecipeOptional:
|
||||||
*x = &protocol.CraftRecipeOptionalStackRequestAction{}
|
*x = &protocol.CraftRecipeOptionalStackRequestAction{}
|
||||||
case protocol.StackRequestActionCraftGrindstone:
|
case protocol.StackRequestActionCraftGrindstone:
|
||||||
*x = &protocol.CraftGrindstoneRecipeStackRequestAction{}
|
*x = &CraftGrindstoneRecipeStackRequestAction{}
|
||||||
case protocol.StackRequestActionCraftLoom:
|
case protocol.StackRequestActionCraftLoom:
|
||||||
*x = &protocol.CraftLoomRecipeStackRequestAction{}
|
*x = &CraftLoomRecipeStackRequestAction{}
|
||||||
case protocol.StackRequestActionCraftNonImplementedDeprecated:
|
case protocol.StackRequestActionCraftNonImplementedDeprecated:
|
||||||
*x = &protocol.CraftNonImplementedStackRequestAction{}
|
*x = &protocol.CraftNonImplementedStackRequestAction{}
|
||||||
case protocol.StackRequestActionCraftResultsDeprecated:
|
case protocol.StackRequestActionCraftResultsDeprecated:
|
||||||
@@ -602,11 +644,32 @@ type AutoCraftRecipeStackRequestAction struct {
|
|||||||
Ingredients []protocol.ItemDescriptorCount
|
Ingredients []protocol.ItemDescriptorCount
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FromLatest ...
|
||||||
|
func (a *AutoCraftRecipeStackRequestAction) FromLatest(y *protocol.AutoCraftRecipeStackRequestAction) *AutoCraftRecipeStackRequestAction {
|
||||||
|
a.RecipeNetworkID = y.RecipeNetworkID
|
||||||
|
a.NumberOfCrafts = y.NumberOfCrafts
|
||||||
|
a.TimesCrafted = y.TimesCrafted
|
||||||
|
a.Ingredients = y.Ingredients
|
||||||
|
return a
|
||||||
|
}
|
||||||
|
|
||||||
|
// ToLatest ...
|
||||||
|
func (a *AutoCraftRecipeStackRequestAction) ToLatest() *protocol.AutoCraftRecipeStackRequestAction {
|
||||||
|
return &protocol.AutoCraftRecipeStackRequestAction{
|
||||||
|
RecipeNetworkID: a.RecipeNetworkID,
|
||||||
|
NumberOfCrafts: a.NumberOfCrafts,
|
||||||
|
TimesCrafted: a.TimesCrafted,
|
||||||
|
Ingredients: a.Ingredients,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Marshal ...
|
// Marshal ...
|
||||||
func (a *AutoCraftRecipeStackRequestAction) Marshal(r protocol.IO) {
|
func (a *AutoCraftRecipeStackRequestAction) Marshal(r protocol.IO) {
|
||||||
r.Varuint32(&a.RecipeNetworkID)
|
r.Varuint32(&a.RecipeNetworkID)
|
||||||
r.Uint8(&a.NumberOfCrafts)
|
r.Uint8(&a.NumberOfCrafts)
|
||||||
|
if IsProtoGTE(r, ID712) {
|
||||||
r.Uint8(&a.TimesCrafted)
|
r.Uint8(&a.TimesCrafted)
|
||||||
|
}
|
||||||
protocol.FuncSlice(r, &a.Ingredients, r.ItemDescriptorCount)
|
protocol.FuncSlice(r, &a.Ingredients, r.ItemDescriptorCount)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -621,11 +684,28 @@ type CraftCreativeStackRequestAction struct {
|
|||||||
NumberOfCrafts byte
|
NumberOfCrafts byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FromLatest ...
|
||||||
|
func (a *CraftCreativeStackRequestAction) FromLatest(y *protocol.CraftCreativeStackRequestAction) *CraftCreativeStackRequestAction {
|
||||||
|
a.CreativeItemNetworkID = y.CreativeItemNetworkID
|
||||||
|
a.NumberOfCrafts = y.NumberOfCrafts
|
||||||
|
return a
|
||||||
|
}
|
||||||
|
|
||||||
|
// ToLatest ...
|
||||||
|
func (a *CraftCreativeStackRequestAction) ToLatest() *protocol.CraftCreativeStackRequestAction {
|
||||||
|
return &protocol.CraftCreativeStackRequestAction{
|
||||||
|
CreativeItemNetworkID: a.CreativeItemNetworkID,
|
||||||
|
NumberOfCrafts: a.NumberOfCrafts,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Marshal ...
|
// Marshal ...
|
||||||
func (a *CraftCreativeStackRequestAction) Marshal(r protocol.IO) {
|
func (a *CraftCreativeStackRequestAction) Marshal(r protocol.IO) {
|
||||||
r.Varuint32(&a.CreativeItemNetworkID)
|
r.Varuint32(&a.CreativeItemNetworkID)
|
||||||
|
if IsProtoGTE(r, ID712) {
|
||||||
r.Uint8(&a.NumberOfCrafts)
|
r.Uint8(&a.NumberOfCrafts)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// CraftRecipeOptionalStackRequestAction is sent when using an anvil. When this action is sent, the
|
// CraftRecipeOptionalStackRequestAction is sent when using an anvil. When this action is sent, the
|
||||||
// FilterStrings field in the respective stack request is non-empty and contains the name of the item created
|
// FilterStrings field in the respective stack request is non-empty and contains the name of the item created
|
||||||
@@ -659,10 +739,29 @@ type CraftGrindstoneRecipeStackRequestAction struct {
|
|||||||
Cost int32
|
Cost int32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FromLatest ...
|
||||||
|
func (c *CraftGrindstoneRecipeStackRequestAction) FromLatest(y *protocol.CraftGrindstoneRecipeStackRequestAction) *CraftGrindstoneRecipeStackRequestAction {
|
||||||
|
c.RecipeNetworkID = y.RecipeNetworkID
|
||||||
|
c.NumberOfCrafts = y.NumberOfCrafts
|
||||||
|
c.Cost = y.Cost
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
// ToLatest ...
|
||||||
|
func (c *CraftGrindstoneRecipeStackRequestAction) ToLatest() *protocol.CraftGrindstoneRecipeStackRequestAction {
|
||||||
|
return &protocol.CraftGrindstoneRecipeStackRequestAction{
|
||||||
|
RecipeNetworkID: c.RecipeNetworkID,
|
||||||
|
NumberOfCrafts: c.NumberOfCrafts,
|
||||||
|
Cost: c.Cost,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Marshal ...
|
// Marshal ...
|
||||||
func (c *CraftGrindstoneRecipeStackRequestAction) Marshal(r protocol.IO) {
|
func (c *CraftGrindstoneRecipeStackRequestAction) Marshal(r protocol.IO) {
|
||||||
r.Varuint32(&c.RecipeNetworkID)
|
r.Varuint32(&c.RecipeNetworkID)
|
||||||
|
if IsProtoGTE(r, ID712) {
|
||||||
r.Uint8(&c.NumberOfCrafts)
|
r.Uint8(&c.NumberOfCrafts)
|
||||||
|
}
|
||||||
r.Varint32(&c.Cost)
|
r.Varint32(&c.Cost)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -675,11 +774,28 @@ type CraftLoomRecipeStackRequestAction struct {
|
|||||||
TimesCrafted byte
|
TimesCrafted byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FromLatest ...
|
||||||
|
func (c *CraftLoomRecipeStackRequestAction) FromLatest(y *protocol.CraftLoomRecipeStackRequestAction) *CraftLoomRecipeStackRequestAction {
|
||||||
|
c.Pattern = y.Pattern
|
||||||
|
c.TimesCrafted = y.TimesCrafted
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
|
||||||
|
// ToLatest ...
|
||||||
|
func (c *CraftLoomRecipeStackRequestAction) ToLatest() *protocol.CraftLoomRecipeStackRequestAction {
|
||||||
|
return &protocol.CraftLoomRecipeStackRequestAction{
|
||||||
|
Pattern: c.Pattern,
|
||||||
|
TimesCrafted: c.TimesCrafted,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Marshal ...
|
// Marshal ...
|
||||||
func (c *CraftLoomRecipeStackRequestAction) Marshal(r protocol.IO) {
|
func (c *CraftLoomRecipeStackRequestAction) Marshal(r protocol.IO) {
|
||||||
r.String(&c.Pattern)
|
r.String(&c.Pattern)
|
||||||
|
if IsProtoGTE(r, ID712) {
|
||||||
r.Uint8(&c.TimesCrafted)
|
r.Uint8(&c.TimesCrafted)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// CraftNonImplementedStackRequestAction is an action sent for inventory actions that aren't yet implemented
|
// CraftNonImplementedStackRequestAction is an action sent for inventory actions that aren't yet implemented
|
||||||
// in the new system. These include, for example, anvils.
|
// in the new system. These include, for example, anvils.
|
||||||
|
|||||||
Reference in New Issue
Block a user