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

Помогите Выполнение команды консоли при заходе на сервер и наличие ника в конфиге из сайта

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

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

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

    Баллы:
    66
    Имя в Minecraft:
    Moda84
    Здравствуйте, форумчане!
    Вступление: на своём проекте, я решил сделать систему, которая покажет рейтинг игрока, суть её в том, что если игрок имел баны за запрещённые моды или читы, ему ставился префикс. Я столкнулся с такой бедой, что игрок может купить префикс или используя /prefix сменить его и я решил попытаться, что-то сделать, а именно написать вам.
    Суть дела: мне нужен код с помощью которого будет выдаваться префикс игроку из списка при заходе.
    Но! Хотел-бы, чтобы этот список брался из моего сайта.
    Внимание! СОВЕТОВАТЬ MYSQL-БАЗУ БЕСПОЛЕЗНО, так администрация хостинга сделала её только локальной, но если у вас есть хорошие хостинги MySQL обязательно пришлите, так как БД мне всё равно пригодиться.
     
  2. _Ruleto4ka_

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

    Баллы:
    76
    Врядли бесплатно напишут
     
  3. alexandrage

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

    Баллы:
    173
    Так используй суффикс вместо префыкса.
     
  4. __Void__

    __Void__ Участник Пользователь

    Баллы:
    36
    Можешь на своем сервере (где сайт) разместить список игроков в Json (Yaml, csv, или другом, удобном формате) потом, например, при старте сервера (и потом каждые 5-10 мин) проверять состояние файла (можно просто загружать и сравнивать каждый раз. Или можно хранить и сравнивать на сервере хеш текущей версии файла. Если используете второй вариант:
    1. На старте сервера (майнкрафтовского) запрашиваете текущий файл и сохраняете его. Также считаете от него хеш и тоже сохраняете
    2. Когда требуется (желательно не очень часто) запрашиваете хеш текущей версии файла с сервера
    3. Если он совпадает с сохраненным, используете дальше тот файл, что уже есть
    4. Если нет - запрашиваете новый файл и пересчитываете хеш

    Этот вариант лучше, для экономии трафика
    (а еще лучше база данных)
    =======================================

    На счет MySql - https://cloud.google.com/sql

    Ну и что бы ответ не выглядел таким пустым - вот пример вычисления хеш-суммы файла:
    Код:
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import java.util.Arrays;
    
    public class HashSum {
    
        public static byte[] calculateHashSum(File input, Algorithm algorithm) {
            try (FileInputStream is = new FileInputStream(input)) {
                MessageDigest messageDigest = MessageDigest.getInstance(algorithm.getAlgorithm());
                byte[] chunk = new byte[4096];
                int currentLength;
                while ((currentLength = is.read(chunk)) > 0) {
                    messageDigest.update(chunk, 0, currentLength);
                }
    
                return messageDigest.digest();
            } catch (IOException | NoSuchAlgorithmException e) {
                return null;
            }
        }
    
        public static boolean checkSum(File input, Algorithm algorithm, byte[] checkSum) {
            return Arrays.equals(calculateHashSum(input, algorithm), checkSum);
        }
    
        public static boolean checkSum(File first, File second, Algorithm algorithm) {
            return first.equals(second) || Arrays.equals(HashSum.calculateHashSum(first, algorithm),
                    HashSum.calculateHashSum(second, algorithm));
        }
    
    
        enum Algorithm {
            MD5("MD5"),
            SHA1("SHA1"),
            SHA256("SHA-256"),
            SHA512("SHA-512");
    
            private final String algorithm;
    
            Algorithm(String algorithm) {
                this.algorithm = algorithm;
            }
    
            public String getAlgorithm() {
                return algorithm;
            }
        }
    }
    
    И пример использования:
    Код:
    byte[] otherHash = HashSum.calculateHashSum(new File("input"), HashSum.Algorithm.SHA256);
    System.out.println(HashSum.checkSum(new File("input"), HashSum.Algorithm.SHA256, otherHash));
    System.out.println(HashSum.checkSum(new File("first"), new File("second"), HashSum.Algorithm.SHA512));
    
    Если нужна будете помощь - напиши в личку или сюда
     
    Последнее редактирование: 31 дек 2020
  5. ifxandy

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

    Баллы:
    76
    Имя в Minecraft:
    witwar
    Локальной? А что мешает сделать API? При заходе делаешь запрос, сайт у себя на стороне обращается к базе и возвращает ответ. Делается это на java через какой нить Apache с его API для запросов, или через голое java API для Http/Https. На сайте - смотря на чём написан.
     

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