Rethinking power calculation some.

This commit is contained in:
Olof Larsson
2013-04-23 12:14:36 +02:00
parent 6b7312bcf8
commit 3c60f75bbd
15 changed files with 283 additions and 414 deletions

View File

@@ -6,14 +6,14 @@ import com.massivecraft.factions.entity.FactionColls;
import com.massivecraft.mcore.ModuloRepeatTask;
import com.massivecraft.mcore.util.TimeUnit;
public class EconLandRewardTask extends ModuloRepeatTask
public class EconRewardTask extends ModuloRepeatTask
{
// -------------------------------------------- //
// INSTANCE & CONSTRUCT
// -------------------------------------------- //
private static EconLandRewardTask i = new EconLandRewardTask();
public static EconLandRewardTask get() { return i; }
private static EconRewardTask i = new EconRewardTask();
public static EconRewardTask get() { return i; }
// -------------------------------------------- //
// OVERRIDE: MODULO REPEAT TASK

View File

@@ -0,0 +1,68 @@
package com.massivecraft.factions.task;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import com.massivecraft.factions.entity.MConf;
import com.massivecraft.factions.entity.UPlayer;
import com.massivecraft.factions.event.FactionsEventPowerChange;
import com.massivecraft.factions.event.FactionsEventPowerChange.PowerChangeReason;
import com.massivecraft.mcore.ModuloRepeatTask;
import com.massivecraft.mcore.util.PermUtil;
import com.massivecraft.mcore.util.TimeUnit;
public class PowerUpdateTask extends ModuloRepeatTask
{
// -------------------------------------------- //
// INSTANCE & CONSTRUCT
// -------------------------------------------- //
private static PowerUpdateTask i = new PowerUpdateTask();
public static PowerUpdateTask get() { return i; }
// -------------------------------------------- //
// OVERRIDE: MODULO REPEAT TASK
// -------------------------------------------- //
@Override
public long getDelayMillis()
{
return MConf.get().powerTaskMillis;
}
@Override
public void setDelayMillis(long delayMillis)
{
MConf.get().powerTaskMillis = delayMillis;
}
@Override
public void invoke()
{
long millis = this.getDelayMillis();
for (Player player : Bukkit.getOnlinePlayers())
{
if (player.isDead()) continue;
double maxPower = PermUtil.pickFirstVal(player, MConf.get().permToPowerMax);
double minPower = PermUtil.pickFirstVal(player, MConf.get().permToPowerMin);
double hourPower = PermUtil.pickFirstVal(player, MConf.get().permToPowerHour);
UPlayer uplayer = UPlayer.get(player);
double oldPower = uplayer.getPower();
double newPower = oldPower + hourPower * millis / TimeUnit.MILLIS_PER_HOUR;
newPower = Math.max(newPower, minPower);
newPower = Math.min(newPower, maxPower);
FactionsEventPowerChange event = new FactionsEventPowerChange(null, uplayer, PowerChangeReason.TIME, newPower);
event.run();
if (event.isCancelled()) continue;
newPower = event.getNewPower();
uplayer.setPower(newPower);
}
}
}