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

Помогите Как сделать локальный boolen true false

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    kolia1_1
    Дело было так: Игрок должен сломать блок затем когда сломал то он не может ломать больше блоки и ставится false , и другим становится false которые еще не сломали блок как сделать что-бы это было только для того кто сломал блок.
     
  2. pro100koder

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

    Баллы:
    76
    Как вариант, в ArrayList добавлять игроков, которые сломали блок, а при следующей попытке сломать блок через цикл проверять наличие игрока в листе.
     
  3. alexandrage

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

    Баллы:
    173
  4. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    зачем юзать мапу, если же можно просто сделать Set<String>, либо Set<UUID> и просто при ломании блока добавлять игрока в этот сет, а потом проверять, есть ли он в это сете, то отменять эвент, кек
     
  5. pro100koder

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

    Баллы:
    76
    То же самое с Array(G :) )List-ом. Хотя вариантов, как это сделать, куча, лично мне через ArrayList удобнее.
     
  6. Автор темы
    koliab

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

    Баллы:
    76
    Имя в Minecraft:
    kolia1_1
    Скиньте пример кода буду благодарен :)
     
  7. Exception_Prototype

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

    Баллы:
    96
    PHP:
    private static final Set<Stringplayers = new HashSet<>(); //множество игроков, которые уже сломали блоки

    @EventHandler(ignoreCancelled true//ловим только те события, которые не отменены
    public void breakBlock(BlockBreakEvent event) {
        
    Player p event.getPlayer(); //взяли игрока
        
    if (players.contains(p.getName())) { //проверили, если он есть во множестве, то ломал блоки
            
    event.setCancelled(true); //значит отменяем эвент
        
    } else {
            
    players.add(p.getName());   //иначе добавляем его в это множество
        
    }
    }
     
  8. alexandrage

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

    Баллы:
    173
    Нашел к чему придраться. Одинаково же придется челику читать доки.
     
  9. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Не, я не придираюсь, просто так реально легче, и памяти по-идее меньше будет жрать
     
  10. IBROI

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

    Баллы:
    103
    Имя в Minecraft:
    IBROI
    не будет. Set работает на мапе upload_2018-7-27_12-42-47.png
     
  11. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
  12. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Че "и?", он тебе доказал, что не имеет значения, что юзать - мапу или сет
     
  13. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    При проверке меньше символов в коде будет... и Set в данном случае подходит лучше не ТУПИТЕ!!!
     
  14. IBROI

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

    Баллы:
    103
    Имя в Minecraft:
    IBROI
    что ?
     
  15. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    КОД С МАПОЙ
    Код:
    if (map.containsKey(player.getName())) {
        if (map.get(player.getName())) {
            //TODO: выполнить код, если player in map == true
        } else {
            //TODO: выполнить код, если player in map == false
        }
    }
    КОД С СЕТОМ
    Код:
    if (set.contains(player.getName())) {
        //TODO: выполнить код, если player in set
    } else {
        //TODO: выполнить код, если player not in set
    }
     
  16. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Код:
    if (set.add(player.getName())) {
    // Был успешно добавлен
    } else {
    // Уже имелся ранее в коллекции
    }
    P.S . В посту выше можно насрать на значение, и пользоваться только наличием ключа. Так выходит ровно одно и тоже, что и сет:
    Код:
    if (map.put(player.getName(), Boolean.TRUE) == null) {
    // Был успешно добавлен
    } else {
    // Уже имелся ранее в коллекции
    }
     
    Последнее редактирование: 28 июл 2018
  17. SecDet

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

    Баллы:
    76
    Имя в Minecraft:
    d3ever
    Set в данном случае будет правильнее.
     
  18. IBROI

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

    Баллы:
    103
    Имя в Minecraft:
    IBROI
    Я бы все равно иначе сделал
     
  19. php5master

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

    Баллы:
    66
    По производительности плюс минус одинаковы и map, и set (вот код. можете сами по одной части кода потестить). Но set удобнее, как по мне. Ещё говорят, что он чуть меньше памяти занимает
     
  20. alexandrage

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

    Баллы:
    173
    Тебе ответили по поводу памяти. То что одинаково будет
     

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