diff --git a/src/main/java/com/massivecraft/factions/Faction.java b/src/main/java/com/massivecraft/factions/Faction.java index 1ee3d30f..d5bdd980 100644 --- a/src/main/java/com/massivecraft/factions/Faction.java +++ b/src/main/java/com/massivecraft/factions/Faction.java @@ -59,6 +59,8 @@ public interface Faction extends EconomyParticipator { Map getMissions(); + List getCompletedMissions(); + void deinviteAlt(FPlayer alt); void deinviteAllAlts(); diff --git a/src/main/java/com/massivecraft/factions/cmd/econ/CmdMoney.java b/src/main/java/com/massivecraft/factions/cmd/econ/CmdMoney.java index 3b3380b7..9c0a5276 100644 --- a/src/main/java/com/massivecraft/factions/cmd/econ/CmdMoney.java +++ b/src/main/java/com/massivecraft/factions/cmd/econ/CmdMoney.java @@ -35,7 +35,7 @@ public class CmdMoney extends FCommand { @Override public void perform(CommandContext context) { - if (!Conf.econEnabled) { + if (!Conf.econEnabled || !Conf.bankEnabled) { context.msg(TL.ECON_OFF, "economy option is enabled, please set \'econEnabled\' to true in conf.json"); return; } diff --git a/src/main/java/com/massivecraft/factions/missions/MissionGUI.java b/src/main/java/com/massivecraft/factions/missions/MissionGUI.java index 3e5163a6..03d90099 100644 --- a/src/main/java/com/massivecraft/factions/missions/MissionGUI.java +++ b/src/main/java/com/massivecraft/factions/missions/MissionGUI.java @@ -55,6 +55,13 @@ public class MissionGUI implements FactionGUI { if (section == null) { return; } + if(FactionsPlugin.getInstance().getConfig().getBoolean("DenyMissionsMoreThenOnce")) { + if (fPlayer.getFaction().getCompletedMissions().contains(missionName)) { + fPlayer.msg(TL.MISSION_ALREAD_COMPLETED); + return; + } + } + ConfigurationSection missionSection = section.getConfigurationSection("Mission"); if (missionSection == null) { return; diff --git a/src/main/java/com/massivecraft/factions/missions/MissionHandler.java b/src/main/java/com/massivecraft/factions/missions/MissionHandler.java index f301dfab..7fc7d8f9 100644 --- a/src/main/java/com/massivecraft/factions/missions/MissionHandler.java +++ b/src/main/java/com/massivecraft/factions/missions/MissionHandler.java @@ -159,5 +159,6 @@ public class MissionHandler implements Listener { } fPlayer.getFaction().getMissions().remove(mission.getName()); fPlayer.getFaction().msg(TL.MISSION_MISSION_FINISHED, plugin.color(section.getString("Name"))); + fPlayer.getFaction().getCompletedMissions().add(mission.getName()); } } diff --git a/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFaction.java b/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFaction.java index 3b6f5e11..2e7d8ed9 100644 --- a/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFaction.java +++ b/src/main/java/com/massivecraft/factions/zcore/persist/MemoryFaction.java @@ -83,6 +83,7 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator { private int tntBankSize; private int warpLimit; private double reinforcedArmor; + private List completedMissions; // -------------------------------------------- // @@ -112,6 +113,7 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator { this.checks = new ConcurrentHashMap<>(); this.playerWallCheckCount = new ConcurrentHashMap<>(); this.playerBufferCheckCount = new ConcurrentHashMap<>(); + this.completedMissions = new ArrayList<>(); resetPerms(); // Reset on new Faction so it has default values. } @@ -130,6 +132,7 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator { money = old.money; powerBoost = old.powerBoost; missions = new ConcurrentHashMap<>(); + this.completedMissions = new ArrayList<>(); relationWish = old.relationWish; claimOwnership = old.claimOwnership; fplayers = new HashSet<>(); @@ -509,7 +512,7 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator { return this.wallCheckMinutes; } - public void setWallCheckMinutes(final int wallCheckMinutes) { + public void setWallCheckMinutes(int wallCheckMinutes) { this.wallCheckMinutes = wallCheckMinutes; } @@ -517,7 +520,7 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator { return this.bufferCheckMinutes; } - public void setBufferCheckMinutes(final int bufferCheckMinutes) { + public void setBufferCheckMinutes(int bufferCheckMinutes) { this.bufferCheckMinutes = bufferCheckMinutes; } @@ -537,7 +540,7 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator { return this.weeWoo; } - public void setWeeWoo(final boolean weeWoo) { + public void setWeeWoo(boolean weeWoo) { this.weeWoo = weeWoo; } @@ -1266,6 +1269,9 @@ public abstract class MemoryFaction implements Faction, EconomyParticipator { return this.missions; } + @Override + public List getCompletedMissions() {return this.completedMissions;} + public void clearAllClaimOwnership() { claimOwnership.clear(); } 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 f7a33bbb..38443559 100644 --- a/src/main/java/com/massivecraft/factions/zcore/util/TL.java +++ b/src/main/java/com/massivecraft/factions/zcore/util/TL.java @@ -999,6 +999,7 @@ public enum TL { MISSION_MISSION_STARTED("&f%1$s &dstarted the %2$s &fmission"), + MISSION_ALREAD_COMPLETED("&c&l[!] &7You may not restart a mission you have already completed"), MISSION_MISSION_ACTIVE("&c&l[!] &7This mission is currently active!"), MISSION_MISSION_MAX_ALLOWED("&c&l[!] &7You may not have more then &b%1$s &7missions active at once."), MISSION_MISSION_FINISHED("&c&l[!] &7Your faction has successfully completed %1$s mission!"), diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index a452fd1d..79785fd6 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -737,6 +737,7 @@ Missions-Enabled: true Missions-GUI-Title: '&bFaction Missions' MaximumMissionsAllowedAtOnce: 1 Mission-Progress-Format: '&b&lProgression: &f{progress}&7/&e{total}' +DenyMissionsMoreThenOnce: true #this setting to true, means that if they complete a mission they cannot redo the same mission #Mission Types: KILL, MINE, PLACE, FISH, TAME, ENCHANT, CONSUME Missions: