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

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

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

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

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

    Баллы:
    66
    Имя в Minecraft:
    Migel077
    Всем, привет я никак не могу сделать так что использование команды игроком, скрывалось в консоли.
    Если есть что полезное скидывайте!
     
  2. alexandrage

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

    Баллы:
    173
    Код:
    package Example;
    
    import java.util.Collections;
    import java.util.ArrayList;
    import java.util.List;
    
    class LogFilterHelper {
    
        static List<String> COMMANDS_TO_SKIP;
    
        private LogFilterHelper() {
        }
    
        static boolean isSensitiveCommand(String message) {
            if (message == null) {
                return false;
            }
            String lowerMessage = message.toLowerCase();
            return lowerMessage.contains("issued server command:")
                    && containsAny(lowerMessage, LogFilterHelper.COMMANDS_TO_SKIP);
        }
    
        private static List<String> withAndWithoutPrefix(String... commands) {
            List<String> commandList = new ArrayList<String>(commands.length * 2);
            for (String command : commands) {
                commandList.add(command);
            }
            return Collections.unmodifiableList((List<? extends String>) commandList);
        }
    
        static {
            COMMANDS_TO_SKIP = withAndWithoutPrefix("/login ", "/l ", "/log ", "/register ", "/reg ", "/unregister ",
                    "/unreg ", "/changepassword ", "/cp ", "/changepass ", "/authme register ", "/authme reg ",
                    "/authme r ", "/authme changepassword ", "/authme password ", "/authme changepass ", "/authme cp ",
                    "/email setpassword ");
        }
    
        public static boolean containsAny(String str, Iterable<String> pieces) {
            if (str == null) {
                return false;
            }
            for (String piece : pieces) {
                if (piece != null && str.contains(piece)) {
                    return true;
                }
            }
            return false;
        }
    }
    Код:
    package Example;
    
    import org.apache.logging.log4j.Marker;
    import org.apache.logging.log4j.Level;
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.core.Logger;
    import org.apache.logging.log4j.core.LogEvent;
    import org.apache.logging.log4j.core.Filter;
    import org.apache.logging.log4j.message.Message;
    import org.apache.logging.log4j.core.filter.AbstractFilter;
    
    public class Log4JFilter extends AbstractFilter {
    
        public static void hook() {
            Logger coreLogger = (Logger)LogManager.getRootLogger();
            coreLogger.addFilter(new Log4JFilter());
        }
    
        private static Filter.Result validateMessage(Message message) {
            if (message == null) {
                return Filter.Result.NEUTRAL;
            }
            return validateMessage(message.getFormattedMessage());
        }
    
        private static Filter.Result validateMessage(String message) {
            return LogFilterHelper.isSensitiveCommand(message) ? Filter.Result.DENY : Filter.Result.NEUTRAL;
        }
    
        public Filter.Result filter(LogEvent event) {
            Message candidate = null;
            if (event != null) {
                candidate = event.getMessage();
            }
            return validateMessage(candidate);
        }
    
        public Filter.Result filter(Logger logger, Level level, Marker marker, Message msg, Throwable t) {
            return validateMessage(msg);
        }
    
        public Filter.Result filter(Logger logger, Level level, Marker marker, String msg, Object... params) {
            return validateMessage(msg);
        }
    
        public Filter.Result filter(Logger logger, Level level, Marker marker, Object msg, Throwable t) {
            String candidate = null;
            if (msg != null) {
                candidate = msg.toString();
            }
            return validateMessage(candidate);
        }
    }
     

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