Я уже 2 дня ищю способ исправить это.
[19:34:48] [LiteCore/CRITICAL]: "Невозможно обработать событие 'pocketmine\event\player\PlayerInteractEvent' в 'Runes v0.1': Undefined array key "Forter\Runes\rune\RuneDamage" в Forter\Runes\Events"
[19:34:48] [LiteCore/CRITICAL]: ErrorException: "Undefined array key "Forter\Runes\rune\RuneDamage"" (EXCEPTION) in "pmsrc/src/pocketmine/entity/Entity" at line 972
[19:34:48] [LiteCore/CRITICAL]: #0 pmsrc/src/pocketmine/entity/Entity(972): pocketmine\utils\Utils::errorExceptionHandler(integer 2, string[50] Undefined array key "Forter\Runes\rune\RuneDamage", string[45] /root/server/src/pocketmine/entity/Entity.php, integer 972)
//PlayerInteractEvent
case Runes::$RUNE_DAMAGE:
$nbt = Entity::createBaseNBT(
$player->add(0, $player->getEyeHeight(), 0),
new Vector3(-sin($player->yaw / 180 * M_PI) * cos($player->pitch / 180 * M_PI),
-sin($player->pitch / 180 * M_PI),
cos($player->yaw / 180 * M_PI) * cos($player->pitch / 180 * M_PI)),
$player->yaw,
$player->pitch
);
$entity = new RuneDamage($player->getLevel(), $nbt, $player);
$entity->setMotion($entity->getMotion()->multiply(0.5));
$entity->saveNBT();
break;
//ProjectileHitEvent
if($entity instanceof RuneDamage){
$explosionSize = 3;
$minX = (int) floor($entity->x - $explosionSize - 1);
$maxX = (int) ceil($entity->x + $explosionSize + 1);
$minY = (int) floor($entity->y - $explosionSize - 1);
$maxY = (int) ceil($entity->y + $explosionSize + 1);
$minZ = (int) floor($entity->z - $explosionSize - 1);
$maxZ = (int) ceil($entity->z + $explosionSize + 1);
foreach($entity->getLevel()->getNearbyEntities(new AxisAlignedBB($minX, $minY, $minZ, $maxX, $maxY, $maxZ), $entity) as $player){
$distance = $player->distance($entity) / $explosionSize;
if($distance <= 1){
for($i = 0; $i < 10; $i++){
$pos = new Vector3($player->getX() + $entity->randomFloat(), $player->getY() + $entity->randomFloat(0.5, 2.2), $player->getZ() + $entity->randomFloat());
$player->getLevel()->addParticle(new GenericParticle($pos, 8));
$player->setHealth($player->getHealth() - (0.3 * $lvl->getPower($entity)));
}
}
}
}
<?php
namespace Forter\Runes\rune;
use pocketmine\{ nbt\tag\CompoundTag, network\mcpe\protocol\AddEntityPacket, Player, level\Level, entity\Projectile, entity\Entity, level\particle\GenericParticle, Forter\Runes\Events };
class RuneDamage extends Projectile{
public $width = 0.25;
public $length = 0.25;
public $height = 0.25;
protected $gravity = 0;
protected $drag = 0;
public function __construct(Level $level, CompoundTag $nbt, Entity $shootingEntity = null){
parent::__construct($level, $nbt, $shootingEntity);
}
public function onUpdate($currentTick){
if ($this->closed) {
return false;
}
$hasUpdate = parent::onUpdate($currentTick);
$this->getLevel()->addParticle(new GenericParticle($this, 8));
$this->despawnFromAll();
if ($this->age > 1200 or $this->isCollided) {
$this->kill();
$hasUpdate = true;
}
return $hasUpdate;
}
public function randomFloat($min = -0.8, $max = 0.8) {
return $min + mt_rand() / mt_getrandmax() * ($max - $min);
}
}
//Entity.php
/**
* Returns the short save name
*
* @return string
*/
public function getSaveId(){//Entity #972
return self::$shortNames[static::class];