PHP: [15:09:59] [Server thread/CRITICAL]: RuntimeException: "Cannot access dynamic field "Pos": Dynamic field access on pocketmine\nbt\tag\CompoundTag is no longer supported" (EXCEPTION) in "vendor/pocketmine/nbt/src/tag/NoDynamicFieldsTrait" Code: PHP: public function makeSlapper(Player $player, int $type, string $name){ $type = self::ENTITY_LIST[$type]; $nbt = new CompoundTag(); $nbt->Pos = new ListTag("Pos", [ new DoubleTag("", $player->getX()), new DoubleTag("", $player->getY()), new DoubleTag("", $player->getZ()) ]); $nbt->Motion = new ListTag("Motion", [ new DoubleTag("", 0), new DoubleTag("", 0), new DoubleTag("", 0) ]); $nbt->Rotation = new ListTag("Rotation", [ new FloatTag("", $player->getYaw()), new FloatTag("", $player->getPitch()) ]); $nbt->Health = new ShortTag("Health", 1); $nbt->Commands = new CompoundTag("Commands", []); $nbt->MenuName = new StringTag("MenuName", ""); $nbt->SlapperVersion = new StringTag("SlapperVersion", $this->getServer()->getPluginManager()->getPlugin("Slapper")->getDescription()->getVersion()); if($type === "Human") { $player->saveNBT(); $nbt->Inventory = clone $player->namedtag->Inventory; $nbt->Skin = new CompoundTag("Skin", ["Data" => new StringTag("Data", $player->getSkin()->getSkinData()), "Name" => new StringTag("Name", $player->getSkin()->getSkinId())]); } $entity = Entity::createEntity("Slapper{$type}", $player->getLevel(), $nbt); $entity->setNameTag($name); $entity->setNameTagVisible(true); $entity->setNameTagAlwaysVisible(true); $this->getServer()->getPluginManager()->callEvent(new SlapperCreationEvent($entity, "Slapper{$type}", $player, SlapperCreationEvent::CAUSE_COMMAND)); $entity->spawnToAll(); $player->sendMessage("Created {$type} entity"); }
To create basic nbts you can use the static function Entity::createBaseNBT($pos, $motion, $yaw, $pitch) Exemple: PHP: $nbt = Entity::createBaseNBT($player, null, $player->getYaw(), $player->getPitch());