PocketMine-MP 5.37.1 git-cef37e7835c666594588f957a47b27d521c6a58e
Loading...
Searching...
No Matches
BiomeDefinitionChunkGenData.php
1<?php
2
3/*
4 * This file is part of BedrockProtocol.
5 * Copyright (C) 2014-2022 PocketMine Team <https://github.com/pmmp/BedrockProtocol>
6 *
7 * BedrockProtocol is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Lesser General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 */
12
13declare(strict_types=1);
14
15namespace pocketmine\network\mcpe\protocol\types\biome\chunkgen;
16
17use pmmp\encoding\ByteBufferReader;
18use pmmp\encoding\ByteBufferWriter;
19use pmmp\encoding\VarInt;
21use function count;
22
24
28 public function __construct(
29 private ?BiomeClimateData $climate,
30 private ?BiomeConsolidatedFeaturesData $consolidatedFeatures,
31 private ?BiomeMountainParamsData $mountainParams,
32 private ?BiomeSurfaceMaterialAdjustmentData $surfaceMaterialAdjustment,
33 private ?BiomeSurfaceMaterialData $surfaceMaterial,
34 private bool $defaultOverworldSurface,
35 private bool $swampSurface,
36 private bool $frozenOceanSurface,
37 private bool $theEndSurface,
38 private ?BiomeMesaSurfaceData $mesaSurface,
39 private ?BiomeCappedSurfaceData $cappedSurface,
40 private ?BiomeOverworldGenRulesData $overworldGenRules,
41 private ?BiomeMultinoiseGenRulesData $multinoiseGenRules,
42 private ?BiomeLegacyWorldGenRulesData $legacyWorldGenRules,
43 private ?array $replacementsData,
44 ){}
45
46 public function getClimate() : ?BiomeClimateData{ return $this->climate; }
47
48 public function getConsolidatedFeatures() : ?BiomeConsolidatedFeaturesData{ return $this->consolidatedFeatures; }
49
50 public function getMountainParams() : ?BiomeMountainParamsData{ return $this->mountainParams; }
51
52 public function getSurfaceMaterialAdjustment() : ?BiomeSurfaceMaterialAdjustmentData{ return $this->surfaceMaterialAdjustment; }
53
54 public function getSurfaceMaterial() : ?BiomeSurfaceMaterialData{ return $this->surfaceMaterial; }
55
56 public function hasDefaultOverworldSurface() : bool{ return $this->defaultOverworldSurface; }
57
58 public function hasSwampSurface() : bool{ return $this->swampSurface; }
59
60 public function hasFrozenOceanSurface() : bool{ return $this->frozenOceanSurface; }
61
62 public function hasTheEndSurface() : bool{ return $this->theEndSurface; }
63
64 public function getMesaSurface() : ?BiomeMesaSurfaceData{ return $this->mesaSurface; }
65
66 public function getCappedSurface() : ?BiomeCappedSurfaceData{ return $this->cappedSurface; }
67
68 public function getOverworldGenRules() : ?BiomeOverworldGenRulesData{ return $this->overworldGenRules; }
69
70 public function getMultinoiseGenRules() : ?BiomeMultinoiseGenRulesData{ return $this->multinoiseGenRules; }
71
72 public function getLegacyWorldGenRules() : ?BiomeLegacyWorldGenRulesData{ return $this->legacyWorldGenRules; }
73
77 public function getReplacementsData() : ?array{ return $this->replacementsData; }
78
79 public static function read(ByteBufferReader $in) : self{
80 $climate = CommonTypes::readOptional($in, fn() => BiomeClimateData::read($in));
81 $consolidatedFeatures = CommonTypes::readOptional($in, fn() => BiomeConsolidatedFeaturesData::read($in));
82 $mountainParams = CommonTypes::readOptional($in, fn() => BiomeMountainParamsData::read($in));
83 $surfaceMaterialAdjustment = CommonTypes::readOptional($in, fn() => BiomeSurfaceMaterialAdjustmentData::read($in));
84 $surfaceMaterial = CommonTypes::readOptional($in, fn() => BiomeSurfaceMaterialData::read($in));
85 $defaultOverworldSurface = CommonTypes::getBool($in);
86 $swampSurface = CommonTypes::getBool($in);
87 $frozenOceanSurface = CommonTypes::getBool($in);
88 $theEndSurface = CommonTypes::getBool($in);
89 $mesaSurface = CommonTypes::readOptional($in, fn() => BiomeMesaSurfaceData::read($in));
90 $cappedSurface = CommonTypes::readOptional($in, fn() => BiomeCappedSurfaceData::read($in));
91 $overworldGenRules = CommonTypes::readOptional($in, fn() => BiomeOverworldGenRulesData::read($in));
92 $multinoiseGenRules = CommonTypes::readOptional($in, fn() => BiomeMultinoiseGenRulesData::read($in));
93 $legacyWorldGenRules = CommonTypes::readOptional($in, fn() => BiomeLegacyWorldGenRulesData::read($in));
94 $replacementsData = CommonTypes::readOptional($in, function(ByteBufferReader $in) : array{
95 $count = VarInt::readUnsignedInt($in);
96 $result = [];
97 for($i = 0; $i < $count; ++$i){
98 $result[] = BiomeReplacementData::read($in);
99 }
100 return $result;
101 });
102
103 return new self(
104 $climate,
105 $consolidatedFeatures,
106 $mountainParams,
107 $surfaceMaterialAdjustment,
108 $surfaceMaterial,
109 $defaultOverworldSurface,
110 $swampSurface,
111 $frozenOceanSurface,
112 $theEndSurface,
113 $mesaSurface,
114 $cappedSurface,
115 $overworldGenRules,
116 $multinoiseGenRules,
117 $legacyWorldGenRules,
118 $replacementsData,
119 );
120 }
121
122 public function write(ByteBufferWriter $out) : void{
123 CommonTypes::writeOptional($out, $this->climate, fn(ByteBufferWriter $out, BiomeClimateData $v) => $v->write($out));
124 CommonTypes::writeOptional($out, $this->consolidatedFeatures, fn(ByteBufferWriter $out, BiomeConsolidatedFeaturesData $v) => $v->write($out));
125 CommonTypes::writeOptional($out, $this->mountainParams, fn(ByteBufferWriter $out, BiomeMountainParamsData $v) => $v->write($out));
126 CommonTypes::writeOptional($out, $this->surfaceMaterialAdjustment, fn(ByteBufferWriter $out, BiomeSurfaceMaterialAdjustmentData $v) => $v->write($out));
127 CommonTypes::writeOptional($out, $this->surfaceMaterial, fn(ByteBufferWriter $out, BiomeSurfaceMaterialData $v) => $v->write($out));
128 CommonTypes::putBool($out, $this->defaultOverworldSurface);
129 CommonTypes::putBool($out, $this->swampSurface);
130 CommonTypes::putBool($out, $this->frozenOceanSurface);
131 CommonTypes::putBool($out, $this->theEndSurface);
132 CommonTypes::writeOptional($out, $this->mesaSurface, fn(ByteBufferWriter $out, BiomeMesaSurfaceData $v) => $v->write($out));
133 CommonTypes::writeOptional($out, $this->cappedSurface, fn(ByteBufferWriter $out, BiomeCappedSurfaceData $v) => $v->write($out));
134 CommonTypes::writeOptional($out, $this->overworldGenRules, fn(ByteBufferWriter $out, BiomeOverworldGenRulesData $v) => $v->write($out));
135 CommonTypes::writeOptional($out, $this->multinoiseGenRules, fn(ByteBufferWriter $out, BiomeMultinoiseGenRulesData $v) => $v->write($out));
136 CommonTypes::writeOptional($out, $this->legacyWorldGenRules, fn(ByteBufferWriter $out, BiomeLegacyWorldGenRulesData $v) => $v->write($out));
137 CommonTypes::writeOptional($out, $this->replacementsData, function(ByteBufferWriter $out, array $v) : void{
138 VarInt::writeUnsignedInt($out, count($v));
139 foreach($v as $item){
140 $item->write($out);
141 }
142 });
143 }
144}
__construct(private ?BiomeClimateData $climate, private ?BiomeConsolidatedFeaturesData $consolidatedFeatures, private ?BiomeMountainParamsData $mountainParams, private ?BiomeSurfaceMaterialAdjustmentData $surfaceMaterialAdjustment, private ?BiomeSurfaceMaterialData $surfaceMaterial, private bool $defaultOverworldSurface, private bool $swampSurface, private bool $frozenOceanSurface, private bool $theEndSurface, private ?BiomeMesaSurfaceData $mesaSurface, private ?BiomeCappedSurfaceData $cappedSurface, private ?BiomeOverworldGenRulesData $overworldGenRules, private ?BiomeMultinoiseGenRulesData $multinoiseGenRules, private ?BiomeLegacyWorldGenRulesData $legacyWorldGenRules, private ?array $replacementsData,)