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

Помогите Подправить код

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

Статус темы:
Закрыта.
  1. Автор темы
    profi

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

    Баллы:
    88
    В этом виде запрет действует следующим образом: если нету алмаза и камня - вы ничего не сможете поднять, если есть - сможете. Нужно же вот что: если надета броня hat и chest - сможете поднять итемы (их нужно указать в этом же коде), если же брони нет - будет действовать запрет (только на те блоки, что будут указаны в этом же коде). По возможности и желанию вывести это все в конфиг, хотя с моей стороны это уже наглость, и мне самому это нужно учить. Собственно вот код:

    Код:
    public class main extends JavaPlugin implements Listener {
           public static final Logger _log = Logger.getLogger("Minecraft");
       
            @Override
            public void onEnable() {
                _log.info("[FirstPlg] onEnable()");
                Bukkit.getPluginManager().registerEvents(this, this);
            }
           
            public void onDisable(){
                _log.info("Plugin has been disabled.");
            }
           
            @EventHandler
            public void onPickUp(PlayerPickupItemEvent e)
            {
                Player player = e.getPlayer();
                PlayerInventory inventory = player.getInventory();
                ItemStack hat = new ItemStack(Material.DIAMOND, 1);
                ItemStack chest = new ItemStack(Material.STONE, 1);
               
                if ((inventory.contains(hat)) && (inventory.contains(chest))) {
                    player.sendMessage(ChatColor.GOLD + "Вы успешно подняли предмет!");
                    }
                else {
                        e.setCancelled(true);
                        e.getPlayer().sendMessage(ChatColor.RED + "У вас нет необходимых доспехов");
                     }
            }
    }
    Помощи прошу так как с написанием плагина столкнулся впервые. (Все бывает в первый раз :))
     
  2. Хостинг MineCraft
    <
  3. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Мне кажется это работает уже сейчас, только доспехи не одеты в нужные слоты?
    Если да, то, замечу, что у Inventory есть методы получения предметов в определённых специальных слотах — под доспехи.
     
  4. Автор темы
    profi

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

    Баллы:
    88
    Работает, но только как я уже говорил под запрет попало все что только можно, а в идеале под запрет должны были попасть только те блоки что записаны в конфиг/код плагина
     
  5. CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Ну так после того как проверил наличие брони, проверяй тип предмета который поднимают.
     
  6. Автор темы
    profi

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

    Баллы:
    88
    Каким образом?
     
  7. CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    учи матчасть :p
     
  8. Автор темы
    profi

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

    Баллы:
    88
  9. doodka

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

    Баллы:
    68
    Skype:
    d_oo_d
    Поставь в onPickUp if, который будет сравнивать тип айтема с типом в конфиге/массиве. И если он совпадает- делай e.setCancelled(true) и return.
     
  10. Автор темы
    profi

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

    Баллы:
    88
    Можно кусочек кода для примера?
     
    Последнее редактирование: 14 ноя 2014
  11. doodka

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

    Баллы:
    68
    Skype:
    d_oo_d
    Можно так:
    Код:
        public void onPickUp(PlayerPickupItemEvent e)
        {
            if(e.getItem().getItemStack().getType() == Material.APPLE){
                e.setCancelled(true);
                return;
            }
        }
    
    Можно сравнивать id и subId (getTypeId и getData)
     
  12. Автор темы
    profi

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

    Баллы:
    88
    Можно узнать твой скайп? Тут долго ждать ответа нужно, есть ещё пара вопросов, буду благодарен :)
     
  13. doodka

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

    Баллы:
    68
    Skype:
    d_oo_d
    d_oo_d
     
  14. Hilgert

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

    Баллы:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
    это Што? проверка на наличие брони? если да, используй player.getEquipmnet().contains(chest)
     
  15. Автор темы
    profi

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

    Баллы:
    88
    Спасибо, но это был черновой вариант, уже исправлено.
     
Статус темы:
Закрыта.

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