Ansandr

Переводчик
Пользователь
Сообщения
131
Решения
15
Веб-сайт
socialcraft.cf
Привет!

Мне нужно чтобы когда игрок писал команду, то его попросило еще раз ее написать, чтобы подтвердить.
Можете объяснить, как это сделать, спасибо.
 
Решение
Привет!

Мне нужно чтобы когда игрок писал команду, то его попросило еще раз ее написать, чтобы подтвердить.
Можете объяснить, как это сделать, спасибо.
Если решать в лоб - то можно добавлять игрока и команду в Map<Player, String>. При вводе команды проверять, если ли запись в мапе - если есть - выполнять, нет - уведомлять игрока и добавлять в мапу. Не забудь чистить мапу при выходе игрока.
Привет!

Мне нужно чтобы когда игрок писал команду, то его попросило еще раз ее написать, чтобы подтвердить.
Можете объяснить, как это сделать, спасибо.
Если решать в лоб - то можно добавлять игрока и команду в Map<Player, String>. При вводе команды проверять, если ли запись в мапе - если есть - выполнять, нет - уведомлять игрока и добавлять в мапу. Не забудь чистить мапу при выходе игрока.
 
Если решать в лоб - то можно добавлять игрока и команду в Map<Player, String>. При вводе команды проверять, если ли запись в мапе - если есть - выполнять, нет - уведомлять игрока и добавлять в мапу. Не забудь чистить мапу при выходе игрока.

Я думаю, это тут ненужно.
Как я понял из тегов, человек ищет плагин.

Попробуй этот плагин
 
Ещё один, но не лучший вариант (и если честно странный, не знаю зачем о нём говорю) - регистрировать для игрока листенер. Но я бы сделал как Xezard

Java:
package ru.baronessdev.shitexample;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {
    
    private final String command = "твоя команда";

    @Override
    public void onEnable() {
        getCommand(command).setExecutor((sender, cmd, label, args) -> {
            if (sender instanceof Player) {
                sender.sendMessage("Введите " + cmd + " ещё раз");
                Bukkit.getPluginManager().registerEvents(new Handler((Player) sender), this);
            }
            return true;
        });
    }
    
    public static void unregisterEvent(Listener l) {
        HandlerList.unregisterAll(l);
    }
    
    class Handler implements Listener {
        
        private final Player player;

        Handler(Player player) {
            this.player = player;
        }

        @EventHandler
        private void onCommand(PlayerCommandPreprocessEvent e) {
            if (!e.getMessage().equals(command)) return;
            if (!e.getPlayer().equals(player)) return;
            player.sendMessage("Ура, вы ввели ее снова!");
            e.setCancelled(true);
            Main.unregisterEvent(this);
        }
        
        @EventHandler
        private void onQuit(PlayerQuitEvent e) {
            if (e.getPlayer().equals(player))
                Main.unregisterEvent(this);
        }
    }
}
 
Если решать в лоб - то можно добавлять игрока и команду в Map<Player, String>. При вводе команды проверять, если ли запись в мапе - если есть - выполнять, нет - уведомлять игрока и добавлять в мапу. Не забудь чистить мапу при выходе игрока.
Спасибо!
Хорошо бы удалить его по истечению времени, но тут я разберусь
 
Назад
Сверху Снизу