Вопрос нужно кое что

Если код на пе версию что бы текст появлялся в кординатах нужных, а через несколько секунд пропал? Можно сказать как на майпексе работают косметик кейсы вот такой код нужен.

aFloatingText

нет не про этот

я щас не о голограммках

ну что бы был текст, и через 5 секунд исчез

там плагине тики добавь

Спавни текст, запиши его в переменную, создай таск и удаляй

Советую не использовать FloatingTextParticle. Лучше спавнить своего ентити с размером 0 и давать ему неймтег

типо так что-ли или нет?

public function spawn_text(Player $player, string $text): void
{
    $location = $player->getLocation();
    $nbt = CompoundTag::create()
        ->setTag("Pos", new ListTag([
            new DoubleTag($location->getX()),
            new DoubleTag($location->getY()),
            new DoubleTag($location->getZ())
        ]))
        ->setTag("Motion", new ListTag([
            new DoubleTag(0),
            new DoubleTag(0),
            new DoubleTag(0)
        ]))
        ->setTag("Rotation", new ListTag([
            new FloatTag($location->getYaw()),
            new FloatTag($location->getPitch())
        ]));

        $entity = new Entity($location, $nbt);
        $entity->setScale(1);

        $entity->setImmobile(true);
        $entity->setInvisible(true);
        $entity->setNameTag($text);
        $entity->setNameTagVisible(true)
        $entity->setNameTagAlwaysVisible(true);
}

только вот нулевой размер нельзя задать, да и следуя логике, чем меньше размер entity, тем меньше его name tag. его просто нужно сделать невидимым, а name tag сделать видимым всегда

но я так подумал, лучше будет создавать Human `а и делать все точно так же

upd:

public function spawn_human(Player $player, string $name_tag): void
{
    $location = $player->getLocation();
    $player_skin_data = $player->getSkin();

    $nbt = CompoundTag::create()
        ->setTag("Pos", new ListTag([
            new DoubleTag($location->getX()),
            new DoubleTag($location->getY()),
            new DoubleTag($location->getZ())
        ]))
        ->setTag("Motion", new ListTag([
            new DoubleTag(0),
            new DoubleTag(0),
            new DoubleTag(0)
        ]))
        ->setTag("Rotation", new ListTag([
            new FloatTag($location->getYaw()),
            new FloatTag($location->getPitch())
        ]));

    $human = new Human($location, new Skin($player->getName(), $player_skin_data->getSkinData(), $player_skin_data->getCapeData(), $player_skin_data->getGeometryName(), $player_skin_data->getGeometryData()), $nbt);
    $human->setScale(1);

    $human->setInvisible(true);
    $human->setNameTag($name_tag);
    $human->setNametagVisible(true);
    $human->setNameTagAlwaysVisible(true);
    $human->setImmobile(true);
    $human->spawnToAll();
}

Нет

AddPlayerPacket

$pk = new AddPlayerPacket();
		$pk->uuid = UUID::fromRandom();
		$pk->username = $this->title;
		$pk->eid = mt_rand(-1, PHP_INT_MAX);
		$pk->x = $pos->x;
		$pk->y = $pos->y - 0.50;
		$pk->z = $pos->z;
		$pk->item = Item::get(Item::AIR);
		$flags = (
		  (1 << Entity::DATA_FLAG_CAN_SHOW_NAMETAG) |
			(1 << Entity::DATA_FLAG_ALWAYS_SHOW_NAMETAG) |
			(1 << Entity::DATA_FLAG_IMMOBILE)
			);
			$pk->metadata = [
				Entity::DATA_FLAGS => [Entity::DATA_TYPE_LONG, $flags],
				Entity::DATA_NAMETAG => [Entity::DATA_TYPE_STRING, $this->title . ($this->text !== "" ? "\n" . $this->text : "")],
				Entity::DATA_SCALE => [Entity::DATA_TYPE_FLOAT, 0],
			];
			$player->dataPacket($pk);
  }

а смысл? проще же как у меня или работать не будет? (не могу проверить сейчас)

Я пробовал AddEntityPacket, но у меня был баг

Ну прост зачем лишний ентити с нбт

ну не думаю, что он будет нагружать как-то сервер, либо это совсем камушек

Да, но мне по душе пользоваться пакетами

в таком случае их нужно синхронизировать для всех зашедших в мир игроков, именно это и делают системы партиклов и ентити