Closes gh-272. Made flagreturn into an enum. Adding missing flag capture mode tidbits (setting wasn't being saved, made flag capture broadcast reflect the current mode).

This commit is contained in:
taoneill 2011-09-06 21:29:02 -04:00
parent c7af5843fb
commit cb9a34f5bd
8 changed files with 69 additions and 38 deletions

View File

@ -75,7 +75,7 @@ public class War extends JavaPlugin {
private boolean defaultAutoAssignOnly = false; private boolean defaultAutoAssignOnly = false;
private boolean defaultUnbreakableZoneBlocks = false; private boolean defaultUnbreakableZoneBlocks = false;
private boolean defaultNoCreatures = false; private boolean defaultNoCreatures = false;
private String defaultFlagReturn = "both"; private FlagReturn defaultFlagReturn = FlagReturn.BOTH;
private boolean defaultResetOnEmpty = false, defaultResetOnLoad = false, defaultResetOnUnload = false; private boolean defaultResetOnEmpty = false, defaultResetOnLoad = false, defaultResetOnUnload = false;
private TeamSpawnStyle defaultSpawnStyle = TeamSpawnStyle.BIG; private TeamSpawnStyle defaultSpawnStyle = TeamSpawnStyle.BIG;
private final HashMap<Integer, ItemStack> defaultReward = new HashMap<Integer, ItemStack>(); private final HashMap<Integer, ItemStack> defaultReward = new HashMap<Integer, ItemStack>();
@ -262,16 +262,16 @@ public class War extends JavaPlugin {
} }
if (namedParams.containsKey("spawnstyle")) { if (namedParams.containsKey("spawnstyle")) {
String spawnStyle = namedParams.get("spawnstyle"); String spawnStyle = namedParams.get("spawnstyle");
warzone.setSpawnStyle(TeamSpawnStyle.getStyleByString(spawnStyle)); warzone.setSpawnStyle(TeamSpawnStyle.getStyleFromString(spawnStyle));
} }
if (namedParams.containsKey("flagreturn")) { if (namedParams.containsKey("flagreturn")) {
String flagReturn = namedParams.get("flagreturn").toLowerCase(); String flagReturn = namedParams.get("flagreturn").toLowerCase();
if (flagReturn.equals("flag")) { if (flagReturn.equals("flag")) {
warzone.setFlagReturn("flag"); warzone.setFlagReturn(FlagReturn.FLAG);
} else if (flagReturn.equals("spawn")) { } else if (flagReturn.equals("spawn")) {
warzone.setFlagReturn("spawn"); warzone.setFlagReturn(FlagReturn.SPAWN);
} else { } else {
warzone.setFlagReturn("both"); warzone.setFlagReturn(FlagReturn.BOTH);
} }
} }
if (namedParams.containsKey("unbreakable")) { if (namedParams.containsKey("unbreakable")) {
@ -358,16 +358,16 @@ public class War extends JavaPlugin {
} }
if (namedParams.containsKey("spawnstyle")) { if (namedParams.containsKey("spawnstyle")) {
String spawnStyle = namedParams.get("spawnstyle"); String spawnStyle = namedParams.get("spawnstyle");
this.setDefaultSpawnStyle(TeamSpawnStyle.getStyleByString(spawnStyle)); this.setDefaultSpawnStyle(TeamSpawnStyle.getStyleFromString(spawnStyle));
} }
if (namedParams.containsKey("flagreturn")) { if (namedParams.containsKey("flagreturn")) {
String flagreturn = namedParams.get("flagreturn").toLowerCase(); String flagreturn = namedParams.get("flagreturn").toLowerCase();
if (flagreturn.equals("flag")) { if (flagreturn.equals("flag")) {
this.setDefaultFlagReturn("flag"); this.setDefaultFlagReturn(FlagReturn.FLAG);
} else if (flagreturn.equals("spawn")) { } else if (flagreturn.equals("spawn")) {
this.setDefaultFlagReturn("spawn"); this.setDefaultFlagReturn(FlagReturn.SPAWN);
} else { } else {
this.setDefaultFlagReturn("both"); this.setDefaultFlagReturn(FlagReturn.BOTH);
} }
} }
if (namedParams.containsKey("buildinzonesonly")) { if (namedParams.containsKey("buildinzonesonly")) {
@ -423,6 +423,7 @@ public class War extends JavaPlugin {
+ " autoassign:" + String.valueOf(zone.getAutoAssignOnly()) + " autoassign:" + String.valueOf(zone.getAutoAssignOnly())
+ " blockheads:" + String.valueOf(zone.isBlockHeads()) + " blockheads:" + String.valueOf(zone.isBlockHeads())
+ " spawnstyle:" + zone.getSpawnStyle() + " spawnstyle:" + zone.getSpawnStyle()
+ " flagreturn:" + zone.getFlagReturn()
+ " monumentheal:" + zone.getMonumentHeal() + " monumentheal:" + zone.getMonumentHeal()
+ " unbreakable:" + String.valueOf(zone.isUnbreakableZoneBlocks()) + " unbreakable:" + String.valueOf(zone.isUnbreakableZoneBlocks())
+ " disabled:" + String.valueOf(zone.isDisabled()) + " disabled:" + String.valueOf(zone.isDisabled())
@ -445,6 +446,7 @@ public class War extends JavaPlugin {
+ " autoassign:" + String.valueOf(War.war.isDefaultAutoAssignOnly()) + " autoassign:" + String.valueOf(War.war.isDefaultAutoAssignOnly())
+ " blockheads:" + String.valueOf(War.war.isDefaultBlockHeads()) + " blockheads:" + String.valueOf(War.war.isDefaultBlockHeads())
+ " spawnstyle:" + War.war.getDefaultSpawnStyle() + " spawnstyle:" + War.war.getDefaultSpawnStyle()
+ " flagreturn:" + War.war.getDefaultFlagReturn()
+ " monumentheal:" + War.war.getDefaultMonumentHeal() + " monumentheal:" + War.war.getDefaultMonumentHeal()
+ " unbreakable:" + String.valueOf(War.war.isDefaultUnbreakableZoneBlocks()) + " unbreakable:" + String.valueOf(War.war.isDefaultUnbreakableZoneBlocks())
+ " nocreatures:" + String.valueOf(War.war.isDefaultNoCreatures()) + " nocreatures:" + String.valueOf(War.war.isDefaultNoCreatures())
@ -867,11 +869,11 @@ public class War extends JavaPlugin {
this.defaultSpawnStyle = defaultSpawnStyle; this.defaultSpawnStyle = defaultSpawnStyle;
} }
public void setDefaultFlagReturn(String defaultFlagReturn) { public void setDefaultFlagReturn(FlagReturn defaultFlagReturn) {
this.defaultFlagReturn = defaultFlagReturn; this.defaultFlagReturn = defaultFlagReturn;
} }
public String getDefaultFlagReturn() { public FlagReturn getDefaultFlagReturn() {
return defaultFlagReturn; return defaultFlagReturn;
} }

View File

@ -13,6 +13,7 @@ import org.bukkit.event.block.BlockListener;
import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import com.tommytony.war.FlagReturn;
import com.tommytony.war.Monument; import com.tommytony.war.Monument;
import com.tommytony.war.Team; import com.tommytony.war.Team;
import com.tommytony.war.Warzone; import com.tommytony.war.Warzone;
@ -182,14 +183,21 @@ public class WarBlockListener extends BlockListener {
warzone.addFlagThief(lostFlagTeam, player.getName()); warzone.addFlagThief(lostFlagTeam, player.getName());
block.setType(Material.AIR); block.setType(Material.AIR);
String spawnOrFlag = "spawn or flag";
if (warzone.getFlagReturn() == FlagReturn.FLAG || warzone.getFlagReturn() == FlagReturn.SPAWN) {
spawnOrFlag = warzone.getFlagReturn().toString();
}
for (Team t : warzone.getTeams()) { for (Team t : warzone.getTeams()) {
t.teamcast(team.getKind().getColor() + player.getName() + ChatColor.WHITE + " stole team " + lostFlagTeam.getName() + "'s flag."); t.teamcast(team.getKind().getColor() + player.getName() + ChatColor.WHITE + " stole team " + lostFlagTeam.getName() + "'s flag.");
if (t.getName().equals(lostFlagTeam.getName())) { if (t.getName().equals(lostFlagTeam.getName())) {
t.teamcast("Prevent " + team.getKind().getColor() + player.getName() + ChatColor.WHITE t.teamcast("Prevent " + team.getKind().getColor() + player.getName() + ChatColor.WHITE
+ " from reaching team " + team.getName() + "'s spawn or flag."); + " from reaching team " + team.getName() + "'s " + spawnOrFlag + ".");
} }
} }
War.war.msg(player, "You have team " + lostFlagTeam.getName() + "'s flag. Reach your team spawn or flag to capture it!");
War.war.msg(player, "You have team " + lostFlagTeam.getName() + "'s flag. Reach your team " + spawnOrFlag + " to capture it!");
} else { } else {
War.war.msg(player, "You can't steal team " + lostFlagTeam.getName() + "'s flag since no players are on that team."); War.war.msg(player, "You can't steal team " + lostFlagTeam.getName() + "'s flag since no players are on that team.");
} }

View File

@ -21,6 +21,7 @@ import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory; import org.bukkit.inventory.PlayerInventory;
import com.tommytony.war.FlagReturn;
import com.tommytony.war.Team; import com.tommytony.war.Team;
import com.tommytony.war.WarHub; import com.tommytony.war.WarHub;
import com.tommytony.war.Warzone; import com.tommytony.war.Warzone;
@ -375,18 +376,18 @@ public class WarPlayerListener extends PlayerListener {
boolean inSpawn = playerTeam.getSpawnVolume().contains(player.getLocation()); boolean inSpawn = playerTeam.getSpawnVolume().contains(player.getLocation());
boolean inFlag = (playerTeam.getFlagVolume() != null && playerTeam.getFlagVolume().contains(player.getLocation())); boolean inFlag = (playerTeam.getFlagVolume() != null && playerTeam.getFlagVolume().contains(player.getLocation()));
if (playerWarzone.equals("both")) { if (playerWarzone.getFlagReturn() == FlagReturn.BOTH) {
if (!inSpawn && !inFlag) return; if (!inSpawn && !inFlag) return;
} else if (playerWarzone.equals("spawn")) { } else if (playerWarzone.getFlagReturn() == FlagReturn.SPAWN) {
if (inFlag) { if (inFlag) {
War.war.badMsg(player, "You have to unload the flag at your spawn."); War.war.badMsg(player, "You have to capture the enemy flag at your team's spawn.");
return; return;
} else if (!inSpawn) { } else if (!inSpawn) {
return; return;
} }
} else if (playerWarzone.equals("flag")) { } else if (playerWarzone.getFlagReturn() == FlagReturn.FLAG) {
if (inSpawn) { if (inSpawn) {
War.war.badMsg(player, "You have to unload the flag at your flag."); War.war.badMsg(player, "You have to capture the enemy flag at your team's flag.");
return; return;
} else if (!inFlag) { } else if (!inFlag) {
return; return;

View File

@ -0,0 +1,22 @@
package com.tommytony.war;
public enum FlagReturn {
BOTH,
FLAG,
SPAWN;
@Override
public String toString() {
return super.toString().toLowerCase();
}
public static FlagReturn getFromString(String string) {
for (FlagReturn flagMode : FlagReturn.values()) {
if (string.toLowerCase().equals(flagMode.toString())) {
return flagMode;
}
}
return FlagReturn.BOTH;
}
}

View File

@ -16,7 +16,7 @@ public enum TeamSpawnStyle {
return super.toString().toLowerCase(); return super.toString().toLowerCase();
} }
public static TeamSpawnStyle getStyleByString(String string) { public static TeamSpawnStyle getStyleFromString(String string) {
for (TeamSpawnStyle style : TeamSpawnStyle.values()) { for (TeamSpawnStyle style : TeamSpawnStyle.values()) {
if (string.toLowerCase().equals(style.toString())) { if (string.toLowerCase().equals(style.toString())) {
return style; return style;

View File

@ -46,7 +46,7 @@ public class Warzone {
private int teamCap = 5; private int teamCap = 5;
private int scoreCap = 5; private int scoreCap = 5;
private int monumentHeal = 5; private int monumentHeal = 5;
private String flagReturn = "both"; private FlagReturn flagReturn = FlagReturn.BOTH;
private TeamSpawnStyle spawnStyle = TeamSpawnStyle.BIG; private TeamSpawnStyle spawnStyle = TeamSpawnStyle.BIG;
private HashMap<Integer, ItemStack> reward = new HashMap<Integer, ItemStack>(); private HashMap<Integer, ItemStack> reward = new HashMap<Integer, ItemStack>();
@ -79,6 +79,8 @@ public class Warzone {
this.teamCap = War.war.getDefaultTeamCap(); this.teamCap = War.war.getDefaultTeamCap();
this.scoreCap = War.war.getDefaultScoreCap(); this.scoreCap = War.war.getDefaultScoreCap();
this.monumentHeal = War.war.getDefaultMonumentHeal(); this.monumentHeal = War.war.getDefaultMonumentHeal();
this.spawnStyle = War.war.getDefaultSpawnStyle(); // don't use side-effect-full setters instead of this
this.flagReturn = War.war.getDefaultFlagReturn();
this.setBlockHeads(War.war.isDefaultBlockHeads()); this.setBlockHeads(War.war.isDefaultBlockHeads());
this.setUnbreakableZoneBlocks(War.war.isDefaultUnbreakableZoneBlocks()); this.setUnbreakableZoneBlocks(War.war.isDefaultUnbreakableZoneBlocks());
this.setNoCreatures(War.war.isDefaultNoCreatures()); this.setNoCreatures(War.war.isDefaultNoCreatures());
@ -973,11 +975,11 @@ public class Warzone {
} }
public void setFlagReturn(String flagReturn) { public void setFlagReturn(FlagReturn flagReturn) {
this.flagReturn = flagReturn; this.flagReturn = flagReturn;
} }
public String getFlagReturn() { public FlagReturn getFlagReturn() {
return this.flagReturn; return this.flagReturn;
} }

View File

@ -9,6 +9,7 @@ import org.bukkit.inventory.ItemStack;
import bukkit.tommytony.war.War; import bukkit.tommytony.war.War;
import com.tommytony.war.FlagReturn;
import com.tommytony.war.TeamSpawnStyle; import com.tommytony.war.TeamSpawnStyle;
import com.tommytony.war.WarHub; import com.tommytony.war.WarHub;
import com.tommytony.war.Warzone; import com.tommytony.war.Warzone;
@ -118,19 +119,13 @@ public class WarMapper {
// defaultSpawnStyle // defaultSpawnStyle
String spawnStyle = warConfig.getString("defaultspawnStyle"); String spawnStyle = warConfig.getString("defaultspawnStyle");
if (spawnStyle != null && !spawnStyle.equals("")) { if (spawnStyle != null && !spawnStyle.equals("")) {
War.war.setDefaultSpawnStyle(TeamSpawnStyle.getStyleByString(spawnStyle)); War.war.setDefaultSpawnStyle(TeamSpawnStyle.getStyleFromString(spawnStyle));
} }
// defaultFlagReturn // defaultFlagReturn
String flagReturn = warConfig.getString("defaultFlagReturn"); String flagReturn = warConfig.getString("defaultFlagReturn");
if (flagReturn != null && !flagReturn.equals("")) { if (flagReturn != null && !flagReturn.equals("")) {
flagReturn = flagReturn.toLowerCase(); War.war.setDefaultFlagReturn(FlagReturn.getFromString(flagReturn));
if (flagReturn.equals("flag")) {
War.war.setDefaultFlagReturn("flag");
} else if (flagReturn.equals("spawn")) {
War.war.setDefaultFlagReturn("spawn");
}
// default is already initialized to both (see Warzone)
} }
// defaultReward // defaultReward
@ -242,6 +237,9 @@ public class WarMapper {
// spawnStyle // spawnStyle
warConfig.setString("spawnStyle", War.war.getDefaultSpawnStyle().toString()); warConfig.setString("spawnStyle", War.war.getDefaultSpawnStyle().toString());
// spawnStyle
warConfig.setString("flagReturn", War.war.getDefaultFlagReturn().toString());
// defaultReward // defaultReward
String defaultRewardStr = ""; String defaultRewardStr = "";
HashMap<Integer, ItemStack> rewardItems = War.war.getDefaultReward(); HashMap<Integer, ItemStack> rewardItems = War.war.getDefaultReward();

View File

@ -13,6 +13,7 @@ import org.bukkit.inventory.ItemStack;
import bukkit.tommytony.war.War; import bukkit.tommytony.war.War;
import com.tommytony.war.FlagReturn;
import com.tommytony.war.Monument; import com.tommytony.war.Monument;
import com.tommytony.war.Team; import com.tommytony.war.Team;
import com.tommytony.war.TeamKind; import com.tommytony.war.TeamKind;
@ -161,19 +162,13 @@ public class WarzoneMapper {
// spawnStyle // spawnStyle
String spawnStyle = warzoneConfig.getString("spawnStyle"); String spawnStyle = warzoneConfig.getString("spawnStyle");
if (spawnStyle != null && !spawnStyle.equals("")) { if (spawnStyle != null && !spawnStyle.equals("")) {
warzone.setSpawnStyle(TeamSpawnStyle.getStyleByString(spawnStyle)); warzone.setSpawnStyle(TeamSpawnStyle.getStyleFromString(spawnStyle));
} }
// flagReturn // flagReturn
String flagReturn = warzoneConfig.getString("flagReturn"); String flagReturn = warzoneConfig.getString("flagReturn");
if (flagReturn != null && !flagReturn.equals("")) { if (flagReturn != null && !flagReturn.equals("")) {
flagReturn = flagReturn.toLowerCase(); warzone.setFlagReturn(FlagReturn.getFromString(flagReturn));
if (flagReturn.equals("flag")) {
warzone.setFlagReturn("flag");
} else if (flagReturn.equals("spawn")) {
warzone.setFlagReturn("spawn");
}
// default is already initialized to both (see Warzone)
} }
// reward // reward
@ -375,6 +370,9 @@ public class WarzoneMapper {
// spawnStyle // spawnStyle
warzoneConfig.setString("spawnStyle", warzone.getSpawnStyle().toString()); warzoneConfig.setString("spawnStyle", warzone.getSpawnStyle().toString());
// flagReturn
warzoneConfig.setString("flagReturn", warzone.getFlagReturn().toString());
// reward // reward
String rewardStr = ""; String rewardStr = "";