mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-11 04:17:48 +00:00
EntityFactory: Avoid code duplication on validation of creation functions (#5294)
This commit is contained in:
parent
e4fc523251
commit
83a136a176
@ -175,20 +175,6 @@ final class EntityFactory{
|
|||||||
}, ['Human']);
|
}, ['Human']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @phpstan-param \Closure(World, CompoundTag) : Entity $creationFunc
|
|
||||||
*/
|
|
||||||
private static function validateCreationFunc(\Closure $creationFunc) : void{
|
|
||||||
$sig = new CallbackType(
|
|
||||||
new ReturnType(Entity::class),
|
|
||||||
new ParameterType("world", World::class),
|
|
||||||
new ParameterType("nbt", CompoundTag::class)
|
|
||||||
);
|
|
||||||
if(!$sig->isSatisfiedBy($creationFunc)){
|
|
||||||
throw new \TypeError("Declaration of callable `" . CallbackType::createFromCallable($creationFunc) . "` must be compatible with `" . $sig . "`");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers an entity type into the index.
|
* Registers an entity type into the index.
|
||||||
*
|
*
|
||||||
@ -207,7 +193,11 @@ final class EntityFactory{
|
|||||||
throw new \InvalidArgumentException("At least one save name must be provided");
|
throw new \InvalidArgumentException("At least one save name must be provided");
|
||||||
}
|
}
|
||||||
Utils::testValidInstance($className, Entity::class);
|
Utils::testValidInstance($className, Entity::class);
|
||||||
self::validateCreationFunc($creationFunc);
|
Utils::validateCallableSignature(new CallbackType(
|
||||||
|
new ReturnType(Entity::class),
|
||||||
|
new ParameterType("world", World::class),
|
||||||
|
new ParameterType("nbt", CompoundTag::class)
|
||||||
|
), $creationFunc);
|
||||||
|
|
||||||
foreach($saveNames as $name){
|
foreach($saveNames as $name){
|
||||||
$this->creationFuncs[$name] = $creationFunc;
|
$this->creationFuncs[$name] = $creationFunc;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user