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

Помогите Как отследить предмет в слоте головы

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

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

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

    Баллы:
    66
    Skype:
    amster938
    Имя в Minecraft:
    Ironsky95
    Не могу правильно написать скрипт в отслеживании шлема. Исправьте где я ошибся ,и как надо правильно написать.

    Код:
    @EventHandler
        public void onPlayerInventory(org.bukkit.event.player.PlayerInventoryEvent e){
            Player player = e.getPlayer();
            if(player.getEquipment().getHelmet() == NightHelmet.Helmet()){
                player.addPotionEffect(new PotionEffect(PotionEffectType.NIGHT_VISION,200,100, true));
            }
     
  2. Хостинг MineCraft
    <
  3. alekseichik

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

    Баллы:
    76
    Имя в Minecraft:
    maxicraft2020
    NightHelmet.Helmet() - возможно просто предмет на голове не соответствует этому[DOUBLEPOST=1450260010,1450259965][/DOUBLEPOST]скинь метод NightHelmet
     
  4. Автор темы
    Titanoriym

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

    Баллы:
    66
    Skype:
    amster938
    Имя в Minecraft:
    Ironsky95
    Код:
    package superItem;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.enchantments.Enchantment;
    import org.bukkit.inventory.ItemFlag;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    
    public class NightHelmit {  
        static List<String> sList = new ArrayList<String>(Arrays.asList("Ночное виденье"));
        public static ItemStack Helmet(){
            ItemStack b1 = new ItemStack(Material.GOLD_HELMET, 1);
             ItemMeta b2 = b1.getItemMeta();
                String Name =ChatColor.GOLD + "Night Helmet";
                b2.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
                b2.setDisplayName(Name);
                b2.setLore(sList);
                b1.setItemMeta(b2);
                b1.addUnsafeEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 5);
                return b1;
        }
    }
    
     
    Последнее редактирование: 16 дек 2015
  5. alekseichik

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

    Баллы:
    76
    Имя в Minecraft:
    maxicraft2020
    1. раньше я делал что-то подобное и проблема была вот в чём : DisplayName с цветом нельзя сравнивать т.е.
    2. если ты сравниваешь шлем,который у тебя на голове , с твоим новым NightHelmet.Helmet, в котором DisplayName с цветом , то if(player.getEquipment().getHelmet()== NightHelmet.Helmet()) просто не пройдёт проверку....
     
  6. Автор темы
    Titanoriym

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

    Баллы:
    66
    Skype:
    amster938
    Имя в Minecraft:
    Ironsky95
    а правильно я написал public void onPlayerInventory(PlayerInventoryEvent e)
    может public void PlayerInventoryEvent(Player player, Inventory inventory)
     
  7. LomNar

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

    Баллы:
    78
    Skype:
    radius981
    Имя в Minecraft:
    LomNar
    Проверяй getHelment().getId() == NightHelment.Helment().getId()
     
  8. Автор темы
    Titanoriym

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

    Баллы:
    66
    Skype:
    amster938
    Имя в Minecraft:
    Ironsky95
    у меня получилось через hashCode и место onPlayerInventory я написал
    Код:
        @EventHandler
          public void onPlayerJoin(PlayerJoinEvent event)
          {
            Player pl = event.getPlayer();
             if(pl.getEquipment().getHelmet()==null){
                  return;
              }else{
            if(pl.getEquipment().getHelmet().hashCode() == NightHelmit.Helmit().hashCode()){
                pl.addPotionEffect(new PotionEffect(PotionEffectType.NIGHT_VISION,200,100, true));
            }
            }
          }
         
          @EventHandler
          public void onPlayerMove(PlayerMoveEvent event){
              Player pl = event.getPlayer();
              if(pl.getEquipment().getHelmet()==null){
                  return;
              }else{
                  if(pl.getEquipment().getHelmet().hashCode() == NightHelmit.Helmit().hashCode()){
                      pl.addPotionEffect(new PotionEffect(PotionEffectType.NIGHT_VISION,200,100, true));
                }
            }
          }
    
        @EventHandler
        public void onPlayerInteract(PlayerInteractEvent e){
             Player pl = e.getPlayer();
             if(pl.getEquipment().getHelmet()==null){
                  return;
              }else{
            if(pl.getEquipment().getHelmet().hashCode() == NightHelmit.Helmit().hashCode()){
                pl.addPotionEffect(new PotionEffect(PotionEffectType.NIGHT_VISION,200,100, true));
            }
         }
        }
     
  9. MrTrojan

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

    Баллы:
    98
    Skype:
    mrtrojan.ru
    Имя в Minecraft:
    MrTrojan
    Через InventoryClickEvent по-моему можно отловить надевание чего-либо в слот головы/нагрудника/понож/ног.
     
  10. Автор темы
    Titanoriym

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

    Баллы:
    66
    Skype:
    amster938
    Имя в Minecraft:
    Ironsky95
    Отследить та можно ,но эффект нужно обновлять постоянно при надетом шлеме
     
  11. MrTrojan

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

    Баллы:
    98
    Skype:
    mrtrojan.ru
    Имя в Minecraft:
    MrTrojan
    Шедулеры в помощь.
     
  12. Автор темы
    Titanoriym

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

    Баллы:
    66
    Skype:
    amster938
    Имя в Minecraft:
    Ironsky95
    Да ,помогли ,спасибо.
     

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