mirror of
https://github.com/taoneill/war.git
synced 2025-04-09 13:35:42 +02:00
Merge pull request #635 from cmastudios/multiworld-loadout-hotfix
Fix incompabilities with per-world inventories.
This commit is contained in:
commit
da14a8fc4d
@ -832,12 +832,15 @@ public class Warzone {
|
|||||||
Team lowestNoOfPlayers = null;
|
Team lowestNoOfPlayers = null;
|
||||||
for (Team t : this.teams) {
|
for (Team t : this.teams) {
|
||||||
if (lowestNoOfPlayers == null || (lowestNoOfPlayers != null && lowestNoOfPlayers.getPlayers().size() > t.getPlayers().size())) {
|
if (lowestNoOfPlayers == null || (lowestNoOfPlayers != null && lowestNoOfPlayers.getPlayers().size() > t.getPlayers().size())) {
|
||||||
if (War.war.canPlayWar(player, t)) {
|
if (War.war.canPlayWar(player, t)) {
|
||||||
lowestNoOfPlayers = t;
|
lowestNoOfPlayers = t;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (lowestNoOfPlayers != null) {
|
if (lowestNoOfPlayers != null) {
|
||||||
|
if (player.getWorld() != this.getWorld()) {
|
||||||
|
player.teleport(this.getWorld().getSpawnLocation());
|
||||||
|
}
|
||||||
lowestNoOfPlayers.addPlayer(player);
|
lowestNoOfPlayers.addPlayer(player);
|
||||||
lowestNoOfPlayers.resetSign();
|
lowestNoOfPlayers.resetSign();
|
||||||
if (!this.hasPlayerState(player.getName())) {
|
if (!this.hasPlayerState(player.getName())) {
|
||||||
|
@ -83,10 +83,13 @@ public class JoinCommand extends AbstractWarCommand {
|
|||||||
boolean foundTeam = false;
|
boolean foundTeam = false;
|
||||||
for (Team team : teams) {
|
for (Team team : teams) {
|
||||||
if (team.getName().startsWith(name) || team.getKind() == kind) {
|
if (team.getName().startsWith(name) || team.getKind() == kind) {
|
||||||
if (!War.war.canPlayWar(player, team)) {
|
if (!War.war.canPlayWar(player, team)) {
|
||||||
this.badMsg("You don't have permission to join this team.");
|
this.badMsg("You don't have permission to join this team.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (player.getWorld() != zone.getWorld()) {
|
||||||
|
player.teleport(zone.getWorld().getSpawnLocation());
|
||||||
|
}
|
||||||
if (!zone.hasPlayerState(player.getName())) {
|
if (!zone.hasPlayerState(player.getName())) {
|
||||||
zone.keepPlayerState(player);
|
zone.keepPlayerState(player);
|
||||||
this.msg("Your inventory is in storage until you use '/war leave'.");
|
this.msg("Your inventory is in storage until you use '/war leave'.");
|
||||||
|
@ -9,6 +9,7 @@ import com.tommytony.war.Team;
|
|||||||
import com.tommytony.war.War;
|
import com.tommytony.war.War;
|
||||||
import com.tommytony.war.Warzone;
|
import com.tommytony.war.Warzone;
|
||||||
import com.tommytony.war.structure.ZoneLobby;
|
import com.tommytony.war.structure.ZoneLobby;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
|
||||||
public class ResetZoneCommand extends AbstractZoneMakerCommand {
|
public class ResetZoneCommand extends AbstractZoneMakerCommand {
|
||||||
@ -46,7 +47,9 @@ public class ResetZoneCommand extends AbstractZoneMakerCommand {
|
|||||||
zone.clearThieves();
|
zone.clearThieves();
|
||||||
for (Team team : zone.getTeams()) {
|
for (Team team : zone.getTeams()) {
|
||||||
team.teamcast("The war has ended. " + zone.getTeamInformation() + " Resetting warzone " + zone.getName() + " and teams...");
|
team.teamcast("The war has ended. " + zone.getTeamInformation() + " Resetting warzone " + zone.getName() + " and teams...");
|
||||||
for (Player p : team.getPlayers()) {
|
for (Iterator<Player> it = team.getPlayers().iterator(); it.hasNext();) {
|
||||||
|
Player p = it.next();
|
||||||
|
it.remove();
|
||||||
zone.restorePlayerState(p);
|
zone.restorePlayerState(p);
|
||||||
p.teleport(zone.getTeleport());
|
p.teleport(zone.getTeleport());
|
||||||
War.war.msg(p, "You have left the warzone. Your inventory is being restored.");
|
War.war.msg(p, "You have left the warzone. Your inventory is being restored.");
|
||||||
|
@ -45,6 +45,7 @@ import com.tommytony.war.utility.Loadout;
|
|||||||
import com.tommytony.war.utility.LoadoutSelection;
|
import com.tommytony.war.utility.LoadoutSelection;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author tommytony, Tim Düsterhus
|
* @author tommytony, Tim Düsterhus
|
||||||
@ -310,10 +311,10 @@ public class WarPlayerListener implements Listener {
|
|||||||
|
|
||||||
if (noOfPlayers < totalCap) {
|
if (noOfPlayers < totalCap) {
|
||||||
boolean assigned = zone.autoAssign(player) != null ? true : false;
|
boolean assigned = zone.autoAssign(player) != null ? true : false;
|
||||||
if (!assigned) {
|
if (!assigned) {
|
||||||
event.setTo(zone.getTeleport());
|
event.setTo(zone.getTeleport());
|
||||||
War.war.badMsg(player, "You don't have permission for any of the available teams in this warzone");
|
War.war.badMsg(player, "You don't have permission for any of the available teams in this warzone");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (War.war.getWarHub() != null && assigned) {
|
if (War.war.getWarHub() != null && assigned) {
|
||||||
War.war.getWarHub().resetZoneSign(zone);
|
War.war.getWarHub().resetZoneSign(zone);
|
||||||
@ -334,7 +335,10 @@ public class WarPlayerListener implements Listener {
|
|||||||
if (zone.getWarzoneConfig().getBoolean(WarzoneConfig.DISABLED)) {
|
if (zone.getWarzoneConfig().getBoolean(WarzoneConfig.DISABLED)) {
|
||||||
this.handleDisabledZone(event, player, zone);
|
this.handleDisabledZone(event, player, zone);
|
||||||
} else if (team.getPlayers().size() < team.getTeamConfig().resolveInt(TeamConfig.TEAMSIZE)
|
} else if (team.getPlayers().size() < team.getTeamConfig().resolveInt(TeamConfig.TEAMSIZE)
|
||||||
&& War.war.canPlayWar(player, team)) {
|
&& War.war.canPlayWar(player, team)) {
|
||||||
|
if (player.getWorld() != zone.getWorld()) {
|
||||||
|
player.teleport(zone.getWorld().getSpawnLocation());
|
||||||
|
}
|
||||||
team.addPlayer(player);
|
team.addPlayer(player);
|
||||||
team.resetSign();
|
team.resetSign();
|
||||||
if (War.war.getWarHub() != null) {
|
if (War.war.getWarHub() != null) {
|
||||||
@ -346,7 +350,7 @@ public class WarPlayerListener implements Listener {
|
|||||||
for (Team t : zone.getTeams()) {
|
for (Team t : zone.getTeams()) {
|
||||||
t.teamcast("" + player.getName() + " joined team " + team.getName() + ".");
|
t.teamcast("" + player.getName() + " joined team " + team.getName() + ".");
|
||||||
}
|
}
|
||||||
} else if (!War.war.canPlayWar(player, team)) {
|
} else if (!War.war.canPlayWar(player, team)) {
|
||||||
event.setTo(zone.getTeleport());
|
event.setTo(zone.getTeleport());
|
||||||
War.war.badMsg(player, "You don't have permission to join team " + team.getName());
|
War.war.badMsg(player, "You don't have permission to join team " + team.getName());
|
||||||
} else {
|
} else {
|
||||||
@ -484,6 +488,10 @@ public class WarPlayerListener implements Listener {
|
|||||||
team.teamcast(player.getName() + " dropped the " + bomb.getName() + " bomb!");
|
team.teamcast(player.getName() + " dropped the " + bomb.getName() + " bomb!");
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
} else {
|
||||||
|
// Get player back to spawn
|
||||||
|
playerWarzone.respawnPlayer(event, playerTeam, player);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -878,6 +886,68 @@ public class WarPlayerListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerTeleport(final PlayerTeleportEvent event) {
|
||||||
|
if (War.war.isLoaded()) {
|
||||||
|
Warzone playerWarzone = Warzone.getZoneByPlayerName(event.getPlayer().getName());
|
||||||
|
Team playerTeam = Team.getTeamByPlayerName(event.getPlayer().getName());
|
||||||
|
if (playerWarzone != null) {
|
||||||
|
if (!playerWarzone.getVolume().contains(event.getTo())) {
|
||||||
|
// Prevent teleporting out of the warzone
|
||||||
|
if (!playerWarzone.getWarzoneConfig().getBoolean(WarzoneConfig.REALDEATHS)) {
|
||||||
|
War.war.badMsg(event.getPlayer(), "Use /leave (or /war leave) to exit the zone.");
|
||||||
|
}
|
||||||
|
if (playerWarzone.isFlagThief(event.getPlayer().getName())) {
|
||||||
|
Team victimTeam = playerWarzone.getVictimTeamForFlagThief(event.getPlayer().getName());
|
||||||
|
|
||||||
|
// Get event.getPlayer() back to spawn
|
||||||
|
playerWarzone.respawnPlayer(event, playerTeam, event.getPlayer());
|
||||||
|
playerWarzone.removeFlagThief(event.getPlayer().getName());
|
||||||
|
|
||||||
|
// Bring back flag of victim team
|
||||||
|
victimTeam.getFlagVolume().resetBlocks();
|
||||||
|
victimTeam.initializeTeamFlag();
|
||||||
|
|
||||||
|
for (Team team : playerWarzone.getTeams()) {
|
||||||
|
team.teamcast(event.getPlayer().getName() + " dropped the " + victimTeam.getName() + " flag!");
|
||||||
|
}
|
||||||
|
} else if (playerWarzone.isCakeThief(event.getPlayer().getName())) {
|
||||||
|
Cake cake = playerWarzone.getCakeForThief(event.getPlayer().getName());
|
||||||
|
|
||||||
|
// Get event.getPlayer() back to spawn
|
||||||
|
playerWarzone.respawnPlayer(event, playerTeam, event.getPlayer());
|
||||||
|
playerWarzone.removeCakeThief(event.getPlayer().getName());
|
||||||
|
|
||||||
|
// Bring back cake
|
||||||
|
cake.getVolume().resetBlocks();
|
||||||
|
cake.addCakeBlocks();
|
||||||
|
|
||||||
|
for (Team team : playerWarzone.getTeams()) {
|
||||||
|
team.teamcast(event.getPlayer().getName() + " dropped the " + cake.getName() + " cake!");
|
||||||
|
}
|
||||||
|
} else if (playerWarzone.isBombThief(event.getPlayer().getName())) {
|
||||||
|
Bomb bomb = playerWarzone.getBombForThief(event.getPlayer().getName());
|
||||||
|
|
||||||
|
// Get event.getPlayer() back to spawn
|
||||||
|
playerWarzone.respawnPlayer(event, playerTeam, event.getPlayer());
|
||||||
|
playerWarzone.removeBombThief(event.getPlayer().getName());
|
||||||
|
|
||||||
|
// Bring back bomb
|
||||||
|
bomb.getVolume().resetBlocks();
|
||||||
|
bomb.addBombBlocks();
|
||||||
|
|
||||||
|
for (Team team : playerWarzone.getTeams()) {
|
||||||
|
team.teamcast(event.getPlayer().getName() + " dropped the " + bomb.getName() + " bomb!");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Get event.getPlayer() back to spawn
|
||||||
|
playerWarzone.respawnPlayer(event, playerTeam, event.getPlayer());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void purgeLatestPositions() {
|
public void purgeLatestPositions() {
|
||||||
this.latestLocations.clear();
|
this.latestLocations.clear();
|
||||||
|
Loading…
Reference in New Issue
Block a user