Skip to content

Commit

Permalink
Implement ICopper interface for blocks with common properties (#6390)
Browse files Browse the repository at this point in the history
  • Loading branch information
ipad54 authored Jul 10, 2024
1 parent 2ffc38c commit accaa0a
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 10 deletions.
3 changes: 2 additions & 1 deletion src/block/Copper.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@
namespace pocketmine\block;

use pocketmine\block\utils\CopperTrait;
use pocketmine\block\utils\ICopper;

class Copper extends Opaque{
class Copper extends Opaque implements ICopper{
use CopperTrait;
}
3 changes: 2 additions & 1 deletion src/block/CopperSlab.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@
namespace pocketmine\block;

use pocketmine\block\utils\CopperTrait;
use pocketmine\block\utils\ICopper;

class CopperSlab extends Slab{
class CopperSlab extends Slab implements ICopper{
use CopperTrait;
}
3 changes: 2 additions & 1 deletion src/block/CopperStairs.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@
namespace pocketmine\block;

use pocketmine\block\utils\CopperTrait;
use pocketmine\block\utils\ICopper;

class CopperStairs extends Stair{
class CopperStairs extends Stair implements ICopper{
use CopperTrait;
}
38 changes: 38 additions & 0 deletions src/block/utils/ICopper.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?php

/*
*
* ____ _ _ __ __ _ __ __ ____
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* @author PocketMine Team
* @link http://www.pocketmine.net/
*
*
*/

declare(strict_types=1);

namespace pocketmine\block\utils;

/**
* Represents copper blocks that have oxidized and waxed variations.
*/
interface ICopper{

public function getOxidation() : CopperOxidation;

public function setOxidation(CopperOxidation $oxidation) : ICopper;

public function isWaxed() : bool;

public function setWaxed(bool $waxed) : ICopper;
}
12 changes: 5 additions & 7 deletions src/data/bedrock/block/convert/BlockStateDeserializerHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,6 @@
use pocketmine\block\Block;
use pocketmine\block\Button;
use pocketmine\block\Candle;
use pocketmine\block\Copper;
use pocketmine\block\CopperSlab;
use pocketmine\block\CopperStairs;
use pocketmine\block\Crops;
use pocketmine\block\DaylightSensor;
use pocketmine\block\Door;
Expand All @@ -49,6 +46,7 @@
use pocketmine\block\Stem;
use pocketmine\block\Trapdoor;
use pocketmine\block\utils\CopperOxidation;
use pocketmine\block\utils\ICopper;
use pocketmine\block\utils\SlabType;
use pocketmine\block\VanillaBlocks;
use pocketmine\block\Wall;
Expand Down Expand Up @@ -102,24 +100,24 @@ public static function decodeComparator(RedstoneComparator $block, BlockStateRea
}

/**
* @phpstan-template TBlock of Copper|CopperSlab|CopperStairs
* @phpstan-template TBlock of ICopper
*
* @phpstan-param TBlock $block
* @phpstan-return TBlock
*/
public static function decodeCopper(Copper|CopperSlab|CopperStairs $block, CopperOxidation $oxidation) : Copper|CopperSlab|CopperStairs{
public static function decodeCopper(ICopper $block, CopperOxidation $oxidation) : ICopper{
$block->setOxidation($oxidation);
$block->setWaxed(false);
return $block;
}

/**
* @phpstan-template TBlock of Copper|CopperSlab|CopperStairs
* @phpstan-template TBlock of ICopper
*
* @phpstan-param TBlock $block
* @phpstan-return TBlock
*/
public static function decodeWaxedCopper(Copper|CopperSlab|CopperStairs $block, CopperOxidation $oxidation) : Copper|CopperSlab|CopperStairs{
public static function decodeWaxedCopper(ICopper $block, CopperOxidation $oxidation) : ICopper{
$block->setOxidation($oxidation);
$block->setWaxed(true);
return $block;
Expand Down

0 comments on commit accaa0a

Please sign in to comment.