Closes gh-35. Closes gh-29. Added color to chat (team chat, team names, red for errors). Added message when teams life pool is empty. Added war.warp permission node (must have to use zone and warhub). Now lowercasing named arguments.

This commit is contained in:
taoneill 2011-02-08 17:42:50 -05:00
parent 5ad5f26084
commit 466fbf7692
5 changed files with 129 additions and 79 deletions

View File

@ -18,6 +18,7 @@ import org.bukkit.plugin.java.JavaPlugin;
import com.tommytony.war.Monument;
import com.tommytony.war.Team;
import com.tommytony.war.TeamChatColors;
import com.tommytony.war.TeamMaterials;
import com.tommytony.war.WarHub;
import com.tommytony.war.Warzone;
@ -130,15 +131,19 @@ public class War extends JavaPlugin {
String command = cmd.getName();
String[] arguments = null;
// Handle both /war <command> and /<war command>. I.e. "/war zone temple" == "/zone temple"
String helpMessage = this.str("War is on. Please pick your battle. " +
"Try /warhub, /zones and /zone. Further instructions at war.tommytony.com/instructions.");
if((command.equals("war") || command.equals("War")) && args.length > 1) {
command = args[1];
arguments = new String[args.length - 1];
for(int i = 2; i <= arguments.length; i++) {
arguments[i-1] = args[i];
}
if(arguments.length == 1 && (arguments[0].equals("help") || arguments[0].equals("h"))) {
player.sendMessage(helpMessage);
}
} else if (command.equals("war") || command.equals("War")) {
player.sendMessage(this.str("War is on. Please pick your battle. " +
"Use /warhub, /zones and /zone."));
player.sendMessage(helpMessage);
} else {
arguments = args;
}
@ -149,7 +154,7 @@ public class War extends JavaPlugin {
} else if(command.equals("zone") || command.equals("warzone")) {
performZone(player, arguments);
} else if(command.equals("teams")){
performTeam(player);
performTeams(player);
} else if(command.equals("join") && canPlayWar(player)) {
performJoin(player, arguments);
} else if(command.equals("leave")) {
@ -209,7 +214,7 @@ public class War extends JavaPlugin {
|| command.equals("setwarhub")
|| command.equals("deletewarhub")
|| command.equals("setwarconfig")) {
player.sendMessage(this.str("You can't do this if you are not a warzone maker."));
player.sendMessage(this.bad("You can't do this if you are not a warzone maker."));
} else if (command.equals("zonemaker")) {
performZonemakerAsPlayer(player);
}
@ -233,7 +238,7 @@ public class War extends JavaPlugin {
public void performZonemakerAsZonemaker(Player player, String[] arguments) {
if(arguments.length > 2) {
player.sendMessage(this.str("Usage: /zonemaker <player-name>, /zonemaker" +
player.sendMessage(this.bad("Usage: /zonemaker <player-name>, /zonemaker" +
"Elevates the player to zone maker or removes his rights. " +
"If you are already a zonemaker, you can toggle between player and zone maker modes by using the command without arguments."));
} else {
@ -270,14 +275,14 @@ public class War extends JavaPlugin {
public void performSetWarConfig(Player player, String[] arguments) {
if(arguments.length == 0) {
player.sendMessage(this.str("Usage: /setwarconfig pvpinzonesonly:on lifepool:8 teamsize:5 maxscore:7 autoassign:on outline:off ff:on " +
player.sendMessage(this.bad("Usage: /setwarconfig pvpinzonesonly:on lifepool:8 teamsize:5 maxscore:7 autoassign:on outline:off ff:on " +
"Changes the server defaults for new warzones. Please give at leaset one named parameter. Must be in warzone."));
} else {
if(updateFromNamedParams(arguments)) {
WarMapper.save(this);
player.sendMessage(this.str("War config saved."));
} else {
player.sendMessage(this.str("Failed to read named parameters."));
player.sendMessage(this.bad("Failed to read named parameters."));
}
}
}
@ -295,7 +300,7 @@ public class War extends JavaPlugin {
player.sendMessage(this.str("War hub removed."));
} else {
player.sendMessage(this.str("No War hub to delete."));
player.sendMessage(this.bad("No War hub to delete."));
}
WarMapper.save(this);
}
@ -319,14 +324,14 @@ public class War extends JavaPlugin {
}
WarMapper.save(this);
} else {
player.sendMessage(str("No warzones yet."));
player.sendMessage(bad("No warzones yet."));
}
}
public void performDeleteMonument(Player player, String[] arguments) {
if(arguments.length < 1 || (!this.inAnyWarzone(player.getLocation())
&& !this.inAnyWarzoneLobby(player.getLocation()))) {
player.sendMessage(this.str("Usage: /deletemonument <name>." +
player.sendMessage(this.bad("Usage: /deletemonument <name>." +
" Deletes the monument. " +
"Must be in a warzone or lobby (try /warzones and /warzone). "));
} else {
@ -345,7 +350,7 @@ public class War extends JavaPlugin {
WarzoneMapper.save(this, warzone, false);
player.sendMessage(this.str("Monument " + name + " removed."));
} else {
player.sendMessage(this.str("No such monument."));
player.sendMessage(this.bad("No such monument."));
}
}
}
@ -354,7 +359,7 @@ public class War extends JavaPlugin {
if(!this.inAnyWarzone(player.getLocation()) || arguments.length < 1 || arguments.length > 1
|| (arguments.length == 1 && this.warzone(player.getLocation()) != null
&& arguments[0].equals(this.warzone(player.getLocation()).getName()))) {
player.sendMessage(this.str("Usage: /setmonument <name>. Creates or moves a monument. Monument can't have same name as zone. Must be in warzone."));
player.sendMessage(this.bad("Usage: /setmonument <name>. Creates or moves a monument. Monument can't have same name as zone. Must be in warzone."));
} else {
Warzone warzone = this.warzone(player.getLocation());
String monumentName = arguments[0];
@ -377,7 +382,7 @@ public class War extends JavaPlugin {
public void performDeleteTeam(Player player, String[] arguments) {
if(arguments.length < 1 || (!this.inAnyWarzone(player.getLocation())
&& !this.inAnyWarzoneLobby(player.getLocation()))) {
player.sendMessage(this.str("Usage: /deleteteam <team-name>." +
player.sendMessage(this.bad("Usage: /deleteteam <team-name>." +
" Deletes the team and its spawn. " +
"Must be in a warzone or lobby (try /zones and /zone). "));
} else {
@ -409,7 +414,7 @@ public class War extends JavaPlugin {
WarzoneMapper.save(this, warzone, false);
player.sendMessage(this.str("Team " + name + " removed."));
} else {
player.sendMessage(this.str("No such team."));
player.sendMessage(this.bad("No such team."));
}
}
}
@ -417,7 +422,7 @@ public class War extends JavaPlugin {
public void performSetTeamFlag(Player player, String[] arguments) {
if(arguments.length < 1 || !this.inAnyWarzone(player.getLocation())
|| (arguments.length > 0 && TeamMaterials.teamMaterialFromString(arguments[0]) == null)) {
player.sendMessage(this.str("Usage: /setteamflag <diamond/iron/gold/d/i/g>. " +
player.sendMessage(this.bad("Usage: /setteamflag <diamond/iron/gold/d/i/g>. " +
"Sets the team flag post to the current location. " +
"Must be in a warzone (try /zones and /zone). "));
} else {
@ -427,7 +432,7 @@ public class War extends JavaPlugin {
Team team = warzone.getTeamByMaterial(teamMaterial);
if(team == null) {
// no such team yet
player.sendMessage(this.str("Place the team spawn first."));
player.sendMessage(this.bad("Place the team spawn first."));
} else if (team.getFlagVolume() == null){
// new team flag
team.setTeamFlag(player.getLocation());
@ -452,7 +457,7 @@ public class War extends JavaPlugin {
public void performSetTeam(Player player, String[] arguments) {
if(arguments.length < 1 || !this.inAnyWarzone(player.getLocation())
|| (arguments.length > 0 && TeamMaterials.teamMaterialFromString(arguments[0]) == null)) {
player.sendMessage(this.str("Usage: /setteam <diamond/iron/gold/d/i/g>. " +
player.sendMessage(this.bad("Usage: /setteam <diamond/iron/gold/d/i/g>. " +
"Sets the team spawn to the current location. " +
"Must be in a warzone (try /zones and /zone). "));
} else {
@ -485,7 +490,7 @@ public class War extends JavaPlugin {
public void performDeleteZone(Player player) {
if(!this.inAnyWarzone(player.getLocation()) && !this.inAnyWarzoneLobby(player.getLocation())) {
player.sendMessage(this.str("Usage: /deletezone. " +
player.sendMessage(this.bad("Usage: /deletezone. " +
"Deletes the warzone. " +
"Must be in the warzone (try /zones and /zone). "));
} else {
@ -520,7 +525,7 @@ public class War extends JavaPlugin {
public void performResetZone(Player player, String[] arguments) {
if(!this.inAnyWarzone(player.getLocation()) && !this.inAnyWarzoneLobby(player.getLocation())) {
player.sendMessage(this.str("Usage: /resetzone <hard/h>. Reloads the zone (from disk if the hard option is specified). Must be in warzone or lobby."));
player.sendMessage(this.bad("Usage: /resetzone <hard/h>. Reloads the zone (from disk if the hard option is specified). Must be in warzone or lobby."));
} else {
Warzone warzone = this.warzone(player.getLocation());
ZoneLobby lobby = this.lobby(player.getLocation());
@ -549,7 +554,7 @@ public class War extends JavaPlugin {
this.getWarzones().remove(warzone);
resetWarzone = WarzoneMapper.load(this, warzone.getName(), true);
this.getWarzones().add(resetWarzone);
warzone.getVolume().resetBlocks();
resetBlocks = warzone.getVolume().resetBlocks();
if(lobby!=null) {
lobby.getVolume().resetBlocks();
}
@ -571,7 +576,7 @@ public class War extends JavaPlugin {
public void performSetZoneConfig(Player player, String[] arguments) {
if((!this.inAnyWarzone(player.getLocation()) && !this.inAnyWarzoneLobby(player.getLocation()))
|| arguments.length == 0) {
player.sendMessage(this.str("Usage: /setzoneconfig lifepool:8 teamsize:5 maxscore:7 autoassign:on outline:off ff:on " +
player.sendMessage(this.bad("Usage: /setzoneconfig lifepool:8 teamsize:5 maxscore:7 autoassign:on outline:off ff:on " +
"Please give at leaset one named parameter. Does not save the blocks of the warzone. Resets the zone with the new config. Must be in warzone."));
} else {
Warzone warzone = this.warzone(player.getLocation());
@ -591,14 +596,14 @@ public class War extends JavaPlugin {
warzone.initializeZone(); // bring back team spawns etc
player.sendMessage(this.str("Warzone config saved. Zone reset."));
} else {
player.sendMessage(this.str("Failed to read named parameters."));
player.sendMessage(this.bad("Failed to read named parameters."));
}
}
}
public void performSaveZone(Player player, String[] arguments) {
if(!this.inAnyWarzone(player.getLocation()) && !this.inAnyWarzoneLobby(player.getLocation())) {
player.sendMessage(this.str("Usage: /savezone lifepool:8 teamsize:5 maxscore:7 autoassign:on outline:off ff:on " +
player.sendMessage(this.bad("Usage: /savezone lifepool:8 teamsize:5 maxscore:7 autoassign:on outline:off ff:on " +
"All named params optional. Saves the blocks of the warzone (i.e. the current zone state will be reloaded at each battle start). Must be in warzone."));
} else {
Warzone warzone = this.warzone(player.getLocation());
@ -630,7 +635,7 @@ public class War extends JavaPlugin {
&& !arguments[0].equals("east") && !arguments[0].equals("e")
&& !arguments[0].equals("south") && !arguments[0].equals("s")
&& !arguments[0].equals("west") && !arguments[0].equals("w"))) {
player.sendMessage(this.str("Usage: /setzonelobby <north/n/east/e/south/s/west/w>. Must be in warzone." +
player.sendMessage(this.bad("Usage: /setzonelobby <north/n/east/e/south/s/west/w>. Must be in warzone." +
"Defines on which side the zone lobby lies. " +
"Removes any previously set lobby."));
} else {
@ -641,7 +646,7 @@ public class War extends JavaPlugin {
} else {
lobby = warzone.getLobby();
}
BlockFace wall = null;
BlockFace wall = BlockFace.WEST;
String wallStr = "";
if(arguments[0].equals("north") || arguments[0].equals("n")) {
wall = BlockFace.NORTH;
@ -681,7 +686,7 @@ public class War extends JavaPlugin {
if(arguments.length < 2 || arguments.length > 2
|| (arguments.length == 2 && (!arguments[1].equals("southeast") && !arguments[1].equals("northwest")
&& !arguments[1].equals("se") && !arguments[1].equals("nw")))) {
player.sendMessage(this.str("Usage: /setzone <warzone-name> <'southeast'/'northwest'/'se'/'nw'>. " +
player.sendMessage(this.bad("Usage: /setzone <warzone-name> <'southeast'/'northwest'/'se'/'nw'>. " +
"Set one corner, then the next. Defines the outline of the warzone, which will be reset at the start of every battle. " +
"Saves the zone blocks if the zone if the outline is correct."));
} else {
@ -707,7 +712,7 @@ public class War extends JavaPlugin {
if(warzone.getSoutheast() != null
&& (player.getLocation().getBlockX() >= warzone.getSoutheast().getBlockX()
|| player.getLocation().getBlockZ() <= warzone.getSoutheast().getBlockZ())) {
player.sendMessage(this.str("You must place that corner northwest relative to the existing southeast corner!"));
player.sendMessage(this.bad("You must place that corner northwest relative to the existing southeast corner!"));
} else if (warzone.getSoutheast() == null){
// just moving the single nw corner we've placed so far
warzone.setNorthwest(player.getLocation());
@ -724,9 +729,9 @@ public class War extends JavaPlugin {
}
warzone.setNorthwest(player.getLocation());
if(warzone.tooSmall()) {
player.sendMessage(str("Warzone " + warzone.getName() + " is too small. Min north-south size: 20. Min east-west size: 20."));
player.sendMessage(bad("Warzone " + warzone.getName() + " is too small. Min north-south size: 20. Min east-west size: 20."));
} else if (warzone.tooBig()) {
player.sendMessage(str("Warzone " + warzone.getName() + " is too Big. Max north-south size: 500. Max east-west size: 500."));
player.sendMessage(bad("Warzone " + warzone.getName() + " is too Big. Max north-south size: 500. Max east-west size: 500."));
}
else {
msgString += "New zone outline ok. Northwesternmost point of zone " + warzone.getName() + " set to x:" + (int)warzone.getNorthwest().getBlockX()
@ -738,7 +743,7 @@ public class War extends JavaPlugin {
if(warzone.getNorthwest() != null
&& (player.getLocation().getBlockX() <= warzone.getNorthwest().getBlockX()
|| player.getLocation().getBlockZ() >= warzone.getNorthwest().getBlockZ())) {
player.sendMessage(this.str("You must place that corner southeast relative to the existing northwest corner! "));
player.sendMessage(this.bad("You must place that corner southeast relative to the existing northwest corner! "));
} else if (warzone.getNorthwest() == null){
// just moving the single se corner we've placed so far
warzone.setSoutheast(player.getLocation());
@ -755,9 +760,9 @@ public class War extends JavaPlugin {
}
warzone.setSoutheast(player.getLocation());
if(warzone.tooSmall()) {
player.sendMessage(str("Warzone " + warzone.getName() + " is too small. Min north-south size: 20. Min east-west size: 20."));
player.sendMessage(bad("Warzone " + warzone.getName() + " is too small. Min north-south size: 20. Min east-west size: 20."));
} else if (warzone.tooBig()) {
player.sendMessage(str("Warzone " + warzone.getName() + " is too Big. Max north-south size: 500. Max east-west size: 500."));
player.sendMessage(bad("Warzone " + warzone.getName() + " is too Big. Max north-south size: 500. Max east-west size: 500."));
}
else {
msgString += "New zone outline ok. Southeasternmost point of zone " + warzone.getName() + " set to x:" + (int)warzone.getSoutheast().getBlockX()
@ -800,7 +805,7 @@ public class War extends JavaPlugin {
public void performNextBattle(Player player) {
if(!this.inAnyWarzone(player.getLocation())) {
player.sendMessage(this.str("Usage: /nextbattle. Resets the zone blocks and all teams' life pools. Must be in warzone."));
player.sendMessage(this.bad("Usage: /nextbattle. Resets the zone blocks and all teams' life pools. Must be in warzone."));
} else {
Warzone warzone = this.warzone(player.getLocation());
warzone.clearFlagThieves();
@ -816,7 +821,9 @@ public class War extends JavaPlugin {
public void performWarhub(Player player) {
if(this.getWarHub() == null) {
player.sendMessage("No warhub on this War server. Try /zones and /zone.");
player.sendMessage(this.bad("No warhub on this War server. Try /zones and /zone."));
} else if(!canWarp(player)) {
player.sendMessage(this.bad("Can't warp to warhub. You need the 'war.warp' permission."));
} else {
Team playerTeam = this.getPlayerTeam(player.getName());
Warzone playerWarzone = getPlayerTeamWarzone(player.getName());
@ -830,18 +837,18 @@ public class War extends JavaPlugin {
public void performTeam(Player player, String[] arguments) {
Team playerTeam = this.getPlayerTeam(player.getName());
if(!this.inAnyWarzone(player.getLocation()) && playerTeam != null) {
player.sendMessage(this.str("Usage: /team <message>. " +
player.sendMessage(this.bad("Usage: /team <message>. " +
"Sends a message only to your teammates."));
} else {
ChatColor color = null;
if(playerTeam.getMaterial() == TeamMaterials.TEAMDIAMOND) {
color = ChatColor.DARK_AQUA;
color = TeamChatColors.TEAMDIAMOND;
} else if(playerTeam.getMaterial() == TeamMaterials.TEAMGOLD) {
color = ChatColor.GOLD;
color = TeamChatColors.TEAMGOLD;
} else if(playerTeam.getMaterial() == TeamMaterials.TEAMIRON) {
color = ChatColor.GRAY;
color = TeamChatColors.TEAMIRON;
}
String teamMessage = player.getName() + ": " + ChatColor.WHITE;
String teamMessage = color + player.getName() + ": " + ChatColor.WHITE;
for(int j = 0 ; j<arguments.length; j++) {
String part = arguments[j];
teamMessage += part + " ";
@ -852,7 +859,7 @@ public class War extends JavaPlugin {
public void performLeave(Player player) {
if(!this.inAnyWarzone(player.getLocation()) || this.getPlayerTeam(player.getName()) == null) {
player.sendMessage(this.str("Usage: /leave. " +
player.sendMessage(this.bad("Usage: /leave. " +
"Must be in a team already."));
} else {
Warzone zone = getPlayerTeamWarzone(player.getName());
@ -863,7 +870,7 @@ public class War extends JavaPlugin {
public void performJoin(Player player, String[] arguments) {
if(arguments.length < 1 || (!this.inAnyWarzone(player.getLocation()) && !this.inAnyWarzoneLobby(player.getLocation()))
|| (arguments.length > 0 && TeamMaterials.teamMaterialFromString(arguments[0]) == null)) {
player.sendMessage(this.str("Usage: /join <diamond/iron/gold/d/i/g>." +
player.sendMessage(this.bad("Usage: /join <diamond/iron/gold/d/i/g>." +
" Teams are warzone specific." +
" You must be inside a warzone or zone lobby to join a team." +
" Use as an alternative to walking through the team gate."));
@ -913,7 +920,7 @@ public class War extends JavaPlugin {
}
foundTeam = true;
} else {
player.sendMessage(this.str("Team " + name + " is full."));
player.sendMessage(this.bad("Team " + name + " is full."));
foundTeam = true;
}
}
@ -923,14 +930,14 @@ public class War extends JavaPlugin {
team.teamcast(this.str("" + player.getName() + " joined " + name));
}
} else {
player.sendMessage(this.str("No such team. Try /teams."));
player.sendMessage(this.bad("No such team. Try /teams."));
}
}
}
public void performTeam(Player player) {
public void performTeams(Player player) {
if(!this.inAnyWarzone(player.getLocation()) && !this.inAnyWarzoneLobby(player.getLocation())) {
player.sendMessage(this.str("Usage: /teams. " +
player.sendMessage(this.bad("Usage: /teams. " +
"Must be in a warzone or zone lobby (try /war, /zones and /zone)."));
} else {
player.sendMessage(this.str("" + playerListener.getAllTeamsMsg(player)));
@ -939,7 +946,9 @@ public class War extends JavaPlugin {
public void performZone(Player player, String[] arguments) {
if(arguments.length < 1) {
player.sendMessage(this.str("Usage: /zone <warzone-name>."));
player.sendMessage(this.bad("Usage: /zone <warzone-name>."));
} else if(!canWarp(player)) {
player.sendMessage(this.bad("Can't warp to zone. You need the 'war.warp' permission."));
} else {
boolean warped = false;
for(Warzone warzone : this.getWarzones()) {
@ -955,7 +964,7 @@ public class War extends JavaPlugin {
}
}
if(!warped) {
player.sendMessage("No such warzone.");
player.sendMessage(this.bad("No such warzone."));
}
}
}
@ -985,7 +994,7 @@ public class War extends JavaPlugin {
for(String namedPair : arguments) {
String[] pairSplit = namedPair.split(":");
if(pairSplit.length == 2) {
namedParams.put(pairSplit[0], pairSplit[1]);
namedParams.put(pairSplit[0].toLowerCase(), pairSplit[1]);
}
}
if(namedParams.containsKey("lifepool")){
@ -1009,8 +1018,8 @@ public class War extends JavaPlugin {
String onOff = namedParams.get("outline");
warzone.setDrawZoneOutline(onOff.equals("on") || onOff.equals("true"));
}
if(namedParams.containsKey("blockHeads")){
String onOff = namedParams.get("blockHeads");
if(namedParams.containsKey("blockheads")){
String onOff = namedParams.get("blockheads");
warzone.setBlockHeads(onOff.equals("on") || onOff.equals("true"));
}
// if(namedParams.containsKey("dropLootOnDeath")){
@ -1128,7 +1137,22 @@ public class War extends JavaPlugin {
}
public String str(String str) {
String out = ChatColor.GRAY + "[War] " + ChatColor.WHITE + str;
String out = ChatColor.GRAY + "[War] " + ChatColor.WHITE + colorTeams(str, ChatColor.WHITE) + " ";
return out;
}
public String bad(String str) {
String out = ChatColor.GRAY + "[War] " + ChatColor.RED + colorTeams(str, ChatColor.RED) + " ";
return out;
}
private String colorTeams(String str, ChatColor msgColor) {
String out = str.replaceAll("iron", TeamChatColors.TEAMIRON + "iron" + msgColor);
out = out.replaceAll("Iron", TeamChatColors.TEAMIRON + "Iron" + msgColor);
out = out.replaceAll("gold", TeamChatColors.TEAMGOLD + "gold" + msgColor);
out = out.replaceAll("Gold", TeamChatColors.TEAMGOLD + "Gold" + msgColor);
out = out.replaceAll("diamond", TeamChatColors.TEAMDIAMOND + "diamond" + msgColor);
out = out.replaceAll("Diamond", TeamChatColors.TEAMDIAMOND + "Diamond" + msgColor);
return out;
}

View File

@ -48,28 +48,28 @@ public class WarBlockListener extends BlockListener {
return; // important otherwise cancelled down a few line by isImportantblock
} else {
player.sendMessage(war.str("You can't capture a monument without a block of your team's material. Get one from your team spawn."));
player.sendMessage(war.bad("You can't capture a monument without a block of your team's material. Get one from your team spawn."));
event.setCancelled(true);
return;
}
}
if(zone != null && zone.isImportantBlock(block)){
player.sendMessage(war.str("Can't build here."));
player.sendMessage(war.bad("Can't build here."));
event.setCancelled(true);
return;
}
// protect warzone lobbies
for(Warzone wz: war.getWarzones()) {
if(wz.getLobby() != null && wz.getLobby().getVolume().contains(block)) {
player.sendMessage(war.str("Can't build here."));
player.sendMessage(war.bad("Can't build here."));
event.setCancelled(true);
return;
}
}
// protect the hub
if(war.getWarHub() != null && war.getWarHub().getVolume().contains(block)) {
player.sendMessage(war.str("Can't build here."));
player.sendMessage(war.bad("Can't build here."));
event.setCancelled(true);
return;
}
@ -86,7 +86,7 @@ public class WarBlockListener extends BlockListener {
if(warzone != null && war.getPlayerTeam(player.getName()) == null && !isZoneMaker) {
// can't actually destroy blocks in a warzone if not part of a team
player.sendMessage(war.str("Can't destroy part of a warzone if you're not in a team."));
player.sendMessage(war.bad("Can't destroy part of a warzone if you're not in a team."));
event.setCancelled(true);
return;
} else if(team != null && block != null && warzone != null
@ -104,7 +104,7 @@ public class WarBlockListener extends BlockListener {
}else if(warzone != null && warzone.isImportantBlock(block)) {
if(team != null && team.getSpawnVolume().contains(block)) {
if(player.getInventory().contains(team.getMaterial())) {
player.sendMessage(war.str("You already have a " + team.getName() + " block."));
player.sendMessage(war.bad("You already have a " + team.getName() + " block."));
event.setCancelled(true);
return;
}
@ -112,7 +112,7 @@ public class WarBlockListener extends BlockListener {
} else if (team != null && warzone.isEnemyTeamFlagBlock(team, block)) {
if(warzone.isFlagThief(player.getName())) {
// detect audacious thieves
player.sendMessage(war.str("You can only steal one flag at a time!"));
player.sendMessage(war.bad("You can only steal one flag at a time!"));
} else {
// player just broke the flag block of other team: cancel to avoid drop, give player the block, set block to air
Team lostFlagTeam = warzone.getTeamForFlagBlock(block);
@ -132,7 +132,7 @@ public class WarBlockListener extends BlockListener {
event.setCancelled(true);
return;
} else if (!warzone.isMonumentCenterBlock(block)){
player.sendMessage(war.str("Can't destroy this."));
player.sendMessage(war.bad("Can't destroy this."));
event.setCancelled(true);
return;
}
@ -142,7 +142,7 @@ public class WarBlockListener extends BlockListener {
if(block != null) {
for(Warzone zone: war.getWarzones()) {
if(zone.getLobby().getVolume().contains(block)) {
player.sendMessage(war.str("Can't destroy this."));
player.sendMessage(war.bad("Can't destroy this."));
event.setCancelled(true);
return;
}
@ -151,7 +151,7 @@ public class WarBlockListener extends BlockListener {
// protect the hub
if(war.getWarHub() != null && war.getWarHub().getVolume().contains(block)) {
player.sendMessage(war.str("Can't destroy this."));
player.sendMessage(war.bad("Can't destroy this."));
event.setCancelled(true);
return;
}

View File

@ -113,11 +113,11 @@ public class WarEntityListener extends EntityListener {
// //}
// }
if(defenderTeam.getSpawnVolume().contains(d.getLocation())) { // attacking person in spawn
a.sendMessage(war.str("Can't attack a player that's inside his team's spawn."));
a.sendMessage(war.bad("Can't attack a player that's inside his team's spawn."));
event.setCancelled(true);
} else if(attackerTeam.getSpawnVolume().contains(a.getLocation()) && !attackerTeam.getSpawnVolume().contains(d.getLocation())) {
// only let a player inside spawn attack an enemy player if that player enters the spawn
a.sendMessage(war.str("Can't attack a player from inside your spawn."));
a.sendMessage(war.bad("Can't attack a player from inside your spawn."));
event.setCancelled(true);
}
//}
@ -127,29 +127,28 @@ public class WarEntityListener extends EntityListener {
&& attacker.getEntityId() != defender.getEntityId()) {
// same team, but not same person
if(attackerWarzone.getFriendlyFire()) {
a.sendMessage(war.str("Friendly fire is on! Please, don't hurt your teammates.")); // if ff is on, let the attack go through
a.sendMessage(war.bad("Friendly fire is on! Please, don't hurt your teammates.")); // if ff is on, let the attack go through
} else {
a.sendMessage(war.str("Your attack missed!"));
a.sendMessage(war.str("Your target is on your team."));
a.sendMessage(war.bad("Your attack missed! Your target is on your team."));
event.setCancelled(true); // ff is off
}
} else if (attackerTeam == null && defenderTeam == null && !war.isPvpInZonesOnly()){
// let normal PVP through is its not turned off
} else if (attackerTeam == null && defenderTeam == null && war.isPvpInZonesOnly()) {
a.sendMessage(war.str("Your attack missed! Global PVP is turned off. You can only attack other players in warzones. Try /warhub, /zones and /zone."));
a.sendMessage(war.bad("Your attack missed! Global PVP is turned off. You can only attack other players in warzones. Try /warhub, /zones and /zone."));
event.setCancelled(true); // global pvp is off
} else {
a.sendMessage(war.str("Your attack missed!"));
a.sendMessage(war.bad("Your attack missed!"));
if(attackerTeam == null) {
a.sendMessage(war.str(" You must join a team " +
a.sendMessage(war.bad(" You must join a team " +
", then you'll be able to damage people " +
"in the other teams in that warzone."));
} else if (defenderTeam == null) {
a.sendMessage(war.str("Your target is not in a team."));
a.sendMessage(war.bad("Your target is not in a team."));
} else if (attackerTeam == defenderTeam) {
a.sendMessage(war.str("Your target is on your team."));
a.sendMessage(war.bad("Your target is on your team."));
} else if (attackerWarzone != defenderWarzone) {
a.sendMessage(war.str("Your target is playing in another warzone."));
a.sendMessage(war.bad("Your target is playing in another warzone."));
}
event.setCancelled(true); // can't attack someone inside a warzone if you're not in a team
}
@ -197,6 +196,7 @@ public class WarEntityListener extends EntityListener {
int remaining = playerTeam.getRemainingLifes();
if(remaining == 0) { // your death caused your team to lose
List<Team> teams = playerWarzone.getTeams();
String scorers = "";
for(Team t : teams) {
t.teamcast(war.str("The battle is over. Team " + playerTeam.getName() + " lost: "
+ player.getName() + " died and there were no lives left in their life pool." ));
@ -205,6 +205,12 @@ public class WarEntityListener extends EntityListener {
// all other teams get a point
t.addPoint();
t.resetSign();
scorers += "Team " + t.getName() + " scores one point. ";
}
}
if(!scorers.equals("")){
for(Team t : teams) {
t.teamcast(war.str(scorers));
}
}
// detect score cap
@ -229,7 +235,7 @@ public class WarEntityListener extends EntityListener {
} else {
// A new battle starts. Reset the zone but not the teams.
for(Team t : teams) {
t.teamcast(war.str("A new battle begins. The warzone is being reset..."));
t.teamcast(war.str("A new battle begins. Warzone reset."));
}
playerWarzone.getVolume().resetBlocks();
playerWarzone.initializeZone();
@ -248,6 +254,11 @@ public class WarEntityListener extends EntityListener {
}
}
playerTeam.setRemainingLives(remaining - 1);
if(remaining - 1 == 0) {
for(Team t : playerWarzone.getTeams()) {
t.teamcast(war.str("Team " + t.getName() + "'s life pool is empty. One more death and they lose the battle!"));
}
}
}
//}
//}

View File

@ -142,7 +142,7 @@ public class WarPlayerListener extends PlayerListener {
event.setFrom(zone.getTeleport());
player.teleportTo(zone.getTeleport());
event.setCancelled(true);
player.sendMessage("All teams are full.");
player.sendMessage(war.bad("All teams are full."));
}
return;
}
@ -170,7 +170,7 @@ public class WarPlayerListener extends PlayerListener {
event.setFrom(zone.getTeleport());
player.teleportTo(zone.getTeleport());
event.setCancelled(true);
player.sendMessage("Team diamond is full.");
player.sendMessage(war.bad("Team diamond is full."));
}
return;
}
@ -198,7 +198,7 @@ public class WarPlayerListener extends PlayerListener {
event.setFrom(zone.getTeleport());
player.teleportTo(zone.getTeleport());
event.setCancelled(true);
player.sendMessage("Team iron is full.");
player.sendMessage(war.bad("Team iron is full."));
}
return;
}
@ -226,7 +226,7 @@ public class WarPlayerListener extends PlayerListener {
event.setFrom(zone.getTeleport());
player.teleportTo(zone.getTeleport());
event.setCancelled(true);
player.sendMessage("Team gold is full.");
player.sendMessage(war.bad("Team gold is full."));
}
return;
}
@ -245,7 +245,7 @@ public class WarPlayerListener extends PlayerListener {
event.setFrom(zone.getTeleport());
player.teleportTo(zone.getTeleport());
event.setCancelled(true);
player.sendMessage(war.str("You don't have permission to play War. Ask a mod for the 'war.player' permission, please."));
player.sendMessage(war.bad("You don't have permission to play War. Ask a mod for the 'war.player' permission, please."));
return;
}
@ -310,7 +310,7 @@ public class WarPlayerListener extends PlayerListener {
&& (team.getSpawnVolume().contains(player.getLocation())
|| (team.getFlagVolume() != null && team.getFlagVolume().contains(player.getLocation())))) {
if(playerWarzone.isTeamFlagStolen(team)) {
player.sendMessage(war.str("You can't capture the enemy flag until your team flag is returned."));
player.sendMessage(war.bad("You can't capture the enemy flag until your team flag is returned."));
} else {
synchronized(playerWarzone) {
// flags can be captured at own spawn or own flag pole

View File

@ -0,0 +1,15 @@
package com.tommytony.war;
import org.bukkit.ChatColor;
import org.bukkit.Material;
/**
*
* @author tommytony
*
*/
public class TeamChatColors {
public static final ChatColor TEAMDIAMOND = ChatColor.DARK_AQUA;
public static final ChatColor TEAMIRON = ChatColor.GRAY;
public static final ChatColor TEAMGOLD = ChatColor.GOLD;
}