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

Помогите Проверка gamemode

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

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

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

    Баллы:
    61
    Имя в Minecraft:
    MrJimmy_
    Я хотел сделать так что бы если у игрока был Креатив то ивент onStoneBreak на него не действовал, я попытался это осуществить с помощью getGamemode и return,но ничего не работает.
    Прошу помочь и по возможности скинуть код


    Код:
    HashMap<Location, Integer> m = new HashMap<Location, Integer>();
    
        @EventHandler
        public void onStoneBreak(BlockBreakEvent event) {
            Player p = event.getPlayer();
            Location a = event.getBlock().getLocation();
            Block b = event.getBlock();
            Material mat = b.getType();
            List<Entity> entity = p.getNearbyEntities(30.0D, 30.0D, 30.0D);
            Iterator var14 = entity.iterator();
            String name = p.getCustomName() != null ? p.getCustomName() : p.getName();
    
            switch (mat) {
                case STONE:
                    if (m.containsKey(a)) {
                        int i = m.get(a);
                        int o = 10 - i;
                        if (i < 10) {
                            event.setCancelled(true);
                            m.put(a, i + 1);
                            p.sendMessage(ChatColor.GOLD + "Сломайте камень ещё " + ChatColor.AQUA + o + ChatColor.GOLD + " Раз что бы разрушить его!");
                        if(p.getGameMode() == GameMode.CREATIVE){
                            return;
                            }
                        } else {
                            m.put(a, 0);
                            p.sendMessage("Вы сломали камень!");
    
                        }
                    } else {
                        m.put(a, 1);
                        event.setCancelled(true);
                    }
                    break;
                case IRON_ORE:
                    if (m.containsKey(a)) {
                        int i = m.get(a);
                        int o1 = 50 - i;
                        if (i < 50) {
                            event.setCancelled(true);
                            m.put(a, i + 1);
                            p.sendMessage(ChatColor.GOLD + "Сломайте железную руду ещё " + ChatColor.AQUA + o1 + ChatColor.GOLD + " Раз что бы разрушить её!");
                            if(p.getGameMode() == GameMode.CREATIVE){
                                return;
                            }
                            } else {
                                m.put(a, 0);
                                p.sendMessage("Железная руда сломалась(" + name + ")");
    
                            }
                        } else {
                            m.put(a, 1);
                            event.setCancelled(true);
                        }
                        break;
    
                    }
            }
        }
     
  2. Zuif

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

    Баллы:
    76
    ты хочешь чтобы когда у игрока креатив то он не мог ломать камень? добавь тогда там где return
    event.setCancelled(true);
     
  3. Автор темы
    furs

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

    Баллы:
    61
    Имя в Minecraft:
    MrJimmy_
    Нет, суть плагина состоит в том что игрокам нужно ломать блок определенное количество раз что бы полностью его сломать, а я хочу что бы люди с креативом сразу могли его ломать
     
  4. Zuif

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

    Баллы:
    76
    перенеси if(p.getGameMode() == GameMode.CREATIVE){
    return;
    }
    выше условия i < 10
     
  5. Автор темы
    furs

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

    Баллы:
    61
    Имя в Minecraft:
    MrJimmy_
    Теперь если ты в гм 1 то ломается только когда ломаешь 2 раза
     
  6. NuaN

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

    Баллы:
    96
    Имя в Minecraft:
    NuaN
    Ну да, логично. Блока в Map нет, поэтому он вначале добавляется.
    Тогда нужно поставить проверку на GM выше условия
    Код:
    if (m.containsKey(a)) {
     
  7. Автор темы
    furs

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

    Баллы:
    61
    Имя в Minecraft:
    MrJimmy_
    РЕШЕНО
     
  8. Автор темы
    furs

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

    Баллы:
    61
    Имя в Minecraft:
    MrJimmy_
    Спасибо большое
     
Статус темы:
Закрыта.

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