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

  • Автор темы Автор темы 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;

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

Нет, суть плагина состоит в том что игрокам нужно ломать блок определенное количество раз что бы полностью его сломать, а я хочу что бы люди с креативом сразу могли его ломать
 
перенеси if(p.getGameMode() == GameMode.CREATIVE){
return;
}
выше условия i < 10
 
Теперь если ты в гм 1 то ломается только когда ломаешь 2 раза
Ну да, логично. Блока в Map нет, поэтому он вначале добавляется.
Тогда нужно поставить проверку на GM выше условия
Код:
if (m.containsKey(a)) {
 
РЕШЕНО
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх