Помогите правильно поставить пакет с призывом молнии для PM5

Вот код: <?php

namespace MWS;

use pocketmine\player\Player;
use pocketmine\Server;
use pocketmine\plugin\PluginBase;
use pocketmine\event\Listener;

use pocketmine\entity\Effect;
use pocketmine\entity\EffectInstance;

use pocketmine\network\mcpe\protocol\AddActorPacket;
use pocketmine\network\mcpe\protocol\PlaySoundPacket;

use pocketmine\event\player\PlayerInteractEvent;
use pocketmine\block\Block;

use pocketmine\item\ItemFactory;
use pocketmine\item\ItemIds;
use pocketmine\item\enchantment\Enchantment;

use pocketmine\math\Vector3;

use pocketmine\world\particle\BlockBreakParticle;
use pocketmine\world\World;
use pocketmine\world\Position;

use MWS\sound\Thunder;

class Loader extends PluginBase implements Listener {

private $money = [];
private $item = [];
private $effect = [];

public function onEnable(): void {
$this->getServer()->getPluginManager()->registerEvents($this, $this);

$this->eco = $this->getServer()->getPluginManager()->getPlugin("EconomyAPI");  

$this->getLogger()->info("Plugin enabled");

}

public function onInteract(PlayerInteractEvent $event) {
$player = $event->getPlayer();
$name = $player->getName();

$block  = $event->getBlock();
$pos    = $block->getPosition();

if ($pos->getX() == -8422 && $pos->getY() == 70 && $pos->getZ() == -6616) {
  // Бонус монет
  $this->giveBonus($player, $name);
} 
elseif ($pos->getX() == -8409 && $pos->getY() == 69 && $pos->getZ() == -6629) {
  // Рандом вещи
  $this->giveRandomItem($player, $name);
}
elseif ($pos->getX() == -8407 && $pos->getY() == 69 && $pos->getZ() == -6630) {
  // ПвП кейс  
  $this->openPvPCase($player, $name);
}
elseif ($pos->getX() == -8405 && $pos->getY() == 69 && $pos->getZ() == -6628) {
  // Эффекты
  $this->giveEffects($player, $name); 
}

}

private function giveBonus(Player $player, string $name) {
if (empty($this->money[$name]) || $this->money[$name] <= time()) {
$this->money[$name] = time() + 3600;

  $amount = mt_rand(1000, 5000);

  $this->spawnThunder($player);

  $this->eco->addMoney($player, $amount);

  $player->sendTitle("§bБОНУС", "§6Ты успешно получил §bбонус");
  $player->sendMessage("§a+$amount §fмонет!");
} 
else {
  $player->sendMessage("§cТы уже получал бонус!");
}

}

private function giveRandomItem(Player $player, string $name) {
if (empty($this->item[$name]) || $this->item[$name] <= time()) {
$this->item[$name] = time() + 3600;

  $items = [
    ItemTypeIds::WHEAT     => mt_rand(0, 1),
    ItemTypeIds::IRON_CHESTPLATE => mt_rand(0, 1), 
    ItemTypeIds::IRON_LEGGINGS  => mt_rand(0, 1),
    ItemTypeIds::IRON_BOOTS     => mt_rand(0, 1),
    ItemTypeIds::IRON_SWORD     => mt_rand(0, 1),
    ItemTypeIds::GOLDEN_APPLE   => mt_rand(0, 16)
  ];

  $this->spawnThunder($player);

  foreach ($items as $item => $amount) {
  $player->getInventory()->addItem(ItemFactory::get($item, $amount)); 
}

  $player->sendTitle("§bБОНУС", "§6Ты успешно получил §bнабор");
}
else {
  $player->sendMessage("§cТы уже получал бонус!"); 
}

}

private function openPvPCase(Player $player, string $name) {
if ($this->eco->reduceMoney($player, 1500)) {
$lightning = AddActorPacket::create(Entity::nextRuntimeId(), 1, “minecraft:lightning_bolt”, $player->getPosition()->asVector3(), null, $player->getLocation()->getYaw(), $player->getLocation()->getPitch(), 0.0, 0.0, [], [], []);
$blockParticle = new BlockBreakParticle($player->getWorld()->getBlock($player->getPosition()->floor()->down()));
$player->getWorld()->addParticle($player->getPosition(), $blockParticle, $player->getWorld()->getPlayers());
$thunderSound = PlaySoundPacket::create(“ambient.weather.thunder”, $player->getX(), $player->getY(), $player->getZ(), 1, 1);
Server::getInstance()->broadcastPackets($player->getWorld()->getPlayers(), [$lightning, $thunderSound]);

  $item1 = ItemFactory::get(mt_rand(298, 317), 0, 1);
  $item2 = ItemFactory::get(mt_rand(298, 317), 0, 1);

  $this->spawnThunder($player);

  $item1->addEnchantment(Enchantment::getEnchantment(0)->setLevel(mt_rand(2,4)));  
  $item1->addEnchantment(Enchantment::getEnchantment(0)->setLevel(mt_rand(1,4)));

  $player->getInventory()->addItem($item1);
  $player->getInventory()->addItem($item2);
  
  $player->sendMessage("§aУспешно открыл PvP-Case!");
}
else {
  $player->sendMessage("§cНедостаточно денег!");
}

}

private function giveEffects(Player $player, string $name) {
if (empty($this->effect[$name]) || $this->effect[$name] <= time()) {
$this->effect[$name] = time() + 3600;

  $this->spawnThunder($player);

  $player->addEffect(new EffectInstance(Effect::SPEED, 20 * 90, 0));
  $player->addEffect(new EffectInstance(Effect::STRENGTH, 20 * 120, 0));
  $player->addEffect(new EffectInstance(Effect::RESISTANCE, 20 * 120, 0));
  
  $player->sendTitle("§bБОНУС", "§6Получил эффекты");
}
else {
  $player->sendMessage("§cТы уже получал эффекты!");
}

}

private function spawnThunder(Player $player) {
$pos = $player->getPosition();
$world = $player->getWorld();

/** @var \pocketmine\Player $player */
$packet = new \pocketmine\network\protocol\AddActorPacket();

$pos = $player->getPosition();
$light2 = AddActorPacket::create(Entity::nextRuntimeId(), 1, “minecraft:lightning_bolt”, $player->getPosition()->asVector3(), null, $player->getLocation()->getYaw(), $player->getLocation()->getPitch(), 0.0, 0.0, [], [], []);
$block = $player->getWorld()->getBlock($player->getPosition()->floor()->down());
$particle = new BlockBreakParticle($block);
$player->getWorld()->addParticle($pos, $particle, $player->getWorld()->getPlayers());
$sound2 = PlaySoundPacket::create(“ambient.weather.thunder”, $pos->getX(), $pos->getY(), $pos->getZ(), 1, 1);
Server::getInstance()->broadcastPackets($player->getWorld()->getPlayers(), [$light2, $sound2]);
Thunder::sendSound($player, ‘ambient.weather.thunder’, true);
}

}

Научись пожалуйста вставлять нормально код

Я это даже читать не буду, давай ты кинешь файл

Перед как писать поставь три `

Пример

CallMeCases_CODE.zip (3,3 КБ)