added some nullable and void typehints to Block API

This commit is contained in:
Dylan K. Taylor 2017-10-11 18:32:53 +01:00
parent 8f0ee84277
commit d8b1757ebc
36 changed files with 53 additions and 48 deletions

View File

@ -24,6 +24,7 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\item\Item;
use pocketmine\math\AxisAlignedBB;
/**
@ -66,7 +67,7 @@ class Air extends Transparent{
return false;
}
public function getBoundingBox(){
public function getBoundingBox() : ?AxisAlignedBB{
return null;
}

View File

@ -54,7 +54,7 @@ class Bed extends Transparent{
return "Bed Block";
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
return new AxisAlignedBB(
$this->x,
$this->y,
@ -125,7 +125,7 @@ class Bed extends Transparent{
/**
* @return Bed|null
*/
public function getOtherHalf(){
public function getOtherHalf() : ?Bed{
$other = $this->getSide(self::getOtherHalfSide($this->meta, $this->isHeadPart()));
if($other instanceof Bed and $other->getId() === $this->getId() and $other->isHeadPart() !== $this->isHeadPart() and (($other->getDamage() & 0x03) === ($this->getDamage() & 0x03))){
return $other;

View File

@ -116,7 +116,7 @@ class Block extends Position implements BlockIds, Metadatable{
/**
* @param int $meta
*/
final public function setDamage(int $meta){
final public function setDamage(int $meta) : void{
if($meta < 0 or $meta > 0xf){
throw new \InvalidArgumentException("Block damage values must be 0-15, not $meta");
}
@ -391,7 +391,7 @@ class Block extends Position implements BlockIds, Metadatable{
}
public function addVelocityToEntity(Entity $entity, Vector3 $vector){
public function addVelocityToEntity(Entity $entity, Vector3 $vector) : void{
}
@ -400,7 +400,7 @@ class Block extends Position implements BlockIds, Metadatable{
*
* @param Position $v
*/
final public function position(Position $v){
final public function position(Position $v) : void{
$this->x = (int) $v->x;
$this->y = (int) $v->y;
$this->z = (int) $v->z;
@ -497,14 +497,14 @@ class Block extends Position implements BlockIds, Metadatable{
/**
* @param Entity $entity
*/
public function onEntityCollide(Entity $entity){
public function onEntityCollide(Entity $entity) : void{
}
/**
* @return AxisAlignedBB|null
*/
public function getBoundingBox(){
public function getBoundingBox() : ?AxisAlignedBB{
if($this->boundingBox === null){
$this->boundingBox = $this->recalculateBoundingBox();
}
@ -514,7 +514,7 @@ class Block extends Position implements BlockIds, Metadatable{
/**
* @return AxisAlignedBB|null
*/
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
return new AxisAlignedBB(
$this->x,
$this->y,
@ -531,7 +531,7 @@ class Block extends Position implements BlockIds, Metadatable{
*
* @return MovingObjectPosition|null
*/
public function calculateIntercept(Vector3 $pos1, Vector3 $pos2){
public function calculateIntercept(Vector3 $pos1, Vector3 $pos2) : ?MovingObjectPosition{
$bb = $this->getBoundingBox();
if($bb === null){
return null;

View File

@ -56,7 +56,7 @@ class BlockFactory{
*
* @param bool $force
*/
public static function init(bool $force = false){
public static function init(bool $force = false) : void{
if(self::$list === null or $force){
self::$list = new \SplFixedArray(256);
self::$fullList = new \SplFixedArray(4096);
@ -341,7 +341,7 @@ class BlockFactory{
* @throws \RuntimeException if something attempted to override an already-registered block without specifying the
* $override parameter.
*/
public static function registerBlock(Block $block, bool $override = false){
public static function registerBlock(Block $block, bool $override = false) : void{
$id = $block->getId();
if(!$override and self::isRegistered($id)){

View File

@ -54,7 +54,7 @@ class Cactus extends Transparent{
return "Cactus";
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
return new AxisAlignedBB(
$this->x + 0.0625,
@ -70,7 +70,7 @@ class Cactus extends Transparent{
return true;
}
public function onEntityCollide(Entity $entity){
public function onEntityCollide(Entity $entity) : void{
$ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_CONTACT, 1);
$entity->attack($ev);
}

View File

@ -48,7 +48,7 @@ class Cake extends Transparent implements FoodSource{
return "Cake Block";
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
$f = $this->getDamage() * 0.125; //1 slice width

View File

@ -50,7 +50,7 @@ class Carpet extends Flowable{
return ColorBlockMetaHelper::getColorFromMeta($this->meta) . " Carpet";
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
return new AxisAlignedBB(
$this->x,

View File

@ -52,7 +52,7 @@ class Chest extends Transparent{
return Tool::TYPE_AXE;
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
return new AxisAlignedBB(
$this->x + 0.0625,
$this->y,

View File

@ -57,7 +57,7 @@ class CobblestoneWall extends Transparent{
return "Cobblestone Wall";
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
$north = $this->canConnect($this->getSide(Vector3::SIDE_NORTH));
$south = $this->canConnect($this->getSide(Vector3::SIDE_SOUTH));

View File

@ -51,7 +51,7 @@ class Cobweb extends Flowable{
return Tool::TYPE_SWORD;
}
public function onEntityCollide(Entity $entity){
public function onEntityCollide(Entity $entity) : void{
$entity->resetFallDistance();
}

View File

@ -66,7 +66,7 @@ class ConcretePowder extends Fallable{
/**
* @return null|Block
*/
private function checkAdjacentWater(){
private function checkAdjacentWater() : ?Block{
for($i = 1; $i < 6; ++$i){ //Do not check underneath
if($this->getSide($i) instanceof Water){
return Block::get(Block::CONCRETE, $this->meta);

View File

@ -54,7 +54,7 @@ abstract class Door extends Transparent{
return $down & 0x07 | ($isUp ? 8 : 0) | ($isRight ? 0x10 : 0);
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
$f = 0.1875;
$damage = $this->getFullDamage();

View File

@ -54,7 +54,7 @@ class EndPortalFrame extends Solid{
return false;
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
return new AxisAlignedBB(
$this->x,

View File

@ -61,7 +61,7 @@ class EndRod extends Flowable{
return 14;
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
$m = $this->meta & ~0x01;
$width = 0.375;

View File

@ -53,7 +53,7 @@ class Farmland extends Transparent{
return true;
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
return new AxisAlignedBB(
$this->x,
$this->y,

View File

@ -62,7 +62,7 @@ class Fence extends Transparent{
return $names[$this->meta & 0x07] ?? "Unknown";
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
$north = $this->canConnect($this->getSide(Vector3::SIDE_NORTH));
$south = $this->canConnect($this->getSide(Vector3::SIDE_SOUTH));

View File

@ -41,7 +41,7 @@ class FenceGate extends Transparent{
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
if(($this->getDamage() & 0x04) > 0){
return null;

View File

@ -65,7 +65,7 @@ class Fire extends Flowable{
return true;
}
public function onEntityCollide(Entity $entity){
public function onEntityCollide(Entity $entity) : void{
$ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_FIRE, 1);
$entity->attack($ev);

View File

@ -23,6 +23,8 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\math\AxisAlignedBB;
abstract class Flowable extends Transparent{
public function canBeFlowedInto() : bool{
@ -41,7 +43,7 @@ abstract class Flowable extends Transparent{
return false;
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
return null;
}
}

View File

@ -47,7 +47,7 @@ class FlowerPot extends Flowable{
return "Flower Pot";
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
return new AxisAlignedBB(
$this->x + 0.3125,
$this->y,

View File

@ -44,7 +44,7 @@ class GrassPath extends Transparent{
return Tool::TYPE_SHOVEL;
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
return new AxisAlignedBB(
$this->x,
$this->y,

View File

@ -59,12 +59,12 @@ class Ladder extends Transparent{
return true;
}
public function onEntityCollide(Entity $entity){
public function onEntityCollide(Entity $entity) : void{
$entity->resetFallDistance();
$entity->onGround = true;
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
$f = 0.1875;
$minX = $minZ = 0;

View File

@ -48,7 +48,7 @@ class Lava extends Liquid{
return "Lava";
}
public function onEntityCollide(Entity $entity){
public function onEntityCollide(Entity $entity) : void{
$entity->fallDistance *= 0.5;
$ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_LAVA, 4);

View File

@ -26,6 +26,7 @@ namespace pocketmine\block;
use pocketmine\entity\Entity;
use pocketmine\item\Item;
use pocketmine\level\Level;
use pocketmine\math\AxisAlignedBB;
use pocketmine\math\Vector3;
abstract class Liquid extends Transparent{
@ -171,7 +172,7 @@ abstract class Liquid extends Transparent{
return $vector->normalize();
}
public function addVelocityToEntity(Entity $entity, Vector3 $vector){
public function addVelocityToEntity(Entity $entity, Vector3 $vector) : void{
$flow = $this->getFlowVector();
$vector->x += $flow->x;
$vector->y += $flow->y;
@ -444,7 +445,7 @@ abstract class Liquid extends Transparent{
}
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
return null;
}

View File

@ -57,7 +57,7 @@ class Magma extends Solid{
return true;
}
public function onEntityCollide(Entity $entity){
public function onEntityCollide(Entity $entity) : void{
if(!$entity->isSneaking()){
$ev = new EntityDamageByBlockEvent($this, $entity, EntityDamageEvent::CAUSE_FIRE, 1);
$entity->attack($ev);

View File

@ -48,7 +48,7 @@ class NetherBrickFence extends Transparent{
return "Nether Brick Fence";
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
$width = 0.375;
return new AxisAlignedBB(

View File

@ -26,6 +26,7 @@ namespace pocketmine\block;
use pocketmine\item\Item;
use pocketmine\item\Tool;
use pocketmine\level\Level;
use pocketmine\math\AxisAlignedBB;
use pocketmine\math\Vector3;
use pocketmine\Player;
use pocketmine\tile\Sign as TileSign;
@ -53,7 +54,7 @@ class SignPost extends Transparent{
return "Sign Post";
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
return null;
}

View File

@ -47,7 +47,7 @@ class Skull extends Flowable{
return "Mob Head";
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
//TODO: different bounds depending on attached face (meta)
return new AxisAlignedBB(
$this->x + 0.25,

View File

@ -46,7 +46,7 @@ class SoulSand extends Solid{
return Tool::TYPE_SHOVEL;
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
return new AxisAlignedBB(
$this->x,

View File

@ -107,7 +107,7 @@ abstract class Stair extends Transparent{
}
*/
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
if(($this->getDamage() & 0x04) > 0){
return new AxisAlignedBB(

View File

@ -32,7 +32,7 @@ abstract class Thin extends Transparent{
return false;
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
$f = 0.4375;
$f1 = 0.5625;

View File

@ -53,7 +53,7 @@ class Trapdoor extends Transparent{
return 3;
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
$damage = $this->getDamage();

View File

@ -71,11 +71,11 @@ class Vine extends Transparent{
return true;
}
public function onEntityCollide(Entity $entity){
public function onEntityCollide(Entity $entity) : void{
$entity->resetFallDistance();
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
$f1 = 1;
$f2 = 1;

View File

@ -44,7 +44,7 @@ class Water extends Liquid{
return 2;
}
public function onEntityCollide(Entity $entity){
public function onEntityCollide(Entity $entity) : void{
$entity->resetFallDistance();
if($entity->fireTicks > 0){
$entity->extinguish();

View File

@ -45,7 +45,7 @@ class WaterLily extends Flowable{
return 0.6;
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
return new AxisAlignedBB(
$this->x + 0.0625,
$this->y,

View File

@ -55,7 +55,7 @@ class WoodenSlab extends Transparent{
return (($this->meta & 0x08) === 0x08 ? "Upper " : "") . ($names[$this->meta & 0x07] ?? "") . " Wooden Slab";
}
protected function recalculateBoundingBox(){
protected function recalculateBoundingBox() : ?AxisAlignedBB{
if(($this->meta & 0x08) > 0){
return new AxisAlignedBB(