Помогите Как запретить выполнять команду игроку?

BrainStudio

Новичок
Пользователь
Баллы
6
Как запретить выполнять команду игроку кодом?
 
Команду из твоего собственного плагина или из второстепенного?
 
Вот код в Listener
Код:
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;

public class Events implements Listener {
    
    @EventHandler
    public void onCommandPreprocess(PlayerCommandPreprocessEvent event) {
        if(event.getMessage().equalsIgnoreCase("/ban")) {
            if(CMD.status == true) {
            Main.bans++;
            } else {
        }
        if(event.getMessage().equalsIgnoreCase("/mute")) {
            if(CMD.status == true) {
            Main.mutes++;   
            }
        }
        if(event.getMessage().equalsIgnoreCase("/warn")) {
            if(CMD.status == true) {
            Main.warns++;
            }
        }
    }

    }
}
 
Вот код в Listener
Код:
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;

public class Events implements Listener {
   
    @EventHandler
    public void onCommandPreprocess(PlayerCommandPreprocessEvent event) {
        if(event.getMessage().equalsIgnoreCase("/ban")) {
            if(CMD.status == true) {
            Main.bans++;
            } else {
        }
        if(event.getMessage().equalsIgnoreCase("/mute")) {
            if(CMD.status == true) {
            Main.mutes++;  
            }
        }
        if(event.getMessage().equalsIgnoreCase("/warn")) {
            if(CMD.status == true) {
            Main.warns++;
            }
        }
    }

    }
}
Начало верное.
Там, где нужно отменить выполнение команды, используй event.setCancelled(true);
 
Код:
package ru.bs.sw;

import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;

public class Events implements Listener {
    
    
    @EventHandler
    public void onCommandPreprocess(PlayerCommandPreprocessEvent event) {
        Player p = (Player) event;
        if(event.getMessage().equalsIgnoreCase("/ban")) {
            if(CMD.status == true) {
            Main.bans++;
            } else {
                p.sendMessage("§cДля выполнения команды необходимо включить режим работы: §e/sw on");
                event.setCancelled(true);
        }
        if(event.getMessage().equalsIgnoreCase("/mute")) {
            if(CMD.status == true) {
            Main.mutes++;   
            }
        }
        if(event.getMessage().equalsIgnoreCase("/warn")) {
            if(CMD.status == true) {
            Main.warns++;
            }
        }
    }
    }
}
 
Код:
package ru.bs.sw;

import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;

public class Events implements Listener {
   
   
    @EventHandler
    public void onCommandPreprocess(PlayerCommandPreprocessEvent event) {
        Player p = (Player) event;
        if(event.getMessage().equalsIgnoreCase("/ban")) {
            if(CMD.status == true) {
            Main.bans++;
            } else {
                p.sendMessage("§cДля выполнения команды необходимо включить режим работы: §e/sw on");
                event.setCancelled(true);
        }
        if(event.getMessage().equalsIgnoreCase("/mute")) {
            if(CMD.status == true) {
            Main.mutes++;  
            }
        }
        if(event.getMessage().equalsIgnoreCase("/warn")) {
            if(CMD.status == true) {
            Main.warns++;
            }
        }
    }
    }
}
Ты не во всех случаях отменил ивент. В этом твоя проблема?
 
Нет, мне нужно только команду /ban
А что именно не работает?
Кстати, тебе нужно поменять метод equalsIgnoreCase() на startsWith(), потому что игрок может вводить команду с аргументами (с твоими командами это будет в 99% случаев)
 
А что именно не работает?
Кстати, тебе нужно поменять метод equalsIgnoreCase() на startsWith(), потому что игрок может вводить команду с аргументами (с твоими командами это будет в 99% случаев)
Команда /ban выполняется всё равно
 
Назад
Верх