From b0a15ca1ea5a6c1198105baf632858c6f9b9f710 Mon Sep 17 00:00:00 2001 From: Zach Brown <1254957+zachbr@users.noreply.github.com> Date: Thu, 8 Sep 2016 12:39:40 -0500 Subject: [PATCH] Further safety for player collision setting Hopefully the end of similar problems Fixes GH-415 --- .../Configurable-Player-Collision.patch | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Spigot-Server-Patches/Configurable-Player-Collision.patch b/Spigot-Server-Patches/Configurable-Player-Collision.patch index a66b26996f..a62b214dcc 100644 --- a/Spigot-Server-Patches/Configurable-Player-Collision.patch +++ b/Spigot-Server-Patches/Configurable-Player-Collision.patch @@ -66,8 +66,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 entityplayer.syncInventory(); + // Paper start - Add to collideRule team if needed -+ if (this.collideRuleTeamName != null) { -+ this.server.getWorld().getScoreboard().addPlayerToTeam(entityplayer.getName(), collideRuleTeamName); ++ final Scoreboard scoreboard = this.getServer().getWorld().getScoreboard(); ++ if (this.collideRuleTeamName != null && scoreboard.getTeam(collideRuleTeamName) != null && entityplayer.getTeam() == null) { ++ scoreboard.addPlayerToTeam(entityplayer.getName(), collideRuleTeamName); + } + // Paper end // CraftBukkit - Moved from above, added world @@ -79,9 +80,11 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + // Paper start - Remove from collideRule team if needed + if (this.collideRuleTeamName != null) { -+ Scoreboard scoreBoard = this.server.getWorld().getScoreboard(); -+ ScoreboardTeam team = scoreBoard.getTeam(this.collideRuleTeamName); -+ if (team != null) scoreBoard.removePlayerFromTeam(entityplayer.getName(), team); ++ final Scoreboard scoreBoard = this.server.getWorld().getScoreboard(); ++ final ScoreboardTeam team = scoreBoard.getTeam(this.collideRuleTeamName); ++ if (entityplayer.getTeam() == team && team != null) { ++ scoreBoard.removePlayerFromTeam(entityplayer.getName(), team); ++ } + } + // Paper end + @@ -95,8 +98,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - + // Paper start - Remove collideRule team if it exists + if (this.collideRuleTeamName != null) { -+ Scoreboard scoreboard = this.getServer().getWorld().getScoreboard(); -+ ScoreboardTeam team = scoreboard.getTeam(this.collideRuleTeamName); ++ final Scoreboard scoreboard = this.getServer().getWorld().getScoreboard(); ++ final ScoreboardTeam team = scoreboard.getTeam(this.collideRuleTeamName); + if (team != null) scoreboard.removeTeam(team); + } + // Paper end