From 61f13c92d161e1adf513d0da38a1d68e028e8a6f Mon Sep 17 00:00:00 2001 From: Driftay Date: Mon, 1 Jul 2019 00:30:23 -0400 Subject: [PATCH] Point System Added --- .../massivecraft/factions/cmd/CmdPoints.java | 41 ++++++++++++++ .../factions/cmd/CmdPointsAdd.java | 8 ++- .../factions/cmd/CmdPointsRemove.java | 56 ++++++++++++++++++- .../factions/cmd/CmdPointsSet.java | 56 ++++++++++++++++++- .../massivecraft/factions/cmd/FCmdRoot.java | 5 ++ .../factions/struct/Permission.java | 2 + .../massivecraft/factions/zcore/util/TL.java | 12 +++- .../factions/zcore/util/TagReplacer.java | 3 + src/main/resources/config.yml | 30 ++++++---- 9 files changed, 198 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdPoints.java b/src/main/java/com/massivecraft/factions/cmd/CmdPoints.java index 9afff4e9..c0c0ac11 100644 --- a/src/main/java/com/massivecraft/factions/cmd/CmdPoints.java +++ b/src/main/java/com/massivecraft/factions/cmd/CmdPoints.java @@ -1,8 +1,49 @@ package com.massivecraft.factions.cmd; +import com.massivecraft.factions.SaberFactions; +import com.massivecraft.factions.zcore.util.TL; + public class CmdPoints extends FCommand { + public CmdPointsRemove cmdPointsRemove = new CmdPointsRemove(); + public CmdPointsSet cmdPointsSet = new CmdPointsSet(); + public CmdPointsAdd cmdPointsAdd = new CmdPointsAdd(); + public CmdPoints(){ + super(); + this.aliases.add("points"); + this.aliases.add("point"); + + this.disableOnLock = false; + this.disableOnSpam = false; + + senderMustBePlayer = true; + senderMustBeMember = true; + senderMustBeModerator = false; + senderMustBeAdmin = false; + + + this.addSubCommand(this.cmdPointsAdd); + this.addSubCommand(this.cmdPointsRemove); + this.addSubCommand(this.cmdPointsSet); + } + + + @Override + public void perform() { + if (!SaberFactions.plugin.getConfig().getBoolean("f-points.Enabled", false)) { + fme.msg(TL.GENERIC_DISABLED); + return; + } + + this.commandChain.add(this); + SaberFactions.plugin.cmdAutoHelp.execute(this.sender, this.args, this.commandChain); + } + + @Override + public TL getUsageTranslation() { + return TL.COMMAND_POINTS_DESCRIPTION; + } } diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdPointsAdd.java b/src/main/java/com/massivecraft/factions/cmd/CmdPointsAdd.java index 8197b61e..ac236174 100644 --- a/src/main/java/com/massivecraft/factions/cmd/CmdPointsAdd.java +++ b/src/main/java/com/massivecraft/factions/cmd/CmdPointsAdd.java @@ -36,11 +36,15 @@ public class CmdPointsAdd extends FCommand { if (faction == null) { fme.msg(TL.COMMAND_POINTS_FAILURE.toString().replace("{faction}", args.get(0))); + return; + } + if(argAsInt(1) <= 0){ + fme.msg(TL.COMMAND_POINTS_INSUFFICIENT); + return; } - assert faction != null; faction.setPoints(faction.getPoints() + argAsInt(1)); - fme.msg(TL.COMMAND_POINTS_SUCCESSFUL, faction, argAsInt(1)); + fme.msg(TL.COMMAND_POINTS_SUCCESSFUL, argAsInt(1), faction, faction.getPoints()); } diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdPointsRemove.java b/src/main/java/com/massivecraft/factions/cmd/CmdPointsRemove.java index a6b5ada1..3e000e44 100644 --- a/src/main/java/com/massivecraft/factions/cmd/CmdPointsRemove.java +++ b/src/main/java/com/massivecraft/factions/cmd/CmdPointsRemove.java @@ -1,4 +1,58 @@ package com.massivecraft.factions.cmd; -public class CmdPointsRemove { +import com.massivecraft.factions.Faction; +import com.massivecraft.factions.Factions; +import com.massivecraft.factions.struct.Permission; +import com.massivecraft.factions.zcore.util.TL; + +public class CmdPointsRemove extends FCommand { + + public CmdPointsRemove() { + super(); + this.aliases.add("remove"); + + this.requiredArgs.add("faction"); + this.requiredArgs.add("# of points"); + + + this.errorOnToManyArgs = false; + //this.optionalArgs + + this.permission = Permission.REMOVEPOINTS.node; + + this.disableOnLock = true; + + senderMustBePlayer = false; + senderMustBeMember = false; + senderMustBeModerator = false; + senderMustBeColeader = false; + senderMustBeAdmin = false; + } + + + @Override + public void perform() { + Faction faction = Factions.getInstance().getByTag(args.get(0)); + + if (faction == null) { + fme.msg(TL.COMMAND_POINTS_FAILURE.toString().replace("{faction}", args.get(0))); + return; + } + + if(argAsInt(1) <= 0){ + fme.msg(TL.COMMAND_POINTS_INSUFFICIENT); + return; + } + + faction.setPoints(faction.getPoints() - argAsInt(1)); + fme.msg(TL.COMMAND_REMOVEPOINTS_SUCCESSFUL, argAsInt(1), faction, faction.getPoints()); + } + + + @Override + public TL getUsageTranslation() { + return TL.COMMAND_REMOVEPOINTS_DESCRIPTION; + } + + } diff --git a/src/main/java/com/massivecraft/factions/cmd/CmdPointsSet.java b/src/main/java/com/massivecraft/factions/cmd/CmdPointsSet.java index 24f6f4bc..405ecb6e 100644 --- a/src/main/java/com/massivecraft/factions/cmd/CmdPointsSet.java +++ b/src/main/java/com/massivecraft/factions/cmd/CmdPointsSet.java @@ -1,4 +1,58 @@ package com.massivecraft.factions.cmd; -public class CmdPointsSet { +import com.massivecraft.factions.Faction; +import com.massivecraft.factions.Factions; +import com.massivecraft.factions.struct.Permission; +import com.massivecraft.factions.zcore.util.TL; + +public class CmdPointsSet extends FCommand{ + + public CmdPointsSet() { + super(); + this.aliases.add("set"); + + this.requiredArgs.add("faction"); + this.requiredArgs.add("# of points"); + + + this.errorOnToManyArgs = false; + //this.optionalArgs + + this.permission = Permission.SETPOINTS.node; + + this.disableOnLock = true; + + senderMustBePlayer = false; + senderMustBeMember = false; + senderMustBeModerator = false; + senderMustBeColeader = false; + senderMustBeAdmin = false; + } + + + @Override + public void perform() { + Faction faction = Factions.getInstance().getByTag(args.get(0)); + + if (faction == null) { + fme.msg(TL.COMMAND_POINTS_FAILURE.toString().replace("{faction}", args.get(0))); + return; + } + + if(argAsInt(1) < 0){ + fme.msg(TL.COMMAND_POINTS_INSUFFICIENT); + return; + } + + faction.setPoints(faction.getPoints() - argAsInt(1)); + fme.msg(TL.COMMAND_SETPOINTS_SUCCESSFUL, argAsInt(1), faction, faction.getPoints()); + } + + + @Override + public TL getUsageTranslation() { + return TL.COMMAND_SETPOINTS_DESCRIPTION; + } + + } diff --git a/src/main/java/com/massivecraft/factions/cmd/FCmdRoot.java b/src/main/java/com/massivecraft/factions/cmd/FCmdRoot.java index 327304dd..a9c6524b 100644 --- a/src/main/java/com/massivecraft/factions/cmd/FCmdRoot.java +++ b/src/main/java/com/massivecraft/factions/cmd/FCmdRoot.java @@ -113,6 +113,7 @@ public class FCmdRoot extends FCommand { public CmdInventorySee cmdInventorySee = new CmdInventorySee(); public CmdFGlobal cmdFGlobal = new CmdFGlobal(); public CmdViewChest cmdViewChest = new CmdViewChest(); + public CmdPoints cmdPoints = new CmdPoints(); @@ -237,6 +238,10 @@ public class FCmdRoot extends FCommand { this.addSubCommand(this.cmdInventorySee); } + if(SaberFactions.plugin.getConfig().getBoolean("f-points.Enabled")){ + this.addSubCommand(cmdPoints); + } + if(SaberFactions.plugin.getConfig().getBoolean("f-alts.Enabled")){ this.addSubCommand(cmdAlts); } diff --git a/src/main/java/com/massivecraft/factions/struct/Permission.java b/src/main/java/com/massivecraft/factions/struct/Permission.java index 575b66e0..e49411f3 100644 --- a/src/main/java/com/massivecraft/factions/struct/Permission.java +++ b/src/main/java/com/massivecraft/factions/struct/Permission.java @@ -101,6 +101,8 @@ public enum Permission { TOP("top"), VIEWCHEST("viewchest"), ADDPOINTS("addpoints"), + REMOVEPOINTS("removepoints"), + SETPOINTS("setpoints"), VAULT("vault"), GETVAULT("getvault"), SETMAXVAULTS("setmaxvaults"), diff --git a/src/main/java/com/massivecraft/factions/zcore/util/TL.java b/src/main/java/com/massivecraft/factions/zcore/util/TL.java index 4d399e36..1c274213 100644 --- a/src/main/java/com/massivecraft/factions/zcore/util/TL.java +++ b/src/main/java/com/massivecraft/factions/zcore/util/TL.java @@ -543,9 +543,19 @@ public enum TL { COMMAND_PERM_TOP("RCT MEM OFF ALLY TRUCE NEUT ENEMY"), COMMAND_POINTS_FAILURE("&c&l[!] &c{faction} does not exist."), - COMMAND_POINTS_SUCCESSFUL("&c&l[!] &7You have given &b%1$s &e%2$s &7points!"), + COMMAND_POINTS_SUCCESSFUL("&c&l[!] &7You have taken &e%1$s &7points from &b%2$s&7. &b%2$s's &7New Point Balance: &e%3$s"), + COMMAND_POINTS_INSUFFICIENT("&c&l[!] &7You may not add/set/remove a negative number of points to a faction!"), + COMMAND_POINTS_DESCRIPTION("General Command For Faction Points"), + COMMAND_ADDPOINTS_DESCRIPTION("Add Points to Faction"), + + COMMAND_REMOVEPOINTS_SUCCESSFUL("&c&l[!] &7You have taken &e%1$s &7points from &b%2$s&7. &b%2$s's &7New Point Balance: &e%3$s"), + COMMAND_REMOVEPOINTS_DESCRIPTION("Remove Points from a Faction"), + + COMMAND_SETPOINTS_SUCCESSFUL("&c&l[!] &7You have set &e%1$s &7points to &b%2$s&7. &b%2$s's &7New Point Balance: &e%3$s"), + COMMAND_SETPOINTS_DESCRIPTION("Set Points of a Faction"), + COMMAND_PERMANENT_DESCRIPTION("Toggles a permanent faction option"), COMMAND_PERMANENT_GRANT("&c&l[!]&7 added permanent status to"), COMMAND_PERMANENT_REVOKE("&c&l[!]&7 removed permanent status from"), diff --git a/src/main/java/com/massivecraft/factions/zcore/util/TagReplacer.java b/src/main/java/com/massivecraft/factions/zcore/util/TagReplacer.java index f3f990ac..2e9027d2 100644 --- a/src/main/java/com/massivecraft/factions/zcore/util/TagReplacer.java +++ b/src/main/java/com/massivecraft/factions/zcore/util/TagReplacer.java @@ -74,6 +74,7 @@ public enum TagReplacer { FACTION_DEATHS(TagType.FACTION, "{faction-deaths}"), FACTION_BANCOUNT(TagType.FACTION, "{faction-bancount}"), FACTION_STRIKES(TagType.FACTION, "{strikes}"), + FACTION_POINTS(TagType.FACTION, "{faction-points}"), /** * General variables, require no faction or player @@ -259,6 +260,8 @@ public enum TagReplacer { return String.valueOf(fac.getBannedPlayers().size()); case FACTION_STRIKES: return String.valueOf(fac.getStrikes()); + case FACTION_POINTS: + return String.valueOf(fac.getPoints()); default: } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index d0b0683d..1f39f48f 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -275,18 +275,19 @@ hcf: show: # First line can be {header} for default header, or any string (we recommend &m for smooth lines ;plugin) - '&8&m--------------&7 &8<&e{faction}&8> &8&m--------------' - - '&6 * &eOwner &7{leader}' - - '&6 * &eDescription &7{description}' + - '&6 * &eOwner: &7{leader}' + - '&6 * &eDescription: &7{description}' - '&6 * &eLand / Power / Max Power: &7{chunks} &8/ &7{power} &8/ &7{maxPower}' - '&6 * &eFaction Strikes: &7{strikes}' - - '&6 * &eFounded &7{create-date}' - - '&6 * &eBalance &f{faction-balance}' - - '&6 * &eAllies &c{allies-list}' - - '&6 * &eEnemies &c{enemies-list}' - - '&6 * &eOnline Members &8(&7{online}/{members}&8) &7{online-list}' - - '&6 * &eOffline Members &8(&7{offline}/{members}&8) &7{offline-list}' - - '&6 * &eAlts &8{alts}' - - '&6 * &eBans &7{faction-bancount}' + - '&6 * &eFaction Points: &7{faction-points}' + - '&6 * &eFounded: &7{create-date}' + - '&6 * &eBalance: &f{faction-balance}' + - '&6 * &eAllies: &c{allies-list}' + - '&6 * &eEnemies: &c{enemies-list}' + - '&6 * &eOnline Members: &8(&7{online}/{members}&8) &7{online-list}' + - '&6 * &eOffline Members: &8(&7{offline}/{members}&8) &7{offline-list}' + - '&6 * &eAlts: &8{alts}' + - '&6 * &eBans: &7{faction-bancount}' - '&8&m----------------------------------------' # For a /f show that does not display fancy messages that are essentially empty, use minimal-show minimal-show: false @@ -800,6 +801,14 @@ Falling-Block-Fix: f-grace: Enabled: true +############################################################ +# +------------------------------------------------------+ # +# | Faction Points | # +# +------------------------------------------------------+ # +############################################################ +f-points: + Enabled: true + ############################################################ # +------------------------------------------------------+ # # | Faction Focus | # @@ -1219,6 +1228,7 @@ Tntfill: # - {faction-kills} : # of kills the faction has # - {faction-deaths}: # of deaths the faction has # - {faction-bancount} : # of bans the faction has +# - {faction-points} : # of points a faction has # Faction Permissions GUI variables. Can only be used in GUI # - {relation} : Shows relation name (Can be used in action and relation) # - {relation-color} : Relation color