mirror of
https://github.com/taoneill/war.git
synced 2025-03-12 06:32:12 +01:00
Closes gh-61. Resetting zone when last player leaves (joining when a zone has been deserted for a while kinda sucks).
This commit is contained in:
parent
b775997046
commit
29353f9c73
@ -964,33 +964,43 @@ public class Warzone {
|
|||||||
public void handlePlayerLeave(Player player, Location destination) {
|
public void handlePlayerLeave(Player player, Location destination) {
|
||||||
Team playerTeam = war.getPlayerTeam(player.getName());
|
Team playerTeam = war.getPlayerTeam(player.getName());
|
||||||
if(playerTeam !=null) {
|
if(playerTeam !=null) {
|
||||||
Warzone zone = war.getPlayerTeamWarzone(player.getName());
|
|
||||||
playerTeam.removePlayer(player.getName());
|
playerTeam.removePlayer(player.getName());
|
||||||
playerTeam.resetSign();
|
playerTeam.resetSign();
|
||||||
if(zone != null) {
|
if(this.isFlagThief(player.getName())) {
|
||||||
if(zone.isFlagThief(player.getName())) {
|
Team victim = this.getVictimTeamForThief(player.getName());
|
||||||
Team victim = zone.getVictimTeamForThief(player.getName());
|
|
||||||
victim.getFlagVolume().resetBlocks();
|
victim.getFlagVolume().resetBlocks();
|
||||||
victim.initializeTeamFlag();
|
victim.initializeTeamFlag();
|
||||||
zone.removeThief(player.getName());
|
this.removeThief(player.getName());
|
||||||
for(Team t : zone.getTeams()) {
|
for(Team t : this.getTeams()) {
|
||||||
t.teamcast("Team " + victim.getName() + " flag was returned.");
|
t.teamcast("Team " + victim.getName() + " flag was returned.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(zone.getLobby() != null) {
|
if(this.getLobby() != null) {
|
||||||
zone.getLobby().resetTeamGateSign(playerTeam);
|
this.getLobby().resetTeamGateSign(playerTeam);
|
||||||
}
|
}
|
||||||
if(zone.hasPlayerInventory(player.getName())) {
|
if(this.hasPlayerInventory(player.getName())) {
|
||||||
zone.restorePlayerInventory(player);
|
this.restorePlayerInventory(player);
|
||||||
}
|
}
|
||||||
player.teleportTo(destination);
|
player.teleportTo(destination);
|
||||||
war.msg(player, "Left the zone. Your inventory has (hopefully) been restored.");
|
war.msg(player, "Left the zone. Your inventory has (hopefully) been restored.");
|
||||||
if(war.getWarHub() != null) {
|
if(war.getWarHub() != null) {
|
||||||
war.getWarHub().resetZoneSign(zone);
|
war.getWarHub().resetZoneSign(this);
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean zoneEmpty = true;
|
||||||
|
for(Team team : this.getTeams()) {
|
||||||
|
if(team.getPlayers().size() > 0) {
|
||||||
|
zoneEmpty = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(zoneEmpty) {
|
||||||
|
// reset the zone for a new game when the last player leaves
|
||||||
|
int resetBlocks = this.getVolume().resetBlocks();
|
||||||
|
this.initializeZone();
|
||||||
|
war.logInfo("Last player left warzone " + this.getName() + ". " + resetBlocks + " blocks reset automatically.");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isEnemyTeamFlagBlock(Team playerTeam, Block block) {
|
public boolean isEnemyTeamFlagBlock(Team playerTeam, Block block) {
|
||||||
|
Loading…
Reference in New Issue
Block a user