PocketMine-MP 5.41.1 git-4f563d39044b06d1e4724032369d67f347dd3b86
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 ?BiomeSurfaceMaterialData $surfaceMaterial,
35 private bool $defaultOverworldSurface,
36 private bool $swampSurface,
37 private bool $frozenOceanSurface,
38 private bool $theEndSurface,
39 private ?BiomeMesaSurfaceData $mesaSurface,
40 private ?BiomeCappedSurfaceData $cappedSurface,
41 private ?BiomeOverworldGenRulesData $overworldGenRules,
42 private ?BiomeMultinoiseGenRulesData $multinoiseGenRules,
43 private ?BiomeLegacyWorldGenRulesData $legacyWorldGenRules,
44 private ?array $replacementsData,
45 private ?int $villageType,
46 ){}
47
48 public function getClimate() : ?BiomeClimateData{ return $this->climate; }
49
50 public function getConsolidatedFeatures() : ?BiomeConsolidatedFeaturesData{ return $this->consolidatedFeatures; }
51
52 public function getMountainParams() : ?BiomeMountainParamsData{ return $this->mountainParams; }
53
54 public function getSurfaceMaterialAdjustment() : ?BiomeSurfaceMaterialAdjustmentData{ return $this->surfaceMaterialAdjustment; }
55
56 public function getSurfaceMaterial() : ?BiomeSurfaceMaterialData{ return $this->surfaceMaterial; }
57
58 public function hasDefaultOverworldSurface() : bool{ return $this->defaultOverworldSurface; }
59
60 public function hasSwampSurface() : bool{ return $this->swampSurface; }
61
62 public function hasFrozenOceanSurface() : bool{ return $this->frozenOceanSurface; }
63
64 public function hasTheEndSurface() : bool{ return $this->theEndSurface; }
65
66 public function getMesaSurface() : ?BiomeMesaSurfaceData{ return $this->mesaSurface; }
67
68 public function getCappedSurface() : ?BiomeCappedSurfaceData{ return $this->cappedSurface; }
69
70 public function getOverworldGenRules() : ?BiomeOverworldGenRulesData{ return $this->overworldGenRules; }
71
72 public function getMultinoiseGenRules() : ?BiomeMultinoiseGenRulesData{ return $this->multinoiseGenRules; }
73
74 public function getLegacyWorldGenRules() : ?BiomeLegacyWorldGenRulesData{ return $this->legacyWorldGenRules; }
75
79 public function getReplacementsData() : ?array{ return $this->replacementsData; }
80
81 public function getVillageType() : ?int{ return $this->villageType; }
82
83 public static function read(ByteBufferReader $in) : self{
84 $climate = CommonTypes::readOptional($in, fn() => BiomeClimateData::read($in));
85 $consolidatedFeatures = CommonTypes::readOptional($in, fn() => BiomeConsolidatedFeaturesData::read($in));
86 $mountainParams = CommonTypes::readOptional($in, fn() => BiomeMountainParamsData::read($in));
87 $surfaceMaterialAdjustment = CommonTypes::readOptional($in, fn() => BiomeSurfaceMaterialAdjustmentData::read($in));
88 $surfaceMaterial = CommonTypes::readOptional($in, fn() => BiomeSurfaceMaterialData::read($in));
89 $defaultOverworldSurface = CommonTypes::getBool($in);
90 $swampSurface = CommonTypes::getBool($in);
91 $frozenOceanSurface = CommonTypes::getBool($in);
92 $theEndSurface = CommonTypes::getBool($in);
93 $mesaSurface = CommonTypes::readOptional($in, fn() => BiomeMesaSurfaceData::read($in));
94 $cappedSurface = CommonTypes::readOptional($in, fn() => BiomeCappedSurfaceData::read($in));
95 $overworldGenRules = CommonTypes::readOptional($in, fn() => BiomeOverworldGenRulesData::read($in));
96 $multinoiseGenRules = CommonTypes::readOptional($in, fn() => BiomeMultinoiseGenRulesData::read($in));
97 $legacyWorldGenRules = CommonTypes::readOptional($in, fn() => BiomeLegacyWorldGenRulesData::read($in));
98 $replacementsData = CommonTypes::readOptional($in, function(ByteBufferReader $in) : array{
99 $count = VarInt::readUnsignedInt($in);
100 $result = [];
101 for($i = 0; $i < $count; ++$i){
102 $result[] = BiomeReplacementData::read($in);
103 }
104 return $result;
105 });
106 $villageType = CommonTypes::readOptional($in, fn() => Byte::readUnsigned($in));
107
108 return new self(
109 $climate,
110 $consolidatedFeatures,
111 $mountainParams,
112 $surfaceMaterialAdjustment,
113 $surfaceMaterial,
114 $defaultOverworldSurface,
115 $swampSurface,
116 $frozenOceanSurface,
117 $theEndSurface,
118 $mesaSurface,
119 $cappedSurface,
120 $overworldGenRules,
121 $multinoiseGenRules,
122 $legacyWorldGenRules,
123 $replacementsData,
124 $villageType
125 );
126 }
127
128 public function write(ByteBufferWriter $out) : void{
129 CommonTypes::writeOptional($out, $this->climate, fn(ByteBufferWriter $out, BiomeClimateData $v) => $v->write($out));
130 CommonTypes::writeOptional($out, $this->consolidatedFeatures, fn(ByteBufferWriter $out, BiomeConsolidatedFeaturesData $v) => $v->write($out));
131 CommonTypes::writeOptional($out, $this->mountainParams, fn(ByteBufferWriter $out, BiomeMountainParamsData $v) => $v->write($out));
132 CommonTypes::writeOptional($out, $this->surfaceMaterialAdjustment, fn(ByteBufferWriter $out, BiomeSurfaceMaterialAdjustmentData $v) => $v->write($out));
133 CommonTypes::writeOptional($out, $this->surfaceMaterial, fn(ByteBufferWriter $out, BiomeSurfaceMaterialData $v) => $v->write($out));
134 CommonTypes::putBool($out, $this->defaultOverworldSurface);
135 CommonTypes::putBool($out, $this->swampSurface);
136 CommonTypes::putBool($out, $this->frozenOceanSurface);
137 CommonTypes::putBool($out, $this->theEndSurface);
138 CommonTypes::writeOptional($out, $this->mesaSurface, fn(ByteBufferWriter $out, BiomeMesaSurfaceData $v) => $v->write($out));
139 CommonTypes::writeOptional($out, $this->cappedSurface, fn(ByteBufferWriter $out, BiomeCappedSurfaceData $v) => $v->write($out));
140 CommonTypes::writeOptional($out, $this->overworldGenRules, fn(ByteBufferWriter $out, BiomeOverworldGenRulesData $v) => $v->write($out));
141 CommonTypes::writeOptional($out, $this->multinoiseGenRules, fn(ByteBufferWriter $out, BiomeMultinoiseGenRulesData $v) => $v->write($out));
142 CommonTypes::writeOptional($out, $this->legacyWorldGenRules, fn(ByteBufferWriter $out, BiomeLegacyWorldGenRulesData $v) => $v->write($out));
143 CommonTypes::writeOptional($out, $this->replacementsData, function(ByteBufferWriter $out, array $v) : void{
144 VarInt::writeUnsignedInt($out, count($v));
145 foreach($v as $item){
146 $item->write($out);
147 }
148 });
149 CommonTypes::writeOptional($out, $this->villageType, fn(ByteBufferWriter $out, int $v) => Byte::writeUnsigned($out, $v));
150 }
151}
__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, private ?int $villageType,)