Added logic to avoid collisions with non-normal players, and removed some old print statement.
This commit is contained in:
parent
935cbd1393
commit
3dcf503338
|
@ -168,7 +168,6 @@ public class CommunicationHandler {
|
|||
OtherPlayer player = new OtherPlayer(in.readInt(), in.readString());
|
||||
int teamId = in.readInt();
|
||||
if (teamId != -1) player.setTeam(client.getTeams().get(teamId));
|
||||
System.out.println(teamId);
|
||||
player.getPosition().set(in.readFloat(), in.readFloat(), in.readFloat());
|
||||
player.getVelocity().set(in.readFloat(), in.readFloat(), in.readFloat());
|
||||
player.getOrientation().set(in.readFloat(), in.readFloat());
|
||||
|
|
|
@ -5,6 +5,7 @@ import nl.andrewl.aos2_server.model.ServerPlayer;
|
|||
import nl.andrewl.aos2_server.model.ServerProjectile;
|
||||
import nl.andrewl.aos_core.Directions;
|
||||
import nl.andrewl.aos_core.model.Player;
|
||||
import nl.andrewl.aos_core.model.PlayerMode;
|
||||
import nl.andrewl.aos_core.model.Projectile;
|
||||
import nl.andrewl.aos_core.model.item.Gun;
|
||||
import nl.andrewl.aos_core.model.world.Hit;
|
||||
|
@ -111,13 +112,17 @@ public class ProjectileManager {
|
|||
ServerPlayer hitPlayer = null;
|
||||
int playerHitType = -1;
|
||||
for (ServerPlayer player : server.getPlayerManager().getPlayers()) {
|
||||
// Don't allow players to shoot themselves.
|
||||
if (projectile.getPlayer() != null && projectile.getPlayer().equals(player)) continue;
|
||||
// Don't check for collisions with team players, if friendly fire is disabled.
|
||||
// First, skip any players that can't be hit by bullets.
|
||||
if (
|
||||
// Only normal players can be hit.
|
||||
player.getMode() != PlayerMode.NORMAL ||
|
||||
// Don't allow players to shoot themselves.
|
||||
(projectile.getPlayer() != null && projectile.getPlayer().equals(player)) ||
|
||||
(// If friendly fire is disabled, don't allow it!
|
||||
!server.getConfig().actions.friendlyFire &&
|
||||
projectile.getPlayer() != null && projectile.getPlayer().getTeam() != null &&
|
||||
projectile.getPlayer().getTeam().equals(player.getTeam())
|
||||
)
|
||||
) continue;
|
||||
|
||||
Vector3f headPos = player.getEyePosition();
|
||||
|
|
|
@ -21,6 +21,7 @@ public class PlayerModeCommand implements PlayerCommand {
|
|||
server.getPlayerManager().setMode(player, mode);
|
||||
handler.sendTcpMessage(new ClientInventoryMessage(player.getInventory()));
|
||||
server.getPlayerManager().broadcastUdpMessage(player.getUpdateMessage(System.currentTimeMillis()));
|
||||
handler.sendTcpMessage(ChatMessage.privateMessage("Your mode has been updated to " + mode.name() + "."));
|
||||
} catch (IllegalArgumentException e) {
|
||||
handler.sendTcpMessage(ChatMessage.privateMessage("Invalid mode. Should be NORMAL, CREATIVE, or SPECTATOR."));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue