mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2024-11-25 22:56:45 +01:00
Automatically remove inactive party members after 7 days (default)
Inactive meaning, the player has offline for atleast 7 days. This will prevent the parties.yml file from getting unnecessarily large.
This commit is contained in:
parent
4d93f3271d
commit
e5e19f77b9
@ -78,6 +78,8 @@ public class Config extends ConfigLoader {
|
|||||||
public boolean getBlockModsEnabled() { return config.getBoolean("Mods.Block_Mods_Enabled", false); }
|
public boolean getBlockModsEnabled() { return config.getBoolean("Mods.Block_Mods_Enabled", false); }
|
||||||
|
|
||||||
/* PARTY SETTINGS */
|
/* PARTY SETTINGS */
|
||||||
|
public int getAutoPartyKickInterval() { return config.getInt("Party.AutoKick_Interval", 12); }
|
||||||
|
public int getAutoPartyKickTime() { return config.getInt("Party.Old_Party_Member_Cutoff", 7); }
|
||||||
public boolean getExpShareEnabled() { return config.getBoolean("Party.Sharing.ExpShare_enabled", true); }
|
public boolean getExpShareEnabled() { return config.getBoolean("Party.Sharing.ExpShare_enabled", true); }
|
||||||
public double getPartyShareBonusBase() { return config.getDouble("Party.Sharing.ExpShare_bonus_base", 1.1); }
|
public double getPartyShareBonusBase() { return config.getDouble("Party.Sharing.ExpShare_bonus_base", 1.1); }
|
||||||
public double getPartyShareBonusIncrease() { return config.getDouble("Party.Sharing.ExpShare_bonus_increase", 0.05); }
|
public double getPartyShareBonusIncrease() { return config.getDouble("Party.Sharing.ExpShare_bonus_increase", 0.05); }
|
||||||
|
@ -59,6 +59,7 @@ import com.gmail.nossr50.skills.repair.RepairManagerFactory;
|
|||||||
import com.gmail.nossr50.skills.repair.Repairable;
|
import com.gmail.nossr50.skills.repair.Repairable;
|
||||||
import com.gmail.nossr50.skills.repair.config.RepairConfigManager;
|
import com.gmail.nossr50.skills.repair.config.RepairConfigManager;
|
||||||
import com.gmail.nossr50.skills.runnables.BleedTimer;
|
import com.gmail.nossr50.skills.runnables.BleedTimer;
|
||||||
|
import com.gmail.nossr50.skills.runnables.PartyAutoKick;
|
||||||
import com.gmail.nossr50.skills.runnables.SkillMonitor;
|
import com.gmail.nossr50.skills.runnables.SkillMonitor;
|
||||||
import com.gmail.nossr50.spout.SpoutConfig;
|
import com.gmail.nossr50.spout.SpoutConfig;
|
||||||
import com.gmail.nossr50.spout.SpoutTools;
|
import com.gmail.nossr50.spout.SpoutTools;
|
||||||
@ -204,6 +205,16 @@ public class mcMMO extends JavaPlugin {
|
|||||||
scheduler.scheduleSyncRepeatingTask(this, new UserPurgeTask(), 0, purgeInterval * 60L * 60L * 20L);
|
scheduler.scheduleSyncRepeatingTask(this, new UserPurgeTask(), 0, purgeInterval * 60L * 60L * 20L);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Automatically remove old members from parties
|
||||||
|
long kickInterval = Config.getInstance().getAutoPartyKickInterval();
|
||||||
|
|
||||||
|
if (kickInterval == 0) {
|
||||||
|
scheduler.scheduleSyncDelayedTask(this, new PartyAutoKick(), 40); // Start 2 seconds after startup.
|
||||||
|
}
|
||||||
|
else if (kickInterval > 0) {
|
||||||
|
scheduler.scheduleSyncRepeatingTask(this, new PartyAutoKick(), 0, kickInterval * 60L * 60L * 20L);
|
||||||
|
}
|
||||||
|
|
||||||
registerCommands();
|
registerCommands();
|
||||||
|
|
||||||
if (configInstance.getStatsTrackingEnabled()) {
|
if (configInstance.getStatsTrackingEnabled()) {
|
||||||
|
@ -0,0 +1,35 @@
|
|||||||
|
package com.gmail.nossr50.skills.runnables;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import com.gmail.nossr50.mcMMO;
|
||||||
|
import com.gmail.nossr50.config.Config;
|
||||||
|
import com.gmail.nossr50.party.Party;
|
||||||
|
import com.gmail.nossr50.party.PartyManager;
|
||||||
|
|
||||||
|
public class PartyAutoKick implements Runnable {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
updatePartyMembers();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updatePartyMembers() {
|
||||||
|
long currentTime = System.currentTimeMillis();
|
||||||
|
long kickTime = 24L * 60L * 60L * 1000L * Config.getInstance().getAutoPartyKickTime();
|
||||||
|
|
||||||
|
ArrayList<Party> parties = new ArrayList<Party>(PartyManager.getParties());
|
||||||
|
|
||||||
|
for (Party party : parties) {
|
||||||
|
ArrayList<String> members = new ArrayList<String>(party.getMembers());
|
||||||
|
for (String member : members) {
|
||||||
|
long lastPlayed = mcMMO.p.getServer().getOfflinePlayer(member).getLastPlayed();
|
||||||
|
|
||||||
|
if (currentTime - lastPlayed > kickTime) {
|
||||||
|
System.out.println("Removing " + member + " from " + party.getName()); // Debug, remove this later
|
||||||
|
PartyManager.removeFromParty(member, party);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -60,6 +60,12 @@ Mods:
|
|||||||
# Settings for Parties
|
# Settings for Parties
|
||||||
###
|
###
|
||||||
Party:
|
Party:
|
||||||
|
#Amount of time (in hours) to wait between automatically kicking old party members
|
||||||
|
#To only run at server start, set to 0
|
||||||
|
#To never kick old users, set to -1
|
||||||
|
AutoKick_Interval: 12
|
||||||
|
#Any user who hasn't connected in this many days will get kicked from their party
|
||||||
|
Old_Party_Member_Cutoff: 7
|
||||||
Sharing:
|
Sharing:
|
||||||
ExpShare_enabled: true
|
ExpShare_enabled: true
|
||||||
ExpShare_bonus_base: 1.1
|
ExpShare_bonus_base: 1.1
|
||||||
|
Loading…
Reference in New Issue
Block a user