- Баллы
- 6
Как запретить выполнять команду игроку кодом?
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Вы не поняли, мне нужно это сделать именно в плагине.Не выдавать права на нее.
if(sender.hasPermission(право)) {...}Вы не поняли, мне нужно это сделать именно в плагине.
Мне нужно чтобы пока Boolean status не равнялся true запретить выполнение команд: /ban, /mute, /warnif(sender.hasPermission(право)) {...}
И в чем проблема? Такая же ифка по булеву. Только конфиг сам хранишь для каждого игрока.Мне нужно чтобы пока Boolean status не равнялся true запретить выполнение команд: /ban, /mute, /warn
Мне нужно вообще чтоб игрок не мог выполнять эту командуИ в чем проблема? Такая же ифка по булеву. Только конфиг сам хранишь для каждого игрока.
Ну ставишь return true; после ифки, что бы код обработки бана не выполнялся.Мне нужно вообще чтоб игрок не мог выполнять эту команду
ВторостепенногоКоманду из твоего собственного плагина или из второстепенного?
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Ты не во всех случаях отменил ивент. В этом твоя проблема?
А что именно не работает?Нет, мне нужно только команду /ban
Команда /ban выполняется всё равноА что именно не работает?
Кстати, тебе нужно поменять метод equalsIgnoreCase() на startsWith(), потому что игрок может вводить команду с аргументами (с твоими командами это будет в 99% случаев)
Поменял то, что я тебе сказал?Команда /ban выполняется всё равно