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

В разработке ProjectileHitEvent снежок в игрока

Тема в разделе "Разработка плагинов для новичков", создана пользователем Thorgathis, 4 ноя 2021.

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

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

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    всем привет мне нужно сделать что бы когда игрок попадает в другого игрока снежком(например с зачарованием на удачу 10) то этого игрока кикает с сервера + что бы снежок не пропадал из инвентаря. И если игроку о больше не нужен он мог положить его в сундук или просто выкинуть кнопкой "Q"
     
    Последнее редактирование: 4 ноя 2021
  2. ZDCoder

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

    Баллы:
    76
    upload_2021-11-4_14-37-7.png Пробуй, я правда не тестил, и даже не знаю как оно будет работать. :D
     
  3. Автор темы
    Thorgathis

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

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    а можно пожалуйста код а не картинку:D:D:D:creeper:
     
  4. ZDCoder

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

    Баллы:
    76
    Переписывай давай, лентяй.
     
  5. Автор темы
    Thorgathis

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

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    PHP:
     @EventHandler
        
    public void onHitSnowBall(ProjectileHitEvent ePlayerKickEvent k) {
             
    Player p = (Playere.getEntity().getShooter();
             if(
    p.getInventory().getItemInMainHand().getType()== Material.SNOWBALL) {
                 
    e.getEntity().setMetadata("SNOWBALL", new FixedMetadataValue((Pluginthis1));
             }
             
    p.getInventory().forEach((ItemStack -> {
                 if(
    ItemStack.hasItemMeta()) {
                     if(
    ItemStack.getItemMeta().hasDisplayName()) {
                         if(
    ItemStack.getItemMeta().getDisplayName().equals("kick ball")) {
                             
    p.getInventory().addItem(ItemStack);
                         }
                     }
                 }
             }));
             if(
    e.getEntity().hasMetadata("SNOWBALL")) {
                 
    p.kickPlayer("В вас попали снежком");
             }
        }
    вот написал как ты

    Не работает
    Вот код ошибки

    PHP:
    [16:43:12] [Server thread/ERROR]: Could not pass event ProjectileHitEvent to ndplug v1.0
    org
    .bukkit.event.EventExceptionnull
            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 byjava.lang.ClassCastExceptionmain.hendler cannot be cast to org.bukkit.plugin.Plugin
            at main
    .hendler.onHitSnowBall(hendler.java:74) ~[?:?]
            
    at sun.reflect.GeneratedMethodAccessor25.invoke(Unknown Source) ~[?:?]
            
    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
     
    Последнее редактирование: 4 ноя 2021
  6. Gru2303

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

    Баллы:
    76
    Имя в Minecraft:
    Gru2303
    Код должен работать, это что-то у тебя не верно сделано
     
  7. Автор темы
    Thorgathis

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

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    Скажи пож что тут не так

    Код:
    package main;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.bukkit.*;
    import org.bukkit.block.Block;
    import org.bukkit.enchantments.Enchantment;
    import org.bukkit.entity.EntityType;
    import org.bukkit.entity.Player;
    import org.bukkit.entity.Projectile;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.event.entity.PlayerDeathEvent;
    import org.bukkit.event.entity.ProjectileHitEvent;
    import org.bukkit.event.player.PlayerBedEnterEvent;
    import org.bukkit.event.player.PlayerBedLeaveEvent;
    import org.bukkit.event.player.PlayerInteractEntityEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.player.PlayerKickEvent;
    import org.bukkit.event.player.PlayerQuitEvent;
    import org.*********ventory.Inventory;
    import org.*********ventory.ItemStack;
    import org.bukkit.metadata.FixedMetadataValue;
    import org.bukkit.plugin.Plugin;
    
    public class hendler implements Listener {
        Inventory nightday;
        List<String> lore = new ArrayList<>();
        List<Player> playersSleep = new ArrayList<>();
    
        @EventHandler
        public void onSleep(PlayerBedEnterEvent e){
            if(playersSleep.contains(e.getPlayer())){
                return;
            }
            playersSleep.add(e.getPlayer());
            if(playersSleep.size() >= 5){
                Bukkit.getServer().broadcastMessage("    ");
                Bukkit.getServer().broadcastMessage(ChatColor.GOLD + "┏ " + ChatColor.WHITE + "Наступала ночь.");
                Bukkit.getServer().broadcastMessage(ChatColor.GOLD + "┗ " + ChatColor.WHITE + "Но т.к. 5 человек легло спать, ночь пропускается.");
                Bukkit.getServer().broadcastMessage("    ");
                Bukkit.getWorld("World").setTime((long) 1000);
                playersSleep.clear();
            }
        }
        @EventHandler
        public void onLeaveSleep(PlayerBedLeaveEvent e){
            playersSleep.remove(e.getPlayer());
        }
        
        @EventHandler
        public void onClick(PlayerInteractEntityEvent e) {
            if (e.getRightClicked().getType() != EntityType.PLAYER) return;
            ItemStack item = e.getPlayer().getInventory().getItem(e.getHand());
            
            
            if (item != null && item.getType() == Material.STICK && item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) >= 10) {
                 Player p = (Player) e.getRightClicked();
                 p.sendTitle(ChatColor.RED + "Проверка на читы ", ChatColor.DARK_RED+"Пишите ваш дискордлибо бан, игрор, лив = бан.", 20, 80, 20);
            }
            if (item != null && item.getType() == Material.SNOWBALL && item.getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS) >= 10) {
                 Player p = (Player) e.getRightClicked();
                 p.kickPlayer("Кикнуты администратором");
    
    
            }
        }
        @EventHandler
        public void onHitSnowBall(ProjectileHitEvent e) {
    
             Player p = (Player) e.getEntity().getShooter();
             if(p.getInventory().getItemInMainHand().getType()== Material.SNOWBALL) {
                 e.getEntity().setMetadata("SNOWBALL", new FixedMetadataValue((Plugin) this, 1));
             }
             p.getInventory().forEach((ItemStack -> {
                 if(ItemStack.hasItemMeta()) {
                     if(ItemStack.getItemMeta().hasDisplayName()) {
                         if(ItemStack.getItemMeta().getDisplayName().equals("kick ball")) {
                             p.getInventory().addItem(ItemStack);
                         }
                     }
                 }
             }));
             if(e.getEntity().hasMetadata("SNOWBALL")) {
                 p.kickPlayer("В вас попали снежком");
             }
        }
        
    }
    
    
     
  8. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Код:
     e.getEntity().setMetadata("SNOWBALL", new FixedMetadataValue((Plugin) this, 1));
    вместо this ты должен передать инстанс твоего главного класса
     
  9. Автор темы
    Thorgathis

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

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    что такое инстанс??? сори я нач кодер

    @NoooobKa
     

    Вложения:

    • Screenshot_1.png
      Screenshot_1.png
      Размер файла:
      714 байт
      Просмотров:
      3
  10. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Обьект твоего класса который extends JavaPlugin
     
  11. Автор темы
    Thorgathis

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

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    PHP:
    package main;


    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.java.JavaPlugin;


    public class 
    main extends JavaPlugin
    {

      
        private static 
    main instance;

    //    public File cfg = new File(getDataFolder() + File.separator + "data.yml");
    //    public FileConfiguration data = YamlConfiguration.loadConfiguration(cfg);

        
    public static main getInstance(){
            return 
    instance;
        }
      
        @
    Override
        
    public void onEnable() {
            
    instance this;
          
                 
    Bukkit.getPluginManager().registerEvents(new hendler(), this);
                
    Bukkit.getServer().getScheduler().runTaskTimer(this, new Runnable() {
                
    int i 0;
         @
    Override
         
    public void run() {
             if(
    == 0){
                 
    Bukkit.getServer().broadcastMessage("    ");
                 
    Bukkit.getServer().broadcastMessage(ChatColor.GOLD "┏ " ChatColor.WHITE "Наш текстур пак:");
                 
    Bukkit.getServer().broadcastMessage(ChatColor.GOLD "┗ " ChatColor.RED "https://goo.su/8FUY" ChatColor.GRAY " (Кликабельно)");
                 
    Bukkit.getServer().broadcastMessage("    ");
                 
    i++;
             }else if(
    == 1){
                 
    Bukkit.getServer().broadcastMessage("    ");
                 
    Bukkit.getServer().broadcastMessage(ChatColor.GOLD "┏ " ChatColor.WHITE "У нас есть дискорд сервер:");
                 
    Bukkit.getServer().broadcastMessage(ChatColor.GOLD "┗ " ChatColor.RED "https://discord.gg/X6R4pguQ3wC" ChatColor.GRAY " (Кликабельно)");
                 
    Bukkit.getServer().broadcastMessage("    ");
                 
    i--;
             }
         }
                }, 
    0,1800);
        }
    //2
    }     
     
  12. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    [/QUOTE]
    Называй классы с большой буквы. Вместо (Plugin)this main.getInstance();
     
  13. Автор темы
    Thorgathis

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

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    Называй классы с большой буквы. Вместо (Plugin)this main.getInstance();[/QUOTE]
    сделал как ты сказал но появились проблеммы эсти ты в выживании и у тебя всего 1 снежок и ты его бросаешь в игрока новый у тебя не появляется + не выполняется код снизу


    PHP:
             if(e.getEntity().hasMetadata("SNOWBALL")) {
                 
    p.kickPlayer("В вас попали снежком");
             }
    хотелосьбы видеть проверку на энчант
    @NoooobKa
     
    Последнее редактирование: 4 ноя 2021
  14. Автор темы
    Thorgathis

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

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    Код:
     @EventHandler
        public void onHitSnowBall(ProjectileHitEvent e) {
    
             Player p = (Player) e.getEntity().getShooter();
             if(p.getInventory().getItemInMainHand().getType()== Material.SNOWBALL) {
                 e.getEntity().setMetadata("SNOWBALL", new FixedMetadataValue((Plugin) main.getInstance(), 1));
             }
             p.getInventory().forEach((ItemStack -> {
                 if(ItemStack.hasItemMeta()) {
                     if(ItemStack.getItemMeta().hasDisplayName()) {
                         if(ItemStack.getItemMeta().getDisplayName().equals("kick ball")) {
                             p.getInventory().addItem(ItemStack);
                         }
                     }
                 }
             }));
             if(e.getEntity().hasMetadata("SNOWBALL")) {
                 p.kickPlayer("Кикнуты администратором");
             }
        }
    Код:
    [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.NullPointerException
        at main.hendler.lambda$0(hendler.java:71) ~[?:?]
        at java.lang.Iterable.forEach(Unknown Source) ~[?:1.8.0_271]
        at main.hendler.onHitSnowBall(hendler.java:70) ~[?:?]
        at sun.reflect.GeneratedMethodAccessor19.invoke(Unknown Source) ~[?:?]
        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
     
  15. ZDCoder

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

    Баллы:
    76
    добавь проверку в самом начале цикла forEach if(itemstack != null) {}
     
  16. Автор темы
    Thorgathis

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

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    скинь пж пример а то куда не поставлю ошибка
    @ZDCoder
     
  17. ZDCoder

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

    Баллы:
    76
    upload_2021-11-4_19-23-13.png Учи джаву..
     
  18. Автор темы
    Thorgathis

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

    Баллы:
    66
    Имя в Minecraft:
    Thorgathis
    ругается на эту строку

    if(p.getInventory().getItemInMainHand().getType()== Material.SNOWBALL) {

    org.bukkit.event.EventException: null


    Caused by: java.lang.NullPointerException
    at main.hendler.onHitSnowBall(hendler.java:67) ~[?:?]
    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]
     
  19. ZDCoder

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

    Баллы:
    76
    а, секунду.
     
  20. ZDCoder

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

    Баллы:
    76

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