Помогите Скрыть игрока при движении

Error202

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
Error202
Здравствуйте! Мне нужно замаскировать игрока под блок при его движении

Я пишу так:
Код:
public static void hidePlayer(Player p) {
        EntityFallingBlock fb = new EntityFallingBlock(EntityTypes.FALLING_BLOCK, ((CraftPlayer) p).getHandle().world);

        fb.setLocation(p.getLocation().getX(), p.getLocation().getY(), p.getLocation().getZ(), p.getLocation().getPitch(), p.getLocation().getYaw());

        try {

            Field f = Entity.class.getDeclaredField("id");
            f.setAccessible(true);
            f.setInt(fb, ((CraftPlayer) p).getHandle().getId());

        } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {

            e.printStackTrace();

        }

        for (Player o : Bukkit.getOnlinePlayers()) {
            if (p == o) {
                continue;
            }
            ((CraftPlayer) o).getHandle().playerConnection
                    .sendPacket(new PacketPlayOutEntityDestroy(((CraftPlayer) p).getHandle().getId()));

            BlockPosition bp = new BlockPosition(p.getLocation().getX(), p.getLocation().getY(), p.getLocation().getZ());

            ((CraftPlayer) o).getHandle().playerConnection.sendPacket(new PacketPlayOutSpawnEntity(fb, EntityTypes.FALLING_BLOCK, 2, bp));
        }

    }

У меня два вопроса:
1. В конце функции указано 2 - id бока... Сейчас, вроде как, устранили ID у блоков? Как можно изменить этот параметр, чтобы установить нужный блок?

2. Как мне сказали, чтобы добавить плавности, нужно из последний части функции сделать асинхронную задачу... Вот тут я не совсем понял, как это можно сделать?
 
Назад
Верх