Refactored Punish a bit so punishments don't expire early or jack up based on server's time.
This commit is contained in:
parent
681dfc5f7c
commit
0287cfb2f6
@ -8,4 +8,5 @@ public class ClientToken
|
||||
public int EconomyBalance;
|
||||
|
||||
public AccountToken AccountToken;
|
||||
public long LastLogin;
|
||||
}
|
||||
|
@ -58,49 +58,6 @@ public class Punish extends MiniPlugin
|
||||
@EventHandler
|
||||
public void OnClientWebResponse(ClientWebResponseEvent event)
|
||||
{
|
||||
/*
|
||||
JsonReader reader = null;
|
||||
|
||||
try
|
||||
{
|
||||
while (reader.hasNext())
|
||||
{
|
||||
if (reader.nextName().equalsIgnoreCase("Punish"))
|
||||
{
|
||||
reader.beginObject();
|
||||
|
||||
// TODO Parse infractions/punishments here
|
||||
// PunishClient client = new PunishClient();
|
||||
// client.AddInfraction(token.Category, new Infraction(token.Reason, token.Admin, token.Time));
|
||||
// client.AddPunishment(token.Category, new Punishment(token.PunishmentSentence, token.Reason, token.Admin, token.Hours, token.Time));
|
||||
// _punishClients.put(event.GetClient().GetPlayerName(), client);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
reader.endObject();
|
||||
}
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (reader != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
reader.close();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
PunishClientToken token = new Gson().fromJson(event.GetResponse(), PunishClientToken.class);
|
||||
LoadClient(token);
|
||||
}
|
||||
@ -121,7 +78,7 @@ public class Punish extends MiniPlugin
|
||||
if (client.IsBanned())
|
||||
{
|
||||
Punishment punishment = client.GetPunishment(PunishmentSentence.Ban);
|
||||
String time = F.time(UtilTime.convertString((long)(punishment.GetHours() * 3600000), 0, TimeUnit.FIT));
|
||||
String time = F.time(UtilTime.convertString(punishment.GetRemaining(), 0, TimeUnit.FIT));
|
||||
|
||||
if (punishment.GetHours() == -1)
|
||||
time = C.cRed + "Permanent";
|
||||
@ -234,16 +191,20 @@ public class Punish extends MiniPlugin
|
||||
}
|
||||
}
|
||||
}
|
||||
}, playerName, category.toString(), sentence, reason, duration, caller == null ? "Mineplex Anti-Cheat" : caller.getName(), severity, System.currentTimeMillis());
|
||||
}, playerName, category.toString(), sentence, reason, duration, caller == null ? "Mineplex Anti-Cheat" : caller.getName(), severity);
|
||||
}
|
||||
|
||||
public void LoadClient(PunishClientToken token)
|
||||
{
|
||||
PunishClient client = new PunishClient();
|
||||
|
||||
long timeDifference = System.currentTimeMillis() - token.Time;
|
||||
|
||||
System.out.println("TimeDifference : " + timeDifference);
|
||||
|
||||
for (PunishmentToken punishment : token.Punishments)
|
||||
{
|
||||
client.AddPunishment(Category.valueOf(punishment.Category), new Punishment(punishment.PunishmentId, PunishmentSentence.valueOf(punishment.Sentence), Category.valueOf(punishment.Category), punishment.Reason, punishment.Admin, punishment.Duration, punishment.Severity, punishment.Time, punishment.Active, punishment.Removed, punishment.RemoveAdmin, punishment.RemoveReason));
|
||||
client.AddPunishment(Category.valueOf(punishment.Category), new Punishment(punishment.PunishmentId, PunishmentSentence.valueOf(punishment.Sentence), Category.valueOf(punishment.Category), punishment.Reason, punishment.Admin, punishment.Duration, punishment.Severity, punishment.Time + timeDifference, punishment.Active, punishment.Removed, punishment.RemoveAdmin, punishment.RemoveReason));
|
||||
}
|
||||
|
||||
_punishClients.put(token.Name.toLowerCase(), client);
|
||||
|
@ -20,7 +20,7 @@ public class PunishRepository
|
||||
_webAddress = webServerAddress;
|
||||
}
|
||||
|
||||
public void Punish(Callback<String> callback, String target, String category, PunishmentSentence punishment, String reason, double duration, String admin, int severity, long time)
|
||||
public void Punish(Callback<String> callback, String target, String category, PunishmentSentence punishment, String reason, double duration, String admin, int severity)
|
||||
{
|
||||
PunishToken token = new PunishToken();
|
||||
token.Target = target;
|
||||
@ -29,7 +29,6 @@ public class PunishRepository
|
||||
token.Reason = reason;
|
||||
token.Duration = duration;
|
||||
token.Admin = admin;
|
||||
token.Time = time;
|
||||
token.Severity = severity;
|
||||
|
||||
new AsyncJsonWebCall(_webAddress + "PlayerAccount/Punish").Execute(String.class, callback, token);
|
||||
|
@ -5,5 +5,6 @@ import java.util.List;
|
||||
public class PunishClientToken
|
||||
{
|
||||
public String Name;
|
||||
public long Time;
|
||||
public List<PunishmentToken> Punishments;
|
||||
}
|
||||
|
@ -20,6 +20,7 @@
|
||||
Name = account.Name;
|
||||
Uuid = account.Uuid;
|
||||
Rank = account.Rank.Name;
|
||||
Time = (long)TimeUtil.GetCurrentMilliseconds();
|
||||
|
||||
EconomyBalance = account.EconomyBalance;
|
||||
|
||||
@ -118,6 +119,8 @@
|
||||
|
||||
public string Rank { get; set; }
|
||||
|
||||
public long Time { get; set; }
|
||||
|
||||
public int EconomyBalance { get; set; }
|
||||
|
||||
public List<Punishment> Punishments { get; set; }
|
||||
|
@ -69,7 +69,7 @@
|
||||
{
|
||||
var account = repository.Where<Account>(x => x.Uuid == loginToken.Uuid).FirstOrDefault() ?? CreateAccount(loginToken, repository);
|
||||
account.LoadNavigationProperties(repository.Context);
|
||||
var edited = false;
|
||||
account.LastLogin = (long)TimeUtil.GetCurrentMilliseconds();
|
||||
|
||||
// Expire punishments
|
||||
if (account.Punishments != null)
|
||||
@ -77,7 +77,6 @@
|
||||
foreach (var expiredPunishment in account.Punishments.Where(x => x.Active && (x.Duration - 0d) > 0 && TimeUtil.GetCurrentMilliseconds() > (x.Time + (x.Duration * 3600000))))
|
||||
{
|
||||
expiredPunishment.Active = false;
|
||||
edited = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -85,7 +84,6 @@
|
||||
if (String.IsNullOrEmpty(account.Uuid) && !String.IsNullOrEmpty(loginToken.Uuid))
|
||||
{
|
||||
account.Uuid = loginToken.Uuid;
|
||||
edited = true;
|
||||
}
|
||||
|
||||
// Expire ranks
|
||||
@ -93,13 +91,9 @@
|
||||
{
|
||||
account.Rank = repository.Where<Rank>(x => x.Name == "ALL").First();
|
||||
repository.Attach(account.Rank);
|
||||
edited = true;
|
||||
}
|
||||
|
||||
if (edited)
|
||||
{
|
||||
repository.CommitChanges();
|
||||
}
|
||||
repository.CommitChanges();
|
||||
|
||||
return account;
|
||||
}
|
||||
@ -268,7 +262,7 @@
|
||||
Admin = punish.Admin,
|
||||
Category = punish.Category,
|
||||
Sentence = punish.Sentence,
|
||||
Time = punish.Time,
|
||||
Time = (long)TimeUtil.GetCurrentMilliseconds(),
|
||||
Reason = punish.Reason,
|
||||
Duration = punish.Duration,
|
||||
Severity = punish.Severity,
|
||||
@ -308,7 +302,7 @@
|
||||
punishment.Active = false;
|
||||
punishment.Removed = true;
|
||||
punishment.RemoveAdmin = token.Admin;
|
||||
punishment.RemoveTime = DateTime.Now.Ticks;
|
||||
punishment.RemoveTime = (long)TimeUtil.GetCurrentMilliseconds();
|
||||
punishment.RemoveReason = token.Reason;
|
||||
|
||||
repository.Edit(punishment);
|
||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user