Помогите Создание персонального WorldBorder (Граница)

  • Автор темы Автор темы SaMEC
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

SaMEC

Старожил
Пользователь
Баллы
173
Имя в Minecraft
Nick
Есть нужна создать в определенный момент границу мира персонально для одного игрока.
Шарился по гуглу, отыскал несколько методов и даже отдельное АПИ. Все вроде бы хорошо, да и придраться не к чему, но вот только не срабатывает. Доков не особо много, чтобы понять в чем может быть ошибка.
Код:
#Один
    public void sendWorldBorderPacket(Player player, int warningBlocks) {
        EntityPlayer nmsPlayer = ((CraftPlayer) player).getHandle();
        WorldBorder playerWorldBorder = nmsPlayer.world.getWorldBorder();
        PacketPlayOutWorldBorder worldBorder = new PacketPlayOutWorldBorder(playerWorldBorder, PacketPlayOutWorldBorder.EnumWorldBorderAction.SET_WARNING_BLOCKS);
        try {
            Field field = worldBorder.getClass().getDeclaredField("i");
            field.setAccessible(true);
            field.setInt(worldBorder, warningBlocks);
            field.setAccessible(!field.isAccessible());
        } catch (Exception e) {
            e.printStackTrace();
        }
        nmsPlayer.playerConnection.sendPacket(worldBorder);
    }
Код:
#Два
    public void sendWorldBorder(Player player, Location center, int size){
        WorldBorder border = new WorldBorder();
        border.setCenter(center.getX(), center.getZ());
        border.setSize(size);
        PacketPlayOutWorldBorder packet = new PacketPlayOutWorldBorder(border, EnumWorldBorderAction.INITIALIZE);
        send(player, packet);
    }
  
    public void send(Player p, Packet packet){
        ((CraftPlayer)p).getHandle().playerConnection.sendPacket(packet);
    }

UPD/ Разобрался. Если кому интересно, то нужно отправлять минимум 3 пакета с настройками борда, а не один.
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.
Назад
Верх