2013-04-22 09:37:53 +02:00
|
|
|
package com.massivecraft.factions.entity;
|
2011-10-08 22:03:44 +02:00
|
|
|
|
2013-04-22 09:37:53 +02:00
|
|
|
import com.massivecraft.factions.Factions;
|
|
|
|
import com.massivecraft.factions.Rel;
|
2013-04-18 12:25:05 +02:00
|
|
|
import com.massivecraft.mcore.mixin.Mixin;
|
2013-04-12 08:56:26 +02:00
|
|
|
import com.massivecraft.mcore.store.MStore;
|
|
|
|
import com.massivecraft.mcore.store.SenderColl;
|
2013-04-18 12:25:05 +02:00
|
|
|
import com.massivecraft.mcore.util.TimeUnit;
|
2013-04-25 16:02:37 +02:00
|
|
|
import com.massivecraft.mcore.util.Txt;
|
2011-10-08 22:03:44 +02:00
|
|
|
|
2013-04-22 17:59:51 +02:00
|
|
|
public class UPlayerColl extends SenderColl<UPlayer>
|
2011-10-08 22:03:44 +02:00
|
|
|
{
|
2013-04-12 08:56:26 +02:00
|
|
|
// -------------------------------------------- //
|
2013-04-22 12:26:13 +02:00
|
|
|
// CONSTRUCT
|
2013-04-12 08:56:26 +02:00
|
|
|
// -------------------------------------------- //
|
2011-10-08 22:03:44 +02:00
|
|
|
|
2013-04-22 17:59:51 +02:00
|
|
|
public UPlayerColl(String name)
|
2011-10-08 22:03:44 +02:00
|
|
|
{
|
2013-11-11 09:31:04 +01:00
|
|
|
super(name, UPlayer.class, MStore.getDb(), Factions.get());
|
2011-10-08 22:03:44 +02:00
|
|
|
}
|
|
|
|
|
2013-04-12 08:56:26 +02:00
|
|
|
// -------------------------------------------- //
|
|
|
|
// EXTRAS
|
|
|
|
// -------------------------------------------- //
|
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
public void clean()
|
|
|
|
{
|
2013-04-25 16:02:37 +02:00
|
|
|
FactionColl factionColl = FactionColls.get().get(this);
|
|
|
|
String universe = this.getUniverse();
|
2013-04-22 17:59:51 +02:00
|
|
|
for (UPlayer uplayer : this.getAll())
|
2011-10-08 22:03:44 +02:00
|
|
|
{
|
2013-04-25 16:02:37 +02:00
|
|
|
String factionId = uplayer.getFactionId();
|
|
|
|
if (factionColl.containsId(factionId)) continue;
|
2013-04-12 09:47:43 +02:00
|
|
|
|
2013-04-25 16:02:37 +02:00
|
|
|
uplayer.resetFactionData();
|
|
|
|
|
|
|
|
String message = Txt.parse("<i>Reset data for <h>%s <i>in <h>%s <i>universe. Unknown factionId <h>%s", uplayer.getDisplayName(), universe, factionId);
|
|
|
|
Factions.get().log(message);
|
2011-10-08 22:03:44 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-04-24 08:39:26 +02:00
|
|
|
public void removePlayerDataAfterInactiveDaysRoutine()
|
2011-10-08 22:03:44 +02:00
|
|
|
{
|
2013-04-24 08:39:26 +02:00
|
|
|
if (MConf.get().removePlayerDataAfterInactiveDays <= 0.0) return;
|
2013-04-18 12:25:05 +02:00
|
|
|
|
2011-10-08 22:03:44 +02:00
|
|
|
long now = System.currentTimeMillis();
|
2013-04-24 08:39:26 +02:00
|
|
|
double toleranceMillis = MConf.get().removePlayerDataAfterInactiveDays * TimeUnit.MILLIS_PER_DAY;
|
2011-10-08 22:03:44 +02:00
|
|
|
|
2013-04-22 17:59:51 +02:00
|
|
|
for (UPlayer uplayer : this.getAll())
|
2011-10-08 22:03:44 +02:00
|
|
|
{
|
2013-04-22 17:59:51 +02:00
|
|
|
Long lastPlayed = Mixin.getLastPlayed(uplayer.getId());
|
2013-04-18 12:25:05 +02:00
|
|
|
if (lastPlayed == null) continue;
|
|
|
|
|
2013-04-22 17:59:51 +02:00
|
|
|
if (uplayer.isOnline()) continue;
|
2013-04-18 13:36:52 +02:00
|
|
|
if (now - lastPlayed <= toleranceMillis) continue;
|
|
|
|
|
2013-04-22 10:05:03 +02:00
|
|
|
if (MConf.get().logFactionLeave || MConf.get().logFactionKick)
|
2011-10-08 22:03:44 +02:00
|
|
|
{
|
2013-04-22 17:59:51 +02:00
|
|
|
Factions.get().log("Player "+uplayer.getName()+" was auto-removed due to inactivity.");
|
2013-04-18 13:36:52 +02:00
|
|
|
}
|
2011-12-18 14:50:41 +01:00
|
|
|
|
2013-04-18 13:36:52 +02:00
|
|
|
// if player is faction leader, sort out the faction since he's going away
|
2013-04-22 17:59:51 +02:00
|
|
|
if (uplayer.getRole() == Rel.LEADER)
|
2013-04-18 13:36:52 +02:00
|
|
|
{
|
2013-04-22 17:59:51 +02:00
|
|
|
Faction faction = uplayer.getFaction();
|
2013-04-18 13:36:52 +02:00
|
|
|
if (faction != null)
|
2012-01-28 10:16:25 +01:00
|
|
|
{
|
2013-04-22 17:59:51 +02:00
|
|
|
uplayer.getFaction().promoteNewLeader();
|
2012-01-28 10:16:25 +01:00
|
|
|
}
|
2011-10-08 22:03:44 +02:00
|
|
|
}
|
2013-04-18 13:36:52 +02:00
|
|
|
|
2013-04-24 13:26:59 +02:00
|
|
|
uplayer.leave();
|
2013-04-22 17:59:51 +02:00
|
|
|
uplayer.detach();
|
2011-10-08 22:03:44 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|