Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Предметы на земле

Тема в разделе "Разработка плагинов для новичков", создана пользователем Grazy, 28 июн 2017.

Статус темы:
Закрыта.
  1. Автор темы
    Grazy

    Grazy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Prost
    Есть следующий код:
    Код:
        public static <T extends Entity> T getTarget(final Entity entity, final Iterable<T> entities) {
            if (entity == null)
                return null;
            T target = null;
            final double threshold = 1;
            for (final T other : entities) {
                final Vector n = other.getLocation().toVector().subtract(entity.getLocation().toVector());
                if (entity.getLocation().getDirection().normalize().crossProduct(n).lengthSquared() < threshold && n.normalize().dot(entity.getLocation().getDirection().normalize()) >= 0) {
                    if (target == null || target.getLocation().distanceSquared(entity.getLocation()) > other.getLocation().distanceSquared(entity.getLocation()))target = other;
                }
            }
            return target;
        }
    
    Проблема заключаться в том что предметы на земле тоже являются энтити.
    Как мне исключить из этого кода проверку предмета(ентити) который валяется на земле.
    Если сможете киньте пример кода проверки на наличии предмета на земле, буду благодарен.
     
  2. Хостинг MineCraft
    <
  3. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    instanceof LivingEntity
     
  4. Автор темы
    Grazy

    Grazy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Prost
    Метод я вызываю вот так
    LivingEntity entityTarget = (LivingEntity)getTargetEntity(Player);[DOUBLEPOST=1498685184,1498682627][/DOUBLEPOST]И instanceof Item не помогает(.[DOUBLEPOST=1498685312][/DOUBLEPOST]
    Код:
    [00:03:56] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to Sposobnostu v1.5
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:305) ~[craftbukkit.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [craftbukkit.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [craftbukkit.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:226) [craftbukkit.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PlayerInteractManager.interact(PlayerInteractManager.java:463) [craftbukkit.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java:724) [craftbukkit.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:50) [craftbukkit.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:80) [craftbukkit.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PacketHandleTask.run(SourceFile:13) [craftbukkit.jar:git-Spigot-c3c767f-33d5de3]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_131]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_131]
        at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:696) [craftbukkit.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:316) [craftbukkit.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:634) [craftbukkit.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:537) [craftbukkit.jar:git-Spigot-c3c767f-33d5de3]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]
    Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_8_R1.entity.CraftItem cannot be cast to org.bukkit.entity.LivingEntity
        at me.SpiceMeme.spells.Lightning.use(Lightning.java:51) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:301) ~[craftbukkit.jar:git-Spigot-c3c767f-33d5de3]
        ... 16 more
    
     
    Последнее редактирование: 29 июн 2017
  5. DonDays

    DonDays Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Код:
    public static <T extends Entity> T getTarget(final Entity entity, final Iterable<T> entities) {
            if (entity == null)
                return null;
            T target = null;
            final double threshold = 1;
            for (final T other : entities) {
                if(!(other instanceof LivingEntity)) continue;
                final Vector n = other.getLocation().toVector().subtract(entity.getLocation().toVector());
                if (entity.getLocation().getDirection().normalize().crossProduct(n).lengthSquared() < threshold && n.normalize().dot(entity.getLocation().getDirection().normalize()) >= 0) {
                    if (target == null || target.getLocation().distanceSquared(entity.getLocation()) > other.getLocation().distanceSquared(entity.getLocation()))target = other;
                }
            }
            return target;
        }
    
    Кстати, видно же, что код сп*здил
     
  6. Автор темы
    Grazy

    Grazy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Prost
    У меня по геометрии 12)
    Я тебе больше скажу мне гугл в этом помог) https://bukkit.org/threads/get-entity-player-is-looking.300661/#post-2727103
     
  7. HunterGaming

    HunterGaming Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    HunterGaming13
    Смысл твоего сообщения???
     
  8. DonDays

    DonDays Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    [DOUBLEPOST=1498743713,1498743541][/DOUBLEPOST]
    Этот код изначально сворован у кого-то другого
     
  9. Автор темы
    Grazy

    Grazy Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Prost
    Ой, забыл за тему. Вот решение моей проблемы:
    try {

    } catch (Exception e) {
    // TODO: handle exception
    }[DOUBLEPOST=1498746643,1498746319][/DOUBLEPOST]
    Из их диалога я понял, что чел сам его написал, выложил его как решение проблемы челу. А это значит что он не против что бы его код брали. И причем тут то что я спиз*ил его, если бы все были такие правильные не научились бы кодить.
     
Статус темы:
Закрыта.

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