55use pocketmine \block \Block ;
66use pocketmine \item \Item ;
77use pocketmine \Player ;
8+ use ReflectionClass ;
89use Sandertv \BlockSniper \brush \shapes \CubeShape ;
910use Sandertv \BlockSniper \brush \shapes \CuboidShape ;
1011use Sandertv \BlockSniper \brush \shapes \CylinderStandingShape ;
1112use Sandertv \BlockSniper \brush \shapes \SphereShape ;
13+ use Sandertv \BlockSniper \brush \types \BiomeType ;
14+ use Sandertv \BlockSniper \brush \types \CleanEntitiesType ;
1215use Sandertv \BlockSniper \brush \types \CleanType ;
1316use Sandertv \BlockSniper \brush \types \DrainType ;
17+ use Sandertv \BlockSniper \brush \types \ExpandType ;
1418use Sandertv \BlockSniper \brush \types \FillType ;
1519use Sandertv \BlockSniper \brush \types \FlattenType ;
1620use Sandertv \BlockSniper \brush \types \LayerType ;
1721use Sandertv \BlockSniper \brush \types \LeafBlowerType ;
22+ use Sandertv \BlockSniper \brush \types \MeltType ;
1823use Sandertv \BlockSniper \brush \types \OverlayType ;
1924use Sandertv \BlockSniper \brush \types \ReplaceType ;
20- use Sandertv \BlockSniper \brush \types \ExpandType ;
21- use Sandertv \BlockSniper \brush \types \MeltType ;
2225use Sandertv \BlockSniper \Loader ;
2326
2427class Brush {
2528
2629 public static $ brush = [];
2730 public static $ owner ;
31+ public static $ resetSize = [];
2832
2933 public function __construct (Loader $ owner ) {
3034 self ::$ owner = $ owner ;
@@ -46,7 +50,10 @@ public static function setupDefaultValues(Player $player): bool {
4650 "size " => 1 ,
4751 "height " => 1 ,
4852 "blocks " => [Block::get (Block::STONE )],
49- "obsolete " => Block::get (Block::AIR )
53+ "obsolete " => Block::get (Block::AIR ),
54+ "gravity " => false ,
55+ "decrement " => false ,
56+ "biome " => "plains "
5057 ];
5158 return true ;
5259 }
@@ -66,6 +73,40 @@ public static function setBlocks(Player $player, array $blocks) {
6673 }
6774 }
6875
76+ /**
77+ * @param Player $player
78+ * @param $value
79+ */
80+ public static function setDecrementing (Player $ player , $ value ) {
81+ self ::$ brush [$ player ->getId ()]["decrement " ] = (bool )$ value ;
82+ }
83+
84+ /**
85+ * @param Player $player
86+ *
87+ * @return bool
88+ */
89+ public static function isDecrementing (Player $ player ): bool {
90+ return self ::$ brush [$ player ->getId ()]["decrement " ];
91+ }
92+
93+ /**
94+ * @param Player $player
95+ * @param $value
96+ */
97+ public static function setGravity (Player $ player , $ value ) {
98+ self ::$ brush [$ player ->getId ()]["gravity " ] = (bool )$ value ;
99+ }
100+
101+ /**
102+ * @param Player $player
103+ *
104+ * @return bool
105+ */
106+ public static function getGravity (Player $ player ): bool {
107+ return self ::$ brush [$ player ->getId ()]["gravity " ];
108+ }
109+
69110 /**
70111 * @param Player $player
71112 * @param $value
@@ -150,16 +191,16 @@ public static function getShape(Player $player): BaseShape {
150191 $ shapeName = self ::$ brush [$ player ->getId ()]["shape " ];
151192 switch ($ shapeName ) {
152193 case "cube " :
153- $ shape = new CubeShape (self ::$ owner , $ player ->getLevel (), self ::getSize ($ player ), $ player ->getTargetBlock (100 ));
194+ $ shape = new CubeShape (self ::$ owner , $ player, $ player ->getLevel (), self ::getSize ($ player ), $ player ->getTargetBlock (100 ));
154195 break ;
155196 case "sphere " :
156197 $ shape = new SphereShape (self ::$ owner , $ player , $ player ->getLevel (), self ::getSize ($ player ), $ player ->getTargetBlock (100 ));
157198 break ;
158199 case "cuboid " :
159- $ shape = new CuboidShape (self ::$ owner , $ player ->getLevel (), self ::getSize ($ player ), self ::getHeight ($ player ), $ player ->getTargetBlock (100 ));
200+ $ shape = new CuboidShape (self ::$ owner , $ player, $ player ->getLevel (), self ::getSize ($ player ), self ::getHeight ($ player ), $ player ->getTargetBlock (100 ));
160201 break ;
161202 case "cylinder " :
162- $ shape = new CylinderStandingShape (self ::$ owner , $ player ->getLevel (), self ::getSize ($ player ), self ::getHeight ($ player ), $ player ->getTargetBlock (100 ));
203+ $ shape = new CylinderStandingShape (self ::$ owner , $ player, $ player ->getLevel (), self ::getSize ($ player ), self ::getHeight ($ player ), $ player ->getTargetBlock (100 ));
163204 break ;
164205
165206 default :
@@ -193,7 +234,7 @@ public static function getHeight(Player $player): int {
193234 *
194235 * @return BaseType
195236 */
196- public static function getType (Player $ player , array $ blocks ): BaseType {
237+ public static function getType (Player $ player , array $ blocks = [] ): BaseType {
197238 $ typeName = self ::$ brush [$ player ->getId ()]["type " ];
198239 switch ($ typeName ) {
199240 case "fill " :
@@ -226,7 +267,35 @@ public static function getType(Player $player, array $blocks): BaseType {
226267 case "melt " :
227268 $ type = new MeltType (self ::$ owner , $ player , $ player ->getLevel (), $ blocks );
228269 break ;
270+ case "cleanentities " :
271+ $ type = new CleanEntitiesType (self ::$ owner , $ player , $ player ->getLevel (), $ blocks );
272+ break ;
273+ case "biome " :
274+ $ type = new BiomeType (self ::$ owner , $ player , $ player ->getLevel (), $ blocks );
275+ break ;
276+
277+ default :
278+ $ type = new FillType (self ::$ owner , $ player , $ player ->getLevel (), $ blocks );
279+ break ;
229280 }
230281 return $ type ;
231282 }
283+
284+ /**
285+ * @param Player $player
286+ * @param string $biome
287+ */
288+ public static function setBiome (Player $ player , string $ biome ) {
289+ self ::$ brush [$ player ->getId ()]["biome " ] = $ biome ;
290+ }
291+
292+ public static function getBiomeIdFromString (Player $ player ): int {
293+ $ biomes = new ReflectionClass ('pocketmine\level\generator\biome\Biome ' );
294+ $ const = strtoupper (str_replace (" " , "_ " , self ::$ brush [$ player ->getId ()]["biome " ]));
295+ if ($ biomes ->hasConstant ($ const )) {
296+ $ biome = $ biomes ->getConstant ($ const );
297+ return $ biome ;
298+ }
299+ return 0 ;
300+ }
232301}
0 commit comments