Better flag system. Permission to change faction flags of choice. Possibility for other plugins to add faction flags, and more.
This commit is contained in:
parent
2f021ecc72
commit
670d8e4a5f
@ -8,6 +8,8 @@ public class Const
|
||||
|
||||
public static final String COLLECTION_BOARD = BASENAME_+"board";
|
||||
public static final String COLLECTION_FACTION = BASENAME_+"faction";
|
||||
public static final String COLLECTION_MFLAG = BASENAME_+"mflag";
|
||||
public static final String COLLECTION_MPERM = BASENAME_+"mperm";
|
||||
public static final String COLLECTION_MPLAYER = BASENAME_+"mplayer";
|
||||
public static final String COLLECTION_MCONF = BASENAME_+"mconf";
|
||||
|
||||
|
@ -1,122 +0,0 @@
|
||||
package com.massivecraft.factions;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
|
||||
|
||||
/**
|
||||
* Flags that describe the nature of a faction and it's territory.
|
||||
* Can monsters spawn there? May fire spread etc? Is the faction permanent?
|
||||
* These flags have nothing to do with player-permission.
|
||||
*
|
||||
* The flags are either true or false.
|
||||
*/
|
||||
public enum FFlag
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// ENUM
|
||||
// -------------------------------------------- //
|
||||
|
||||
// Faction flags
|
||||
PERMANENT("permanent", "<i>A permanent faction will never be deleted.", false),
|
||||
PEACEFUL("peaceful", "<i>Allways in truce with other factions.", false),
|
||||
INFPOWER("infpower", "<i>This flag gives the faction infinite power.", false),
|
||||
// This faction has infinite power: TODO: Add faction has enough method. Replace the permanentpower level
|
||||
|
||||
// (Faction) Territory flags
|
||||
// If a faction later could have many different territories this would probably be in another enum
|
||||
POWERLOSS("powerloss", "<i>Is power lost on death in this territory?", true),
|
||||
PVP("pvp", "<i>Can you PVP in territory?", true),
|
||||
FRIENDLYFIRE("friendlyfire", "<i>Can friends hurt eachother here?", false),
|
||||
MONSTERS("monsters", "<i>Can monsters spawn in this territory?", true),
|
||||
EXPLOSIONS("explosions", "<i>Can explosions occur in this territory?", true),
|
||||
OFFLINE_EXPLOSIONS("offlineexplosions", "<i>Can explosions occur if faction is offline?", false),
|
||||
FIRESPREAD("firespread", "<i>Can fire spread in territory?", true),
|
||||
ENDERGRIEF("endergrief", "<i>Can endermen grief in this territory?", false),
|
||||
|
||||
// END OF LIST
|
||||
;
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELDS
|
||||
// -------------------------------------------- //
|
||||
|
||||
private final String nicename;
|
||||
public String getNicename() { return this.nicename; }
|
||||
|
||||
private final String desc;
|
||||
public String getDescription() { return this.desc; }
|
||||
|
||||
public final boolean defaultDefault;
|
||||
public boolean getDefaultDefault() { return this.defaultDefault; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
private FFlag(String nicename, final String desc, boolean defaultDefault)
|
||||
{
|
||||
this.nicename = nicename;
|
||||
this.desc = desc;
|
||||
this.defaultDefault = defaultDefault;
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// DEFAULTS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public boolean getDefault()
|
||||
{
|
||||
Boolean ret = MConf.get().defaultFactionFlags.get(this);
|
||||
if (ret == null) return this.getDefaultDefault();
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static Map<FFlag, Boolean> getDefaultDefaults()
|
||||
{
|
||||
Map<FFlag, Boolean> ret = new LinkedHashMap<FFlag, Boolean>();
|
||||
for (FFlag flag : values())
|
||||
{
|
||||
ret.put(flag, flag.getDefaultDefault());
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// PARSE
|
||||
// -------------------------------------------- //
|
||||
|
||||
public static FFlag parse(String str)
|
||||
{
|
||||
str = str.toLowerCase();
|
||||
if (str.startsWith("per")) return PERMANENT;
|
||||
if (str.startsWith("pea")) return PEACEFUL;
|
||||
if (str.startsWith("i")) return INFPOWER;
|
||||
if (str.startsWith("pow")) return POWERLOSS;
|
||||
if (str.startsWith("pvp")) return PVP;
|
||||
if (str.startsWith("fr") || str.startsWith("ff")) return FRIENDLYFIRE;
|
||||
if (str.startsWith("m")) return MONSTERS;
|
||||
if (str.startsWith("ex")) return EXPLOSIONS;
|
||||
if (str.startsWith("o")) return OFFLINE_EXPLOSIONS;
|
||||
if (str.startsWith("fi")) return FIRESPREAD;
|
||||
if (str.startsWith("en")) return ENDERGRIEF;
|
||||
return null;
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// UTIL
|
||||
// -------------------------------------------- //
|
||||
|
||||
public String getStateInfo(boolean value, boolean withDesc)
|
||||
{
|
||||
String ret = (value ? "<g>YES" : "<b>NOO") + "<c> " + this.getNicename();
|
||||
if (withDesc)
|
||||
{
|
||||
ret += " " + this.getDescription();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
}
|
@ -39,6 +39,7 @@ public enum FPerm
|
||||
ACCESS(false, "access", "grant territory", Rel.LEADER, Rel.OFFICER),
|
||||
DISBAND(false, "disband", "disband the faction", Rel.LEADER),
|
||||
PERMS(false, "perms", "manage permissions", Rel.LEADER),
|
||||
FLAGS(false, "flags", "manage flags", Rel.LEADER),
|
||||
|
||||
// END OF LIST
|
||||
;
|
||||
@ -118,6 +119,7 @@ public enum FPerm
|
||||
if (str.startsWith("t")) return TERRITORY;
|
||||
if (str.startsWith("di")) return DISBAND;
|
||||
if (str.startsWith("pe")) return PERMS;
|
||||
if (str.startsWith("f")) return FLAGS;
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,6 @@ package com.massivecraft.factions;
|
||||
|
||||
import com.massivecraft.factions.adapter.BoardAdapter;
|
||||
import com.massivecraft.factions.adapter.BoardMapAdapter;
|
||||
import com.massivecraft.factions.adapter.FFlagAdapter;
|
||||
import com.massivecraft.factions.adapter.FPermAdapter;
|
||||
import com.massivecraft.factions.adapter.FactionPreprocessAdapter;
|
||||
import com.massivecraft.factions.adapter.RelAdapter;
|
||||
@ -25,6 +24,7 @@ import com.massivecraft.factions.entity.Board;
|
||||
import com.massivecraft.factions.entity.BoardColl;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.FactionColl;
|
||||
import com.massivecraft.factions.entity.MFlagColl;
|
||||
import com.massivecraft.factions.entity.MPlayerColl;
|
||||
import com.massivecraft.factions.entity.MConfColl;
|
||||
import com.massivecraft.factions.integration.dynmap.IntegrationDynmap;
|
||||
@ -119,6 +119,7 @@ public class Factions extends MassivePlugin
|
||||
|
||||
// Initialize Database
|
||||
this.databaseInitialized = false;
|
||||
MFlagColl.get().init();
|
||||
MConfColl.get().init();
|
||||
UpdateUtil.update();
|
||||
MPlayerColl.get().init();
|
||||
@ -184,7 +185,6 @@ public class Factions extends MassivePlugin
|
||||
.registerTypeAdapter(Board.MAP_TYPE, BoardMapAdapter.get())
|
||||
.registerTypeAdapter(Rel.class, RelAdapter.get())
|
||||
.registerTypeAdapter(FPerm.class, FPermAdapter.get())
|
||||
.registerTypeAdapter(FFlag.class, FFlagAdapter.get())
|
||||
;
|
||||
}
|
||||
|
||||
|
@ -24,7 +24,6 @@ public enum Perm
|
||||
DISBAND("disband"),
|
||||
FACTION("faction"),
|
||||
FLAG("flag"),
|
||||
FLAG_SET("flag.set"),
|
||||
HOME("home"),
|
||||
HOME_OTHER("home.other"),
|
||||
INVITE("invite"),
|
||||
|
@ -1,29 +0,0 @@
|
||||
package com.massivecraft.factions.adapter;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.massivecore.xlib.gson.JsonDeserializationContext;
|
||||
import com.massivecraft.massivecore.xlib.gson.JsonDeserializer;
|
||||
import com.massivecraft.massivecore.xlib.gson.JsonElement;
|
||||
import com.massivecraft.massivecore.xlib.gson.JsonParseException;
|
||||
|
||||
public class FFlagAdapter implements JsonDeserializer<FFlag>
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// INSTANCE & CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
private static FFlagAdapter i = new FFlagAdapter();
|
||||
public static FFlagAdapter get() { return i; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public FFlag deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException
|
||||
{
|
||||
return FFlag.parse(json.getAsString());
|
||||
}
|
||||
}
|
@ -26,7 +26,6 @@ public class CmdFactions extends FactionsCommand
|
||||
public CmdFactionsDescription cmdFactionsDescription = new CmdFactionsDescription();
|
||||
public CmdFactionsSethome cmdFactionsSethome = new CmdFactionsSethome();
|
||||
public CmdFactionsUnsethome cmdFactionsUnsethome = new CmdFactionsUnsethome();
|
||||
public CmdFactionsOpen cmdFactionsOpen = new CmdFactionsOpen();
|
||||
public CmdFactionsInvite cmdFactionsInvite = new CmdFactionsInvite();
|
||||
public CmdFactionsKick cmdFactionsKick = new CmdFactionsKick();
|
||||
public CmdFactionsTitle cmdFactionsTitle = new CmdFactionsTitle();
|
||||
@ -72,7 +71,6 @@ public class CmdFactions extends FactionsCommand
|
||||
this.addSubCommand(this.cmdFactionsDescription);
|
||||
this.addSubCommand(this.cmdFactionsSethome);
|
||||
this.addSubCommand(this.cmdFactionsUnsethome);
|
||||
this.addSubCommand(this.cmdFactionsOpen);
|
||||
this.addSubCommand(this.cmdFactionsInvite);
|
||||
this.addSubCommand(this.cmdFactionsKick);
|
||||
this.addSubCommand(this.cmdFactionsTitle);
|
||||
|
@ -4,6 +4,8 @@ import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.massivecore.cmd.arg.ARBoolean;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
import com.massivecraft.massivecore.util.IdUtil;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
|
||||
public class CmdFactionsAdmin extends FactionsCommand
|
||||
{
|
||||
@ -20,7 +22,6 @@ public class CmdFactionsAdmin extends FactionsCommand
|
||||
this.addOptionalArg("on/off", "flip");
|
||||
|
||||
// Requirements
|
||||
// this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.ADMIN.node));
|
||||
}
|
||||
|
||||
@ -31,21 +32,21 @@ public class CmdFactionsAdmin extends FactionsCommand
|
||||
@Override
|
||||
public void perform()
|
||||
{
|
||||
// Args
|
||||
Boolean target = this.arg(0, ARBoolean.get(), !msender.isUsingAdminMode());
|
||||
if (target == null) return;
|
||||
|
||||
// Apply
|
||||
msender.setUsingAdminMode(target);
|
||||
|
||||
if (msender.isUsingAdminMode())
|
||||
{
|
||||
msender.msg("<i>You have enabled admin bypass mode.");
|
||||
Factions.get().log(msender.getId() + " has ENABLED admin bypass mode.");
|
||||
}
|
||||
else
|
||||
{
|
||||
msender.msg("<i>You have disabled admin bypass mode.");
|
||||
Factions.get().log(msender.getId() + " DISABLED admin bypass mode.");
|
||||
}
|
||||
// Inform
|
||||
String desc = Txt.parse(msender.isUsingAdminMode() ? "<g>ENABLED" : "<b>DISABLED");
|
||||
|
||||
String messageYou = Txt.parse("<i>%s %s <i>admin bypass mode.", msender.getDisplayName(msender), desc);
|
||||
String messageLog = Txt.parse("<i>%s %s <i>admin bypass mode.", msender.getDisplayName(IdUtil.getConsole()), desc);
|
||||
|
||||
msender.sendMessage(messageYou);
|
||||
Factions.get().log(messageLog);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -2,13 +2,13 @@ package com.massivecraft.factions.cmd;
|
||||
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.entity.FactionColl;
|
||||
import com.massivecraft.factions.entity.MFlag;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.event.EventFactionsDisband;
|
||||
import com.massivecraft.factions.event.EventFactionsMembershipChange;
|
||||
import com.massivecraft.factions.event.EventFactionsMembershipChange.MembershipChangeReason;
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Perm;
|
||||
@ -49,7 +49,7 @@ public class CmdFactionsDisband extends FactionsCommand
|
||||
if ( ! FPerm.DISBAND.has(msender, faction, true)) return;
|
||||
|
||||
// Verify
|
||||
if (faction.getFlag(FFlag.PERMANENT))
|
||||
if (faction.getFlag(MFlag.getPermanent()))
|
||||
{
|
||||
msg("<i>This faction is designated as permanent, so you cannot disband it.");
|
||||
return;
|
||||
|
@ -8,11 +8,11 @@ import java.util.Map;
|
||||
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.MFlag;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.event.EventFactionsChunkChangeType;
|
||||
import com.massivecraft.factions.integration.Econ;
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.PlayerRoleComparator;
|
||||
import com.massivecraft.factions.Rel;
|
||||
@ -59,6 +59,12 @@ public class CmdFactionsFaction extends FactionsCommand
|
||||
// INFO: Title
|
||||
msg(Txt.titleize("Faction " + faction.getName(msender)));
|
||||
|
||||
// INFO: Id (admin mode output only)
|
||||
if (msender.isUsingAdminMode())
|
||||
{
|
||||
msg("<a>ID: <i>%s", faction.getId());
|
||||
}
|
||||
|
||||
// INFO: Description
|
||||
msg("<a>Description: <i>%s", faction.getDescription());
|
||||
|
||||
@ -71,7 +77,8 @@ public class CmdFactionsFaction extends FactionsCommand
|
||||
msg("<a>Age: <i>%s", ageString);
|
||||
|
||||
// INFO: Open
|
||||
msg("<a>Open: <i>"+(faction.isOpen() ? "<lime>Yes<i>, anyone can join" : "<rose>No<i>, only invited people can join"));
|
||||
// TODO: Why hardcode displaying the open flag only? We should rather display everything publicly editable.
|
||||
msg("<a>Open: <i>"+(faction.getFlag(MFlag.getOpen()) ? "<lime>Yes<i>, anyone can join" : "<rose>No<i>, only invited people can join"));
|
||||
|
||||
// INFO: Power
|
||||
double powerBoost = faction.getPowerBoost();
|
||||
@ -113,12 +120,12 @@ public class CmdFactionsFaction extends FactionsCommand
|
||||
|
||||
// Display important flags
|
||||
// TODO: Find the non default flags, and display them instead.
|
||||
if (faction.getFlag(FFlag.PERMANENT))
|
||||
if (faction.getFlag(MFlag.getPermanent()))
|
||||
{
|
||||
msg("<a>This faction is permanent - remaining even with no followers.");
|
||||
}
|
||||
|
||||
if (faction.getFlag(FFlag.PEACEFUL))
|
||||
if (faction.getFlag(MFlag.getPeaceful()))
|
||||
{
|
||||
msg("<a>This faction is peaceful - in truce with everyone.");
|
||||
}
|
||||
@ -129,7 +136,7 @@ public class CmdFactionsFaction extends FactionsCommand
|
||||
// List the relations to other factions
|
||||
Map<Rel, List<String>> relationNames = faction.getFactionNamesPerRelation(msender, true);
|
||||
|
||||
if (faction.getFlag(FFlag.PEACEFUL))
|
||||
if (faction.getFlag(MFlag.getPeaceful()))
|
||||
{
|
||||
sendMessage(Txt.parse("<a>In Truce with:<i> *everyone*"));
|
||||
}
|
||||
|
@ -1,10 +1,12 @@
|
||||
package com.massivecraft.factions.cmd;
|
||||
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.arg.ARFFlag;
|
||||
import com.massivecraft.factions.cmd.arg.ARMFlag;
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.MFlag;
|
||||
import com.massivecraft.factions.event.EventFactionsFlagChange;
|
||||
import com.massivecraft.massivecore.cmd.arg.ARBoolean;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
@ -36,39 +38,67 @@ public class CmdFactionsFlag extends FactionsCommand
|
||||
@Override
|
||||
public void perform()
|
||||
{
|
||||
// Arg: Faction
|
||||
Faction faction = this.arg(0, ARFaction.get(), msenderFaction);
|
||||
if (faction == null) return;
|
||||
|
||||
// Case: Show All
|
||||
if ( ! this.argIsSet(1))
|
||||
{
|
||||
msg(Txt.titleize("Flags for " + faction.describeTo(msender, true)));
|
||||
for (FFlag flag : FFlag.values())
|
||||
for (MFlag mflag : MFlag.getAll())
|
||||
{
|
||||
msg(flag.getStateInfo(faction.getFlag(flag), true));
|
||||
if (!mflag.isVisible() && !msender.isUsingAdminMode()) continue;
|
||||
msg(mflag.getStateInfo(faction.getFlag(mflag), true));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
FFlag flag = this.arg(1, ARFFlag.get());
|
||||
if (flag == null) return;
|
||||
// Arg: MFlag
|
||||
MFlag mflag = this.arg(1, ARMFlag.get());
|
||||
if (mflag == null) return;
|
||||
|
||||
// Case: Show One
|
||||
if ( ! this.argIsSet(2))
|
||||
{
|
||||
msg(Txt.titleize("Flag for " + faction.describeTo(msender, true)));
|
||||
msg(flag.getStateInfo(faction.getFlag(flag), true));
|
||||
msg(mflag.getStateInfo(faction.getFlag(mflag), true));
|
||||
return;
|
||||
}
|
||||
|
||||
// Do the sender have the right to change flags for this faction?
|
||||
if ( ! FPerm.PERMS.has(msender, faction, true)) return;
|
||||
|
||||
// Is this flag editable?
|
||||
if (!msender.isUsingAdminMode() && !mflag.isEditable())
|
||||
{
|
||||
msg("<b>The flag <h>%s <b>is not editable.", mflag.getName());
|
||||
return;
|
||||
}
|
||||
|
||||
// Arg: Target Value
|
||||
Boolean targetValue = this.arg(2, ARBoolean.get());
|
||||
if (targetValue == null) return;
|
||||
|
||||
// Do the sender have the right to change flags?
|
||||
if ( ! Perm.FLAG_SET.has(sender, true)) return;
|
||||
// Event
|
||||
EventFactionsFlagChange event = new EventFactionsFlagChange(sender, faction, mflag, targetValue);
|
||||
event.run();
|
||||
if (event.isCancelled()) return;
|
||||
targetValue = event.isNewValue();
|
||||
|
||||
// Do the change
|
||||
msg(Txt.titleize("Flag for " + faction.describeTo(msender, true)));
|
||||
faction.setFlag(flag, targetValue);
|
||||
msg(flag.getStateInfo(faction.getFlag(flag), true));
|
||||
// Apply
|
||||
faction.setFlag(mflag, targetValue);
|
||||
|
||||
// Inform
|
||||
String stateInfo = mflag.getStateInfo(faction.getFlag(mflag), true);
|
||||
if (msender.getFaction() != faction)
|
||||
{
|
||||
// Send message to sender
|
||||
msg("<h>%s <i>set a flag for <h>%s", msender.describeTo(msender, true), faction.describeTo(msender, true));
|
||||
msg(stateInfo);
|
||||
}
|
||||
faction.msg("<h>%s <i>set a flag for <h>%s", msender.describeTo(faction, true), faction.describeTo(faction, true));
|
||||
faction.msg(stateInfo);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -4,7 +4,6 @@ import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Perm;
|
||||
@ -12,6 +11,7 @@ import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.entity.BoardColl;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.MFlag;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.event.EventFactionsHomeTeleport;
|
||||
@ -98,7 +98,7 @@ public class CmdFactionsHome extends FactionsCommandHome
|
||||
(
|
||||
MConf.get().homesTeleportAllowedEnemyDistance > 0
|
||||
&&
|
||||
factionHere.getFlag(FFlag.PVP)
|
||||
factionHere.getFlag(MFlag.getPvp())
|
||||
&&
|
||||
(
|
||||
! msender.isInOwnTerritory()
|
||||
|
@ -5,6 +5,7 @@ import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.cmd.arg.ARMPlayer;
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.MFlag;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.event.EventFactionsMembershipChange;
|
||||
@ -79,7 +80,7 @@ public class CmdFactionsJoin extends FactionsCommand
|
||||
return;
|
||||
}
|
||||
|
||||
if( ! (faction.isOpen() || faction.isInvited(mplayer) || msender.isUsingAdminMode() || Perm.JOIN_ANY.has(sender, false)))
|
||||
if( ! (faction.getFlag(MFlag.getOpen()) || faction.isInvited(mplayer) || msender.isUsingAdminMode() || Perm.JOIN_ANY.has(sender, false)))
|
||||
{
|
||||
msg("<i>This faction requires invitation.");
|
||||
if (samePlayer)
|
||||
|
@ -1,56 +0,0 @@
|
||||
package com.massivecraft.factions.cmd;
|
||||
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.cmd.req.ReqHasFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqRoleIsAtLeast;
|
||||
import com.massivecraft.factions.event.EventFactionsOpenChange;
|
||||
import com.massivecraft.massivecore.cmd.arg.ARBoolean;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
|
||||
public class CmdFactionsOpen extends FactionsCommand
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
public CmdFactionsOpen()
|
||||
{
|
||||
// Aliases
|
||||
this.addAliases("open");
|
||||
|
||||
// Args
|
||||
this.addOptionalArg("yes/no", "toggle");
|
||||
|
||||
// Requirements
|
||||
this.addRequirements(ReqHasPerm.get(Perm.OPEN.node));
|
||||
this.addRequirements(ReqHasFaction.get());
|
||||
this.addRequirements(ReqRoleIsAtLeast.get(Rel.OFFICER));
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public void perform()
|
||||
{
|
||||
// Args
|
||||
Boolean newOpen = this.arg(0, ARBoolean.get(), !msenderFaction.isOpen());
|
||||
if (newOpen == null) return;
|
||||
|
||||
// Event
|
||||
EventFactionsOpenChange event = new EventFactionsOpenChange(sender, msenderFaction, newOpen);
|
||||
event.run();
|
||||
if (event.isCancelled()) return;
|
||||
newOpen = event.isNewOpen();
|
||||
|
||||
// Apply
|
||||
msenderFaction.setOpen(newOpen);
|
||||
|
||||
// Inform
|
||||
String descTarget = msenderFaction.isOpen() ? "open" : "closed";
|
||||
msenderFaction.msg("%s<i> changed the faction to <h>%s<i>.", msender.describeTo(msenderFaction, true), descTarget);
|
||||
}
|
||||
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
package com.massivecraft.factions.cmd;
|
||||
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.Perm;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.cmd.arg.ARFaction;
|
||||
@ -8,6 +7,7 @@ import com.massivecraft.factions.cmd.req.ReqHasFaction;
|
||||
import com.massivecraft.factions.cmd.req.ReqRoleIsAtLeast;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.MFlag;
|
||||
import com.massivecraft.factions.event.EventFactionsRelationChange;
|
||||
import com.massivecraft.massivecore.cmd.req.ReqHasPerm;
|
||||
|
||||
@ -89,13 +89,13 @@ public abstract class CmdFactionsRelationAbstract extends FactionsCommand
|
||||
|
||||
// TODO: The ally case should work!!
|
||||
// * this might have to be bumped up to make that happen, & allow ALLY,NEUTRAL only
|
||||
if ( newRelation != Rel.TRUCE && otherFaction.getFlag(FFlag.PEACEFUL))
|
||||
if ( newRelation != Rel.TRUCE && otherFaction.getFlag(MFlag.getPeaceful()))
|
||||
{
|
||||
otherFaction.msg("<i>This will have no effect while your faction is peaceful.");
|
||||
msenderFaction.msg("<i>This will have no effect while their faction is peaceful.");
|
||||
}
|
||||
|
||||
if ( newRelation != Rel.TRUCE && msenderFaction.getFlag(FFlag.PEACEFUL))
|
||||
if ( newRelation != Rel.TRUCE && msenderFaction.getFlag(MFlag.getPeaceful()))
|
||||
{
|
||||
otherFaction.msg("<i>This will have no effect while their faction is peaceful.");
|
||||
msenderFaction.msg("<i>This will have no effect while your faction is peaceful.");
|
||||
|
@ -24,7 +24,6 @@ public class CmdFactionsSeeChunk extends FactionsCommand
|
||||
this.addAliases("sc", "seechunk");
|
||||
|
||||
// Requirements
|
||||
// this.addRequirements(ReqFactionsEnabled.get());
|
||||
this.addRequirements(ReqHasPerm.get(Perm.SEE_CHUNK.node));
|
||||
this.addRequirements(ReqIsPlayer.get());
|
||||
}
|
||||
|
@ -1,51 +0,0 @@
|
||||
package com.massivecraft.factions.cmd.arg;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.massivecore.cmd.arg.ARAbstractSelect;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
|
||||
public class ARFFlag extends ARAbstractSelect<FFlag>
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// INSTANCE & CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
private static ARFFlag i = new ARFFlag();
|
||||
public static ARFFlag get() { return i; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public String typename()
|
||||
{
|
||||
return "faction flag";
|
||||
}
|
||||
|
||||
@Override
|
||||
public FFlag select(String str, CommandSender sender)
|
||||
{
|
||||
return FFlag.parse(str);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<String> altNames(CommandSender sender)
|
||||
{
|
||||
List<String> ret = new ArrayList<String>();
|
||||
|
||||
for (FFlag fflag : FFlag.values())
|
||||
{
|
||||
ret.add(Txt.getNicedEnum(fflag));
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
}
|
88
src/main/java/com/massivecraft/factions/cmd/arg/ARMFlag.java
Normal file
88
src/main/java/com/massivecraft/factions/cmd/arg/ARMFlag.java
Normal file
@ -0,0 +1,88 @@
|
||||
package com.massivecraft.factions.cmd.arg;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import com.massivecraft.factions.entity.MFlag;
|
||||
import com.massivecraft.massivecore.cmd.arg.ARAbstractSelect;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
|
||||
public class ARMFlag extends ARAbstractSelect<MFlag>
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// INSTANCE & CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
private static ARMFlag i = new ARMFlag();
|
||||
public static ARMFlag get() { return i; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public String typename()
|
||||
{
|
||||
return "faction flag";
|
||||
}
|
||||
|
||||
@Override
|
||||
public MFlag select(String arg, CommandSender sender)
|
||||
{
|
||||
if (arg == null) return null;
|
||||
arg = getComparable(arg);
|
||||
|
||||
// Algorithmic General Detection
|
||||
int startswithCount = 0;
|
||||
MFlag startswith = null;
|
||||
for (MFlag mflag : MFlag.getAll())
|
||||
{
|
||||
String comparable = getComparable(mflag);
|
||||
if (comparable.equals(arg)) return mflag;
|
||||
if (comparable.startsWith(arg))
|
||||
{
|
||||
startswith = mflag;
|
||||
startswithCount++;
|
||||
}
|
||||
}
|
||||
|
||||
if (startswithCount == 1)
|
||||
{
|
||||
return startswith;
|
||||
}
|
||||
|
||||
// Nothing found
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<String> altNames(CommandSender sender)
|
||||
{
|
||||
List<String> ret = new ArrayList<String>();
|
||||
|
||||
for (MFlag mflag : MFlag.getAll())
|
||||
{
|
||||
ret.add(Txt.upperCaseFirst(mflag.getName()));
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// UTIL
|
||||
// -------------------------------------------- //
|
||||
|
||||
public static String getComparable(String string)
|
||||
{
|
||||
return string.toLowerCase();
|
||||
}
|
||||
|
||||
public static String getComparable(MFlag mflag)
|
||||
{
|
||||
return getComparable(mflag.getName());
|
||||
}
|
||||
|
||||
}
|
@ -9,7 +9,6 @@ import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.massivecraft.factions.EconomyParticipator;
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.FactionEqualsPredictate;
|
||||
import com.massivecraft.factions.Factions;
|
||||
@ -48,10 +47,9 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
this.setCreatedAtMillis(that.createdAtMillis);
|
||||
this.setHome(that.home);
|
||||
this.setPowerBoost(that.powerBoost);
|
||||
this.setOpen(that.open);
|
||||
this.setInvitedPlayerIds(that.invitedPlayerIds);
|
||||
this.setRelationWishes(that.relationWishes);
|
||||
this.setFlags(that.flags);
|
||||
this.setFlagIds(that.flags);
|
||||
this.setPerms(that.perms);
|
||||
|
||||
return this;
|
||||
@ -108,7 +106,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
// If the faction is open they can.
|
||||
// If the faction is closed an invite is required.
|
||||
// Null means default.
|
||||
private Boolean open = null;
|
||||
// private Boolean open = null;
|
||||
|
||||
// This is the ids of the invited players.
|
||||
// They are actually "senderIds" since you can invite "@console" to your faction.
|
||||
@ -121,7 +119,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
|
||||
// The flag overrides are modifications to the default values.
|
||||
// Null means default.
|
||||
private Map<FFlag, Boolean> flags = null;
|
||||
private Map<String, Boolean> flags = null;
|
||||
|
||||
// The perm overrides are modifications to the default values.
|
||||
// Null means default.
|
||||
@ -338,6 +336,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
// FIELD: open
|
||||
// -------------------------------------------- //
|
||||
|
||||
/*
|
||||
public boolean isDefaultOpen()
|
||||
{
|
||||
return MConf.get().defaultFactionOpen;
|
||||
@ -363,7 +362,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
|
||||
// Mark as changed
|
||||
this.changed();
|
||||
}
|
||||
}*/
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELD: invitedPlayerIds
|
||||
@ -538,45 +537,53 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
|
||||
// RAW
|
||||
|
||||
public Map<FFlag, Boolean> getFlags()
|
||||
public Map<MFlag, Boolean> getFlags()
|
||||
{
|
||||
Map<FFlag, Boolean> ret = new LinkedHashMap<FFlag, Boolean>();
|
||||
|
||||
for (FFlag fflag : FFlag.values())
|
||||
// We start with default values ...
|
||||
Map<MFlag, Boolean> ret = new LinkedHashMap<MFlag, Boolean>();
|
||||
for (MFlag mflag : MFlag.getAll())
|
||||
{
|
||||
ret.put(fflag, fflag.getDefault());
|
||||
ret.put(mflag, mflag.isStandard());
|
||||
}
|
||||
|
||||
// ... and if anything is explicitly set ...
|
||||
if (this.flags != null)
|
||||
{
|
||||
for (Entry<FFlag, Boolean> entry : this.flags.entrySet())
|
||||
// ... we we use that info.
|
||||
for (Entry<String, Boolean> entry : this.flags.entrySet())
|
||||
{
|
||||
ret.put(entry.getKey(), entry.getValue());
|
||||
String id = entry.getKey();
|
||||
if (id == null) continue;
|
||||
|
||||
MFlag mflag = MFlag.get(id);
|
||||
if (mflag == null) continue;
|
||||
|
||||
ret.put(mflag, entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
public void setFlags(Map<FFlag, Boolean> flags)
|
||||
public void setFlagIds(Map<String, Boolean> flags)
|
||||
{
|
||||
// Clean input
|
||||
Map<FFlag, Boolean> target;
|
||||
if (flags == null)
|
||||
Map<String, Boolean> target = null;
|
||||
if (flags != null)
|
||||
{
|
||||
target = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
target = new LinkedHashMap<FFlag, Boolean>(flags);
|
||||
// We start out with what was suggested
|
||||
target = new LinkedHashMap<String, Boolean>(flags);
|
||||
|
||||
// However if the context is fully live we try to throw some default values away.
|
||||
if (this.attached() && Factions.get().isDatabaseInitialized())
|
||||
{
|
||||
Iterator<Entry<FFlag, Boolean>> iter = target.entrySet().iterator();
|
||||
Iterator<Entry<String, Boolean>> iter = target.entrySet().iterator();
|
||||
while (iter.hasNext())
|
||||
{
|
||||
Entry<FFlag, Boolean> entry = iter.next();
|
||||
if (entry.getKey().getDefault() == entry.getValue())
|
||||
Entry<String, Boolean> entry = iter.next();
|
||||
String id = entry.getKey();
|
||||
MFlag mflag = MFlag.get(id);
|
||||
if (mflag != null && mflag.isStandard() == entry.getValue())
|
||||
{
|
||||
iter.remove();
|
||||
}
|
||||
@ -596,15 +603,25 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
this.changed();
|
||||
}
|
||||
|
||||
public void setFlags(Map<MFlag, Boolean> flags)
|
||||
{
|
||||
Map<String, Boolean> flagIds = new LinkedHashMap<String, Boolean>();
|
||||
for (Entry<MFlag, Boolean> entry : flags.entrySet())
|
||||
{
|
||||
flagIds.put(entry.getKey().getId(), entry.getValue());
|
||||
}
|
||||
setFlagIds(flagIds);
|
||||
}
|
||||
|
||||
// FINER
|
||||
|
||||
public boolean getFlag(FFlag flag)
|
||||
public boolean getFlag(MFlag flag)
|
||||
{
|
||||
return this.getFlags().get(flag);
|
||||
}
|
||||
public void setFlag(FFlag flag, boolean value)
|
||||
public void setFlag(MFlag flag, boolean value)
|
||||
{
|
||||
Map<FFlag, Boolean> flags = this.getFlags();
|
||||
Map<MFlag, Boolean> flags = this.getFlags();
|
||||
flags.put(flag, value);
|
||||
this.setFlags(flags);
|
||||
}
|
||||
@ -776,7 +793,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
|
||||
public double getPower()
|
||||
{
|
||||
if (this.getFlag(FFlag.INFPOWER)) return 999999;
|
||||
if (this.getFlag(MFlag.getInfpower())) return 999999;
|
||||
|
||||
double ret = 0;
|
||||
for (MPlayer mplayer : this.getMPlayers())
|
||||
@ -797,7 +814,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
|
||||
public double getPowerMax()
|
||||
{
|
||||
if (this.getFlag(FFlag.INFPOWER)) return 999999;
|
||||
if (this.getFlag(MFlag.getInfpower())) return 999999;
|
||||
|
||||
double ret = 0;
|
||||
for (MPlayer mplayer : this.getMPlayers())
|
||||
@ -956,7 +973,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
public void promoteNewLeader()
|
||||
{
|
||||
if ( ! this.isNormal()) return;
|
||||
if (this.getFlag(FFlag.PERMANENT) && MConf.get().permanentFactionsDisableLeaderPromotion) return;
|
||||
if (this.getFlag(MFlag.getPermanent()) && MConf.get().permanentFactionsDisableLeaderPromotion) return;
|
||||
|
||||
MPlayer oldLeader = this.getLeader();
|
||||
|
||||
@ -970,7 +987,7 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
if (replacements == null || replacements.isEmpty())
|
||||
{
|
||||
// faction leader is the only member; one-man faction
|
||||
if (this.getFlag(FFlag.PERMANENT))
|
||||
if (this.getFlag(MFlag.getPermanent()))
|
||||
{
|
||||
if (oldLeader != null)
|
||||
{
|
||||
@ -1032,8 +1049,8 @@ public class Faction extends Entity<Faction> implements EconomyParticipator
|
||||
|
||||
public boolean isExplosionsAllowed()
|
||||
{
|
||||
boolean explosions = this.getFlag(FFlag.EXPLOSIONS);
|
||||
boolean offlineexplosions = this.getFlag(FFlag.OFFLINE_EXPLOSIONS);
|
||||
boolean explosions = this.getFlag(MFlag.getExplosions());
|
||||
boolean offlineexplosions = this.getFlag(MFlag.getOfflineexplosions());
|
||||
boolean online = this.isFactionConsideredOnline();
|
||||
|
||||
return (online && explosions) || (!online && offlineexplosions);
|
||||
|
@ -8,7 +8,6 @@ import com.massivecraft.massivecore.store.Coll;
|
||||
import com.massivecraft.massivecore.store.MStore;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
import com.massivecraft.factions.Const;
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Rel;
|
||||
@ -93,19 +92,19 @@ public class FactionColl extends Coll<Faction>
|
||||
|
||||
faction.setName(ChatColor.DARK_GREEN+"Wilderness");
|
||||
faction.setDescription(null);
|
||||
faction.setOpen(false);
|
||||
|
||||
faction.setFlag(FFlag.PERMANENT, true);
|
||||
faction.setFlag(FFlag.PEACEFUL, false);
|
||||
faction.setFlag(FFlag.INFPOWER, true);
|
||||
faction.setFlag(FFlag.POWERLOSS, true);
|
||||
faction.setFlag(FFlag.PVP, true);
|
||||
faction.setFlag(FFlag.FRIENDLYFIRE, false);
|
||||
faction.setFlag(FFlag.MONSTERS, true);
|
||||
faction.setFlag(FFlag.EXPLOSIONS, true);
|
||||
faction.setFlag(FFlag.OFFLINE_EXPLOSIONS, true);
|
||||
faction.setFlag(FFlag.FIRESPREAD, true);
|
||||
faction.setFlag(FFlag.ENDERGRIEF, true);
|
||||
faction.setFlag(MFlag.getOpen(), false);
|
||||
faction.setFlag(MFlag.getPermanent(), true);
|
||||
faction.setFlag(MFlag.getPeaceful(), false);
|
||||
faction.setFlag(MFlag.getInfpower(), true);
|
||||
faction.setFlag(MFlag.getPowerloss(), true);
|
||||
faction.setFlag(MFlag.getPvp(), true);
|
||||
faction.setFlag(MFlag.getFriendlyire(), false);
|
||||
faction.setFlag(MFlag.getMonsters(), true);
|
||||
faction.setFlag(MFlag.getExplosions(), true);
|
||||
faction.setFlag(MFlag.getOfflineexplosions(), true);
|
||||
faction.setFlag(MFlag.getFirespread(), true);
|
||||
faction.setFlag(MFlag.getEndergrief(), true);
|
||||
|
||||
faction.setPermittedRelations(FPerm.BUILD, Rel.LEADER, Rel.OFFICER, Rel.MEMBER, Rel.RECRUIT, Rel.ALLY, Rel.TRUCE, Rel.NEUTRAL, Rel.ENEMY);
|
||||
faction.setPermittedRelations(FPerm.DOOR, Rel.LEADER, Rel.OFFICER, Rel.MEMBER, Rel.RECRUIT, Rel.ALLY, Rel.TRUCE, Rel.NEUTRAL, Rel.ENEMY);
|
||||
@ -126,19 +125,19 @@ public class FactionColl extends Coll<Faction>
|
||||
|
||||
faction.setName("SafeZone");
|
||||
faction.setDescription("Free from PVP and monsters");
|
||||
faction.setOpen(false);
|
||||
|
||||
faction.setFlag(FFlag.PERMANENT, true);
|
||||
faction.setFlag(FFlag.PEACEFUL, true);
|
||||
faction.setFlag(FFlag.INFPOWER, true);
|
||||
faction.setFlag(FFlag.POWERLOSS, false);
|
||||
faction.setFlag(FFlag.PVP, false);
|
||||
faction.setFlag(FFlag.FRIENDLYFIRE, false);
|
||||
faction.setFlag(FFlag.MONSTERS, false);
|
||||
faction.setFlag(FFlag.EXPLOSIONS, false);
|
||||
faction.setFlag(FFlag.OFFLINE_EXPLOSIONS, false);
|
||||
faction.setFlag(FFlag.FIRESPREAD, false);
|
||||
faction.setFlag(FFlag.ENDERGRIEF, false);
|
||||
faction.setFlag(MFlag.getOpen(), false);
|
||||
faction.setFlag(MFlag.getPermanent(), true);
|
||||
faction.setFlag(MFlag.getPeaceful(), true);
|
||||
faction.setFlag(MFlag.getInfpower(), true);
|
||||
faction.setFlag(MFlag.getPowerloss(), false);
|
||||
faction.setFlag(MFlag.getPvp(), false);
|
||||
faction.setFlag(MFlag.getFriendlyire(), false);
|
||||
faction.setFlag(MFlag.getMonsters(), false);
|
||||
faction.setFlag(MFlag.getExplosions(), false);
|
||||
faction.setFlag(MFlag.getOfflineexplosions(), false);
|
||||
faction.setFlag(MFlag.getFirespread(), false);
|
||||
faction.setFlag(MFlag.getEndergrief(), false);
|
||||
|
||||
faction.setPermittedRelations(FPerm.DOOR, Rel.LEADER, Rel.OFFICER, Rel.MEMBER, Rel.RECRUIT, Rel.ALLY, Rel.TRUCE, Rel.NEUTRAL, Rel.ENEMY);
|
||||
faction.setPermittedRelations(FPerm.CONTAINER, Rel.LEADER, Rel.OFFICER, Rel.MEMBER, Rel.RECRUIT, Rel.ALLY, Rel.TRUCE, Rel.NEUTRAL, Rel.ENEMY);
|
||||
@ -159,19 +158,19 @@ public class FactionColl extends Coll<Faction>
|
||||
|
||||
faction.setName("WarZone");
|
||||
faction.setDescription("Not the safest place to be");
|
||||
faction.setOpen(false);
|
||||
|
||||
faction.setFlag(FFlag.PERMANENT, true);
|
||||
faction.setFlag(FFlag.PEACEFUL, true);
|
||||
faction.setFlag(FFlag.INFPOWER, true);
|
||||
faction.setFlag(FFlag.POWERLOSS, true);
|
||||
faction.setFlag(FFlag.PVP, true);
|
||||
faction.setFlag(FFlag.FRIENDLYFIRE, true);
|
||||
faction.setFlag(FFlag.MONSTERS, true);
|
||||
faction.setFlag(FFlag.EXPLOSIONS, true);
|
||||
faction.setFlag(FFlag.OFFLINE_EXPLOSIONS, true);
|
||||
faction.setFlag(FFlag.FIRESPREAD, true);
|
||||
faction.setFlag(FFlag.ENDERGRIEF, true);
|
||||
faction.setFlag(MFlag.getOpen(), false);
|
||||
faction.setFlag(MFlag.getPermanent(), true);
|
||||
faction.setFlag(MFlag.getPeaceful(), true);
|
||||
faction.setFlag(MFlag.getInfpower(), true);
|
||||
faction.setFlag(MFlag.getPowerloss(), true);
|
||||
faction.setFlag(MFlag.getPvp(), true);
|
||||
faction.setFlag(MFlag.getFriendlyire(), true);
|
||||
faction.setFlag(MFlag.getMonsters(), true);
|
||||
faction.setFlag(MFlag.getExplosions(), true);
|
||||
faction.setFlag(MFlag.getOfflineexplosions(), true);
|
||||
faction.setFlag(MFlag.getFirespread(), true);
|
||||
faction.setFlag(MFlag.getEndergrief(), true);
|
||||
|
||||
faction.setPermittedRelations(FPerm.DOOR, Rel.LEADER, Rel.OFFICER, Rel.MEMBER, Rel.RECRUIT, Rel.ALLY, Rel.TRUCE, Rel.NEUTRAL, Rel.ENEMY);
|
||||
faction.setPermittedRelations(FPerm.CONTAINER, Rel.LEADER, Rel.OFFICER, Rel.MEMBER, Rel.RECRUIT, Rel.ALLY, Rel.TRUCE, Rel.NEUTRAL, Rel.ENEMY);
|
||||
@ -197,7 +196,7 @@ public class FactionColl extends Coll<Faction>
|
||||
for (Faction faction : this.getAll())
|
||||
{
|
||||
int landCount = faction.getLandCount();
|
||||
if (!faction.getFlag(FFlag.PEACEFUL) && landCount > 0)
|
||||
if (!faction.getFlag(MFlag.getPeaceful()) && landCount > 0)
|
||||
{
|
||||
List<MPlayer> players = faction.getMPlayers();
|
||||
int playerCount = players.size();
|
||||
|
@ -12,7 +12,6 @@ import org.bukkit.Material;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Rel;
|
||||
@ -105,8 +104,6 @@ public class MConf extends Entity<MConf>
|
||||
public Rel defaultPlayerRole = Rel.RECRUIT;
|
||||
public double defaultPlayerPower = 0.0;
|
||||
|
||||
public boolean defaultFactionOpen = false;
|
||||
public Map<FFlag, Boolean> defaultFactionFlags = FFlag.getDefaultDefaults();
|
||||
public Map<FPerm, Set<Rel>> defaultFactionPerms = FPerm.getDefaultDefaults();
|
||||
|
||||
// -------------------------------------------- //
|
||||
@ -429,7 +426,7 @@ public class MConf extends Entity<MConf>
|
||||
public double econCostName = 0.0;
|
||||
public double econCostDescription = 0.0;
|
||||
public double econCostTitle = 0.0;
|
||||
public double econCostOpen = 0.0;
|
||||
public double econCostFlag = 0.0;
|
||||
|
||||
public Map<Rel, Double> econRelCost = MUtil.map(
|
||||
Rel.ENEMY, 0.0,
|
||||
|
214
src/main/java/com/massivecraft/factions/entity/MFlag.java
Normal file
214
src/main/java/com/massivecraft/factions/entity/MFlag.java
Normal file
@ -0,0 +1,214 @@
|
||||
package com.massivecraft.factions.entity;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.massivecraft.massivecore.PredictateIsRegistered;
|
||||
import com.massivecraft.massivecore.Prioritized;
|
||||
import com.massivecraft.massivecore.Registerable;
|
||||
import com.massivecraft.massivecore.store.Entity;
|
||||
import com.massivecraft.massivecore.util.Txt;
|
||||
|
||||
public class MFlag extends Entity<MFlag> implements Prioritized, Registerable
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// CONSTANTS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public final static transient String ID_OPEN = "open";
|
||||
public final static transient String ID_MONSTERS = "monsters";
|
||||
public final static transient String ID_POWERLOSS = "powerloss";
|
||||
public final static transient String ID_PVP = "pvp";
|
||||
public final static transient String ID_FRIENDLYFIRE = "friendlyfire";
|
||||
public final static transient String ID_EXPLOSIONS = "explosions";
|
||||
public final static transient String ID_OFFLINEEXPLOSIONS = "offlineexplosions";
|
||||
public final static transient String ID_FIRESPREAD = "firespread";
|
||||
public final static transient String ID_ENDERGRIEF = "endergrief";
|
||||
public final static transient String ID_PERMANENT = "permanent";
|
||||
public final static transient String ID_PEACEFUL = "peaceful";
|
||||
public final static transient String ID_INFPOWER = "infpower";
|
||||
|
||||
public final static transient int PRIORITY_OPEN = 1000;
|
||||
public final static transient int PRIORITY_MONSTERS = 2000;
|
||||
public final static transient int PRIORITY_POWERLOSS = 3000;
|
||||
public final static transient int PRIORITY_PVP = 4000;
|
||||
public final static transient int PRIORITY_FRIENDLYFIRE = 5000;
|
||||
public final static transient int PRIORITY_EXPLOSIONS = 6000;
|
||||
public final static transient int PRIORITY_OFFLINEEXPLOSIONS = 7000;
|
||||
public final static transient int PRIORITY_FIRESPREAD = 8000;
|
||||
public final static transient int PRIORITY_ENDERGRIEF = 9000;
|
||||
public final static transient int PRIORITY_PERMANENT = 10000;
|
||||
public final static transient int PRIORITY_PEACEFUL = 11000;
|
||||
public final static transient int PRIORITY_INFPOWER = 12000;
|
||||
|
||||
// -------------------------------------------- //
|
||||
// META: CORE
|
||||
// -------------------------------------------- //
|
||||
|
||||
public static MFlag get(Object oid)
|
||||
{
|
||||
return MFlagColl.get().get(oid);
|
||||
}
|
||||
|
||||
public static List<MFlag> getAll()
|
||||
{
|
||||
return MFlagColl.get().getAll(PredictateIsRegistered.get());
|
||||
}
|
||||
|
||||
public static void setupStandardFlags()
|
||||
{
|
||||
getOpen();
|
||||
getMonsters();
|
||||
getPowerloss();
|
||||
getPvp();
|
||||
getFriendlyire();
|
||||
getExplosions();
|
||||
getOfflineexplosions();
|
||||
getFirespread();
|
||||
getEndergrief();
|
||||
getPermanent();
|
||||
getPeaceful();
|
||||
getInfpower();
|
||||
}
|
||||
|
||||
public static MFlag getOpen() { return getCreative(PRIORITY_OPEN, ID_OPEN, ID_OPEN, "Open factions can be joined without invite.", false, true, true); }
|
||||
public static MFlag getMonsters() { return getCreative(PRIORITY_MONSTERS, ID_MONSTERS, ID_MONSTERS, "Can monsters spawn in this territory?", false, true, true); }
|
||||
public static MFlag getPowerloss() { return getCreative(PRIORITY_POWERLOSS, ID_POWERLOSS, ID_POWERLOSS, "Is power lost on death in this territory?", true, false, true); }
|
||||
public static MFlag getPvp() { return getCreative(PRIORITY_PVP, ID_PVP, ID_PVP, "Can you PVP in territory?", true, false, true); }
|
||||
public static MFlag getFriendlyire() { return getCreative(PRIORITY_FRIENDLYFIRE, ID_FRIENDLYFIRE, ID_FRIENDLYFIRE, "Can friends hurt eachother here?", false, false, true); }
|
||||
public static MFlag getExplosions() { return getCreative(PRIORITY_EXPLOSIONS, ID_EXPLOSIONS, ID_EXPLOSIONS, "Can explosions occur in this territory?", true, false, true); }
|
||||
public static MFlag getOfflineexplosions() { return getCreative(PRIORITY_OFFLINEEXPLOSIONS, ID_OFFLINEEXPLOSIONS, ID_OFFLINEEXPLOSIONS, "Can explosions occur if faction is offline?", false, false, true); }
|
||||
public static MFlag getFirespread() { return getCreative(PRIORITY_FIRESPREAD, ID_FIRESPREAD, ID_FIRESPREAD, "Can fire spread in territory?", true, false, true); }
|
||||
public static MFlag getEndergrief() { return getCreative(PRIORITY_ENDERGRIEF, ID_ENDERGRIEF, ID_ENDERGRIEF, "Can endermen grief in this territory?", false, false, true); }
|
||||
public static MFlag getPermanent() { return getCreative(PRIORITY_PERMANENT, ID_PERMANENT, ID_PERMANENT, "A permanent faction will never be deleted.", false, false, true); }
|
||||
public static MFlag getPeaceful() { return getCreative(PRIORITY_PEACEFUL, ID_PEACEFUL, ID_PEACEFUL, "Always in truce with other factions.", false, false, true); }
|
||||
public static MFlag getInfpower() { return getCreative(PRIORITY_INFPOWER, ID_INFPOWER, ID_INFPOWER, "This flag gives the faction infinite power.", false, false, true); }
|
||||
|
||||
public static MFlag getCreative(int priority, String id, String name, String desc, boolean standard, boolean editable, boolean visible)
|
||||
{
|
||||
MFlag ret = MFlagColl.get().get(id, false);
|
||||
if (ret != null)
|
||||
{
|
||||
ret.setRegistered(true);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = new MFlag(priority, name, desc, standard, editable, visible);
|
||||
MFlagColl.get().attach(ret, id);
|
||||
ret.setRegistered(true);
|
||||
ret.sync();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public MFlag load(MFlag that)
|
||||
{
|
||||
this.priority = that.priority;
|
||||
this.name = that.name;
|
||||
this.desc = that.desc;
|
||||
this.standard = that.standard;
|
||||
this.editable = that.editable;
|
||||
this.visible = that.visible;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// TRANSIENT FIELDS (Registered)
|
||||
// -------------------------------------------- //
|
||||
|
||||
private transient boolean registered = false;
|
||||
public boolean isRegistered() { return this.registered; }
|
||||
public void setRegistered(boolean registered) { this.registered = registered; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// FIELDS
|
||||
// -------------------------------------------- //
|
||||
|
||||
// The sort order priority 1 is high up, 99999 is far down.
|
||||
private int priority = 0;
|
||||
@Override public int getPriority() { return this.priority; }
|
||||
public MFlag setPriority(int priority) { this.priority = priority; this.changed(); return this; }
|
||||
|
||||
// Nice name / Display name
|
||||
// Example: "monsters"
|
||||
private String name = "defaultName";
|
||||
public String getName() { return this.name; }
|
||||
public MFlag setName(String name) { this.name = name; this.changed(); return this; }
|
||||
|
||||
// Short description
|
||||
// Example: "Can monsters spawn in this territory?"
|
||||
private String desc = "defaultDesc";
|
||||
public String getDesc() { return this.desc; }
|
||||
public MFlag setDesc(String desc) { this.desc = desc; this.changed(); return this; }
|
||||
|
||||
// Standard value
|
||||
// Example: false (per default monsters do not spawn in faction territory)
|
||||
private boolean standard = true;
|
||||
public boolean isStandard() { return this.standard; }
|
||||
public MFlag setStandard(boolean standard) { this.standard = standard; this.changed(); return this; }
|
||||
|
||||
// If the flag is editable by the faction leader (or however the flag permission is configured)
|
||||
// Example: true (if players want to turn mob spawning on I guess they should be able to)
|
||||
private boolean editable = false;
|
||||
public boolean isEditable() { return this.editable; }
|
||||
public MFlag setEditable(boolean editable) { this.editable = editable; this.changed(); return this; }
|
||||
|
||||
// If the flag is visible or hidden.
|
||||
// Example: true (yeah we need to see this flag)
|
||||
// Explanation: Some flags are rendered meaningless by other plugins. Say we have a creative mode server without any mobs. The server owner might want to hide this flag.
|
||||
private boolean visible = true;
|
||||
public boolean isVisible() { return this.visible; }
|
||||
public MFlag setVisible(boolean visible) { this.visible = visible; this.changed(); return this; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
public MFlag()
|
||||
{
|
||||
// No argument constructor for GSON
|
||||
}
|
||||
|
||||
public MFlag(int priority, String name, String desc, boolean standard, boolean editable, boolean visible)
|
||||
{
|
||||
this.priority = priority;
|
||||
this.name = name;
|
||||
this.desc = desc;
|
||||
this.standard = standard;
|
||||
this.editable = editable;
|
||||
this.visible = visible;
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// EXTRAS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public String getStateInfo(boolean value, boolean withDesc)
|
||||
{
|
||||
String valueDesc = value ? "<g>YES" : "<b>NOO";
|
||||
|
||||
String color = "<aqua>";
|
||||
if (!this.isVisible())
|
||||
{
|
||||
color = "<silver>";
|
||||
}
|
||||
else if (this.isEditable())
|
||||
{
|
||||
color = "<pink>";
|
||||
}
|
||||
|
||||
String ret = valueDesc + " " + color + this.getName();
|
||||
|
||||
if (withDesc) ret += " <i>" + this.getDesc();
|
||||
|
||||
ret = Txt.parse(ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,51 @@
|
||||
package com.massivecraft.factions.entity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.massivecraft.factions.Const;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.massivecore.PriorityComparator;
|
||||
import com.massivecraft.massivecore.store.Coll;
|
||||
import com.massivecraft.massivecore.store.MStore;
|
||||
|
||||
public class MFlagColl extends Coll<MFlag>
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// INSTANCE & CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
private static MFlagColl i = new MFlagColl();
|
||||
public static MFlagColl get() { return i; }
|
||||
private MFlagColl()
|
||||
{
|
||||
super(Const.COLLECTION_MFLAG, MFlag.class, MStore.getDb(), Factions.get(), false, false, true, null, PriorityComparator.get());
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// OVERRIDE
|
||||
// -------------------------------------------- //
|
||||
|
||||
@Override
|
||||
public void init()
|
||||
{
|
||||
super.init();
|
||||
MFlag.setupStandardFlags();
|
||||
}
|
||||
|
||||
// -------------------------------------------- //
|
||||
// EXTRAS
|
||||
// -------------------------------------------- //
|
||||
|
||||
public List<MFlag> getAll(boolean registered)
|
||||
{
|
||||
List<MFlag> ret = new ArrayList<MFlag>();
|
||||
for (MFlag mflag : this.getAll())
|
||||
{
|
||||
if (mflag.isRegistered() != registered) continue;
|
||||
ret.add(mflag);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
}
|
@ -7,7 +7,6 @@ import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.massivecraft.factions.EconomyParticipator;
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Lang;
|
||||
@ -635,7 +634,7 @@ public class MPlayer extends SenderEntity<MPlayer> implements EconomyParticipato
|
||||
{
|
||||
Faction myFaction = this.getFaction();
|
||||
|
||||
boolean permanent = myFaction.getFlag(FFlag.PERMANENT);
|
||||
boolean permanent = myFaction.getFlag(MFlag.getPermanent());
|
||||
|
||||
if (myFaction.getMPlayers().size() > 1)
|
||||
{
|
||||
@ -725,7 +724,7 @@ public class MPlayer extends SenderEntity<MPlayer> implements EconomyParticipato
|
||||
|
||||
int ownedLand = newFaction.getLandCount();
|
||||
|
||||
if (mconf.claimedLandsMax != 0 && ownedLand >= mconf.claimedLandsMax && ! newFaction.getFlag(FFlag.INFPOWER))
|
||||
if (mconf.claimedLandsMax != 0 && ownedLand >= mconf.claimedLandsMax && ! newFaction.getFlag(MFlag.getInfpower()))
|
||||
{
|
||||
msg("<b>Limit reached. You can't claim more land.");
|
||||
return false;
|
||||
|
@ -4,8 +4,9 @@ import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.MFlag;
|
||||
|
||||
public class EventFactionsOpenChange extends EventFactionsAbstractSender
|
||||
public class EventFactionsFlagChange extends EventFactionsAbstractSender
|
||||
{
|
||||
// -------------------------------------------- //
|
||||
// REQUIRED EVENT CODE
|
||||
@ -22,19 +23,23 @@ public class EventFactionsOpenChange extends EventFactionsAbstractSender
|
||||
private final Faction faction;
|
||||
public Faction getFaction() { return this.faction; }
|
||||
|
||||
private boolean newOpen;
|
||||
public boolean isNewOpen() { return this.newOpen; }
|
||||
public void setNewOpen(boolean newOpen) { this.newOpen = newOpen; }
|
||||
private final MFlag flag;
|
||||
public MFlag getFlag() { return this.flag; }
|
||||
|
||||
private boolean newValue;
|
||||
public boolean isNewValue() { return this.newValue; }
|
||||
public void setNewValue(boolean newValue) { this.newValue = newValue; }
|
||||
|
||||
// -------------------------------------------- //
|
||||
// CONSTRUCT
|
||||
// -------------------------------------------- //
|
||||
|
||||
public EventFactionsOpenChange(CommandSender sender, Faction faction, boolean newOpen)
|
||||
public EventFactionsFlagChange(CommandSender sender, Faction faction, MFlag flag, boolean newValue)
|
||||
{
|
||||
super(sender);
|
||||
this.faction = faction;
|
||||
this.newOpen = newOpen;
|
||||
this.flag = flag;
|
||||
this.newValue = newValue;
|
||||
}
|
||||
|
||||
}
|
@ -22,7 +22,6 @@ import org.dynmap.markers.MarkerSet;
|
||||
import org.dynmap.markers.PlayerSet;
|
||||
import org.dynmap.utils.TileFlags;
|
||||
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.TerritoryAccess;
|
||||
@ -31,6 +30,7 @@ import com.massivecraft.factions.entity.BoardColl;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.FactionColl;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
import com.massivecraft.factions.entity.MFlag;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.massivecore.EngineAbstract;
|
||||
import com.massivecraft.massivecore.money.Money;
|
||||
@ -759,10 +759,10 @@ public class EngineDynmap extends EngineAbstract
|
||||
|
||||
// Flags and Open
|
||||
Map<String, Boolean> flags = new HashMap<String, Boolean>();
|
||||
flags.put("open", faction.isOpen());
|
||||
for (FFlag fflag : FFlag.values())
|
||||
for (MFlag mflag : MFlag.getAll())
|
||||
{
|
||||
flags.put(fflag.getNicename(), faction.getFlag(fflag));
|
||||
if (!mflag.isVisible()) continue;
|
||||
flags.put(mflag.getName(), faction.getFlag(mflag));
|
||||
}
|
||||
for (Entry<String, Boolean> entry : flags.entrySet())
|
||||
{
|
||||
|
@ -21,7 +21,7 @@ import com.massivecraft.factions.event.EventFactionsInvitedChange;
|
||||
import com.massivecraft.factions.event.EventFactionsMembershipChange;
|
||||
import com.massivecraft.factions.event.EventFactionsMembershipChange.MembershipChangeReason;
|
||||
import com.massivecraft.factions.event.EventFactionsNameChange;
|
||||
import com.massivecraft.factions.event.EventFactionsOpenChange;
|
||||
import com.massivecraft.factions.event.EventFactionsFlagChange;
|
||||
import com.massivecraft.factions.event.EventFactionsRelationChange;
|
||||
import com.massivecraft.factions.event.EventFactionsTitleChange;
|
||||
import com.massivecraft.factions.integration.Econ;
|
||||
@ -209,10 +209,10 @@ public class FactionsListenerEcon implements Listener
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void payForCommand(EventFactionsOpenChange event)
|
||||
public void payForCommand(EventFactionsFlagChange event)
|
||||
{
|
||||
Double cost = MConf.get().econCostOpen;
|
||||
String desc = Factions.get().getOuterCmdFactions().cmdFactionsOpen.getDesc();
|
||||
Double cost = MConf.get().econCostFlag;
|
||||
String desc = Factions.get().getOuterCmdFactions().cmdFactionsFlag.getDesc();
|
||||
|
||||
payForAction(event, cost, desc);
|
||||
}
|
||||
|
@ -54,12 +54,12 @@ import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||
import org.bukkit.projectiles.ProjectileSource;
|
||||
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Factions;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.TerritoryAccess;
|
||||
import com.massivecraft.factions.entity.BoardColl;
|
||||
import com.massivecraft.factions.entity.MFlag;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
@ -195,7 +195,7 @@ public class FactionsListenerMain implements Listener
|
||||
// ... and powerloss can happen here ...
|
||||
Faction faction = BoardColl.get().getFactionAt(PS.valueOf(player));
|
||||
|
||||
if (!faction.getFlag(FFlag.POWERLOSS))
|
||||
if (!faction.getFlag(MFlag.getPowerloss()))
|
||||
{
|
||||
mplayer.msg("<i>You didn't lose any power since the territory you died in works that way.");
|
||||
return;
|
||||
@ -298,7 +298,7 @@ public class FactionsListenerMain implements Listener
|
||||
Faction defenderPsFaction = BoardColl.get().getFactionAt(defenderPs);
|
||||
|
||||
// ... PVP flag may cause a damage block ...
|
||||
if (defenderPsFaction.getFlag(FFlag.PVP) == false)
|
||||
if (defenderPsFaction.getFlag(MFlag.getPvp()) == false)
|
||||
{
|
||||
if (eattacker == null)
|
||||
{
|
||||
@ -316,7 +316,7 @@ public class FactionsListenerMain implements Listener
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
return defenderPsFaction.getFlag(FFlag.MONSTERS);
|
||||
return defenderPsFaction.getFlag(MFlag.getMonsters());
|
||||
}
|
||||
|
||||
// ... and if the attacker is a player ...
|
||||
@ -334,7 +334,7 @@ public class FactionsListenerMain implements Listener
|
||||
// ... PVP flag may cause a damage block ...
|
||||
// (just checking the defender as above isn't enough. What about the attacker? It could be in a no-pvp area)
|
||||
// NOTE: This check is probably not that important but we could keep it anyways.
|
||||
if (attackerPsFaction.getFlag(FFlag.PVP) == false)
|
||||
if (attackerPsFaction.getFlag(MFlag.getPvp()) == false)
|
||||
{
|
||||
ret = falseUnlessDisallowedPvpEventCancelled(attacker, defender, event);
|
||||
if (!ret && notify) uattacker.msg("<i>PVP is disabled in %s.", attackerPsFaction.describeTo(uattacker));
|
||||
@ -371,7 +371,7 @@ public class FactionsListenerMain implements Listener
|
||||
Rel relation = defendFaction.getRelationTo(attackFaction);
|
||||
|
||||
// Check the relation
|
||||
if (udefender.hasFaction() && relation.isFriend() && defenderPsFaction.getFlag(FFlag.FRIENDLYFIRE) == false)
|
||||
if (udefender.hasFaction() && relation.isFriend() && defenderPsFaction.getFlag(MFlag.getFriendlyire()) == false)
|
||||
{
|
||||
ret = falseUnlessDisallowedPvpEventCancelled(attacker, defender, event);
|
||||
if (!ret && notify) uattacker.msg("<i>You can't hurt %s<i>.", relation.getDescPlayerMany());
|
||||
@ -474,7 +474,7 @@ public class FactionsListenerMain implements Listener
|
||||
command = command.trim();
|
||||
|
||||
// ... the command may be denied for members of permanent factions ...
|
||||
if (mplayer.hasFaction() && mplayer.getFaction().getFlag(FFlag.PERMANENT) && containsCommand(command, MConf.get().denyCommandsPermanentFactionMember))
|
||||
if (mplayer.hasFaction() && mplayer.getFaction().getFlag(MFlag.getPermanent()) && containsCommand(command, MConf.get().denyCommandsPermanentFactionMember))
|
||||
{
|
||||
mplayer.msg("<b>You can't use \"<h>/%s<b>\" as member of a permanent faction.", command);
|
||||
event.setCancelled(true);
|
||||
@ -528,7 +528,7 @@ public class FactionsListenerMain implements Listener
|
||||
// ... at a place where monsters are forbidden ...
|
||||
PS ps = PS.valueOf(event.getLocation());
|
||||
Faction faction = BoardColl.get().getFactionAt(ps);
|
||||
if (faction.getFlag(FFlag.MONSTERS)) return;
|
||||
if (faction.getFlag(MFlag.getMonsters())) return;
|
||||
|
||||
// ... block the spawn.
|
||||
event.setCancelled(true);
|
||||
@ -547,7 +547,7 @@ public class FactionsListenerMain implements Listener
|
||||
// ... at a place where monsters are forbidden ...
|
||||
PS ps = PS.valueOf(target);
|
||||
Faction faction = BoardColl.get().getFactionAt(ps);
|
||||
if (faction.getFlag(FFlag.MONSTERS)) return;
|
||||
if (faction.getFlag(MFlag.getMonsters())) return;
|
||||
|
||||
// ... then if ghast target nothing ...
|
||||
if (event.getEntityType() == EntityType.GHAST)
|
||||
@ -651,7 +651,7 @@ public class FactionsListenerMain implements Listener
|
||||
// ... and the faction there has endergrief disabled ...
|
||||
PS ps = PS.valueOf(event.getBlock());
|
||||
Faction faction = BoardColl.get().getFactionAt(ps);
|
||||
if (faction.getFlag(FFlag.ENDERGRIEF)) return;
|
||||
if (faction.getFlag(MFlag.getEndergrief())) return;
|
||||
|
||||
// ... stop the block alteration.
|
||||
event.setCancelled(true);
|
||||
@ -667,7 +667,7 @@ public class FactionsListenerMain implements Listener
|
||||
PS ps = PS.valueOf(block);
|
||||
Faction faction = BoardColl.get().getFactionAt(ps);
|
||||
|
||||
if (faction.getFlag(FFlag.FIRESPREAD)) return;
|
||||
if (faction.getFlag(MFlag.getFirespread())) return;
|
||||
|
||||
// then cancel the event.
|
||||
cancellable.setCancelled(true);
|
||||
|
@ -6,7 +6,6 @@ import java.util.Set;
|
||||
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.FPerm;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
@ -28,8 +27,8 @@ public class OldConf extends Entity<OldConf>
|
||||
mconf.defaultPlayerFactionId = this.defaultPlayerFactionId;
|
||||
mconf.defaultPlayerRole = this.defaultPlayerRole;
|
||||
mconf.defaultPlayerPower = this.defaultPlayerPower;
|
||||
mconf.defaultFactionOpen = this.defaultFactionOpen;
|
||||
mconf.defaultFactionFlags = this.defaultFactionFlags;
|
||||
//mconf.defaultFactionOpen = this.defaultFactionOpen;
|
||||
//mconf.defaultFactionFlags = this.defaultFactionFlags;
|
||||
mconf.defaultFactionPerms = this.defaultFactionPerms;
|
||||
mconf.powerMax = this.powerMax;
|
||||
mconf.powerMin = this.powerMin;
|
||||
@ -78,7 +77,7 @@ public class OldConf extends Entity<OldConf>
|
||||
mconf.econCostName = this.econCostName;
|
||||
mconf.econCostDescription = this.econCostDescription;
|
||||
mconf.econCostTitle = this.econCostTitle;
|
||||
mconf.econCostOpen = this.econCostOpen;
|
||||
mconf.econCostFlag = this.econCostOpen;
|
||||
mconf.econRelCost = this.econRelCost;
|
||||
mconf.bankEnabled = this.bankEnabled;
|
||||
mconf.bankFactionPaysCosts = this.bankFactionPaysCosts;
|
||||
@ -108,7 +107,7 @@ public class OldConf extends Entity<OldConf>
|
||||
public double defaultPlayerPower = 0.0;
|
||||
|
||||
public boolean defaultFactionOpen = false;
|
||||
public Map<FFlag, Boolean> defaultFactionFlags = null;
|
||||
//public Map<FFlag, Boolean> defaultFactionFlags = null;
|
||||
public Map<FPerm, Set<Rel>> defaultFactionPerms = null;
|
||||
|
||||
// -------------------------------------------- //
|
||||
|
@ -2,9 +2,9 @@ package com.massivecraft.factions.util;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
|
||||
import com.massivecraft.factions.FFlag;
|
||||
import com.massivecraft.factions.Rel;
|
||||
import com.massivecraft.factions.RelationParticipator;
|
||||
import com.massivecraft.factions.entity.MFlag;
|
||||
import com.massivecraft.factions.entity.MPlayer;
|
||||
import com.massivecraft.factions.entity.Faction;
|
||||
import com.massivecraft.factions.entity.MConf;
|
||||
@ -108,7 +108,7 @@ public class RelationUtil
|
||||
//P.p.log("getRelationOfThatToMe it was a player and role is "+ret);
|
||||
}
|
||||
}
|
||||
else if (!ignorePeaceful && (thatFaction.getFlag(FFlag.PEACEFUL) || myFaction.getFlag(FFlag.PEACEFUL)))
|
||||
else if (!ignorePeaceful && (thatFaction.getFlag(MFlag.getPeaceful()) || myFaction.getFlag(MFlag.getPeaceful())))
|
||||
{
|
||||
ret = Rel.TRUCE;
|
||||
}
|
||||
@ -137,12 +137,12 @@ public class RelationUtil
|
||||
Faction thatFaction = getFaction(that);
|
||||
if (thatFaction != null && thatFaction != getFaction(me))
|
||||
{
|
||||
if (thatFaction.getFlag(FFlag.FRIENDLYFIRE) == true)
|
||||
if (thatFaction.getFlag(MFlag.getFriendlyire()) == true)
|
||||
{
|
||||
return MConf.get().colorFriendlyFire;
|
||||
}
|
||||
|
||||
if (thatFaction.getFlag(FFlag.PVP) == false)
|
||||
if (thatFaction.getFlag(MFlag.getPvp()) == false)
|
||||
{
|
||||
return MConf.get().colorNoPVP;
|
||||
}
|
||||
|
@ -24,7 +24,6 @@ permissions:
|
||||
factions.disband: {description: disband faction, default: false}
|
||||
factions.faction: {description: show faction information, default: false}
|
||||
factions.flag: {description: manage faction flags, default: false}
|
||||
factions.flag.set: {description: set faction flags, default: false}
|
||||
factions.home: {description: teleport to faction home, default: false}
|
||||
factions.home.other: {description: teleport to another faction home, default: false}
|
||||
factions.invite: {description: set if player is invited, default: false}
|
||||
@ -82,7 +81,6 @@ permissions:
|
||||
factions.disband: true
|
||||
factions.faction: true
|
||||
factions.flag: true
|
||||
factions.flag.set: true
|
||||
factions.home: true
|
||||
factions.home.other: true
|
||||
factions.invite: true
|
||||
@ -136,7 +134,6 @@ permissions:
|
||||
default: false
|
||||
children:
|
||||
factions.kit.rank1: true
|
||||
factions.flag.set: true
|
||||
factions.powerboost: true
|
||||
factions.join.any: true
|
||||
factions.join.others: true
|
||||
|
Loading…
Reference in New Issue
Block a user