I tried convert java wings code to php. Somehow its worked but only half of the wings works Here is my converted code: Task: PHP: <?phpdeclare(strict_types=1);namespace MrDinoDuck\Wings;use pocketmine\Player;use pocketmine\level\particle\FlameParticle;use pocketmine\scheduler\Task;use pocketmine\math\Vector3;use MrDinoDuck\Wings\Point3D;class RenderWingsTask extends Task{ public function __construct(Main $plugin){ $this->plugin = $plugin; } public function onRun(int $tick) : void{ $fill1 = [ new Point3D(1.2, 0.6, -0.5), new Point3D(1.4, 0.7, -0.5), new Point3D(1.1, 0.2, -0.5), new Point3D(1.3, 0.3, -0.5), new Point3D(1.0, -0.2, -0.5), new Point3D(1.2, -0.1, -0.5), ]; $outline1 = [ new Point3D(0, 0, -0.5), new Point3D(0.1, 0.01, -0.5), new Point3D(0.3, 0.03, -0.5), new Point3D(0.4, 0.04, -0.5), new Point3D(0.6, 0.1, -0.5), new Point3D(0.61, 0.2, -0.5), new Point3D(0.62, 0.4, -0.5), new Point3D(0.63, 0.6, -0.5), new Point3D(0.635, 0.7, -0.5), new Point3D(0.7, 0.7, -0.5), new Point3D(0.9, 0.75, -0.5), new Point3D(1.2, 0.8, -0.5), new Point3D(1.4, 0.9, -0.5), new Point3D(1.6, 1, -0.5), new Point3D(1.8, 1.1, -0.5), new Point3D(1.85, 0.9, -0.5), new Point3D(1.9, 0.7, -0.5), new Point3D(1.85, 0.5, -0.5), new Point3D(1.8, 0.3, -0.5), new Point3D(1.75, 0.1, -0.5), new Point3D(1.7, -0.1, -0.5), new Point3D(1.65, -0.3, -0.5), new Point3D(1.55, -0.5, -0.5), new Point3D(1.45, -0.7, -0.5), new Point3D(1.30, -0.75, -0.5), new Point3D(1.15, -0.8, -0.5), new Point3D(1.0, -0.85, -0.5), new Point3D(0.8, -0.87, -0.5), new Point3D(0.6, -0.7, -0.5), new Point3D(0.5, -0.5, -0.5), new Point3D(0.4, -0.3, -0.5), new Point3D(0.3, -0.3, -0.5), new Point3D(0.15, -0.3, -0.5), new Point3D(0, -0.3, -0.5), new Point3D(0.9, 0.55, -0.5), new Point3D(1.2, 0.6, -0.5), new Point3D(1.4, 0.7, -0.5), new Point3D(1.6, 0.9, -0.5), new Point3D(0.9, 0.35, -0.5), new Point3D(1.2, 0.4, -0.5), new Point3D(1.4, 0.5, -0.5), new Point3D(1.6, 0.7, -0.5), new Point3D(0.9, 0.15, -0.5), new Point3D(1.2, 0.2, -0.5), new Point3D(1.4, 0.3, -0.5), new Point3D(1.6, 0.5, -0.5), new Point3D(0.9, -0.05, -0.5), new Point3D(1.2, 0, -0.5), new Point3D(1.4, 0.1, -0.5), new Point3D(1.6, 0.3, -0.5), new Point3D(0.7, -0.25, -0.5), new Point3D(1.0, -0.2, -0.5), new Point3D(1.2, -0.1, -0.5), new Point3D(1.4, 0.1, -0.5), new Point3D(0.7, -0.45, -0.5), new Point3D(1.0, -0.4, -0.5), new Point3D(1.2, -0.3, -0.5), new Point3D(1.4, -0.1, -0.5), new Point3D(1.30, -0.55, -0.5), new Point3D(1.15, -0.6, -0.5), new Point3D(1.0, -0.65, -0.5) ]; foreach($this->plugin->getServer()->getOnlinePlayers() as $player){ $world = $player->getLevel(); $x = (float) $player->getX(); $y = (float) $player->getY() - 0.2; $z = (float) $player->getZ(); $rot = - $player->getYaw() * 0.017453292; $rotated = null; foreach($outline1 as $outline2){ $rotatedx = $x + $outline2->rotated($rot, "x"); $rotatedy = $y + $outline2->rotated($rot, "y"); $rotatedz = $z + $outline2->rotated($rot, "z"); $world->addParticle(new FlameParticle(new Vector3($rotatedx, $rotatedy + 2, $rotatedz))); $rotatedz *= -1; $rotatedx = $x + $outline2->rotated($rot + 3.1415, "x"); $rotatedy = $x + $outline2->rotated($rot + 3.1415, "y"); $rotatedz = $x + $outline2->rotated($rot + 3.1415, "z"); $rotatedz *= -1; $world->addParticle(new FlameParticle(new Vector3($rotatedx, $rotatedy + 2, $rotatedz))); foreach($fill1 as $fill2){ $rotatedx = $x + $fill2->rotated($rot, "x"); $rotatedy = $x + $fill2->rotated($rot, "y"); $rotatedz = $x + $fill2->rotated($rot, "z"); $world->addParticle(new FlameParticle(new Vector3($rotatedx, $rotatedy + 2, $rotatedz))); $rotatedz *= -1; $rotatedx = $x + $fill2->rotated($rot + 3.1415, "x"); $rotatedy = $y + $fill2->rotated($rot + 3.1415, "y"); $rotatedz = $z + $fill2->rotated($rot + 3.1415, "z"); $rotatedz *= -1; $world->addParticle(new FlameParticle(new Vector3($rotatedx, $rotatedy + 2, $rotatedz))); } } } }} Point3D PHP: <?phpdeclare(strict_types=1);namespace MrDinoDuck\Wings;class Point3D{ public $x; public $y; public $z; public function __construct(float $x, float $y, float $z){ $this->x = $x; $this->y = $y; $this->z = $z; } public function rotated(float $rot, $typecoords){ $cos = (double) cos($rot); $sin = (double) sin($rot); switch($typecoords){ case "x": return $this->x * $cos + $this->z * $sin; case "y": return $this->y; case "z": return $this->x * - $sin + $this->z * $cos; }}} unconverted code: https://www.spigotmc.org/threads/angel-particle-position.141301/ I tried to paste the full code but the thread doesnt allow that Code from darkkir3 The result: https://imgur,com/a/k4AJ1dY