Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

В разработке ItemStack выдать предмет с зачарованиями

Метки:
Теги Теги
java 8 spigot 1.16.5 плагины
Статус
Закрыто для дальнейших ответов.
Мне все равно каким способом пользоватся, повторяю я описал способ который будет понятнее TC
И в котором он совершит в разы больше ошибок, молодец. В чем проблема дать ему нормальное решение, а не учить писать велосипед?
 
у меня сейчас такой код

Код:
  @EventHandler
    public void onHitSnowBall(ProjectileHitEvent e) {
        if(e.getEntity().getShooter() instanceof Player) {
            Player p = (Player) e.getEntity().getShooter();
            Player t = (Player) e.getHitEntity();
            ItemStack item = p.getPlayer().getInventory();
            if(item == null) return;
            item.addEnchantment(Enchantment.LOOT_BONUS_BLOCKS, 10);
            item.setType(Material.SNOWBALL);
            if(item != null && item.getType() == Material.SNOWBALL && item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) >= 10) {
                if(e.getHitEntity() instanceof Player) {
                    if (p.getGameMode() == GameMode.SURVIVAL) {
                        p.getInventory().addItem(item);
                        p.updateInventory();

                    }
                    if (p.getGameMode() == GameMode.CREATIVE) {
                       
                    }

                    p.sendMessage(ChatColor.GOLD + "Ты кикнул " + ChatColor.AQUA + t.getName());
                    Bukkit.getScheduler().runTask(main.getInstance(), () -> t.kickPlayer(ChatColor.RED + "Кикнуты администратором"));
                }
            }
        }
    }
Ты проверяешь предмет 1 раза на null можно убрать 2рую проверку, а в 1 добавить проверку на воздух
 
Ты проверяешь предмет 1 раза на null можно убрать 2рую проверку, а в 1 добавить проверку на воздух
Он снежок выкидывает, и у него так или иначе в руке null. Пусть создаст предмет снежка изначально, который будет хранится в памяти, а потом уже его выдаёт/устанавливает.
 
Он снежок выкидывает, и у него так или иначе в руке null. Пусть создаст предмет снежка изначально, который будет хранится в памяти, а потом уже его выдаёт/устанавливает.
Мы говорим про стак снега или же выдачу нового снежка.
 
Он снежок выкидывает, и у него так или иначе в руке null. Пусть создаст предмет снежка изначально, который будет хранится в памяти, а потом уже его выдаёт/устанавливает.
Да не будет у него в руке null.
https://hub.spigotmc.org/javadocs/b...tory/PlayerInventory.html#getItemInMainHand()
 
Показывай ошибку и код.
код сверху
Код:
[11:53:50] [Server thread/ERROR]: Could not pass event ProjectileHitEvent to ndplug v1.0
org.bukkit.event.EventException: null
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:319) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:589) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:576) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.callProjectileHitEvent(CraftEventFactory.java:1195) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.IProjectile.a(IProjectile.java:109) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.EntitySnowball.a(SourceFile:63) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.EntityProjectile.tick(SourceFile:67) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.WorldServer.entityJoinedWorld(WorldServer.java:663) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.World.a(World.java:718) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.WorldServer.doTick(WorldServer.java:398) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.MinecraftServer.b(MinecraftServer.java:1105) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.DedicatedServer.b(DedicatedServer.java:355) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1008) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:847) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_271]
Caused by: java.lang.IllegalArgumentException: Enchantment level is either too low or too high (given 10, bounds are 1 to 3)
    at org.*********ventory.ItemStack.addEnchantment(ItemStack.java:392) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at main.hendler.onHitSnowBall(hendler.java:76) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_271]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_271]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_271]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_271]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:315) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    ... 16 more

ошибка в этой строке ItemStack item = p.getPlayer().getInventory()...;
 
код сверху
Код:
[11:53:50] [Server thread/ERROR]: Could not pass event ProjectileHitEvent to ndplug v1.0
org.bukkit.event.EventException: null
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:319) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:589) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:576) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.callProjectileHitEvent(CraftEventFactory.java:1195) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.IProjectile.a(IProjectile.java:109) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.EntitySnowball.a(SourceFile:63) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.EntityProjectile.tick(SourceFile:67) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.WorldServer.entityJoinedWorld(WorldServer.java:663) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.World.a(World.java:718) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.WorldServer.doTick(WorldServer.java:398) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.MinecraftServer.b(MinecraftServer.java:1105) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.DedicatedServer.b(DedicatedServer.java:355) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1008) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:847) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_271]
Caused by: java.lang.IllegalArgumentException: Enchantment level is either too low or too high (given 10, bounds are 1 to 3)
    at org.*********ventory.ItemStack.addEnchantment(ItemStack.java:392) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    at main.hendler.onHitSnowBall(hendler.java:76) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_271]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_271]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_271]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_271]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:315) ~[spigot.jar:2991-Spigot-018b9a0-f3f3094]
    ... 16 more

ошибка в этой строке ItemStack item = p.getPlayer().getInventory()...;
Ты привысил максимально допустимое зачарование, способ избежать этого есть, но Я его не помню, тебе поможет LOVEC3327 я уверен)
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх