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

Помогите Магия, потребление опыта и пчелы.

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

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

    StrayDog31 Новичок Пользователь

    Баллы:
    6
    Приветствую! Взялся я недавно за написание (первого, потому и столько постов) плагина, добавляющего некоторые "магические" предметы. Чтобы жизнь медом не казалась, они потребляют опыт при использовании. Также плагин добавляет пчелиную броню, частично снижающую расход опыта. Нагрудник снижает на 1, а шлем, нагрудник и ботинки на 2. Ниже код одного из предметов:

    public void use5(PlayerInteractEvent e) {
    Player player = e.getPlayer();
    ItemStack SkullBook = e.getPlayer().getInventory().getItemInMainHand();
    ItemStack HoneyArmorC = e.getPlayer().getInventory().getChestplate();
    ItemStack HoneyArmorB = e.getPlayer().getInventory().getBoots();
    ItemStack HoneyArmorH = e.getPlayer().getInventory().getHelmet();
    if(e.getPlayer().getInventory().getItemInMainHand().getType() != Material.PRISMARINE_SHARD) return;
    if(e.getAction() != Action.RIGHT_CLICK_AIR && e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
    if(!SkullBook.getItemMeta().hasDisplayName()) return;
    if(!SkullBook.getItemMeta().getDisplayName().equals(ChatColor.LIGHT_PURPLE + "Осколок Края")) return;
    if(e.getPlayer().getExp() == 0) return;
    if(e.getAction() != Action.RIGHT_CLICK_BLOCK) e.setCancelled(true);

    player.launchProjectile(ShulkerBullet.class, player.getEyeLocation().getDirection());
    player.playSound(player.getLocation(), Sound.ENTITY_SHULKER_SHOOT, 8, 1);
    player.spawnParticle(Particle.CLOUD, player.getLocation().add(0.5D, 0.5D, 0.5D), 25 , 1.2F, 1.2F, 1.2F);
    if(e.getPlayer().getInventory().getChestplate().getType() == Material.AIR) player.giveExp(-5);
    if(e.getPlayer().getInventory().getChestplate().getType() == Material.GOLDEN_CHESTPLATE && HoneyArmorC.getItemMeta().hasDisplayName() && HoneyArmorC.getItemMeta().getDisplayName().equals(ChatColor.YELLOW + "Пчелиный нагрудник")) player.giveExp(-2);
    if(e.getPlayer().getInventory().getChestplate().getType() == Material.GOLDEN_CHESTPLATE && HoneyArmorC.getItemMeta().hasDisplayName() && HoneyArmorC.getItemMeta().getDisplayName().equals(ChatColor.YELLOW + "Пчелиный нагрудник") && e.getPlayer().getInventory().getBoots().getType() == Material.GOLDEN_BOOTS && HoneyArmorB.getItemMeta().hasDisplayName() && HoneyArmorB.getItemMeta().getDisplayName().equals(ChatColor.YELLOW + "Пчелиные ботнки") && e.getPlayer().getInventory().getHelmet().getType() == Material.GOLDEN_HELMET && HoneyArmorH.getItemMeta().hasDisplayName() && HoneyArmorH.getItemMeta().getDisplayName().equals(ChatColor.YELLOW + "Пчелиный шлем") && e.getPlayer().getExp() >= 0) player.giveExp(-3);

    }

    Снижение еще +- работает, но без брони опыт вообще не потребляется. Я пытался реализовать через if else, но это ни к чему не привело. Подскажите, пожалуйста, в чем может быть проблема.
     
  2. PifPafich

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

    Баллы:
    66
    Имя в Minecraft:
    steklopaKet32_46
    у тебя опыт отнимается при условии брони
     
  3. Автор темы
    StrayDog31

    StrayDog31 Новичок Пользователь

    Баллы:
    6
    "if(e.getPlayer().getInventory().getChestplate().getType() == Material.AIR) player.giveExp(-5);"
     
  4. Автор темы
    StrayDog31

    StrayDog31 Новичок Пользователь

    Баллы:
    6
    И при таком условии тоже ничего не работало:
    if(e.getPlayer().getInventory().getChestplate().getType() != Material.GOLDEN_CHESTPLATE && !HoneyArmorC.getItemMeta().hasDisplayName() && !HoneyArmorC.getItemMeta().getDisplayName().equals(ChatColor.YELLOW + "Пчелиный нагрудник")) player.giveExp(-5);
     
  5. __Void__

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

    Баллы:
    36
    Ну здесь с Material.AIR ты накосячил. Когда нагрудника нет, он равен null, а не воздуху.

    А тут сам посмотри:

    если (нагрудник != золотой нагрудник
    и у нагрудника нет имени
    и имя нагрудника == "Пчелиный нагрудник") то снять меньше опыта;

    Теперь подумай, что не так)
     
  6. Автор темы
    StrayDog31

    StrayDog31 Новичок Пользователь

    Баллы:
    6
    На счет воздуха не знал, приму к сведенью. А вот с именем вроде бы как раз правильно прописал "и имя нагрудника == "Пчелиный нагрудник")" !HoneyArmorC.getItemMeta().getDisplayName().equals(ChatColor.YELLOW + "Пчелиный нагрудник"))
     
  7. Автор темы
    StrayDog31

    StrayDog31 Новичок Пользователь

    Баллы:
    6
    При таких условиях предмет вообще не работает, хотя вроде нигде не накосячил:

    @EventHandler

    public void use(PlayerInteractEvent e) {
    Player player = e.getPlayer();
    ItemStack Firestick = e.getPlayer().getInventory().getItemInMainHand();
    ItemStack HoneyArmorC = e.getPlayer().getInventory().getChestplate();
    ItemStack HoneyArmorH = e.getPlayer().getInventory().getHelmet();
    ItemStack HoneyArmorB = e.getPlayer().getInventory().getBoots();
    if(e.getPlayer().getInventory().getItemInMainHand().getType() != Material.BLAZE_ROD) return;
    if(e.getAction() != Action.RIGHT_CLICK_AIR && e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
    if(!Firestick.getItemMeta().hasDisplayName()) return;
    if(!Firestick.getItemMeta().getDisplayName().equals(ChatColor.GOLD + "Жезл Искр")) return;
    if(e.getPlayer().getExp() == 0) return;
    if(e.getPlayer().getInventory().getChestplate().getType() != Material.GOLDEN_CHESTPLATE && !HoneyArmorC.getItemMeta().hasDisplayName() && !HoneyArmorC.getItemMeta().getDisplayName().equals(ChatColor.YELLOW + "Пчелиный нагрудник") && e.getPlayer().getInventory().getBoots().getType() != Material.GOLDEN_BOOTS && !HoneyArmorB.getItemMeta().hasDisplayName() && !HoneyArmorB.getItemMeta().getDisplayName().equals(ChatColor.YELLOW + "Пчелиные ботинки") && e.getPlayer().getInventory().getHelmet().getType() != Material.GOLDEN_HELMET && !HoneyArmorH.getItemMeta().hasDisplayName() && !HoneyArmorH.getItemMeta().getDisplayName().equals(ChatColor.YELLOW + "Пчелиный шлем") && e.getPlayer().getExp() >= 0) player.giveExp(-4);


    player.launchProjectile(Fireball.class, player.getEyeLocation().getDirection());
    player.playSound(player.getLocation(), Sound.ENTITY_BLAZE_SHOOT, 8, 1);
    player.spawnParticle(Particle.LAVA, player.getLocation().add(0.5D, 0.5D, 0.5D), 25 , 1.2F, 1.2F, 1.2F);



    }
     

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