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

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

Discussion in 'Разработка плагинов для новичков' started by Grazy, Jun 28, 2017.

Thread Status:
Not open for further replies.
  1. Автор темы
    Grazy

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

    Trophy Points:
    76
    Имя в Minecraft:
    Prost
    Есть следующий код:
    Code:
        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 Администратор

    Trophy Points:
    173
    Skype:
    alexandr0116
    instanceof LivingEntity
     
  4. Автор темы
    Grazy

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

    Trophy Points:
    76
    Имя в Minecraft:
    Prost
    Метод я вызываю вот так
    LivingEntity entityTarget = (LivingEntity)getTargetEntity(Player);[DOUBLEPOST=1498685184,1498682627][/DOUBLEPOST]И instanceof Item не помогает(.[DOUBLEPOST=1498685312][/DOUBLEPOST]
    Code:
    [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
    
     
    Last edited: Jun 29, 2017
  5. DonDays

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

    Trophy Points:
    96
    Имя в Minecraft:
    DonDays
    Code:
    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 Активный участник Пользователь

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

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

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

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

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

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

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

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

Share This Page