mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-09-02 08:13:10 +00:00
Merge branch 'minor-next' into major-next
This commit is contained in:
commit
97027db70a
@ -24,8 +24,8 @@ declare(strict_types=1);
|
||||
namespace pocketmine\block;
|
||||
|
||||
use pocketmine\block\utils\BlockEventHelper;
|
||||
use pocketmine\block\utils\MultiAnyFacing;
|
||||
use pocketmine\block\utils\MultiAnySupportTrait;
|
||||
use pocketmine\block\utils\MultiFacing;
|
||||
use pocketmine\block\utils\SupportType;
|
||||
use pocketmine\item\Fertilizer;
|
||||
use pocketmine\item\Item;
|
||||
@ -36,7 +36,7 @@ use pocketmine\world\World;
|
||||
use function count;
|
||||
use function shuffle;
|
||||
|
||||
class GlowLichen extends Transparent implements MultiFacing{
|
||||
class GlowLichen extends Transparent implements MultiAnyFacing{
|
||||
use MultiAnySupportTrait;
|
||||
|
||||
public function getLightLevel() : int{
|
||||
|
@ -23,11 +23,11 @@ declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\block;
|
||||
|
||||
use pocketmine\block\utils\MultiAnyFacing;
|
||||
use pocketmine\block\utils\MultiAnySupportTrait;
|
||||
use pocketmine\block\utils\MultiFacing;
|
||||
use pocketmine\block\utils\SupportType;
|
||||
|
||||
final class ResinClump extends Transparent implements MultiFacing{
|
||||
final class ResinClump extends Transparent implements MultiAnyFacing{
|
||||
use MultiAnySupportTrait;
|
||||
|
||||
public function isSolid() : bool{
|
||||
|
@ -27,7 +27,10 @@ interface Ageable{
|
||||
|
||||
public function getAge() : int;
|
||||
|
||||
public function getMaxAge() : int;
|
||||
|
||||
/**
|
||||
* Must be in range 0 - getMaxAge()
|
||||
* @return $this
|
||||
*/
|
||||
public function setAge(int $age) : self;
|
||||
|
@ -38,6 +38,8 @@ trait AgeableTrait{
|
||||
|
||||
public function getAge() : int{ return $this->age; }
|
||||
|
||||
public function getMaxAge() : int{ return self::MAX_AGE; }
|
||||
|
||||
/**
|
||||
* @return $this
|
||||
*/
|
||||
|
@ -25,7 +25,7 @@ namespace pocketmine\block\utils;
|
||||
|
||||
use pocketmine\math\Facing;
|
||||
|
||||
interface MultiFacing{
|
||||
interface MultiAnyFacing{
|
||||
|
||||
/**
|
||||
* @return int[]
|
@ -118,10 +118,10 @@ use pocketmine\data\bedrock\block\convert\property\EnumFromRawStateMap;
|
||||
use pocketmine\data\bedrock\block\convert\property\FlattenedCaveVinesVariant;
|
||||
use pocketmine\data\bedrock\block\convert\property\IntFromRawStateMap;
|
||||
use pocketmine\data\bedrock\block\convert\property\IntProperty;
|
||||
use pocketmine\data\bedrock\block\convert\property\OptionSetFromIntProperty;
|
||||
use pocketmine\data\bedrock\block\convert\property\ValueFromIntProperty;
|
||||
use pocketmine\data\bedrock\block\convert\property\ValueFromStringProperty;
|
||||
use pocketmine\data\bedrock\block\convert\property\ValueMappings;
|
||||
use pocketmine\data\bedrock\block\convert\property\ValueSetFromIntProperty;
|
||||
use pocketmine\math\Facing;
|
||||
use function array_map;
|
||||
use function min;
|
||||
@ -581,7 +581,7 @@ final class VanillaBlockMappings{
|
||||
$reg->mapModel(Model::create(Blocks::RESIN_CLUMP(), Ids::RESIN_CLUMP)->properties([$commonProperties->multiFacingFlags]));
|
||||
|
||||
$reg->mapModel(Model::create(Blocks::VINES(), Ids::VINE)->properties([
|
||||
new OptionSetFromIntProperty(
|
||||
new ValueSetFromIntProperty(
|
||||
StateNames::VINE_DIRECTION_BITS,
|
||||
IntFromRawStateMap::int([
|
||||
Facing::NORTH => BlockLegacyMetadata::VINE_FLAG_NORTH,
|
||||
@ -1267,7 +1267,7 @@ final class VanillaBlockMappings{
|
||||
$reg->mapModel(Model::create(Blocks::CHAIN(), Ids::CHAIN)->properties([$commonProperties->pillarAxis]));
|
||||
$reg->mapModel(Model::create(Blocks::CHISELED_BOOKSHELF(), Ids::CHISELED_BOOKSHELF)->properties([
|
||||
$commonProperties->horizontalFacingSWNE,
|
||||
new OptionSetFromIntProperty(
|
||||
new ValueSetFromIntProperty(
|
||||
StateNames::BOOKS_STORED,
|
||||
EnumFromRawStateMap::int(ChiseledBookshelfSlot::class, fn(ChiseledBookshelfSlot $case) => match($case){
|
||||
//these are (currently) the same as the internal values, but it's best not to rely on those in case Mojang mess with the flags
|
||||
|
@ -46,7 +46,7 @@ use pocketmine\block\utils\CoralType;
|
||||
use pocketmine\block\utils\DyeColor;
|
||||
use pocketmine\block\utils\HorizontalFacing;
|
||||
use pocketmine\block\utils\Lightable;
|
||||
use pocketmine\block\utils\MultiFacing;
|
||||
use pocketmine\block\utils\MultiAnyFacing;
|
||||
use pocketmine\block\utils\PillarRotation;
|
||||
use pocketmine\block\utils\SignLikeRotation;
|
||||
use pocketmine\block\utils\SlabType;
|
||||
@ -80,8 +80,8 @@ final class CommonProperties{
|
||||
/** @phpstan-var ValueFromIntProperty<AnyFacing, int> */
|
||||
public readonly ValueFromIntProperty $anyFacingClassic;
|
||||
|
||||
/** @phpstan-var OptionSetFromIntProperty<MultiFacing, int> */
|
||||
public readonly OptionSetFromIntProperty $multiFacingFlags;
|
||||
/** @phpstan-var ValueSetFromIntProperty<MultiAnyFacing, int> */
|
||||
public readonly ValueSetFromIntProperty $multiFacingFlags;
|
||||
|
||||
/** @phpstan-var IntProperty<SignLikeRotation> */
|
||||
public readonly IntProperty $floorSignLikeRotation;
|
||||
@ -242,7 +242,7 @@ final class CommonProperties{
|
||||
fn(AnyFacing $b, int $v) => $b->setFacing($v)
|
||||
);
|
||||
|
||||
$this->multiFacingFlags = new OptionSetFromIntProperty(
|
||||
$this->multiFacingFlags = new ValueSetFromIntProperty(
|
||||
StateNames::MULTI_FACE_DIRECTION_BITS,
|
||||
IntFromRawStateMap::int([
|
||||
Facing::DOWN => BlockLegacyMetadata::MULTI_FACE_DIRECTION_FLAG_DOWN,
|
||||
@ -252,8 +252,8 @@ final class CommonProperties{
|
||||
Facing::WEST => BlockLegacyMetadata::MULTI_FACE_DIRECTION_FLAG_WEST,
|
||||
Facing::EAST => BlockLegacyMetadata::MULTI_FACE_DIRECTION_FLAG_EAST
|
||||
]),
|
||||
fn(MultiFacing $b) => $b->getFaces(),
|
||||
fn(MultiFacing $b, array $v) => $b->setFaces($v)
|
||||
fn(MultiAnyFacing $b) => $b->getFaces(),
|
||||
fn(MultiAnyFacing $b, array $v) => $b->setFaces($v)
|
||||
);
|
||||
|
||||
$this->floorSignLikeRotation = new IntProperty(StateNames::GROUND_SIGN_DIRECTION, 0, 15, fn(SignLikeRotation $b) => $b->getRotation(), fn(SignLikeRotation $b, int $v) => $b->setRotation($v));
|
||||
|
@ -32,7 +32,7 @@ use pocketmine\utils\AssumptionFailedError;
|
||||
* @phpstan-template TOption of int|\UnitEnum
|
||||
* @phpstan-implements Property<TBlock>
|
||||
*/
|
||||
class OptionSetFromIntProperty implements Property{
|
||||
class ValueSetFromIntProperty implements Property{
|
||||
|
||||
private int $maxValue = 0;
|
||||
|
@ -30,6 +30,7 @@ use pocketmine\data\bedrock\block\BlockStateStringValues;
|
||||
* Internally we use null for no connections, but accepting this in the mapping code would require a fair amount of
|
||||
* extra complexity for this one case. This shim allows us to use the regular systems for handling walls.
|
||||
* TODO: get rid of this in PM6 and make the internal enum have a NONE case
|
||||
* @internal
|
||||
*/
|
||||
enum WallConnectionTypeShim{
|
||||
case NONE;
|
||||
|
Loading…
x
Reference in New Issue
Block a user