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

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

ВладМен

Активный участник
Пользователь
Баллы
46
Имя в Minecraft
VladMan
Как сделать чтобы команду можно было использовать только 1 раз?
 
Ну логично что нужно записать куда-то того, кто её использовал и если он снова пытается её использовать, то послать его.
 
Иди учи основы java б***ь. Создать List<String> players = new ArrayList<String>();
Добавлять в него игрока players.add(p.getName()); когда тот выполняет команду, и не забыть сделать проверку, есть ли игрок в этом листе или нет, если нет то выполнять дальше код, если есть то посылать
 
Ты закол**** клепать темы с дебильными вопросами, иду учи Java, а точнее - коллекции
 
Только вот коллекции и листы в его случае не помогут, ну ок...
 
Тебе нужно ник игрока записывать в бд/файл. После перезагрузки все вашы листы, коллекции, хэшмапы просто обнулятся и игрок сможет использовать команду сколько хочет.
Есть способ и быстрее, но костыль, просто при использовании выдавай право, потом проверяй, если есть право, то запрещай выполнение, но опять же, способ такой себе, но зато простой.
 
Ну так написал бы, что в файл, а так твой ответ не являлся правильным.

Ну лол, раз он сам не додумался до List'a, то мы имеем дело с какой-то особенной формой разума реальным нубом, и от предложения "Сохрани значения в Лист, а потом запиши в конфиг" у него бы однозначно расплавился мозг. Именно поэтому даем теорию постепенно, маленькими порциями
 
Ну лол, раз он сам не додумался до List'a, то мы имеем дело с какой-то особенной формой разума реальным нубом, и от предложения "Сохрани значения в Лист, а потом запиши в конфиг" у него бы однозначно расплавился мозг. Именно поэтому даем теорию постепенно, маленькими порциями
Давать половину ответа не лучший вариант для обучения.
 
Давать половину ответа не лучший вариант для обучения.
Кого обучать? Здесь парень не знает про листы и коллекции вообще, а конфиги видел только в готовом виде в скомпилированных плагинах. О какой помощи идёт речь, если он азов не знает?
 
Могут дать и готовый. Только не спасет же нифига :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();
 
Собстно юзается на изи.
Инициализируем конфиг.
CMDUtils cmd = new CMDUtils(this.getDataFolder());
Проверяем записанную команду, вернет true or false.
cmd.getPlayerCMD("username", "help");
Записываем команду.
cmd.setPlayerCMD("username", "help");
Сохраняем на диск, например при выключение плагина в onDisable().
cmd.saveCMD();

Это в какой класс вписывать?
 
Саша, был прав, не помогло
 
Это в какой класс вписывать?
Идиот, иначе никак... Забудь о кодинге на пару лет. Иди на курсы повышения интеллекта... Потом уже учи JAVA!!!!!

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

Лоол, даже человек, который ни разу даже в глаза не видел Bukkit API сразу поймет, как этим ГОТОВЫМ, зараза, кодом пользоваться.
Если ты думаешь, что можешь спокойно паразитировать на форуме, задалбывая форумчан и получая готовый код, то ты ошибаешься
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.
Назад
Верх