Fix punish expiration, and possibly invalid reapply times
This commit is contained in:
parent
4e9ac86e9f
commit
79f0355288
@ -20,6 +20,7 @@ import mineplex.core.common.util.LineFormat;
|
||||
import mineplex.core.common.util.UtilText;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.itemstack.ItemBuilder;
|
||||
import mineplex.core.punish.Category;
|
||||
import mineplex.core.punish.Punish;
|
||||
import mineplex.core.punish.PunishClient;
|
||||
@ -92,7 +93,7 @@ public abstract class PunishPage extends ShopPageBase<Punish, PunishShop>
|
||||
if (punishment.GetHours() > 0)
|
||||
{
|
||||
lore.add("");
|
||||
lore.add(C.Reset + "Expires On: " + C.cYellow + UtilTime.when(punishment.GetTime() + punishment.GetRemaining()));
|
||||
lore.add(C.Reset + "Expires On: " + C.cYellow + UtilTime.when(System.currentTimeMillis() + punishment.GetRemaining()));
|
||||
lore.add(C.cYellow + "(" + Punish.getDurationString(punishment.GetRemaining() / UtilTime.TimeUnit.HOURS.getMilliseconds()) + ")");
|
||||
}
|
||||
}
|
||||
@ -112,6 +113,36 @@ public abstract class PunishPage extends ShopPageBase<Punish, PunishShop>
|
||||
return itemStack;
|
||||
}
|
||||
|
||||
private boolean canBeReapplied(Punishment punishment)
|
||||
{
|
||||
if (!_client.hasPermission(Punish.Perm.PUNISHMENT_REAPPLY))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (punishment.GetActive())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!punishment.GetRemoved())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (punishment.GetHours() == -1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
if (punishment.GetRemaining() > 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
protected void addHistoryItem(int slot, Punishment punishment)
|
||||
{
|
||||
ItemStack itemStack = buildHistoryItem(punishment);
|
||||
@ -123,7 +154,7 @@ public abstract class PunishPage extends ShopPageBase<Punish, PunishShop>
|
||||
return;
|
||||
}
|
||||
|
||||
if ((punishment.GetHours() == -1 || punishment.GetRemaining() > 0) && !punishment.GetRemoved() && punishment.GetActive())
|
||||
if ((punishment.GetHours() < 0 || punishment.GetRemaining() > 0) && !punishment.GetRemoved() && punishment.GetActive())
|
||||
{
|
||||
addButton(slot, itemStack, (p, c) -> {
|
||||
if (getPlugin().GetClients().Get(getPlayer()).hasPermission(Punish.Perm.BYPASS_REMOVE_CONFIRMATION))
|
||||
@ -132,46 +163,37 @@ public abstract class PunishPage extends ShopPageBase<Punish, PunishShop>
|
||||
return;
|
||||
}
|
||||
|
||||
getShop().openPageForPlayer(getPlayer(), new ConfirmationPage<Punish, PunishShop>(getPlayer(), this, new ConfirmationProcessor()
|
||||
getShop().openPageForPlayer(getPlayer(), new ConfirmationPage<>(getPlayer(), this, new ConfirmationProcessor()
|
||||
{
|
||||
@Override
|
||||
public void init(Inventory inventory)
|
||||
{
|
||||
|
||||
}
|
||||
public void init(Inventory inventory) {}
|
||||
|
||||
@Override
|
||||
public void process(ConfirmationCallback callback)
|
||||
{
|
||||
removePunishment(punishment);
|
||||
callback.resolve("Successfully removed punishment.");
|
||||
}
|
||||
}, itemStack, "Confirm Punishment Removal"));
|
||||
});
|
||||
}
|
||||
else if (getPlugin().GetClients().Get(getPlayer()).hasPermission(Punish.Perm.PUNISHMENT_REAPPLY)
|
||||
// Punishment must have time remaining,
|
||||
// be inactive, and removed.
|
||||
&& punishment.GetRemaining() != 0
|
||||
&& !punishment.GetActive()
|
||||
&& punishment.GetRemoved())
|
||||
else if (canBeReapplied(punishment))
|
||||
{
|
||||
addButton(slot, itemStack, (p, c)->
|
||||
{
|
||||
getShop().openPageForPlayer(getPlayer(), new ConfirmationPage<Punish, PunishShop>(getPlayer(), this, new ConfirmationProcessor()
|
||||
ItemStack reapplyItem = new ItemBuilder(itemStack).addLore("", C.cGreen + "Click to reapply punishment").build();
|
||||
|
||||
addButton(slot, reapplyItem, (p, c)->
|
||||
getShop().openPageForPlayer(getPlayer(), new ConfirmationPage<>(getPlayer(), this, new ConfirmationProcessor()
|
||||
{
|
||||
@Override
|
||||
public void init(Inventory inventory)
|
||||
{
|
||||
|
||||
}
|
||||
public void init(Inventory inventory) {}
|
||||
|
||||
@Override
|
||||
public void process(ConfirmationCallback callback)
|
||||
{
|
||||
reapplyPunishment(punishment);
|
||||
callback.resolve("Successfully reapplied punishment.");
|
||||
}
|
||||
}, itemStack, "Confirm Punishment Reapply"));
|
||||
});
|
||||
}, itemStack, "Confirm Punishment Reapply")));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -291,7 +313,7 @@ public abstract class PunishPage extends ShopPageBase<Punish, PunishShop>
|
||||
|
||||
protected void reapplyPunishment(Punishment punishment)
|
||||
{
|
||||
if (punishment.GetRemaining() == 0 || punishment.GetActive() || !punishment.GetRemoved())
|
||||
if (!canBeReapplied(punishment))
|
||||
{
|
||||
return;
|
||||
}
|
||||
@ -299,11 +321,12 @@ public abstract class PunishPage extends ShopPageBase<Punish, PunishShop>
|
||||
Bukkit.broadcastMessage("Remaining: " + punishment.GetRemaining());
|
||||
Bukkit.broadcastMessage("In hours: " + (long) Math.floor(punishment.GetRemaining() / UtilTime.TimeUnit.HOURS.getMilliseconds()));
|
||||
Bukkit.broadcastMessage("Is permanent: " + ((punishment.GetRemaining() < 0) ? "yes" : "no"));
|
||||
return;
|
||||
|
||||
if ('c' != 'c')
|
||||
{
|
||||
_reason = punishment.GetReason() + " - Reapplied";
|
||||
|
||||
if (punishment.GetRemaining() < 0)
|
||||
if (punishment.GetRemaining() == -1)
|
||||
{
|
||||
doPunishment(punishment.GetCategory(), punishment.GetSeverity(), -1);
|
||||
}
|
||||
@ -312,6 +335,7 @@ public abstract class PunishPage extends ShopPageBase<Punish, PunishShop>
|
||||
doPunishment(punishment.GetCategory(), punishment.GetSeverity(), (long) Math.floor(punishment.GetRemaining() / UtilTime.TimeUnit.HOURS.getMilliseconds()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void removePunishment(Punishment punishment)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user