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

Помогите Как убрать урон у одинаковый permission

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    f3azzy
    Делаю фракции, хочу сделать так, чтобы игроки из одной фракции не могли бить друг-друга. Для этого использую permission, который присваиваю каждой фракции, делаю проверку по этому permission, и всё работает, но в консоле идёт ошибка, конечно нормально, но неприятно.

    Код:
    Код:
    public void guardDamage(EntityDamageByEntityEvent event) {
            Entity target = event.getDamager();
            Entity damager = event.getEntity();
            
            Player p1 = (Player)target;
            Player p2 = (Player)damager;
            
            if(p1.hasPermission("teams.oneTeam")) {
                if(!p2.hasPermission("teams.twoTeam")) {
                    event.setCancelled(true);
                }
            }
            if(p1.hasPermission("teams.twoTeam")) {
                if(!p2.hasPermission("teams.oneTeam")) {
                    event.setCancelled(true);
                }
            }
        }
    Сама ошибка:
    Код:
    [15:06:00] [Server thread/ERROR]: Could not pass event EntityDamageByEntityEvent to ReleaseProject v2.0
    org.bukkit.event.EventException: null
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:298) ~[ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:499) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:484) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callEvent(CraftEventFactory.java:93) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:580) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:483) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:612) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityLiving.damageEntity0(EntityLiving.java:1336) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityHuman.damageEntity0(EntityHuman.java:846) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityLiving.damageEntity(EntityLiving.java:858) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityHuman.damageEntity(EntityHuman.java:759) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityPlayer.damageEntity(EntityPlayer.java:586) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityHuman.attack(EntityHuman.java:1005) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityPlayer.attack(EntityPlayer.java:1311) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1554) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.PacketPlayInUseEntity.a(SourceFile:69) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.PacketPlayInUseEntity.a(SourceFile:13) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_231]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_231]
        at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:696) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:371) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:651) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:555) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_231]
    Caused by: java.lang.IllegalArgumentException: Health must be between 0 and 20.0(-1.0)
        at org.bukkit.craftbukkit.v1_12_R1.entity.CraftLivingEntity.setHealth(CraftLivingEntity.java:97) ~[ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at sworlds.OkrvDerevKlin.damage(OkrvDerevKlin.java:33) ~[?:?]
        at sun.reflect.GeneratedMethodAccessor181.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_231]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:296) ~[ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        ... 26 more
    
    И ещё, делаю мечи, и надо сделать кастомный урон, всё нормально, но когда урон становится около 5xp, или меньше 5, то урон не идёт.

    Код:
    Код:
        public void damage(EntityDamageByEntityEvent e) {
            Player p = (Player)e.getDamager();
            Player target = (Player)e.getEntity();
            
            if(!p.getInventory().getItemInMainHand().getItemMeta().getDisplayName().equals("§fОкровавленный деревянный клинок")) {
                return;
            }
            
            if(!p.hasPermission("lvl.1")) {
                p.sendMessage("§cRelease§3Project §8»» §cВаш лвл недостаточно высок.");
                e.setCancelled(true);
                return;
            }
            
            e.setCancelled(true);
            
            if(target.getHealth() == 5) {
                target.setHealth(0);
            }
                
            
            
            target.setHealth(target.getHealth() - 5);
            target.setVelocity(target.getLocation().getDirection().setY(0.1).setX(-0.2).setZ(0));
        }
     
  2. Lemar98

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

    Баллы:
    76
    Хп - double
    Попробуй отнимать по 5.0
     
  3. TrashCode

    TrashCode Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    TrashCode
    Ошибка идет не от первого кода
    Жизни должны быть в диапазоне от 0 до 20, а у тебя -1
    Проверяй, если health <= 5, то ставь значение 0
     
  4. Автор темы
    Kloper

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

    Баллы:
    76
    Имя в Minecraft:
    f3azzy
    урон стал проходить, но ошибка в консоле осталась.
    Код:
    [19:29:21] [Server thread/ERROR]: Could not pass event EntityDamageByEntityEvent to ReleaseProject v2.0
    org.bukkit.event.EventException: null
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:298) ~[ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:499) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:484) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callEvent(CraftEventFactory.java:93) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:580) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:483) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:612) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityLiving.damageEntity0(EntityLiving.java:1336) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityHuman.damageEntity0(EntityHuman.java:846) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityLiving.damageEntity(EntityLiving.java:858) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityHuman.damageEntity(EntityHuman.java:759) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityPlayer.damageEntity(EntityPlayer.java:586) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityHuman.attack(EntityHuman.java:1005) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.EntityPlayer.attack(EntityPlayer.java:1311) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:1554) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.PacketPlayInUseEntity.a(SourceFile:69) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.PacketPlayInUseEntity.a(SourceFile:13) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_231]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_231]
        at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:696) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:371) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:651) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:555) [ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_231]
    Caused by: java.lang.IllegalArgumentException: Health must be between 0 and 20.0(-5.0)
        at org.bukkit.craftbukkit.v1_12_R1.entity.CraftLivingEntity.setHealth(CraftLivingEntity.java:97) ~[ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        at sworlds.OkrvDerevKlin.damage(OkrvDerevKlin.java:33) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_231]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_231]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_231]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:296) ~[ReleaseProject-1.12.2.jar:git-Bukkit-e60fc34]
        ... 26 more
    
     
  5. MurlikMurlik

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

    Баллы:
    96
     
  6. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Проверяй, если при уроне у игрока хп уходит в минус, то делай ему player. setHealth(player.getHealth()), в ином же случае отнимай свое кол-во хп
     
  7. TrashCode

    TrashCode Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    TrashCode
    if(target.getHealth() < 5)
    target.setHealth(0D);
    else
    target.setHealth(target.getHealth() - 5);
     

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