Помогите Как проверить сколько раз была введена определенная команда?

Статус
Закрыто для дальнейших ответов.

KaroBallga

Ньюби
Пользователь
Баллы
1
Как проверить сколько раз была введена определенная команда и дальше?
Например, если команда "/ban" была введена 3 раза, что-то происходило
 
Как проверить сколько раз была введена определенная команда и дальше?
Например, если команда "/ban" была введена 3 раза, что-то происходило
Создать HashMap, где ключ будет - ник игрока (или сам игрок), а значение - количество вводов команды.
Если нужно разные команды проверять, тогда придется сделать HashMap в HashMap.

Короче нужно просто сохранять ник игрока и количество вводов команды в коллекцию. И постоянно проверять нужное значение.
 
Создать HashMap, где ключ будет - ник игрока (или сам игрок), а значение - количество вводов команды.
Если нужно разные команды проверять, тогда придется сделать HashMap в HashMap.

Короче нужно просто сохранять ник игрока и количество вводов команды в коллекцию. И постоянно проверять нужное значение.
Можно пример кода?
 
Код:
    private static HashMap<Player, Integer> bans = new HashMap<>();

    // проверка на превышение лимита ввода комманды
    private static boolean canBan(Player p) {
        if (!bans.containsKey(p)) {
            return true;
        }

        return bans.get(p) < 3;
    }

    // обновить счетчик при вводе комманды
    private static void onBan(Player p) {
        if (!bans.containsKey(p)) {
            bans.put(p, 1);
        } else {
            bans.put(p, bans.get(p) + 1);
        }
    }

При вводе команды проверяешь:
Код:
        if (!canBan(p)) {
            //лимит исчерпан и отменить выполнение комманды
        } else {
            //обновить счетчик
            onBan(p);

            // дальше выполнять команду...
        }
 
Башка не варит вообще, прям плыву, так что прошу тебя пожалуйста, можешь пожалуйста в моем коде это сделать? Там получается если он введет неправильно /pas <пароль> 3, то его кикнет, поменяй в моем коде пожалуйста

Код:
package ru.fucktmgc.mProtect.events;

import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import ru.fucktmgc.mProtect.Main;
import ru.fucktmgc.mProtect.Utils.Message;

import java.util.HashMap;
import java.util.HashSet;

public class PassListener implements Listener {
    FileConfiguration Config = Main.getInstance().getConfig();
    private HashSet<String> uuid = new HashSet<>();
    private static HashMap<Player, Integer> attemps = new HashMap<>();

    private static boolean canBan(Player p) {
        if (!attemps.containsKey(p)) {
            return true;
        }

        return attemps.get(p) < 3;
    }

    // обновить счетчик при вводе комманды
    private static void onBan(Player p) {
        if (!attemps.containsKey(p)) {
            attemps.put(p, 1);
        } else {
            attemps.put(p, attemps.get(p) + 1);
        }
    }


    @EventHandler
    public void onJoinCheck(PlayerJoinEvent e) {
        Player p = e.getPlayer();
        for (String perms : Config.getStringList("settings.permission")) {
            if (p.hasPermission(perms) || p.isOp()) {
                this.uuid.add(p.getName());
            }
        }
    }

    @EventHandler
    public void onPas(PlayerCommandPreprocessEvent e) {
        Player p = e.getPlayer();
        if(!this.uuid.contains(p.getName())) {
            if(e.getMessage().toLowerCase().startsWith("/pas")) {
                e.setCancelled(true);
                Message.sendMessage(p, Config.getString("messages.no-need").replace("&", "§"));
            }
        }
        if (this.uuid.contains(p.getName())) {
            if (e.getMessage().toLowerCase().startsWith("/pas")) {
                e.setCancelled(true);
                String[] mess2 = e.getMessage().toLowerCase().split(" ");
                if (!Config.contains("players." + p.getName() + ".password")) {
                    if (!mess2[1].equalsIgnoreCase(Config.getString("settings.password"))) {
                        Message.sendMessage(p, Config.getString("messages.wrong").replace("&", "§"));
                        e.setCancelled(true);
                    }
                    if (mess2[1].equalsIgnoreCase(Config.getString("settings.password"))) {
                        Message.sendMessage(p, Config.getString("messages.сomplete").replace("&", "§"));
                        this.uuid.remove(p.getName());
                    }
                }
                if (Config.contains("players." + p.getName() + ".password")) {
                    if (!mess2[1].equalsIgnoreCase(Config.getString("players." + p.getName() + ".password"))) {
                        Message.sendMessage(p, Config.getString("messages.wrong").replace("&", "§"));
                        e.setCancelled(true);
                    }


                    if (mess2[1].equalsIgnoreCase(Config.getString("players." + p.getName() + ".password"))) {
                        Message.sendMessage(p, Config.getString("messages.сomplete").replace("&", "§"));
                        this.uuid.remove(p.getName());
                    }
                }
            }
        }
    }
}
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.
Назад
Верх