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

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем ВладМен, 19 дек 2017.

Статус темы:
Закрыта.
  1. Автор темы
    ВладМен

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

    Баллы:
    46
    Имя в Minecraft:
    VladMan
    Как сделать чтобы команду можно было использовать только 1 раз?
     
  2. Exception_Prototype

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

    Баллы:
    96
    Ну логично что нужно записать куда-то того, кто её использовал и если он снова пытается её использовать, то послать его.
     
  3. Автор темы
    ВладМен

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

    Баллы:
    46
    Имя в Minecraft:
    VladMan
    В коде пожалуйста :c
     
  4. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Иди учи основы java б***ь. Создать List<String> players = new ArrayList<String>();
    Добавлять в него игрока players.add(p.getName()); когда тот выполняет команду, и не забыть сделать проверку, есть ли игрок в этом листе или нет, если нет то выполнять дальше код, если есть то посылать
     
  5. AtomicScience

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

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    Ты закол**** клепать темы с дебильными вопросами, иду учи Java, а точнее - коллекции
     
  6. TheZefirrkka

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

    Баллы:
    76
    Только вот коллекции и листы в его случае не помогут, ну ок...
     
  7. Автор темы
    ВладМен

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

    Баллы:
    46
    Имя в Minecraft:
    VladMan
    На что намёк?
     
  8. TheZefirrkka

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

    Баллы:
    76
    Тебе нужно ник игрока записывать в бд/файл. После перезагрузки все вашы листы, коллекции, хэшмапы просто обнулятся и игрок сможет использовать команду сколько хочет.
    Есть способ и быстрее, но костыль, просто при использовании выдавай право, потом проверяй, если есть право, то запрещай выполнение, но опять же, способ такой себе, но зато простой.
     
  9. AtomicScience

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

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    Лол, записывать лист с никами игроков в файл, почему бы и нет?
     
  10. TheZefirrkka

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

    Баллы:
    76
    Ну так написал бы, что в файл, а так твой ответ не являлся правильным.
     
  11. AtomicScience

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

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    Ну лол, раз он сам не додумался до List'a, то мы имеем дело с какой-то особенной формой разума реальным нубом, и от предложения "Сохрани значения в Лист, а потом запиши в конфиг" у него бы однозначно расплавился мозг. Именно поэтому даем теорию постепенно, маленькими порциями
     
  12. TheZefirrkka

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

    Баллы:
    76
    Давать половину ответа не лучший вариант для обучения.
     
  13. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Слышь умник, напиши ему значит код полностью, бесите такие все ах**** кодеры, а на самом деле дно
     
  14. InterWall

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

    Баллы:
    173
    Кого обучать? Здесь парень не знает про листы и коллекции вообще, а конфиги видел только в готовом виде в скомпилированных плагинах. О какой помощи идёт речь, если он азов не знает?
     
  15. alexandrage

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

    Баллы:
    173
    Могут дать и готовый. Только не спасет же нифига :D.

    Код:
    package Example;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    
    public class PlayerBlockCommand {
        private List<String> cmds = new ArrayList<String>();
    
        boolean hasCMD(String cmd) {
            return cmds.contains(cmd);
        }
    
        boolean setCMD(String cmd) {
            if (!cmds.contains(cmd)) {
                return cmds.add(cmd);
            }
            return false;
        }
    
        public String toString() {
            Gson gson = new GsonBuilder().setPrettyPrinting().create();
            return gson.toJson(this);
        }
    }

    Код:
    package Example;
    
    import java.io.File;
    import java.io.IOException;
    import java.nio.charset.Charset;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Map.Entry;
    
    import org.apache.commons.io.FileUtils;
    
    import com.google.gson.Gson;
    
    public class CMDUtils {
        private Map<String, PlayerBlockCommand> cmds = new HashMap<String, PlayerBlockCommand>();
        private File file;
    
        public CMDUtils(String datafolder) {
            file = new File(datafolder, "cmds");
            if (!file.exists()) {
                file.mkdirs();
            }
            for (File tmp : file.listFiles()) {
                try {
                    String cnd = FileUtils.readFileToString(tmp, Charset.defaultCharset());
                    cmds.put(tmp.getName(), new Gson().fromJson(cnd, PlayerBlockCommand.class));
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        public boolean getPlayerCMD(String name, String cmd) {
            if (cmds.containsKey(name)) {
                return cmds.get(name).hasCMD(cmd);
            }
            cmds.put(name, new PlayerBlockCommand());
            return cmds.get(name).hasCMD(cmd);
        }
    
        public boolean setPlayerCMD(String name, String cmd) {
            getPlayerCMD(name, cmd);
            return cmds.get(name).setCMD(cmd);
        }
    
        public void saveCMD() {
            for (Entry<String, PlayerBlockCommand> cmd : cmds.entrySet()) {
                try {
                    FileUtils.writeStringToFile(new File(file + File.separator + cmd.getKey()), cmd.getValue().toString(),
                            Charset.defaultCharset());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    Собстно юзается на изи.
    Инициализируем конфиг.
    CMDUtils cmd = new CMDUtils(this.getDataFolder());
    Проверяем записанную команду, вернет true or false.
    cmd.getPlayerCMD("username", "help");
    Записываем команду.
    cmd.setPlayerCMD("username", "help");
    Сохраняем на диск, например при выключение плагина в onDisable().
    cmd.saveCMD();
     
  16. Автор темы
    ВладМен

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

    Баллы:
    46
    Имя в Minecraft:
    VladMan
    Это в какой класс вписывать?
     
  17. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Саша, был прав, не помогло
     
  18. _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Идиот, иначе никак... Забудь о кодинге на пару лет. Иди на курсы повышения интеллекта... Потом уже учи JAVA!!!!!

    Ребят, его темы вообще надо игнорить. Иначе, он так и не научится пользоваться гуглом..
     
  19. AtomicScience

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

    Баллы:
    76
    Имя в Minecraft:
    AtomicScience
    Лоол, даже человек, который ни разу даже в глаза не видел Bukkit API сразу поймет, как этим ГОТОВЫМ, зараза, кодом пользоваться.
    Если ты думаешь, что можешь спокойно паразитировать на форуме, задалбывая форумчан и получая готовый код, то ты ошибаешься
     
    Последнее редактирование: 20 дек 2017
  20. alexandrage

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

    Баллы:
    173
    Что и следовало доказать. Хромосома, это вражденное.
     
Статус темы:
Закрыта.

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