Вопрос Как скрыть игрока от других Bukkit?

Yagupov_v

Пользователь
Сообщения
3
Пишу свой плагин (без лишнего ФК и т.д.)
Сделал вполне простую структуру, которая в идее должна работать:
public class PlayerHidingPlugin extends JavaPlugin implements Listener {
private Set<Player> hiddenPlayers = new HashSet<>();
@Override
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
hidePlayer(player);
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event) {
Player player = event.getPlayer();
// Удаляем игрока из списка скрытых при выходе
hiddenPlayers.remove(player);
}
public void hidePlayer(Player player) {
for (Player otherPlayer : getServer().getOnlinePlayers()) {
if (!otherPlayer.equals(player)) {
// Скрываем игрока от других игроков
otherPlayer.hidePlayer(this, player);
}
}
hiddenPlayers.add(player);
}
public void showPlayer(Player player) {
for (Player otherPlayer : getServer().getOnlinePlayers()) {
if (!otherPlayer.equals(player)) {
// Отображаем игрока для других игроков
otherPlayer.showPlayer(this, player);
}
}
hiddenPlayers.remove(player);
}
}
Тем не менее при входе на сервер игроки водят друг-друга, как можно решить?
 
Решение
Попробую, хотя вроде я уже пробовал ранее так тыкать код, но даже если так, то по сути игрок мог бы видеть других, но другие не могли бы видеть игрока, такая же логика?
Я имею ввиду не менять одно на другое, а добавить.

Java:
otherPlayer.hidePlayer(this, player);
player.hidePlayer(this, otherPlayer);

otherPlayer.showPlayer(this, player);
player.showPlayer(this, otherPlayer);
Помимо otherPlayer.(hide/show)Player(this, player); скрывайте/показывайте otherPlayer относительно player: player.(hide/show)Player(this, otherPlayer);, если я правильно понял вашу проблему.
Попробую, хотя вроде я уже пробовал ранее так тыкать код, но даже если так, то по сути игрок мог бы видеть других, но другие не могли бы видеть игрока, такая же логика?
 
Попробую, хотя вроде я уже пробовал ранее так тыкать код, но даже если так, то по сути игрок мог бы видеть других, но другие не могли бы видеть игрока, такая же логика?
Я имею ввиду не менять одно на другое, а добавить.

Java:
otherPlayer.hidePlayer(this, player);
player.hidePlayer(this, otherPlayer);

otherPlayer.showPlayer(this, player);
player.showPlayer(this, otherPlayer);
 
Я имею ввиду не менять одно на другое, а добавить.

Java:
otherPlayer.hidePlayer(this, player);
player.hidePlayer(this, otherPlayer);

otherPlayer.showPlayer(this, player);
player.showPlayer(this, otherPlayer);
Это действительно помогло, большое спасибо!
 
Назад
Сверху Снизу