92 if($sender instanceof
Player){
93 $senderPos = $sender->getPosition();
94 $world = $senderPos->getWorld();
96 $this->getRelativeDouble($senderPos->getX(), $sender, $args[1]),
97 $this->getRelativeDouble($senderPos->getY(), $sender, $args[2], World::Y_MIN, World::Y_MAX),
98 $this->getRelativeDouble($senderPos->getZ(), $sender, $args[3])
101 $world = $sender->getServer()->getWorldManager()->getDefaultWorld();
102 $pos =
new Vector3((
float) $args[1], (
float) $args[2], (
float) $args[3]);
105 $name = strtolower($args[0]);
107 $xd = (float) $args[4];
108 $yd = (float) $args[5];
109 $zd = (float) $args[6];
111 $count = isset($args[7]) ? max(1, (
int) $args[7]) : 1;
113 $data = $args[8] ??
null;
115 $particle = $this->getParticle($name, $data);
117 if($particle ===
null){
118 $sender->sendMessage(KnownTranslationFactory::commands_particle_notFound($name)->prefix(TextFormat::RED));
122 $sender->sendMessage(KnownTranslationFactory::commands_particle_success($name, (
string) $count));
124 $random =
new Random((
int) (microtime(
true) * 1000) + mt_rand());
126 for($i = 0; $i < $count; ++$i){
127 $world->addParticle($pos->add(
128 $random->nextSignedFloat() * $xd,
129 $random->nextSignedFloat() * $yd,
130 $random->nextSignedFloat() * $zd
217 if($data !==
null && ($block = StringToItemParser::getInstance()->parse($data)?->getBlock()) !==
null && $block->getTypeId() !== BlockTypeIds::AIR){