- Баллы
- 76
Нужно в определенном мире сделать так, чтобы игроки не могли толкаться (отключить для них коллизию). Так как Player#setCollidable(bool) не работает, я попробовал вариант с добавлением опции COLLISION_RULE = NEVER к группе игрока, но это по-прежнему не работает. Код прилагаю. Подскажите, пожалуйста, что я делаю не так или, возможно, есть способ проще, без таких костылей.
PHP:
@EventHandler(priority = EventPriority.HIGHEST)
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
manageCollidable(player);
}
private void manageCollidable(Player player) {
Team noCollisionTeam = player.getScoreboard().getTeam("noCollision");
if (noCollisionTeam == null) {
noCollisionTeam = player.getScoreboard().registerNewTeam("noCollision");
}
if (noCollisionTeam.getOption(Team.Option.COLLISION_RULE) != Team.OptionStatus.NEVER)
noCollisionTeam.setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.NEVER);
if (service.getRestrictedWorlds().contains(player.getWorld()))
noCollisionTeam.addEntry(player.getName());
else
noCollisionTeam.removeEntry(player.getName());
}