PocketMine-MP 5.43.2 git-a137a986d01d9af23452b2e741699a770c7ae112
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\Byte;
18use pmmp\encoding\ByteBufferReader;
19use pmmp\encoding\ByteBufferWriter;
20use pmmp\encoding\VarInt;
22use function count;
23
25
29 public function __construct(
30 private ?BiomeClimateData $climate,
31 private ?BiomeConsolidatedFeaturesData $consolidatedFeatures,
32 private ?BiomeMountainParamsData $mountainParams,
33 private ?BiomeSurfaceMaterialAdjustmentData $surfaceMaterialAdjustment,
34 private ?BiomeOverworldGenRulesData $overworldGenRules,
35 private ?BiomeMultinoiseGenRulesData $multinoiseGenRules,
36 private ?BiomeLegacyWorldGenRulesData $legacyWorldGenRules,
37 private ?array $replacementsData,
38 private ?int $villageType,
39 private ?BiomeSurfaceBuilderData $surfaceBuilderData,
40 private ?BiomeSurfaceBuilderData $subSurfaceBuilderData
41 ){}
42
43 public function getClimate() : ?BiomeClimateData{ return $this->climate; }
44
45 public function getConsolidatedFeatures() : ?BiomeConsolidatedFeaturesData{ return $this->consolidatedFeatures; }
46
47 public function getMountainParams() : ?BiomeMountainParamsData{ return $this->mountainParams; }
48
49 public function getSurfaceMaterialAdjustment() : ?BiomeSurfaceMaterialAdjustmentData{ return $this->surfaceMaterialAdjustment; }
50
51 public function getOverworldGenRules() : ?BiomeOverworldGenRulesData{ return $this->overworldGenRules; }
52
53 public function getMultinoiseGenRules() : ?BiomeMultinoiseGenRulesData{ return $this->multinoiseGenRules; }
54
55 public function getLegacyWorldGenRules() : ?BiomeLegacyWorldGenRulesData{ return $this->legacyWorldGenRules; }
56
60 public function getReplacementsData() : ?array{ return $this->replacementsData; }
61
62 public function getVillageType() : ?int{ return $this->villageType; }
63
64 public function getSurfaceBuilderData() : ?BiomeSurfaceBuilderData{ return $this->surfaceBuilderData; }
65
66 public function getSubSurfaceBuilderData() : ?BiomeSurfaceBuilderData{ return $this->subSurfaceBuilderData; }
67
68 public static function read(ByteBufferReader $in) : self{
69 $climate = CommonTypes::readOptional($in, fn() => BiomeClimateData::read($in));
70 $consolidatedFeatures = CommonTypes::readOptional($in, fn() => BiomeConsolidatedFeaturesData::read($in));
71 $mountainParams = CommonTypes::readOptional($in, fn() => BiomeMountainParamsData::read($in));
72 $surfaceMaterialAdjustment = CommonTypes::readOptional($in, fn() => BiomeSurfaceMaterialAdjustmentData::read($in));
73 $overworldGenRules = CommonTypes::readOptional($in, fn() => BiomeOverworldGenRulesData::read($in));
74 $multinoiseGenRules = CommonTypes::readOptional($in, fn() => BiomeMultinoiseGenRulesData::read($in));
75 $legacyWorldGenRules = CommonTypes::readOptional($in, fn() => BiomeLegacyWorldGenRulesData::read($in));
76 $replacementsData = CommonTypes::readOptional($in, function(ByteBufferReader $in) : array{
77 $count = VarInt::readUnsignedInt($in);
78 $result = [];
79 for($i = 0; $i < $count; ++$i){
80 $result[] = BiomeReplacementData::read($in);
81 }
82 return $result;
83 });
84 $villageType = CommonTypes::readOptional($in, fn() => Byte::readUnsigned($in));
85 $surfaceBuilderData = CommonTypes::readOptional($in, fn() => BiomeSurfaceBuilderData::read($in));
86 $subSurfaceBuilderData = CommonTypes::readOptional($in, fn() => BiomeSurfaceBuilderData::read($in));
87
88 return new self(
89 $climate,
90 $consolidatedFeatures,
91 $mountainParams,
92 $surfaceMaterialAdjustment,
93 $overworldGenRules,
94 $multinoiseGenRules,
95 $legacyWorldGenRules,
96 $replacementsData,
97 $villageType,
98 $surfaceBuilderData,
99 $subSurfaceBuilderData
100 );
101 }
102
103 public function write(ByteBufferWriter $out) : void{
104 CommonTypes::writeOptional($out, $this->climate, fn(ByteBufferWriter $out, BiomeClimateData $v) => $v->write($out));
105 CommonTypes::writeOptional($out, $this->consolidatedFeatures, fn(ByteBufferWriter $out, BiomeConsolidatedFeaturesData $v) => $v->write($out));
106 CommonTypes::writeOptional($out, $this->mountainParams, fn(ByteBufferWriter $out, BiomeMountainParamsData $v) => $v->write($out));
107 CommonTypes::writeOptional($out, $this->surfaceMaterialAdjustment, fn(ByteBufferWriter $out, BiomeSurfaceMaterialAdjustmentData $v) => $v->write($out));
108 CommonTypes::writeOptional($out, $this->overworldGenRules, fn(ByteBufferWriter $out, BiomeOverworldGenRulesData $v) => $v->write($out));
109 CommonTypes::writeOptional($out, $this->multinoiseGenRules, fn(ByteBufferWriter $out, BiomeMultinoiseGenRulesData $v) => $v->write($out));
110 CommonTypes::writeOptional($out, $this->legacyWorldGenRules, fn(ByteBufferWriter $out, BiomeLegacyWorldGenRulesData $v) => $v->write($out));
111 CommonTypes::writeOptional($out, $this->replacementsData, function(ByteBufferWriter $out, array $v) : void{
112 VarInt::writeUnsignedInt($out, count($v));
113 foreach($v as $item){
114 $item->write($out);
115 }
116 });
117 CommonTypes::writeOptional($out, $this->villageType, fn(ByteBufferWriter $out, int $v) => Byte::writeUnsigned($out, $v));
118 CommonTypes::writeOptional($out, $this->surfaceBuilderData, fn(ByteBufferWriter $out, BiomeSurfaceBuilderData $v) => $v->write($out));
119 CommonTypes::writeOptional($out, $this->subSurfaceBuilderData, fn(ByteBufferWriter $out, BiomeSurfaceBuilderData $v) => $v->write($out));
120 }
121}
__construct(private ?BiomeClimateData $climate, private ?BiomeConsolidatedFeaturesData $consolidatedFeatures, private ?BiomeMountainParamsData $mountainParams, private ?BiomeSurfaceMaterialAdjustmentData $surfaceMaterialAdjustment, private ?BiomeOverworldGenRulesData $overworldGenRules, private ?BiomeMultinoiseGenRulesData $multinoiseGenRules, private ?BiomeLegacyWorldGenRulesData $legacyWorldGenRules, private ?array $replacementsData, private ?int $villageType, private ?BiomeSurfaceBuilderData $surfaceBuilderData, private ?BiomeSurfaceBuilderData $subSurfaceBuilderData)