93 if($sender instanceof
Player){
94 $senderPos = $sender->getPosition();
95 $world = $senderPos->getWorld();
97 $this->getRelativeDouble($senderPos->getX(), $sender, $args[1]),
98 $this->getRelativeDouble($senderPos->getY(), $sender, $args[2], World::Y_MIN, World::Y_MAX),
99 $this->getRelativeDouble($senderPos->getZ(), $sender, $args[3])
102 $world = $sender->getServer()->getWorldManager()->getDefaultWorld();
103 $pos =
new Vector3((
float) $args[1], (
float) $args[2], (
float) $args[3]);
106 $name = strtolower($args[0]);
108 $xd = (float) $args[4];
109 $yd = (float) $args[5];
110 $zd = (float) $args[6];
112 $count = isset($args[7]) ? max(1, (
int) $args[7]) : 1;
114 $data = $args[8] ??
null;
116 $particle = $this->getParticle($name, $data);
118 if($particle ===
null){
119 $sender->sendMessage(KnownTranslationFactory::commands_particle_notFound($name)->prefix(TextFormat::RED));
123 $sender->sendMessage(KnownTranslationFactory::commands_particle_success($name, (
string) $count));
125 $random =
new Random((
int) (microtime(
true) * 1000) + mt_rand());
127 for($i = 0; $i < $count; ++$i){
128 $world->addParticle($pos->add(
129 $random->nextSignedFloat() * $xd,
130 $random->nextSignedFloat() * $yd,
131 $random->nextSignedFloat() * $zd
218 if($data !==
null && ($block = StringToItemParser::getInstance()->parse($data)?->getBlock()) !==
null && $block->getTypeId() !== BlockTypeIds::AIR){