1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Error202, 26 апр 2020.

  1. Автор темы
    Error202

    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. Как мне сказали, чтобы добавить плавности, нужно из последний части функции сделать асинхронную задачу... Вот тут я не совсем понял, как это можно сделать?
     

Поделиться этой страницей