2015-05-26 3 views
0

Я работаю над чем-то, где я использую событие OnPlayerTeleport, и я пытался найти способ получить имя игрока, который отправил команду. Это легко, если игрок телепортировал их самостоятельно, потому что, очевидно, вы могли бы использовать event.getPlayer().Получить команду отправителя onPlayerTeleport Bukkit

Когда player1 телепортирует player2 на икру, player2 может совершить пожар. Мне нужен способ вернуть результат до player1, если телепорт был отменен.

ответ

0

Слушайте команду, а не ее поведение. Вы можете использовать PlayerCommandPreprocessEvent.

@EventHandler(priority = EventPriority.MONITOR) 
public void onCommand(PlayerCommandPreprocessEvent event) { 
    String label = event.getMessage(); 
    String[] components = label.split(" "); 
    if (components[0].equalsIgnoreCase("/tp")) { 
     Player sender = event.getPlayer(); 
     // Here you go 
    } 
} 
+0

Даже если вы должны были проверить, что пользователь выполнил команду, вы должны утверждать, что команда либо '/ tp', либо'/tp (что-то еще, кроме места, которое необходимо) ', иначе вы наверняка поймаете нерелевантные команды типа'/tptoggle' (из Essentials). – Unihedron

+0

@Unihedron Ответ обновлен. –

0

Вы должны проверить, кто написал команду (/ TP p1 p2), например, с помощью класса, простирающейся JavaPlugin и содержащего

onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) 

В там, вы должны быть в состоянии обнаружить, кто является отправителем, проверив для вас аргументы и отправителя.

+0

Эй, я пробовал это, и я не мог заставить его работать так, как я этого хотел. Мне нужно, чтобы событие запускалось с любой командой, но оно срабатывает только по определенной команде. Мне нужно стрелять на всех, потому что это не мой плагин, который на самом деле его обрабатывает. Например, плагин Multiverse имеет собственную команду телепорта. – Jordan

Смежные вопросы