1.21.120 support

This commit is contained in:
AkmalFairuz
2025-10-29 23:06:31 +07:00
parent 8059da0fd2
commit 6ae0bac27d
14 changed files with 9776 additions and 37 deletions

View File

@@ -37,7 +37,7 @@ type BiomeDefinition struct {
// ChunkGeneration is optional information to assist in client-side chunk generation. Almost all servers
// can and should leave this empty to greatly reduce the size of this packet. Only BDS and servers which
// *exactly* match the vanilla chunk generation can benefit from this.
ChunkGeneration protocol.Optional[protocol.BiomeChunkGeneration]
ChunkGeneration protocol.Optional[BiomeChunkGeneration]
}
func (x *BiomeDefinition) Marshal(r protocol.IO) {
@@ -88,12 +88,14 @@ func (x *BiomeDefinition) FromLatest(bd protocol.BiomeDefinition) BiomeDefinitio
x.MapWaterColour = bd.MapWaterColour
x.Rain = bd.Rain
x.Tags = bd.Tags
x.ChunkGeneration = bd.ChunkGeneration
if v, ok := bd.ChunkGeneration.Value(); ok {
x.ChunkGeneration = protocol.Option((&BiomeChunkGeneration{}).FromLatest(v))
}
return *x
}
func (x *BiomeDefinition) ToLatest() protocol.BiomeDefinition {
return protocol.BiomeDefinition{
ret := protocol.BiomeDefinition{
NameIndex: x.NameIndex,
BiomeID: x.BiomeID,
Temperature: x.Temperature,
@@ -102,12 +104,118 @@ func (x *BiomeDefinition) ToLatest() protocol.BiomeDefinition {
//BlueSporeDensity: x.BlueSporeDensity,
//AshDensity: x.AshDensity,
//WhiteAshDensity: x.WhiteAshDensity,
FoliageSnow: x.FoliageSnow,
Depth: x.Depth,
Scale: x.Scale,
MapWaterColour: x.MapWaterColour,
Rain: x.Rain,
Tags: x.Tags,
ChunkGeneration: x.ChunkGeneration,
FoliageSnow: x.FoliageSnow,
Depth: x.Depth,
Scale: x.Scale,
MapWaterColour: x.MapWaterColour,
Rain: x.Rain,
Tags: x.Tags,
}
if v, ok := x.ChunkGeneration.Value(); ok {
ret.ChunkGeneration = protocol.Option(v.ToLatest())
}
return ret
}
// BiomeChunkGeneration represents the information required for the client to generate chunks itself
// to create the illusion of a larger render distance.
type BiomeChunkGeneration struct {
// Climate is optional information to specify the biome's climate.
Climate protocol.Optional[protocol.BiomeClimate]
// ConsolidatedFeatures is a list of features that are consolidated into a single feature.
ConsolidatedFeatures protocol.Optional[[]protocol.BiomeConsolidatedFeature]
// MountainParameters is optional information to specify the biome's mountain parameters.
MountainParameters protocol.Optional[protocol.BiomeMountainParameters]
// SurfaceMaterialAdjustments is a list of surface material adjustments.
SurfaceMaterialAdjustments protocol.Optional[[]protocol.BiomeElementData]
// SurfaceMaterials is a set of materials to use for the surface layers of the biome.
SurfaceMaterials protocol.Optional[protocol.BiomeSurfaceMaterial]
// HasDefaultOverworldSurface is true if the biome has a default overworld surface.
HasDefaultOverworldSurface bool
// HasSwampSurface is true if the biome has a swamp surface.
HasSwampSurface bool
// HasFrozenOceanSurface is true if the biome has a frozen ocean surface.
HasFrozenOceanSurface bool
// HasEndSurface is true if the biome has an end surface.
HasEndSurface bool
// MesaSurface is optional information to specify the biome's mesa surface.
MesaSurface protocol.Optional[protocol.BiomeMesaSurface]
// CappedSurface is optional information to specify the biome's capped surface, i.e. in the Nether.
CappedSurface protocol.Optional[protocol.BiomeCappedSurface]
// OverworldRules is optional information to specify the biome's overworld rules, such as rivers and hills.
OverworldRules protocol.Optional[protocol.BiomeOverworldRules]
// MultiNoiseRules is optional information to specify the biome's multi-noise rules.
MultiNoiseRules protocol.Optional[protocol.BiomeMultiNoiseRules]
// LegacyRules is a list of legacy rules for the biomes using an older format, which is just a list of
// weighted biomes.
LegacyRules protocol.Optional[[]protocol.BiomeConditionalTransformation]
// ReplacementsData is a list of biome replacement data.
ReplacementsData protocol.Optional[[]protocol.BiomeReplacementData]
}
func (x *BiomeChunkGeneration) Marshal(r protocol.IO) {
protocol.OptionalMarshaler(r, &x.Climate)
protocol.OptionalFunc(r, &x.ConsolidatedFeatures, func(s *[]protocol.BiomeConsolidatedFeature) {
protocol.Slice(r, s)
})
protocol.OptionalMarshaler(r, &x.MountainParameters)
protocol.OptionalFunc(r, &x.SurfaceMaterialAdjustments, func(s *[]protocol.BiomeElementData) {
protocol.Slice(r, s)
})
protocol.OptionalMarshaler(r, &x.SurfaceMaterials)
r.Bool(&x.HasDefaultOverworldSurface)
r.Bool(&x.HasSwampSurface)
r.Bool(&x.HasFrozenOceanSurface)
r.Bool(&x.HasEndSurface)
protocol.OptionalMarshaler(r, &x.MesaSurface)
protocol.OptionalMarshaler(r, &x.CappedSurface)
protocol.OptionalMarshaler(r, &x.OverworldRules)
protocol.OptionalMarshaler(r, &x.MultiNoiseRules)
protocol.OptionalFunc(r, &x.LegacyRules, func(s *[]protocol.BiomeConditionalTransformation) {
protocol.Slice(r, s)
})
if IsProtoGTE(r, ID859) {
protocol.OptionalFunc(r, &x.ReplacementsData, func(s *[]protocol.BiomeReplacementData) {
protocol.Slice(r, s)
})
}
}
func (x *BiomeChunkGeneration) FromLatest(bcg protocol.BiomeChunkGeneration) BiomeChunkGeneration {
x.Climate = bcg.Climate
x.ConsolidatedFeatures = bcg.ConsolidatedFeatures
x.MountainParameters = bcg.MountainParameters
x.SurfaceMaterialAdjustments = bcg.SurfaceMaterialAdjustments
x.SurfaceMaterials = bcg.SurfaceMaterials
x.HasDefaultOverworldSurface = bcg.HasDefaultOverworldSurface
x.HasSwampSurface = bcg.HasSwampSurface
x.HasFrozenOceanSurface = bcg.HasFrozenOceanSurface
x.HasEndSurface = bcg.HasEndSurface
x.MesaSurface = bcg.MesaSurface
x.CappedSurface = bcg.CappedSurface
x.OverworldRules = bcg.OverworldRules
x.MultiNoiseRules = bcg.MultiNoiseRules
x.LegacyRules = bcg.LegacyRules
x.ReplacementsData = bcg.ReplacementsData
return *x
}
func (x *BiomeChunkGeneration) ToLatest() protocol.BiomeChunkGeneration {
return protocol.BiomeChunkGeneration{
Climate: x.Climate,
ConsolidatedFeatures: x.ConsolidatedFeatures,
MountainParameters: x.MountainParameters,
SurfaceMaterialAdjustments: x.SurfaceMaterialAdjustments,
SurfaceMaterials: x.SurfaceMaterials,
HasDefaultOverworldSurface: x.HasDefaultOverworldSurface,
HasSwampSurface: x.HasSwampSurface,
HasFrozenOceanSurface: x.HasFrozenOceanSurface,
HasEndSurface: x.HasEndSurface,
MesaSurface: x.MesaSurface,
CappedSurface: x.CappedSurface,
OverworldRules: x.OverworldRules,
MultiNoiseRules: x.MultiNoiseRules,
LegacyRules: x.LegacyRules,
ReplacementsData: x.ReplacementsData,
}
}

View File

@@ -3,6 +3,7 @@ package proto
import "github.com/sandertv/gophertunnel/minecraft/protocol"
const (
ID859 = 859 // v1.21.120
ID844 = 844 // v1.21.110
ID827 = 827 // v1.21.100
ID819 = 819 // v1.21.93