mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-06-13 06:55:29 +00:00
PlayerRespawnAnchorUseEvent is also added with options SET_SPAWN and EXPLODE, which allows plugins to customise the outcome of using the anchor in PM, which currently doesn't support dimensions. The event is also cancellable.
123 lines
3.1 KiB
PHP
123 lines
3.1 KiB
PHP
<?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\event\entity;
|
|
|
|
use pocketmine\block\Block;
|
|
use pocketmine\entity\Entity;
|
|
use pocketmine\event\Cancellable;
|
|
use pocketmine\event\CancellableTrait;
|
|
use pocketmine\utils\Utils;
|
|
use pocketmine\world\Position;
|
|
|
|
/**
|
|
* Called when an entity explodes, after the explosion's impact has been calculated.
|
|
* No changes have been made to the world at this stage.
|
|
*
|
|
* @see EntityPreExplodeEvent
|
|
*
|
|
* @phpstan-extends EntityEvent<Entity>
|
|
*/
|
|
class EntityExplodeEvent extends EntityEvent implements Cancellable{
|
|
use CancellableTrait;
|
|
|
|
/**
|
|
* @param Block[] $blocks
|
|
* @param float $yield 0-100
|
|
* @param Block[] $ignitions
|
|
*/
|
|
public function __construct(
|
|
Entity $entity,
|
|
protected Position $position,
|
|
protected array $blocks,
|
|
protected float $yield,
|
|
private array $ignitions
|
|
){
|
|
$this->entity = $entity;
|
|
if($yield < 0.0 || $yield > 100.0){
|
|
throw new \InvalidArgumentException("Yield must be in range 0.0 - 100.0");
|
|
}
|
|
}
|
|
|
|
public function getPosition() : Position{
|
|
return $this->position;
|
|
}
|
|
|
|
/**
|
|
* Returns a list of blocks destroyed by the explosion.
|
|
*
|
|
* @return Block[]
|
|
*/
|
|
public function getBlockList() : array{
|
|
return $this->blocks;
|
|
}
|
|
|
|
/**
|
|
* Sets the blocks destroyed by the explosion.
|
|
*
|
|
* @param Block[] $blocks
|
|
*/
|
|
public function setBlockList(array $blocks) : void{
|
|
Utils::validateArrayValueType($blocks, function(Block $_) : void{});
|
|
$this->blocks = $blocks;
|
|
}
|
|
|
|
/**
|
|
* Returns the percentage chance of drops from each block destroyed by the explosion.
|
|
* @return float 0-100
|
|
*/
|
|
public function getYield() : float{
|
|
return $this->yield;
|
|
}
|
|
|
|
/**
|
|
* Sets the percentage chance of drops from each block destroyed by the explosion.
|
|
* @param float $yield 0-100
|
|
*/
|
|
public function setYield(float $yield) : void{
|
|
if($yield < 0.0 || $yield > 100.0){
|
|
throw new \InvalidArgumentException("Yield must be in range 0.0 - 100.0");
|
|
}
|
|
$this->yield = $yield;
|
|
}
|
|
|
|
/**
|
|
* Set the list of blocks that will be replaced by fire.
|
|
*
|
|
* @param Block[] $ignitions
|
|
*/
|
|
public function setIgnitions(array $ignitions) : void{
|
|
Utils::validateArrayValueType($ignitions, fn(Block $block) => null);
|
|
$this->ignitions = $ignitions;
|
|
}
|
|
|
|
/**
|
|
* Returns a list of affected blocks that will be replaced by fire.
|
|
*
|
|
* @return Block[]
|
|
*/
|
|
public function getIgnitions() : array{
|
|
return $this->ignitions;
|
|
}
|
|
}
|