mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-05-12 16:59:44 +00:00
EntityFactory: drop automatic provisioning of short class name as save ID
This commit is contained in:
parent
012acdd4cb
commit
1a3445f4b5
@ -55,7 +55,6 @@ use pocketmine\utils\SingletonTrait;
|
|||||||
use pocketmine\utils\Utils;
|
use pocketmine\utils\Utils;
|
||||||
use pocketmine\world\World;
|
use pocketmine\world\World;
|
||||||
use function count;
|
use function count;
|
||||||
use function in_array;
|
|
||||||
use function reset;
|
use function reset;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -190,26 +189,24 @@ final class EntityFactory{
|
|||||||
*
|
*
|
||||||
* @param string $className Class that extends Entity
|
* @param string $className Class that extends Entity
|
||||||
* @param \Closure $creationFunc
|
* @param \Closure $creationFunc
|
||||||
* @param string[] $saveNames An array of save names which this entity might be saved under. Defaults to the short name of the class itself if empty.
|
* @param string[] $saveNames An array of save names which this entity might be saved under.
|
||||||
* @phpstan-param class-string<Entity> $className
|
* @phpstan-param class-string<Entity> $className
|
||||||
|
* @phpstan-param list<string> $saveNames
|
||||||
* @phpstan-param \Closure(World $world, CompoundTag $nbt) : Entity $creationFunc
|
* @phpstan-param \Closure(World $world, CompoundTag $nbt) : Entity $creationFunc
|
||||||
*
|
*
|
||||||
* NOTE: The first save name in the $saveNames array will be used when saving the entity to disk. The reflection
|
* NOTE: The first save name in the $saveNames array will be used when saving the entity to disk.
|
||||||
* name of the class will be appended to the end and only used if no other save names are specified.
|
|
||||||
*
|
*
|
||||||
* @throws \InvalidArgumentException
|
* @throws \InvalidArgumentException
|
||||||
*/
|
*/
|
||||||
public function register(string $className, \Closure $creationFunc, array $saveNames, ?int $legacyMcpeSaveId = null) : void{
|
public function register(string $className, \Closure $creationFunc, array $saveNames, ?int $legacyMcpeSaveId = null) : void{
|
||||||
|
if(count($saveNames) === 0){
|
||||||
|
throw new \InvalidArgumentException("At least one save name must be provided");
|
||||||
|
}
|
||||||
Utils::testValidInstance($className, Entity::class);
|
Utils::testValidInstance($className, Entity::class);
|
||||||
|
|
||||||
self::validateCreationFunc($className, $creationFunc);
|
self::validateCreationFunc($className, $creationFunc);
|
||||||
$this->creationFuncs[$className] = $creationFunc;
|
$this->creationFuncs[$className] = $creationFunc;
|
||||||
|
|
||||||
$shortName = (new \ReflectionClass($className))->getShortName();
|
|
||||||
if(!in_array($shortName, $saveNames, true)){
|
|
||||||
$saveNames[] = $shortName;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach($saveNames as $name){
|
foreach($saveNames as $name){
|
||||||
$this->knownEntities[$name] = $className;
|
$this->knownEntities[$name] = $className;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user