Add chat channel functionality. Essentially the same as Allies except it's a different word.
This commit is contained in:
drtshock 2015-01-22 20:30:40 -06:00
parent a943f47abb
commit 8c2f08b694
8 changed files with 71 additions and 14 deletions

View File

@ -16,12 +16,12 @@ public class Conf {
// Colors
public static ChatColor colorMember = ChatColor.GREEN;
public static ChatColor colorAlly = ChatColor.LIGHT_PURPLE;
public static ChatColor colorTruce = ChatColor.DARK_PURPLE;
public static ChatColor colorNeutral = ChatColor.WHITE;
public static ChatColor colorEnemy = ChatColor.RED;
public static ChatColor colorPeaceful = ChatColor.GOLD;
public static ChatColor colorWar = ChatColor.DARK_RED;
//public static ChatColor colorWilderness = ChatColor.DARK_GREEN;
// Power
public static double powerPlayerMax = 10.0;
@ -71,6 +71,7 @@ public class Conf {
public static String chatTagFormat = "%s" + ChatColor.WHITE;
public static String factionChatFormat = "%s:" + ChatColor.WHITE + " %s";
public static String allianceChatFormat = ChatColor.LIGHT_PURPLE + "%s:" + ChatColor.WHITE + " %s";
public static String truceChatFormat = ChatColor.DARK_PURPLE + "%s:" + ChatColor.WHITE + " %s";
public static boolean broadcastDescriptionChanges = false;
@ -163,6 +164,12 @@ public class Conf {
public static boolean territoryAllyPainBuildWhenOffline = false;
public static boolean territoryAllyDenyUseage = true;
public static boolean territoryAllyProtectMaterials = true;
public static boolean territoryTruceDenyBuild = true;
public static boolean territoryTruceDenyBuildWhenOffline = true;
public static boolean territoryTrucePainBuild = false;
public static boolean territoryTrucePainBuildWhenOffline = false;
public static boolean territoryTruceDenyUseage = true;
public static boolean territoryTruceProtectMaterials = true;
public static boolean territoryBlockCreepers = false;
public static boolean territoryBlockCreepersWhenOffline = false;
public static boolean territoryBlockFireballs = false;
@ -242,6 +249,7 @@ public class Conf {
public static double econCostShow = 0.0;
public static double econCostOpen = 0.0;
public static double econCostAlly = 0.0;
public static double econCostTruce = 0.0;
public static double econCostEnemy = 0.0;
public static double econCostNeutral = 0.0;
public static double econCostNoBoom = 0.0;

View File

@ -42,6 +42,8 @@ public class CmdChat extends FCommand {
modeTarget = ChatMode.ALLIANCE;
} else if (modeString.startsWith("f")) {
modeTarget = ChatMode.FACTION;
} else if (modeString.startsWith("t")) {
modeTarget = ChatMode.TRUCE;
} else {
msg(TL.COMMAND_CHAT_INVALIDMODE);
return;
@ -54,6 +56,8 @@ public class CmdChat extends FCommand {
msg(TL.COMMAND_CHAT_MODE_PUBLIC);
} else if (fme.getChatMode() == ChatMode.ALLIANCE) {
msg(TL.COMMAND_CHAT_MODE_ALLIANCE);
} else if (fme.getChatMode() == ChatMode.TRUCE) {
msg(TL.COMMAND_CHAT_MODE_TRUCE);
} else {
msg(TL.COMMAND_CHAT_MODE_FACTION);
}

View File

@ -77,10 +77,8 @@ public abstract class FRelationCommand extends FCommand {
them.msg(TL.COMMAND_RELATIONS_MUTUAL, currentRelationColor + targetRelation.getTranslation(), currentRelationColor + myFaction.getTag());
myFaction.msg(TL.COMMAND_RELATIONS_MUTUAL, currentRelationColor + targetRelation.getTranslation(), currentRelationColor + them.getTag());
}
} else {
// inform the other faction of your request
else {
them.msg(TL.COMMAND_RELATIONS_PROPOSAL_1, currentRelationColor + myFaction.getTag(), targetRelation.getColor() + targetRelation.getTranslation());
them.msg(TL.COMMAND_RELATIONS_PROPOSAL_2, Conf.baseCommandAliases.get(0), targetRelation, myFaction.getTag());
myFaction.msg(TL.COMMAND_RELATIONS_PROPOSAL_SENT, currentRelationColor + them.getTag(), "" + targetRelation.getColor() + targetRelation);

View File

@ -74,6 +74,28 @@ public class FactionsChatListener implements Listener {
Bukkit.getLogger().log(Level.INFO, ChatColor.stripColor("AllianceChat: " + message));
event.setCancelled(true);
} else if (chat == ChatMode.TRUCE) {
Faction myFaction = me.getFaction();
String message = String.format(Conf.truceChatFormat, ChatColor.stripColor(me.getNameAndTag()), msg);
//Send message to our own faction
myFaction.sendMessage(message);
//Send to all our truces
for (FPlayer fplayer : FPlayers.getInstance().getOnlinePlayers()) {
if (myFaction.getRelationTo(fplayer) == Relation.TRUCE) {
fplayer.sendMessage(message);
}
//Send to any players who are spying chat
else if (fplayer.isSpyingChat()) {
fplayer.sendMessage("[TCspy]: " + message);
}
}
Bukkit.getLogger().log(Level.INFO, ChatColor.stripColor("TruceChat: " + message));
event.setCancelled(true);
}
}

View File

@ -398,7 +398,7 @@ public class FactionsPlayerListener implements Listener {
}
// You may use any block unless it is another faction's territory...
if (rel.isNeutral() || (rel.isEnemy() && Conf.territoryEnemyProtectMaterials) || (rel.isAlly() && Conf.territoryAllyProtectMaterials)) {
if (rel.isNeutral() || (rel.isEnemy() && Conf.territoryEnemyProtectMaterials) || (rel.isAlly() && Conf.territoryAllyProtectMaterials) || (rel.isTruce() && Conf.territoryTruceProtectMaterials)) {
if (!justCheck) {
me.msg("<b>You can't %s <h>%s<b> in the territory of <h>%s<b>.", (material == Material.SOIL ? "trample" : "use"), TextUtil.getMaterialName(material), otherFaction.getTag(myFaction));
}

View File

@ -3,8 +3,9 @@ package com.massivecraft.factions.struct;
import com.massivecraft.factions.zcore.util.TL;
public enum ChatMode {
FACTION(2, TL.CHAT_FACTION),
ALLIANCE(1, TL.CHAT_ALLIANCE),
FACTION(3, TL.CHAT_FACTION),
ALLIANCE(2, TL.CHAT_ALLIANCE),
TRUCE(1, TL.CHAT_TRUCE),
PUBLIC(0, TL.CHAT_PUBLIC);
public final int value;

View File

@ -6,8 +6,9 @@ import org.bukkit.ChatColor;
public enum Relation {
MEMBER(3, "member"),
ALLY(2, "ally"),
MEMBER(4, "member"),
ALLY(3, "ally"),
TRUCE(2, "truce"),
NEUTRAL(1, "neutral"),
ENEMY(0, "enemy");
@ -27,13 +28,15 @@ public enum Relation {
public static Relation fromString(String s) {
// Because Java 6 doesn't allow String switches :(
if (s.equalsIgnoreCase("member")) {
return Relation.MEMBER;
return MEMBER;
} else if (s.equalsIgnoreCase("ally")) {
return Relation.ALLY;
return ALLY;
} else if(s.equalsIgnoreCase("truce")) {
return TRUCE;
} else if (s.equalsIgnoreCase("enemy")) {
return Relation.ENEMY;
return ENEMY;
} else {
return Relation.NEUTRAL; // If they somehow mess things up, go back to default behavior.
return NEUTRAL; // If they somehow mess things up, go back to default behavior.
}
}
@ -54,6 +57,10 @@ public enum Relation {
return this == ALLY;
}
public boolean isTruce() {
return this == TRUCE;
}
public boolean isNeutral() {
return this == NEUTRAL;
}
@ -77,6 +84,8 @@ public enum Relation {
return Conf.colorAlly;
} else if (this == NEUTRAL) {
return Conf.colorNeutral;
} else if (this == TRUCE) {
return Conf.colorTruce;
} else {
return Conf.colorEnemy;
}
@ -93,6 +102,8 @@ public enum Relation {
return Conf.territoryEnemyDenyBuild;
} else if (isAlly()) {
return Conf.territoryAllyDenyBuild;
} else if (isTruce()) {
return Conf.territoryTruceDenyBuild;
} else {
return Conf.territoryDenyBuild;
}
@ -101,6 +112,8 @@ public enum Relation {
return Conf.territoryEnemyDenyBuildWhenOffline;
} else if (isAlly()) {
return Conf.territoryAllyDenyBuildWhenOffline;
} else if (isTruce()) {
return Conf.territoryTruceDenyBuildWhenOffline;
} else {
return Conf.territoryDenyBuildWhenOffline;
}
@ -118,6 +131,8 @@ public enum Relation {
return Conf.territoryEnemyPainBuild;
} else if (isAlly()) {
return Conf.territoryAllyPainBuild;
} else if (isTruce()) {
return Conf.territoryTrucePainBuild;
} else {
return Conf.territoryPainBuild;
}
@ -126,6 +141,8 @@ public enum Relation {
return Conf.territoryEnemyPainBuildWhenOffline;
} else if (isAlly()) {
return Conf.territoryAllyPainBuildWhenOffline;
} else if (isTruce()) {
return Conf.territoryTrucePainBuildWhenOffline;
} else {
return Conf.territoryPainBuildWhenOffline;
}
@ -140,6 +157,8 @@ public enum Relation {
return Conf.territoryEnemyDenyUseage;
} else if (isAlly()) {
return Conf.territoryAllyDenyUseage;
} else if (isTruce()) {
return Conf.territoryTruceDenyUseage;
} else {
return Conf.territoryDenyUseage;
}
@ -150,6 +169,8 @@ public enum Relation {
return Conf.econCostEnemy;
} else if (isAlly()) {
return Conf.econCostAlly;
} else if (isTruce()) {
return Conf.econCostTruce;
} else {
return Conf.econCostNeutral;
}

View File

@ -85,6 +85,7 @@ public enum TL {
COMMAND_CHAT_MODE_PUBLIC("<i>Public chat mode."),
COMMAND_CHAT_MODE_ALLIANCE("<i>Alliance only chat mode."),
COMMAND_CHAT_MODE_TRUCE("<i>Truce only chat mode."),
COMMAND_CHAT_MODE_FACTION("<i>Faction only chat mode."),
COMMAND_CHATSPY_ENABLE("<i>You have enabled chat spying mode."),
@ -564,6 +565,7 @@ public enum TL {
*/
CHAT_FACTION("faction chat"),
CHAT_ALLIANCE("alliance chat"),
CHAT_TRUCE("truce chat"),
CHAT_PUBLIC("public chat"),
/**
@ -571,6 +573,7 @@ public enum TL {
*/
RELATION_MEMBER("member"),
RELATION_ALLY("ally"),
RELATION_TRUCE("truce"),
RELATION_NEUTRAL("neutral"),
RELATION_ENEMY("enemy"),