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

Помогите Где ошибка?

Тема в разделе "Разработка плагинов для новичков", создана пользователем Дан4ик_ёпт, 16 авг 2016.

Статус темы:
Закрыта.
  1. Автор темы
    Дан4ик_ёпт

    Дан4ик_ёпт Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    hugo1pro
    Писал плагин по видео на крафт и телепортацию, вроде бы всё правильно, но на сервере не работает. Когда убираю return; всё норм работает но можно юзать любой глаз для телепорта.
    Код:
    public class palka implements Listener {
       
        @EventHandler
        public void use(PlayerInteractEvent e){
            if(e.getAction() != Action.RIGHT_CLICK_AIR && e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
            if(e.getPlayer().getItemInHand().getType() != Material.EYE_OF_ENDER) return;
            Player p = e.getPlayer();
            ItemStack item = e.getPlayer().getItemInHand();
            if(!item.getItemMeta().hasDisplayName()) return;
            if(!item.getItemMeta().hasLore()) return;
            if(!item.getItemMeta().getDisplayName().equals(ChatColor.BLUE + "Палка-телепорталка")) return;
            if(!item.getItemMeta().getLore().equals("Я молюсь что получиться...")) return;
           
            e.setCancelled(true);
            removeItem(p);
            teleport(p);
        }
       
        private void removeItem(Player p){
            ItemStack item = p.getItemInHand();
            item.setAmount(item.getAmount() - 1);
            p.setItemInHand(item);
        }
       
       
        private void teleport(Player p){
            Location loc = p.getLocation();
            float yaw = loc.getYaw();
            float pitch = loc.getPitch();
            if(pitch < -40 || pitch > 40){
                vertical(p);
                return;
            }
            float y = toDegree(yaw);
            if(y > 315 || y < 45){
                south(p);
                return;
            }
            if(y > 45 && y < 135){
                west(p);
                return;
            }
            if(y > 135 && y < 225){
                north(p);
                return;
            }
            if(y > 225 && y < 315){
                east(p);
                return;
            }
           
        }
       
        private void vertical(Player p){
            Location loc = p.getLocation();
            float pitch = loc.getPitch();
            if(pitch < -40){
                loc.setY(loc.getY() + 4);
                if(block(loc)) p.teleport(loc);
                return;
            }
            if(pitch > 40){
                loc.setY(loc.getY() - 3);
                if(block(loc)) p.teleport(loc);
            }
        }
       
        private float toDegree(float y){
            if(y <= 360 && y >= 0) return y;
            while(!(y <= 360) || !(y >= 0)){
                if(y > 360){
                    y = y - 360;
                }
                if(y < 0){
                    y = y + 360;
                }
            }
            return y;
       
        }
       
        private boolean block(Location loc){
            int x = loc.getBlockX();
            int y = loc.getBlockY();
            int z = loc.getBlockZ();
            if(loc.getWorld().getBlockAt(x, y, z).getType() != Material.AIR) return false;
            if(loc.getWorld().getBlockAt(x, y + 1, z).getType() != Material.AIR) return false;
            return true;   
        }
       
        private void south(Player p){
            Location loc = p.getLocation();
            double z = loc.getZ();
            z = z + 2;
            loc.setZ(z);
            if(block(loc)) p.teleport(loc);
        }
       
        private void north(Player p){
            Location loc = p.getLocation();
            double z = loc.getZ();
            z = z - 2;
            loc.setZ(z);
            if(block(loc)) p.teleport(loc);
    
        }
       
        private void west(Player p){
            Location loc = p.getLocation();
            double x = loc.getX();
            x = x - 2;
            loc.setX(x);
            if(block(loc)) p.teleport(loc);
           
        }
       
        private void east(Player p){
            Location loc = p.getLocation();
            double x = loc.getX();
            x = x + 2;
            loc.setX(x);
            if(block(loc)) p.teleport(loc);
           
        }
       
       
       
    }   
    
     
  2. Хостинг MineCraft
    <
  3. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Про какой из 17 (семнадцати) return-ов идёт речь?[DOUBLEPOST=1471358578,1471358541][/DOUBLEPOST]
    Я, возможно, отстал, а какие ещё глаза уже появились в майне?[DOUBLEPOST=1471358642][/DOUBLEPOST]Ну а Lore и DisplayName-то есть у глаза?[DOUBLEPOST=1471358681][/DOUBLEPOST]Может стоит добавить несколько else player.sendMessage("Никак, потому что <тут какая-то причина>"), например "нету lore"?
     
  4. Автор темы
    Дан4ик_ёпт

    Дан4ик_ёпт Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    hugo1pro
    Код:
    private void Klaster(){
            ItemStack item = new ItemStack(Material.EYE_OF_ENDER);
            ItemMeta meta = item.getItemMeta();
            meta.setDisplayName(ChatColor.BLUE + "Палка-телепорталка");
            List<String> lore = new ArrayList<String>();
            lore.add("Я молюсь что получиться...");
            meta.setLore(lore);
            item.setItemMeta(meta);
           
            ShapedRecipe s = new ShapedRecipe(item);
            s.shape(new String[] {"ABA", " C ", " C "});
            s.setIngredient('A', Material.EYE_OF_ENDER);
            s.setIngredient('B', Material.ENDER_PEARL);
            s.setIngredient('C', Material.STICK);
            Bukkit.getServer().addRecipe(s);
        }
    
    }
    
     
  5. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Я никогда не работал с этой часть Bukkit, и могу ошибиться, но всё таки, имхо:

    upload_2016-8-17_3-31-37.png
    upload_2016-8-17_3-32-8.png
    ОК.

    upload_2016-8-17_3-32-47.png
     upload_2016-8-17_3-33-28.png
    НЕ ОК.

    Найдёшь причину? ))
     
  6. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    Если, не ошибаюсь, а могу, т.к. с телефона, то нужно .contains()[DOUBLEPOST=1471379733,1471379534][/DOUBLEPOST]Или же equals(lore)
     
  7. _MediaNik_

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

    Баллы:
    46
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    Ни то, и ни то, нужен цикл, кооторый проверяет каждый элемент листа.
     
  8. Larin

    Larin Старожил Пользователь

    Баллы:
    103
  9. _MediaNik_

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

    Баллы:
    46
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
  10. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Нужно проверить Lore с индексом 1 в InteractListener
     
  11. Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    Ты втираешь мне какую-то дичь...
     
  12. Автор темы
    Дан4ик_ёпт

    Дан4ик_ёпт Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    hugo1pro
    Всё, я решил
    Должно быть так:
    Код:
    if(!its.toItemStack().getItemMeta().getLore().get(0).equals(ChatColor.BLUE + "Палка-телепорталка"));
    было так:
    Код:
    if(!item.getItemMeta().getLore().equals("Я молюсь что получиться...")) return;
    [DOUBLEPOST=1471517553,1471517519][/DOUBLEPOST]Как тему закрыть?
     
  13. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Вверху есть пункт Опции темы, внутри ссылка Редактировать тему, жмакаешь, снимаешь галочку Открыто.
     
  14. _MediaNik_

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

    Баллы:
    46
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    Ну а как ты обьяснишь, что
    Код:
    List<String> l = new ArrayList<>();
    l.add("zero");
    l.add("zet");
    if(l.equals("zero")){
        player.setHealth(0);
    }else player.sendMessage("sss");
    
    У меня выводило в чат "sss"???
     
  15. Larin

    Larin Старожил Пользователь

    Баллы:
    103
    Потому что ты дно и сравниваешь List с String. Кончено же будет false.
     
  16. _MediaNik_

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

    Баллы:
    46
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    Ну, а я что говорил?
     
  17. Mr_RoboMan

    Mr_RoboMan Старожил Пользователь

    Баллы:
    123
    :FP:
     
  18. _MediaNik_

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

    Баллы:
    46
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    Ыыы, ну я думал он со String сравнивает:oops:
     
  19. Larin

    Larin Старожил Пользователь

    Баллы:
    103
    Поясняю для глупых:
    Пакет с яблоками != яблоко
    Сумка с книгами != книга
    Надеюсь понятно?
     
  20. _MediaNik_

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

    Баллы:
    46
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    Куда уж понятнее..
     
  21. Larin

    Larin Старожил Пользователь

    Баллы:
    103
    Я уверен, что до тебя всё равно не дошло.
     
Статус темы:
Закрыта.

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